mirror of https://github.com/kubernetes/kops.git
Merge pull request #3026 from justinsb/repoint_pause_2
Automatic merge from submit-queue Remap pause image through our AssetBuilder
This commit is contained in:
commit
89dd78bee9
|
@ -34,6 +34,7 @@ import (
|
|||
api "k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/apis/kops/registry"
|
||||
"k8s.io/kops/pkg/apis/kops/validation"
|
||||
"k8s.io/kops/pkg/assets"
|
||||
"k8s.io/kops/pkg/dns"
|
||||
"k8s.io/kops/pkg/featureflag"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
|
@ -870,7 +871,8 @@ func RunCreateCluster(f *util.Factory, out io.Writer, c *CreateClusterOptions) e
|
|||
return err
|
||||
}
|
||||
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(cluster)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(cluster, assetBuilder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ import (
|
|||
api "k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/apis/kops/registry"
|
||||
"k8s.io/kops/pkg/apis/kops/validation"
|
||||
"k8s.io/kops/pkg/assets"
|
||||
"k8s.io/kops/pkg/edit"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup"
|
||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||
|
@ -209,7 +210,8 @@ func RunEditCluster(f *util.Factory, cmd *cobra.Command, args []string, out io.W
|
|||
return preservedFile(fmt.Errorf("error populating configuration: %v", err), file, out)
|
||||
}
|
||||
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(newCluster)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(newCluster, assetBuilder)
|
||||
if err != nil {
|
||||
results = editResults{
|
||||
file: file,
|
||||
|
|
|
@ -28,6 +28,7 @@ import (
|
|||
"k8s.io/kops/cmd/kops/util"
|
||||
api "k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/apis/kops/validation"
|
||||
"k8s.io/kops/pkg/assets"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup"
|
||||
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
|
||||
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
|
||||
|
@ -166,7 +167,8 @@ func RunEditInstanceGroup(f *util.Factory, cmd *cobra.Command, args []string, ou
|
|||
return fmt.Errorf("error populating configuration: %v", err)
|
||||
}
|
||||
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(cluster)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(cluster, assetBuilder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import (
|
|||
api "k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/apis/kops/util"
|
||||
"k8s.io/kops/pkg/apis/kops/validation"
|
||||
"k8s.io/kops/pkg/assets"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup"
|
||||
"k8s.io/kops/util/pkg/tables"
|
||||
|
@ -283,7 +284,8 @@ func (c *UpgradeClusterCmd) Run(args []string) error {
|
|||
return fmt.Errorf("error populating configuration: %v", err)
|
||||
}
|
||||
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(cluster)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(cluster, assetBuilder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -63,7 +63,7 @@ func (a *AssetBuilder) RemapManifest(data []byte) ([]byte, error) {
|
|||
var yamlSeparator = []byte("\n---\n\n")
|
||||
var remappedManifests [][]byte
|
||||
for _, manifest := range manifests {
|
||||
err := manifest.RemapImages(a.remapImage)
|
||||
err := manifest.RemapImages(a.RemapImage)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error remapping images: %v", err)
|
||||
}
|
||||
|
@ -78,7 +78,7 @@ func (a *AssetBuilder) RemapManifest(data []byte) ([]byte, error) {
|
|||
return bytes.Join(remappedManifests, yamlSeparator), nil
|
||||
}
|
||||
|
||||
func (a *AssetBuilder) remapImage(image string) (string, error) {
|
||||
func (a *AssetBuilder) RemapImage(image string) (string, error) {
|
||||
asset := &Asset{}
|
||||
|
||||
asset.DockerImage = image
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"github.com/golang/glog"
|
||||
"k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/apis/kops/util"
|
||||
"k8s.io/kops/pkg/assets"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/gce"
|
||||
"k8s.io/kops/util/pkg/vfs"
|
||||
"math/big"
|
||||
|
@ -35,6 +36,8 @@ type OptionsContext struct {
|
|||
ClusterName string
|
||||
|
||||
KubernetesVersion semver.Version
|
||||
|
||||
AssetBuilder *assets.AssetBuilder
|
||||
}
|
||||
|
||||
func (c *OptionsContext) IsKubernetesGTE(version string) bool {
|
||||
|
|
|
@ -180,5 +180,12 @@ func (b *KubeletOptionsBuilder) BuildOptions(o interface{}) error {
|
|||
}
|
||||
}
|
||||
|
||||
// Specify our pause image
|
||||
image := "gcr.io/google_containers/pause-amd64:3.0"
|
||||
if image, err = b.Context.AssetBuilder.RemapImage(image); err != nil {
|
||||
return err
|
||||
}
|
||||
clusterSpec.Kubelet.PodInfraContainerImage = image
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -143,7 +143,8 @@ func (c *ApplyClusterCmd) Run() error {
|
|||
}
|
||||
c.channel = channel
|
||||
|
||||
err = c.upgradeSpecs()
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
err = c.upgradeSpecs(assetBuilder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -441,8 +442,6 @@ func (c *ApplyClusterCmd) Run() error {
|
|||
l.WorkDir = c.OutDir
|
||||
l.ModelStore = modelStore
|
||||
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
|
||||
iamLifecycle := lifecyclePointer(fi.LifecycleSync)
|
||||
networkLifecycle := lifecyclePointer(fi.LifecycleSync)
|
||||
clusterLifecycle := lifecyclePointer(fi.LifecycleSync)
|
||||
|
@ -827,13 +826,13 @@ func findHash(url string) (*hashing.Hash, error) {
|
|||
}
|
||||
|
||||
// upgradeSpecs ensures that fields are fully populated / defaulted
|
||||
func (c *ApplyClusterCmd) upgradeSpecs() error {
|
||||
func (c *ApplyClusterCmd) upgradeSpecs(assetBuilder *assets.AssetBuilder) error {
|
||||
//err := c.Cluster.PerformAssignments()
|
||||
//if err != nil {
|
||||
// return fmt.Errorf("error populating configuration: %v", err)
|
||||
//}
|
||||
|
||||
fullCluster, err := PopulateClusterSpec(c.Cluster)
|
||||
fullCluster, err := PopulateClusterSpec(c.Cluster, assetBuilder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -64,7 +64,8 @@ func runChannelBuilderTest(t *testing.T, key string) {
|
|||
t.Fatalf("error from PerformAssignments: %v", err)
|
||||
}
|
||||
|
||||
fullSpec, err := PopulateClusterSpec(cluster)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
fullSpec, err := PopulateClusterSpec(cluster, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("error from PopulateClusterSpec: %v", err)
|
||||
}
|
||||
|
|
|
@ -28,6 +28,7 @@ import (
|
|||
"k8s.io/kops/pkg/apis/kops/registry"
|
||||
"k8s.io/kops/pkg/apis/kops/util"
|
||||
"k8s.io/kops/pkg/apis/kops/validation"
|
||||
"k8s.io/kops/pkg/assets"
|
||||
"k8s.io/kops/pkg/dns"
|
||||
"k8s.io/kops/pkg/model"
|
||||
"k8s.io/kops/pkg/model/components"
|
||||
|
@ -52,6 +53,9 @@ type populateClusterSpec struct {
|
|||
|
||||
// fullCluster holds the built completed cluster spec
|
||||
fullCluster *api.Cluster
|
||||
|
||||
// assetBuilder holds the AssetBuilder, used to store assets we discover / remap
|
||||
assetBuilder *assets.AssetBuilder
|
||||
}
|
||||
|
||||
func findModelStore() (vfs.Path, error) {
|
||||
|
@ -61,7 +65,7 @@ func findModelStore() (vfs.Path, error) {
|
|||
|
||||
// PopulateClusterSpec takes a user-specified cluster spec, and computes the full specification that should be set on the cluster.
|
||||
// We do this so that we don't need any real "brains" on the node side.
|
||||
func PopulateClusterSpec(cluster *api.Cluster) (*api.Cluster, error) {
|
||||
func PopulateClusterSpec(cluster *api.Cluster, assetBuilder *assets.AssetBuilder) (*api.Cluster, error) {
|
||||
modelStore, err := findModelStore()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -71,6 +75,7 @@ func PopulateClusterSpec(cluster *api.Cluster) (*api.Cluster, error) {
|
|||
InputCluster: cluster,
|
||||
ModelStore: modelStore,
|
||||
Models: []string{"config"},
|
||||
assetBuilder: assetBuilder,
|
||||
}
|
||||
err = c.run()
|
||||
if err != nil {
|
||||
|
@ -275,6 +280,7 @@ func (c *populateClusterSpec) run() error {
|
|||
optionsContext := &components.OptionsContext{
|
||||
ClusterName: cluster.ObjectMeta.Name,
|
||||
KubernetesVersion: *sv,
|
||||
AssetBuilder: c.assetBuilder,
|
||||
}
|
||||
|
||||
var fileModels []string
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
api "k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/assets"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
)
|
||||
|
||||
|
@ -87,7 +88,8 @@ func TestPopulateCluster_Default_NoError(t *testing.T) {
|
|||
|
||||
addEtcdClusters(c)
|
||||
|
||||
_, err = PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
_, err = PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -109,7 +111,8 @@ func TestPopulateCluster_Docker_Spec(t *testing.T) {
|
|||
|
||||
addEtcdClusters(c)
|
||||
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -139,7 +142,8 @@ func TestPopulateCluster_StorageDefault(t *testing.T) {
|
|||
}
|
||||
|
||||
addEtcdClusters(c)
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -156,7 +160,8 @@ func build(c *api.Cluster) (*api.Cluster, error) {
|
|||
}
|
||||
|
||||
addEtcdClusters(c)
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -232,7 +237,8 @@ func TestPopulateCluster_Custom_CIDR(t *testing.T) {
|
|||
|
||||
addEtcdClusters(c)
|
||||
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -252,7 +258,8 @@ func TestPopulateCluster_IsolateMasters(t *testing.T) {
|
|||
|
||||
addEtcdClusters(c)
|
||||
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -275,7 +282,8 @@ func TestPopulateCluster_IsolateMastersFalse(t *testing.T) {
|
|||
|
||||
addEtcdClusters(c)
|
||||
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -366,7 +374,8 @@ func TestPopulateCluster_BastionIdleTimeoutInvalidNegative_Required(t *testing.T
|
|||
}
|
||||
|
||||
func expectErrorFromPopulateCluster(t *testing.T, c *api.Cluster, message string) {
|
||||
_, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
_, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err == nil {
|
||||
t.Fatalf("Expected error from PopulateCluster")
|
||||
}
|
||||
|
@ -400,7 +409,8 @@ func TestPopulateCluster_AnonymousAuth(t *testing.T) {
|
|||
|
||||
addEtcdClusters(c)
|
||||
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -425,7 +435,8 @@ func TestPopulateCluster_AnonymousAuth_14(t *testing.T) {
|
|||
|
||||
addEtcdClusters(c)
|
||||
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -476,7 +487,8 @@ func TestPopulateCluster_KubeController_High_Enough_Version(t *testing.T) {
|
|||
|
||||
addEtcdClusters(c)
|
||||
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
@ -498,7 +510,8 @@ func TestPopulateCluster_KubeController_Fail(t *testing.T) {
|
|||
|
||||
addEtcdClusters(c)
|
||||
|
||||
full, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
full, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("Unexpected error from PopulateCluster: %v", err)
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ import (
|
|||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
api "k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/apis/kops/validation"
|
||||
"k8s.io/kops/pkg/assets"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
"k8s.io/kops/upup/pkg/fi/cloudup/awsup"
|
||||
"strings"
|
||||
|
@ -60,7 +61,8 @@ func buildDefaultCluster(t *testing.T) *api.Cluster {
|
|||
}
|
||||
}
|
||||
|
||||
fullSpec, err := PopulateClusterSpec(c)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
fullSpec, err := PopulateClusterSpec(c, assetBuilder)
|
||||
if err != nil {
|
||||
t.Fatalf("error from PopulateClusterSpec: %v", err)
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import (
|
|||
"k8s.io/kops"
|
||||
api "k8s.io/kops/pkg/apis/kops"
|
||||
"k8s.io/kops/pkg/apis/kops/registry"
|
||||
"k8s.io/kops/pkg/assets"
|
||||
"k8s.io/kops/pkg/client/simple"
|
||||
"k8s.io/kops/pkg/resources"
|
||||
"k8s.io/kops/upup/pkg/fi"
|
||||
|
@ -105,7 +106,8 @@ func (x *ConvertKubeupCluster) Upgrade() error {
|
|||
delete(cluster.ObjectMeta.Annotations, api.AnnotationNameManagement)
|
||||
}
|
||||
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(cluster)
|
||||
assetBuilder := assets.NewAssetBuilder()
|
||||
fullCluster, err := cloudup.PopulateClusterSpec(cluster, assetBuilder)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue