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:
Kubernetes Submit Queue 2017-07-22 19:01:31 -07:00 committed by GitHub
commit 89dd78bee9
13 changed files with 68 additions and 27 deletions

View File

@ -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
}

View File

@ -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,

View 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
}

View File

@ -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
}

View File

@ -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

View File

@ -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 {

View File

@ -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
}

View File

@ -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
}

View File

@ -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)
}

View File

@ -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

View File

@ -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)
}

View File

@ -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)
}

View File

@ -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
}