diff --git a/cmd/kops-controller/controllers/node_controller.go b/cmd/kops-controller/controllers/node_controller.go index a12fbaddaa4bc..6be564002d886 100644 --- a/cmd/kops-controller/controllers/node_controller.go +++ b/cmd/kops-controller/controllers/node_controller.go @@ -114,10 +114,7 @@ func (r *NodeReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) { return ctrl.Result{}, fmt.Errorf("unable to load instance group object for node %s: %v", node.Name, err) } - labels, err := nodelabels.BuildNodeLabels(cluster, ig) - if err != nil { - return ctrl.Result{}, fmt.Errorf("unable to build config for node %s: %v", node.Name, err) - } + labels := nodelabels.BuildNodeLabels(cluster, ig) lifecycle, err := r.getInstanceLifecycle(ctx, node) if err != nil { diff --git a/nodeup/pkg/model/BUILD.bazel b/nodeup/pkg/model/BUILD.bazel index 4bc4ee9c5616b..823028ac8c24a 100644 --- a/nodeup/pkg/model/BUILD.bazel +++ b/nodeup/pkg/model/BUILD.bazel @@ -63,7 +63,6 @@ go_library( "//util/pkg/architectures:go_default_library", "//util/pkg/exec:go_default_library", "//util/pkg/proxy:go_default_library", - "//util/pkg/reflectutils:go_default_library", "//util/pkg/vfs:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws/ec2metadata:go_default_library", diff --git a/nodeup/pkg/model/context.go b/nodeup/pkg/model/context.go index 36397253ca8a0..ecead295987a3 100644 --- a/nodeup/pkg/model/context.go +++ b/nodeup/pkg/model/context.go @@ -355,31 +355,9 @@ func (c *NodeupModelContext) UseBootstrapTokens() bool { return c.Cluster.Spec.Kubelet != nil && c.Cluster.Spec.Kubelet.BootstrapKubeconfig != "" } -// UseSecureKubelet checks if the kubelet api should be protected by a client certificate. Note: the settings are -// in one of three section, master specific kubelet, cluster wide kubelet or the InstanceGroup. Though arguably is -// doesn't make much sense to unset this on a per InstanceGroup level, but hey :) +// UseSecureKubelet checks if the kubelet api should be protected by a client certificate. func (c *NodeupModelContext) UseSecureKubelet() bool { - cluster := &c.Cluster.Spec // just to shorten the typing - group := &c.InstanceGroup.Spec - - // @check on the InstanceGroup itself - if group.Kubelet != nil && group.Kubelet.AnonymousAuth != nil && !*group.Kubelet.AnonymousAuth { - return true - } - - // @check if we have anything specific to master kubelet - if c.IsMaster { - if cluster.MasterKubelet != nil && cluster.MasterKubelet.AnonymousAuth != nil && !*cluster.MasterKubelet.AnonymousAuth { - return true - } - } - - // @check the default settings for master and kubelet - if cluster.Kubelet != nil && cluster.Kubelet.AnonymousAuth != nil && !*cluster.Kubelet.AnonymousAuth { - return true - } - - return false + return c.NodeupConfig.KubeletConfig.AnonymousAuth != nil && !*c.NodeupConfig.KubeletConfig.AnonymousAuth } // KubectlPath returns distro based path for kubectl diff --git a/nodeup/pkg/model/kubelet.go b/nodeup/pkg/model/kubelet.go index d33a6aca900ef..58b74283e1924 100644 --- a/nodeup/pkg/model/kubelet.go +++ b/nodeup/pkg/model/kubelet.go @@ -20,7 +20,6 @@ import ( "fmt" "path" "path/filepath" - "strings" "k8s.io/kops/pkg/model/components" @@ -38,7 +37,6 @@ import ( "k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi/cloudup/awsup" "k8s.io/kops/upup/pkg/fi/nodeup/nodetasks" - "k8s.io/kops/util/pkg/reflectutils" ) const ( @@ -422,12 +420,7 @@ func (b *KubeletBuilder) buildKubeletConfigSpec() (*kops.KubeletConfigSpec, erro isMaster := b.IsMaster // Merge KubeletConfig for NodeLabels - c := &kops.KubeletConfigSpec{} - if isMaster { - reflectutils.JSONMergeStruct(c, b.Cluster.Spec.MasterKubelet) - } else { - reflectutils.JSONMergeStruct(c, b.Cluster.Spec.Kubelet) - } + c := b.NodeupConfig.KubeletConfig // check if we are using secure kubelet <-> api settings if b.UseSecureKubelet() { @@ -446,7 +439,7 @@ func (b *KubeletBuilder) buildKubeletConfigSpec() (*kops.KubeletConfigSpec, erro instanceTypeName, err := metadata.GetMetadata("instance-type") if err != nil { // Otherwise, fall back to the Instance Group spec. - instanceTypeName = strings.Split(b.InstanceGroup.Spec.MachineType, ",")[0] + instanceTypeName = *b.NodeupConfig.DefaultMachineType } region, err := awsup.FindRegion(b.Cluster) @@ -486,21 +479,10 @@ func (b *KubeletBuilder) buildKubeletConfigSpec() (*kops.KubeletConfigSpec, erro // Write back values that could have changed c.MaxPods = &maxPods - if b.InstanceGroup.Spec.Kubelet != nil { - if b.InstanceGroup.Spec.Kubelet.MaxPods == nil { - b.InstanceGroup.Spec.Kubelet.MaxPods = &maxPods - } - } - } - - if b.InstanceGroup.Spec.Kubelet != nil { - reflectutils.JSONMergeStruct(c, b.InstanceGroup.Spec.Kubelet) } // Use --register-with-taints { - c.Taints = append(c.Taints, b.InstanceGroup.Spec.Taints...) - if len(c.Taints) == 0 && isMaster { // (Even though the value is empty, we still expect =:) c.Taints = append(c.Taints, nodelabels.RoleLabelMaster16+"=:"+string(v1.TaintEffectNoSchedule)) @@ -538,15 +520,9 @@ func (b *KubeletBuilder) buildKubeletConfigSpec() (*kops.KubeletConfigSpec, erro // For bootstrapping reasons, protokube sets the critical labels for kops-controller to run. if b.Cluster.IsKubernetesGTE("1.16") { c.NodeLabels = nil - } else { - nodeLabels, err := nodelabels.BuildNodeLabels(b.Cluster, b.InstanceGroup) - if err != nil { - return nil, err - } - c.NodeLabels = nodeLabels } - return c, nil + return &c, nil } // buildMasterKubeletKubeconfig builds a kubeconfig for the master kubelet, self-signing the kubelet cert diff --git a/pkg/apis/nodeup/BUILD.bazel b/pkg/apis/nodeup/BUILD.bazel index e1d98e80e1b8b..36622381b987b 100644 --- a/pkg/apis/nodeup/BUILD.bazel +++ b/pkg/apis/nodeup/BUILD.bazel @@ -7,6 +7,9 @@ go_library( visibility = ["//visibility:public"], deps = [ "//pkg/apis/kops:go_default_library", + "//pkg/nodelabels:go_default_library", + "//upup/pkg/fi:go_default_library", "//util/pkg/architectures:go_default_library", + "//util/pkg/reflectutils:go_default_library", ], ) diff --git a/pkg/apis/nodeup/config.go b/pkg/apis/nodeup/config.go index f09fb4c03865b..758bac4dfc443 100644 --- a/pkg/apis/nodeup/config.go +++ b/pkg/apis/nodeup/config.go @@ -17,8 +17,13 @@ limitations under the License. package nodeup import ( + "strings" + "k8s.io/kops/pkg/apis/kops" + "k8s.io/kops/pkg/nodelabels" + "k8s.io/kops/upup/pkg/fi" "k8s.io/kops/util/pkg/architectures" + "k8s.io/kops/util/pkg/reflectutils" ) // Config is the configuration for the nodeup binary @@ -48,9 +53,13 @@ type Config struct { // Manifests for running etcd EtcdManifests []string `json:"etcdManifests,omitempty"` + // DefaultMachineType is the first-listed instance machine type, used if querying instance metadata fails. + DefaultMachineType *string `json:",omitempty"` // StaticManifests describes generic static manifests // Using this allows us to keep complex logic out of nodeup StaticManifests []*StaticManifest `json:"staticManifests,omitempty"` + // KubeletConfig defines the kubelet configuration. + KubeletConfig kops.KubeletConfigSpec // SysctlParameters will configure kernel parameters using sysctl(8). When // specified, each parameter must follow the form variable=value, the way // it would appear in sysctl.conf. @@ -78,9 +87,45 @@ type StaticManifest struct { } func NewConfig(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) *Config { - return &Config{ - InstanceGroupRole: instanceGroup.Spec.Role, + role := instanceGroup.Spec.Role + isMaster := role == kops.InstanceGroupRoleMaster + + config := Config{ + InstanceGroupRole: role, SysctlParameters: instanceGroup.Spec.SysctlParameters, VolumeMounts: instanceGroup.Spec.VolumeMounts, } + + if isMaster { + reflectutils.JSONMergeStruct(&config.KubeletConfig, cluster.Spec.MasterKubelet) + + // A few settings in Kubelet override those in MasterKubelet. I'm not sure why. + if cluster.Spec.Kubelet != nil && cluster.Spec.Kubelet.AnonymousAuth != nil && !*cluster.Spec.Kubelet.AnonymousAuth { + config.KubeletConfig.AnonymousAuth = fi.Bool(false) + } + } else { + reflectutils.JSONMergeStruct(&config.KubeletConfig, cluster.Spec.Kubelet) + } + + if instanceGroup.Spec.Kubelet != nil { + useSecureKubelet := config.KubeletConfig.AnonymousAuth != nil && !*config.KubeletConfig.AnonymousAuth + + reflectutils.JSONMergeStruct(&config.KubeletConfig, instanceGroup.Spec.Kubelet) + + if useSecureKubelet { + config.KubeletConfig.AnonymousAuth = fi.Bool(false) + } + } + + // We include the NodeLabels in the userdata even for Kubernetes 1.16 and later so that + // rolling update will still replace nodes when they change. + config.KubeletConfig.NodeLabels = nodelabels.BuildNodeLabels(cluster, instanceGroup) + + config.KubeletConfig.Taints = append(config.KubeletConfig.Taints, instanceGroup.Spec.Taints...) + + if cluster.Spec.Networking != nil && cluster.Spec.Networking.AmazonVPC != nil { + config.DefaultMachineType = fi.String(strings.Split(instanceGroup.Spec.MachineType, ",")[0]) + } + + return &config } diff --git a/pkg/model/bootstrapscript.go b/pkg/model/bootstrapscript.go index dbc1568cb260f..eda427c648fde 100644 --- a/pkg/model/bootstrapscript.go +++ b/pkg/model/bootstrapscript.go @@ -281,9 +281,6 @@ func (b *BootstrapScript) Run(c *fi.Context) error { "IGSpec": func() (string, error) { spec := make(map[string]interface{}) - spec["kubelet"] = b.ig.Spec.Kubelet - spec["nodeLabels"] = b.ig.Spec.NodeLabels - spec["taints"] = b.ig.Spec.Taints hooks, err := b.getRelevantHooks(b.ig.Spec.Hooks, b.ig.Spec.Role) if err != nil { diff --git a/pkg/model/tests/data/bootstrapscript_0.txt b/pkg/model/tests/data/bootstrapscript_0.txt index ba740d3f52850..b44b13a37fe60 100644 --- a/pkg/model/tests/data/bootstrapscript_0.txt +++ b/pkg/model/tests/data/bootstrapscript_0.txt @@ -205,19 +205,21 @@ fileAssets: hooks: - manifest: 8BN3anFUyDlkVF/JnaJqbwpq8ME= (fingerprint) name: apply-to-all.service -kubelet: - kubeconfigPath: /etc/kubernetes/igconfig.txt -nodeLabels: - label2: value2 - labelname: labelvalue -taints: -- key1=value1:NoSchedule -- key2=value2:NoExecute __EOF_IG_SPEC cat > conf/kube_env.yaml << '__EOF_KUBE_ENV' InstanceGroupRole: Master +KubeletConfig: + kubeconfigPath: /etc/kubernetes/igconfig.txt + nodeLabels: + kubernetes.io/role: master + label2: value2 + labelname: labelvalue + node-role.kubernetes.io/master: "" + taints: + - key1=value1:NoSchedule + - key2=value2:NoExecute __EOF_KUBE_ENV diff --git a/pkg/model/tests/data/bootstrapscript_1.txt b/pkg/model/tests/data/bootstrapscript_1.txt index f68dc946bb4ad..d4cd204de679a 100644 --- a/pkg/model/tests/data/bootstrapscript_1.txt +++ b/pkg/model/tests/data/bootstrapscript_1.txt @@ -222,19 +222,21 @@ hooks: name: disable-update-engine.service - manifest: 8BN3anFUyDlkVF/JnaJqbwpq8ME= (fingerprint) name: apply-to-all.service -kubelet: - kubeconfigPath: /etc/kubernetes/igconfig.txt -nodeLabels: - label2: value2 - labelname: labelvalue -taints: -- key1=value1:NoSchedule -- key2=value2:NoExecute __EOF_IG_SPEC cat > conf/kube_env.yaml << '__EOF_KUBE_ENV' InstanceGroupRole: Master +KubeletConfig: + kubeconfigPath: /etc/kubernetes/igconfig.txt + nodeLabels: + kubernetes.io/role: master + label2: value2 + labelname: labelvalue + node-role.kubernetes.io/master: "" + taints: + - key1=value1:NoSchedule + - key2=value2:NoExecute __EOF_KUBE_ENV diff --git a/pkg/model/tests/data/bootstrapscript_2.txt b/pkg/model/tests/data/bootstrapscript_2.txt index f68dc946bb4ad..d4cd204de679a 100644 --- a/pkg/model/tests/data/bootstrapscript_2.txt +++ b/pkg/model/tests/data/bootstrapscript_2.txt @@ -222,19 +222,21 @@ hooks: name: disable-update-engine.service - manifest: 8BN3anFUyDlkVF/JnaJqbwpq8ME= (fingerprint) name: apply-to-all.service -kubelet: - kubeconfigPath: /etc/kubernetes/igconfig.txt -nodeLabels: - label2: value2 - labelname: labelvalue -taints: -- key1=value1:NoSchedule -- key2=value2:NoExecute __EOF_IG_SPEC cat > conf/kube_env.yaml << '__EOF_KUBE_ENV' InstanceGroupRole: Master +KubeletConfig: + kubeconfigPath: /etc/kubernetes/igconfig.txt + nodeLabels: + kubernetes.io/role: master + label2: value2 + labelname: labelvalue + node-role.kubernetes.io/master: "" + taints: + - key1=value1:NoSchedule + - key2=value2:NoExecute __EOF_KUBE_ENV diff --git a/pkg/model/tests/data/bootstrapscript_3.txt b/pkg/model/tests/data/bootstrapscript_3.txt index 04191ff5ce45f..7eba192fea4b7 100644 --- a/pkg/model/tests/data/bootstrapscript_3.txt +++ b/pkg/model/tests/data/bootstrapscript_3.txt @@ -190,19 +190,21 @@ fileAssets: hooks: - manifest: 8BN3anFUyDlkVF/JnaJqbwpq8ME= (fingerprint) name: apply-to-all.service -kubelet: - kubeconfigPath: /etc/kubernetes/igconfig.txt -nodeLabels: - label2: value2 - labelname: labelvalue -taints: -- key1=value1:NoSchedule -- key2=value2:NoExecute __EOF_IG_SPEC cat > conf/kube_env.yaml << '__EOF_KUBE_ENV' InstanceGroupRole: Node +KubeletConfig: + kubeconfigPath: /etc/kubernetes/igconfig.txt + nodeLabels: + kubernetes.io/role: node + label2: value2 + labelname: labelvalue + node-role.kubernetes.io/node: "" + taints: + - key1=value1:NoSchedule + - key2=value2:NoExecute __EOF_KUBE_ENV diff --git a/pkg/model/tests/data/bootstrapscript_4.txt b/pkg/model/tests/data/bootstrapscript_4.txt index 51231be745fd3..36337d9d1be9e 100644 --- a/pkg/model/tests/data/bootstrapscript_4.txt +++ b/pkg/model/tests/data/bootstrapscript_4.txt @@ -207,19 +207,21 @@ hooks: name: disable-update-engine.service - manifest: 8BN3anFUyDlkVF/JnaJqbwpq8ME= (fingerprint) name: apply-to-all.service -kubelet: - kubeconfigPath: /etc/kubernetes/igconfig.txt -nodeLabels: - label2: value2 - labelname: labelvalue -taints: -- key1=value1:NoSchedule -- key2=value2:NoExecute __EOF_IG_SPEC cat > conf/kube_env.yaml << '__EOF_KUBE_ENV' InstanceGroupRole: Node +KubeletConfig: + kubeconfigPath: /etc/kubernetes/igconfig.txt + nodeLabels: + kubernetes.io/role: node + label2: value2 + labelname: labelvalue + node-role.kubernetes.io/node: "" + taints: + - key1=value1:NoSchedule + - key2=value2:NoExecute __EOF_KUBE_ENV diff --git a/pkg/model/tests/data/bootstrapscript_5.txt b/pkg/model/tests/data/bootstrapscript_5.txt index 51231be745fd3..36337d9d1be9e 100644 --- a/pkg/model/tests/data/bootstrapscript_5.txt +++ b/pkg/model/tests/data/bootstrapscript_5.txt @@ -207,19 +207,21 @@ hooks: name: disable-update-engine.service - manifest: 8BN3anFUyDlkVF/JnaJqbwpq8ME= (fingerprint) name: apply-to-all.service -kubelet: - kubeconfigPath: /etc/kubernetes/igconfig.txt -nodeLabels: - label2: value2 - labelname: labelvalue -taints: -- key1=value1:NoSchedule -- key2=value2:NoExecute __EOF_IG_SPEC cat > conf/kube_env.yaml << '__EOF_KUBE_ENV' InstanceGroupRole: Node +KubeletConfig: + kubeconfigPath: /etc/kubernetes/igconfig.txt + nodeLabels: + kubernetes.io/role: node + label2: value2 + labelname: labelvalue + node-role.kubernetes.io/node: "" + taints: + - key1=value1:NoSchedule + - key2=value2:NoExecute __EOF_KUBE_ENV diff --git a/pkg/nodelabels/builder.go b/pkg/nodelabels/builder.go index a0daa0bfa78b5..243053c23ba98 100644 --- a/pkg/nodelabels/builder.go +++ b/pkg/nodelabels/builder.go @@ -33,7 +33,7 @@ const ( // BuildNodeLabels returns the node labels for the specified instance group // This moved from the kubelet to a central controller in kubernetes 1.16 -func BuildNodeLabels(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) (map[string]string, error) { +func BuildNodeLabels(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) map[string]string { isMaster := instanceGroup.Spec.Role == kops.InstanceGroupRoleMaster // Merge KubeletConfig for NodeLabels @@ -71,5 +71,5 @@ func BuildNodeLabels(cluster *kops.Cluster, instanceGroup *kops.InstanceGroup) ( nodeLabels[k] = v } - return nodeLabels, nil + return nodeLabels } diff --git a/pkg/nodelabels/builder_test.go b/pkg/nodelabels/builder_test.go index cd792851ca68c..bf3b6b3081b3f 100644 --- a/pkg/nodelabels/builder_test.go +++ b/pkg/nodelabels/builder_test.go @@ -111,7 +111,7 @@ func TestBuildNodeLabels(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { - out, _ := BuildNodeLabels(test.cluster, test.ig) + out := BuildNodeLabels(test.cluster, test.ig) if !reflect.DeepEqual(out, test.expected) { t.Fatalf("Actual result:\n%v\nExpect:\n%v", out, test.expected) } diff --git a/tests/integration/update_cluster/bastionadditional_user-data/data/aws_launch_template_master-us-test-1a.masters.bastionuserdata.example.com_user_data b/tests/integration/update_cluster/bastionadditional_user-data/data/aws_launch_template_master-us-test-1a.masters.bastionuserdata.example.com_user_data index 6519f4aa7d0b5..32a3054cbf6d7 100644 --- a/tests/integration/update_cluster/bastionadditional_user-data/data/aws_launch_template_master-us-test-1a.masters.bastionuserdata.example.com_user_data +++ b/tests/integration/update_cluster/bastionadditional_user-data/data/aws_launch_template_master-us-test-1a.masters.bastionuserdata.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: bastionuserdata.example.com ConfigBase: memfs://clusters.example.com/bastionuserdata.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/bastionadditional_user-data/data/aws_launch_template_nodes.bastionuserdata.example.com_user_data b/tests/integration/update_cluster/bastionadditional_user-data/data/aws_launch_template_nodes.bastionuserdata.example.com_user_data index 10170fa2a99a3..477e592bec6b0 100644 --- a/tests/integration/update_cluster/bastionadditional_user-data/data/aws_launch_template_nodes.bastionuserdata.example.com_user_data +++ b/tests/integration/update_cluster/bastionadditional_user-data/data/aws_launch_template_nodes.bastionuserdata.example.com_user_data @@ -197,9 +197,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -217,6 +215,26 @@ ClusterName: bastionuserdata.example.com ConfigBase: memfs://clusters.example.com/bastionuserdata.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/complex/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/complex/cloudformation.json.extracted.yaml index 5517d40f6801b..fc8a306a59fba 100644 --- a/tests/integration/update_cluster/complex/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/complex/cloudformation.json.extracted.yaml @@ -284,9 +284,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amasterscomplexexamplecom.Properties. __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -304,6 +302,28 @@ Resources.AWSEC2LaunchTemplatemasterustest1amasterscomplexexamplecom.Properties. ConfigBase: memfs://clusters.example.com/complex.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -536,9 +556,7 @@ Resources.AWSEC2LaunchTemplatenodescomplexexamplecom.Properties.LaunchTemplateDa __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -556,6 +574,27 @@ Resources.AWSEC2LaunchTemplatenodescomplexexamplecom.Properties.LaunchTemplateDa ConfigBase: memfs://clusters.example.com/complex.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/complex/data/aws_launch_template_master-us-test-1a.masters.complex.example.com_user_data b/tests/integration/update_cluster/complex/data/aws_launch_template_master-us-test-1a.masters.complex.example.com_user_data index a444bc8d5a339..49ab0ea18368e 100644 --- a/tests/integration/update_cluster/complex/data/aws_launch_template_master-us-test-1a.masters.complex.example.com_user_data +++ b/tests/integration/update_cluster/complex/data/aws_launch_template_master-us-test-1a.masters.complex.example.com_user_data @@ -283,9 +283,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -303,6 +301,28 @@ ClusterName: complex.example.com ConfigBase: memfs://clusters.example.com/complex.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/complex/data/aws_launch_template_nodes.complex.example.com_user_data b/tests/integration/update_cluster/complex/data/aws_launch_template_nodes.complex.example.com_user_data index ded8ba0628dac..cec89091f0847 100644 --- a/tests/integration/update_cluster/complex/data/aws_launch_template_nodes.complex.example.com_user_data +++ b/tests/integration/update_cluster/complex/data/aws_launch_template_nodes.complex.example.com_user_data @@ -198,9 +198,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -218,6 +216,27 @@ ClusterName: complex.example.com ConfigBase: memfs://clusters.example.com/complex.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/containerd-cloudformation/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/containerd-cloudformation/cloudformation.json.extracted.yaml index 280113ebfcef8..5b395552394b2 100644 --- a/tests/integration/update_cluster/containerd-cloudformation/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/containerd-cloudformation/cloudformation.json.extracted.yaml @@ -272,9 +272,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amasterscontainerdexamplecom.Properti __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -292,6 +290,28 @@ Resources.AWSEC2LaunchTemplatemasterustest1amasterscontainerdexamplecom.Properti ConfigBase: memfs://clusters.example.com/containerd.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -503,9 +523,7 @@ Resources.AWSEC2LaunchTemplatenodescontainerdexamplecom.Properties.LaunchTemplat __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -523,6 +541,27 @@ Resources.AWSEC2LaunchTemplatenodescontainerdexamplecom.Properties.LaunchTemplat ConfigBase: memfs://clusters.example.com/containerd.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1a.masters.existing-iam.example.com_user_data b/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1a.masters.existing-iam.example.com_user_data index a2dd1400f776a..16e23f6080052 100644 --- a/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1a.masters.existing-iam.example.com_user_data +++ b/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1a.masters.existing-iam.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: existing-iam.example.com ConfigBase: memfs://tests/existing-iam.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1b.masters.existing-iam.example.com_user_data b/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1b.masters.existing-iam.example.com_user_data index 36f53c740c9ad..596c7b3f54f72 100644 --- a/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1b.masters.existing-iam.example.com_user_data +++ b/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1b.masters.existing-iam.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: existing-iam.example.com ConfigBase: memfs://tests/existing-iam.example.com InstanceGroupName: master-us-test-1b InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1c.masters.existing-iam.example.com_user_data b/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1c.masters.existing-iam.example.com_user_data index 91ebaa699ef1a..7e1383c5f120c 100644 --- a/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1c.masters.existing-iam.example.com_user_data +++ b/tests/integration/update_cluster/existing_iam/data/aws_launch_template_master-us-test-1c.masters.existing-iam.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: existing-iam.example.com ConfigBase: memfs://tests/existing-iam.example.com InstanceGroupName: master-us-test-1c InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/existing_iam/data/aws_launch_template_nodes.existing-iam.example.com_user_data b/tests/integration/update_cluster/existing_iam/data/aws_launch_template_nodes.existing-iam.example.com_user_data index 7afa572dc3655..20abed6c006b9 100644 --- a/tests/integration/update_cluster/existing_iam/data/aws_launch_template_nodes.existing-iam.example.com_user_data +++ b/tests/integration/update_cluster/existing_iam/data/aws_launch_template_nodes.existing-iam.example.com_user_data @@ -189,9 +189,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -209,6 +207,27 @@ ClusterName: existing-iam.example.com ConfigBase: memfs://tests/existing-iam.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/existing_iam_cloudformation/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/existing_iam_cloudformation/cloudformation.json.extracted.yaml index 63a3bdac2b03d..a6fea8e5c2236 100644 --- a/tests/integration/update_cluster/existing_iam_cloudformation/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/existing_iam_cloudformation/cloudformation.json.extracted.yaml @@ -273,9 +273,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersminimalexamplecom.Properties. __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -293,6 +291,28 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersminimalexamplecom.Properties. ConfigBase: memfs://clusters.example.com/minimal.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -505,9 +525,7 @@ Resources.AWSEC2LaunchTemplatenodesminimalexamplecom.Properties.LaunchTemplateDa __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -525,6 +543,27 @@ Resources.AWSEC2LaunchTemplatenodesminimalexamplecom.Properties.LaunchTemplateDa ConfigBase: memfs://clusters.example.com/minimal.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1a.masters.existingsg.example.com_user_data b/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1a.masters.existingsg.example.com_user_data index 3114331cc7dc5..7008582fe7b3d 100644 --- a/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1a.masters.existingsg.example.com_user_data +++ b/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1a.masters.existingsg.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: existingsg.example.com ConfigBase: memfs://clusters.example.com/existingsg.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1b.masters.existingsg.example.com_user_data b/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1b.masters.existingsg.example.com_user_data index 487943d15a834..9031ac418e10a 100644 --- a/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1b.masters.existingsg.example.com_user_data +++ b/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1b.masters.existingsg.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: existingsg.example.com ConfigBase: memfs://clusters.example.com/existingsg.example.com InstanceGroupName: master-us-test-1b InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1c.masters.existingsg.example.com_user_data b/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1c.masters.existingsg.example.com_user_data index bad99e58de890..16bc9a37f8601 100644 --- a/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1c.masters.existingsg.example.com_user_data +++ b/tests/integration/update_cluster/existing_sg/data/aws_launch_template_master-us-test-1c.masters.existingsg.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: existingsg.example.com ConfigBase: memfs://clusters.example.com/existingsg.example.com InstanceGroupName: master-us-test-1c InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/existing_sg/data/aws_launch_template_nodes.existingsg.example.com_user_data b/tests/integration/update_cluster/existing_sg/data/aws_launch_template_nodes.existingsg.example.com_user_data index 6bc9201252ca5..766b222599a3d 100644 --- a/tests/integration/update_cluster/existing_sg/data/aws_launch_template_nodes.existingsg.example.com_user_data +++ b/tests/integration/update_cluster/existing_sg/data/aws_launch_template_nodes.existingsg.example.com_user_data @@ -189,9 +189,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -209,6 +207,27 @@ ClusterName: existingsg.example.com ConfigBase: memfs://clusters.example.com/existingsg.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/externallb/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/externallb/cloudformation.json.extracted.yaml index 51d5a5743bb2f..2db645d83e136 100644 --- a/tests/integration/update_cluster/externallb/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/externallb/cloudformation.json.extracted.yaml @@ -273,9 +273,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersexternallbexamplecom.Properti __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -293,6 +291,28 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersexternallbexamplecom.Properti ConfigBase: memfs://clusters.example.com/externallb.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -505,9 +525,7 @@ Resources.AWSEC2LaunchTemplatenodesexternallbexamplecom.Properties.LaunchTemplat __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -525,6 +543,27 @@ Resources.AWSEC2LaunchTemplatenodesexternallbexamplecom.Properties.LaunchTemplat ConfigBase: memfs://clusters.example.com/externallb.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/externallb/data/aws_launch_template_master-us-test-1a.masters.externallb.example.com_user_data b/tests/integration/update_cluster/externallb/data/aws_launch_template_master-us-test-1a.masters.externallb.example.com_user_data index 1570e4b1c4294..6c3073bbd9123 100644 --- a/tests/integration/update_cluster/externallb/data/aws_launch_template_master-us-test-1a.masters.externallb.example.com_user_data +++ b/tests/integration/update_cluster/externallb/data/aws_launch_template_master-us-test-1a.masters.externallb.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: externallb.example.com ConfigBase: memfs://clusters.example.com/externallb.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/externallb/data/aws_launch_template_nodes.externallb.example.com_user_data b/tests/integration/update_cluster/externallb/data/aws_launch_template_nodes.externallb.example.com_user_data index 4b86606ae85d7..23520be5937b2 100644 --- a/tests/integration/update_cluster/externallb/data/aws_launch_template_nodes.externallb.example.com_user_data +++ b/tests/integration/update_cluster/externallb/data/aws_launch_template_nodes.externallb.example.com_user_data @@ -189,9 +189,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -209,6 +207,27 @@ ClusterName: externallb.example.com ConfigBase: memfs://clusters.example.com/externallb.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/externalpolicies/data/aws_launch_template_master-us-test-1a.masters.externalpolicies.example.com_user_data b/tests/integration/update_cluster/externalpolicies/data/aws_launch_template_master-us-test-1a.masters.externalpolicies.example.com_user_data index 53cf7e09df0a4..bcdcace0297c1 100644 --- a/tests/integration/update_cluster/externalpolicies/data/aws_launch_template_master-us-test-1a.masters.externalpolicies.example.com_user_data +++ b/tests/integration/update_cluster/externalpolicies/data/aws_launch_template_master-us-test-1a.masters.externalpolicies.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,28 @@ ClusterName: externalpolicies.example.com ConfigBase: memfs://clusters.example.com/externalpolicies.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/externalpolicies/data/aws_launch_template_nodes.externalpolicies.example.com_user_data b/tests/integration/update_cluster/externalpolicies/data/aws_launch_template_nodes.externalpolicies.example.com_user_data index 8d073df853792..e9970b8409e5f 100644 --- a/tests/integration/update_cluster/externalpolicies/data/aws_launch_template_nodes.externalpolicies.example.com_user_data +++ b/tests/integration/update_cluster/externalpolicies/data/aws_launch_template_nodes.externalpolicies.example.com_user_data @@ -189,9 +189,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -209,6 +207,27 @@ ClusterName: externalpolicies.example.com ConfigBase: memfs://clusters.example.com/externalpolicies.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1a.masters.ha.example.com_user_data b/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1a.masters.ha.example.com_user_data index d7d66a400e6ef..3d3fdc8260173 100644 --- a/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1a.masters.ha.example.com_user_data +++ b/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1a.masters.ha.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: ha.example.com ConfigBase: memfs://tests/ha.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1b.masters.ha.example.com_user_data b/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1b.masters.ha.example.com_user_data index 2357c82dc5740..d62c4a407e8db 100644 --- a/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1b.masters.ha.example.com_user_data +++ b/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1b.masters.ha.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: ha.example.com ConfigBase: memfs://tests/ha.example.com InstanceGroupName: master-us-test-1b InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1c.masters.ha.example.com_user_data b/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1c.masters.ha.example.com_user_data index 134bfda4adcc7..b1051ac2c141c 100644 --- a/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1c.masters.ha.example.com_user_data +++ b/tests/integration/update_cluster/ha/data/aws_launch_template_master-us-test-1c.masters.ha.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: ha.example.com ConfigBase: memfs://tests/ha.example.com InstanceGroupName: master-us-test-1c InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/ha/data/aws_launch_template_nodes.ha.example.com_user_data b/tests/integration/update_cluster/ha/data/aws_launch_template_nodes.ha.example.com_user_data index 9472af781d5cf..7f75d3a40dd1f 100644 --- a/tests/integration/update_cluster/ha/data/aws_launch_template_nodes.ha.example.com_user_data +++ b/tests/integration/update_cluster/ha/data/aws_launch_template_nodes.ha.example.com_user_data @@ -189,9 +189,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -209,6 +207,27 @@ ClusterName: ha.example.com ConfigBase: memfs://tests/ha.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_startup-script b/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_startup-script index ac15f6e9aec3b..ebad1df2e1ac3 100644 --- a/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_startup-script +++ b/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-a-ha-gce-example-com_metadata_startup-script @@ -275,9 +275,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -297,6 +295,29 @@ ClusterName: ha-gce.example.com ConfigBase: memfs://tests/ha-gce.example.com InstanceGroupName: master-us-test1-a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: gce + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hairpinMode: promiscuous-bridge + hostnameOverride: '@gce' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _gce diff --git a/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_startup-script b/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_startup-script index e92191606867e..ef9f7ac611d05 100644 --- a/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_startup-script +++ b/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-b-ha-gce-example-com_metadata_startup-script @@ -275,9 +275,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -297,6 +295,29 @@ ClusterName: ha-gce.example.com ConfigBase: memfs://tests/ha-gce.example.com InstanceGroupName: master-us-test1-b InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: gce + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hairpinMode: promiscuous-bridge + hostnameOverride: '@gce' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _gce diff --git a/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_startup-script b/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_startup-script index 4630cba9fe640..453045299f2a5 100644 --- a/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_startup-script +++ b/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_master-us-test1-c-ha-gce-example-com_metadata_startup-script @@ -275,9 +275,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -297,6 +295,29 @@ ClusterName: ha-gce.example.com ConfigBase: memfs://tests/ha-gce.example.com InstanceGroupName: master-us-test1-c InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: gce + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hairpinMode: promiscuous-bridge + hostnameOverride: '@gce' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _gce diff --git a/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_startup-script b/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_startup-script index fc34c75599fe6..346004aa87f0e 100644 --- a/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_startup-script +++ b/tests/integration/update_cluster/ha_gce/data/google_compute_instance_template_nodes-ha-gce-example-com_metadata_startup-script @@ -191,9 +191,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -213,6 +211,28 @@ ClusterName: ha-gce.example.com ConfigBase: memfs://tests/ha-gce.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: gce + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hairpinMode: promiscuous-bridge + hostnameOverride: '@gce' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _gce diff --git a/tests/integration/update_cluster/launch_templates/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/launch_templates/cloudformation.json.extracted.yaml index 236a4fddc4270..26fca8ef21ff0 100644 --- a/tests/integration/update_cluster/launch_templates/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/launch_templates/cloudformation.json.extracted.yaml @@ -275,9 +275,7 @@ Resources.AWSAutoScalingLaunchConfigurationmasterustest1amasterslaunchtemplatese __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -295,6 +293,29 @@ Resources.AWSAutoScalingLaunchConfigurationmasterustest1amasterslaunchtemplatese ConfigBase: memfs://clusters.example.com/launchtemplates.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -592,9 +613,7 @@ Resources.AWSAutoScalingLaunchConfigurationmasterustest1bmasterslaunchtemplatese __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -612,6 +631,29 @@ Resources.AWSAutoScalingLaunchConfigurationmasterustest1bmasterslaunchtemplatese ConfigBase: memfs://clusters.example.com/launchtemplates.example.com InstanceGroupName: master-us-test-1b InstanceGroupRole: Master + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -909,9 +951,7 @@ Resources.AWSAutoScalingLaunchConfigurationmasterustest1cmasterslaunchtemplatese __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -929,6 +969,29 @@ Resources.AWSAutoScalingLaunchConfigurationmasterustest1cmasterslaunchtemplatese ConfigBase: memfs://clusters.example.com/launchtemplates.example.com InstanceGroupName: master-us-test-1c InstanceGroupRole: Master + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -1142,9 +1205,7 @@ Resources.AWSAutoScalingLaunchConfigurationnodeslaunchtemplatesexamplecom.Proper __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -1162,6 +1223,28 @@ Resources.AWSAutoScalingLaunchConfigurationnodeslaunchtemplatesexamplecom.Proper ConfigBase: memfs://clusters.example.com/launchtemplates.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1a.masters.launchtemplates.example.com_user_data b/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1a.masters.launchtemplates.example.com_user_data index 1e6061b1774de..30929faeb65f7 100644 --- a/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1a.masters.launchtemplates.example.com_user_data +++ b/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1a.masters.launchtemplates.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,29 @@ ClusterName: launchtemplates.example.com ConfigBase: memfs://clusters.example.com/launchtemplates.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1b.masters.launchtemplates.example.com_user_data b/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1b.masters.launchtemplates.example.com_user_data index c824651e2729f..58903540fda6e 100644 --- a/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1b.masters.launchtemplates.example.com_user_data +++ b/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1b.masters.launchtemplates.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,29 @@ ClusterName: launchtemplates.example.com ConfigBase: memfs://clusters.example.com/launchtemplates.example.com InstanceGroupName: master-us-test-1b InstanceGroupRole: Master +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1c.masters.launchtemplates.example.com_user_data b/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1c.masters.launchtemplates.example.com_user_data index c46354f2fa3c4..ad1ac0b1a72a4 100644 --- a/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1c.masters.launchtemplates.example.com_user_data +++ b/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_master-us-test-1c.masters.launchtemplates.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,29 @@ ClusterName: launchtemplates.example.com ConfigBase: memfs://clusters.example.com/launchtemplates.example.com InstanceGroupName: master-us-test-1c InstanceGroupRole: Master +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_nodes.launchtemplates.example.com_user_data b/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_nodes.launchtemplates.example.com_user_data index 73acd79b73be0..99c9a73316ee3 100644 --- a/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_nodes.launchtemplates.example.com_user_data +++ b/tests/integration/update_cluster/launch_templates/data/aws_launch_configuration_nodes.launchtemplates.example.com_user_data @@ -190,9 +190,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -210,6 +208,28 @@ ClusterName: launchtemplates.example.com ConfigBase: memfs://clusters.example.com/launchtemplates.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/minimal-cloudformation/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/minimal-cloudformation/cloudformation.json.extracted.yaml index 63a3bdac2b03d..a6fea8e5c2236 100644 --- a/tests/integration/update_cluster/minimal-cloudformation/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/minimal-cloudformation/cloudformation.json.extracted.yaml @@ -273,9 +273,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersminimalexamplecom.Properties. __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -293,6 +291,28 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersminimalexamplecom.Properties. ConfigBase: memfs://clusters.example.com/minimal.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -505,9 +525,7 @@ Resources.AWSEC2LaunchTemplatenodesminimalexamplecom.Properties.LaunchTemplateDa __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -525,6 +543,27 @@ Resources.AWSEC2LaunchTemplatenodesminimalexamplecom.Properties.LaunchTemplateDa ConfigBase: memfs://clusters.example.com/minimal.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/minimal-json/data/aws_launch_template_master-us-test-1a.masters.minimal-json.example.com_user_data b/tests/integration/update_cluster/minimal-json/data/aws_launch_template_master-us-test-1a.masters.minimal-json.example.com_user_data index e1eadd19a21f6..afe1385089d6a 100644 --- a/tests/integration/update_cluster/minimal-json/data/aws_launch_template_master-us-test-1a.masters.minimal-json.example.com_user_data +++ b/tests/integration/update_cluster/minimal-json/data/aws_launch_template_master-us-test-1a.masters.minimal-json.example.com_user_data @@ -1 +1 @@ -IyEvYmluL2Jhc2gKIyBDb3B5cmlnaHQgMjAxNiBUaGUgS3ViZXJuZXRlcyBBdXRob3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpzZXQgLW8gZXJyZXhpdApzZXQgLW8gbm91bnNldApzZXQgLW8gcGlwZWZhaWwKCk5PREVVUF9VUkxfQU1ENjQ9aHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2xpbnV4L2FtZDY0L25vZGV1cCxodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvbGludXgtYW1kNjQtbm9kZXVwLGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9saW51eC9hbWQ2NC9ub2RldXAKTk9ERVVQX0hBU0hfQU1ENjQ9OTYwNGVmMTgyNjdhZDdiNWNmNGNlYmJmN2FiNjQ0MjNjZjViYjAzNDJkMTY5YzYwOGFjNjM3NmU2YWYyNmQ4MQpOT0RFVVBfVVJMX0FSTTY0PQpOT0RFVVBfSEFTSF9BUk02ND0KCmV4cG9ydCBBV1NfUkVHSU9OPXVzLXRlc3QtMQoKCgoKZnVuY3Rpb24gZW5zdXJlLWluc3RhbGwtZGlyKCkgewogIElOU1RBTExfRElSPSIvb3B0L2tvcHMiCiAgIyBPbiBDb250YWluZXJPUywgd2UgaW5zdGFsbCB1bmRlciAvdmFyL2xpYi90b29sYm94OyAvb3B0IGlzIHJvIGFuZCBub2V4ZWMKICBpZiBbWyAtZCAvdmFyL2xpYi90b29sYm94IF1dOyB0aGVuCiAgICBJTlNUQUxMX0RJUj0iL3Zhci9saWIvdG9vbGJveC9rb3BzIgogIGZpCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vYmluCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vY29uZgogIGNkICR7SU5TVEFMTF9ESVJ9Cn0KCiMgUmV0cnkgYSBkb3dubG9hZCB1bnRpbCB3ZSBnZXQgaXQuIGFyZ3M6IG5hbWUsIHNoYSwgdXJsMSwgdXJsMi4uLgpkb3dubG9hZC1vci1idXN0KCkgewogIGxvY2FsIC1yIGZpbGU9IiQxIgogIGxvY2FsIC1yIGhhc2g9IiQyIgogIHNoaWZ0IDIKCiAgdXJscz0oICQqICkKICB3aGlsZSB0cnVlOyBkbwogICAgZm9yIHVybCBpbiAiJHt1cmxzW0BdfSI7IGRvCiAgICAgIGNvbW1hbmRzPSgKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLS1jb21wcmVzc2VkIC1MbyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQgMjAgLS1yZXRyeSA2IC0tcmV0cnktZGVsYXkgMTAiCiAgICAgICAgIndnZXQgLS1pbmV0NC1vbmx5IC0tY29tcHJlc3Npb249YXV0byAtTyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQ9MjAgLS10cmllcz02IC0td2FpdD0xMCIKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLUxvICIke2ZpbGV9IiAtLWNvbm5lY3QtdGltZW91dCAyMCAtLXJldHJ5IDYgLS1yZXRyeS1kZWxheSAxMCIKICAgICAgICAid2dldCAtLWluZXQ0LW9ubHkgLU8gIiR7ZmlsZX0iIC0tY29ubmVjdC10aW1lb3V0PTIwIC0tdHJpZXM9NiAtLXdhaXQ9MTAiCiAgICAgICkKICAgICAgZm9yIGNtZCBpbiAiJHtjb21tYW5kc1tAXX0iOyBkbwogICAgICAgIGVjaG8gIkF0dGVtcHRpbmcgZG93bmxvYWQgd2l0aDogJHtjbWR9IHt1cmx9IgogICAgICAgIGlmICEgKCR7Y21kfSAiJHt1cmx9Iik7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IERvd25sb2FkIGZhaWxlZCB3aXRoICR7Y21kfSA9PSIKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZmkKICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV0gJiYgISB2YWxpZGF0ZS1oYXNoICIke2ZpbGV9IiAiJHtoYXNofSI7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IEhhc2ggdmFsaWRhdGlvbiBvZiAke3VybH0gZmFpbGVkLiBSZXRyeWluZy4gPT0iCiAgICAgICAgICBybSAtZiAiJHtmaWxlfSIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gKFNIQTEgPSAke2hhc2h9KSA9PSIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gPT0iCiAgICAgICAgICBmaQogICAgICAgICAgcmV0dXJuCiAgICAgICAgZmkKICAgICAgZG9uZQogICAgZG9uZQoKICAgIGVjaG8gIkFsbCBkb3dubG9hZHMgZmFpbGVkOyBzbGVlcGluZyBiZWZvcmUgcmV0cnlpbmciCiAgICBzbGVlcCA2MAogIGRvbmUKfQoKdmFsaWRhdGUtaGFzaCgpIHsKICBsb2NhbCAtciBmaWxlPSIkMSIKICBsb2NhbCAtciBleHBlY3RlZD0iJDIiCiAgbG9jYWwgYWN0dWFsCgogIGFjdHVhbD0kKHNoYTI1NnN1bSAke2ZpbGV9IHwgYXdrICd7IHByaW50ICQxIH0nKSB8fCB0cnVlCiAgaWYgW1sgIiR7YWN0dWFsfSIgIT0gIiR7ZXhwZWN0ZWR9IiBdXTsgdGhlbgogICAgZWNobyAiPT0gJHtmaWxlfSBjb3JydXB0ZWQsIGhhc2ggJHthY3R1YWx9IGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgJHtleHBlY3RlZH0gPT0iCiAgICByZXR1cm4gMQogIGZpCn0KCmZ1bmN0aW9uIHNwbGl0LWNvbW1hcygpIHsKICBlY2hvICQxIHwgdHIgIiwiICJcbiIKfQoKZnVuY3Rpb24gdHJ5LWRvd25sb2FkLXJlbGVhc2UoKSB7CiAgbG9jYWwgLXIgbm9kZXVwX3VybHM9KCAkKHNwbGl0LWNvbW1hcyAiJHtOT0RFVVBfVVJMfSIpICkKICBpZiBbWyAtbiAiJHtOT0RFVVBfSEFTSDotfSIgXV07IHRoZW4KICAgIGxvY2FsIC1yIG5vZGV1cF9oYXNoPSIke05PREVVUF9IQVNIfSIKICBlbHNlCiAgIyBUT0RPOiBSZW1vdmU/CiAgICBlY2hvICJEb3dubG9hZGluZyBzaGEyNTYgKG5vdCBmb3VuZCBpbiBlbnYpIgogICAgZG93bmxvYWQtb3ItYnVzdCBub2RldXAuc2hhMjU2ICIiICIke25vZGV1cF91cmxzW0BdLyUvLnNoYTI1Nn0iCiAgICBsb2NhbCAtciBub2RldXBfaGFzaD0kKGNhdCBub2RldXAuc2hhMjU2KQogIGZpCgogIGVjaG8gIkRvd25sb2FkaW5nIG5vZGV1cCAoJHtub2RldXBfdXJsc1tAXX0pIgogIGRvd25sb2FkLW9yLWJ1c3Qgbm9kZXVwICIke25vZGV1cF9oYXNofSIgIiR7bm9kZXVwX3VybHNbQF19IgoKICBjaG1vZCAreCBub2RldXAKfQoKZnVuY3Rpb24gZG93bmxvYWQtcmVsZWFzZSgpIHsKICBjYXNlICIkKHVuYW1lIC1tKSIgaW4KICB4ODZfNjQqfGk/ODZfNjQqfGFtZDY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BTUQ2NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BTUQ2NH0iCiAgICA7OwogIGFhcmNoNjQqfGFybTY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BUk02NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BUk02NH0iCiAgICA7OwogICopCiAgICBlY2hvICJVbnN1cHBvcnRlZCBob3N0IGFyY2g6ICQodW5hbWUgLW0pIiA+JjIKICAgIGV4aXQgMQogICAgOzsKICBlc2FjCgogICMgSW4gY2FzZSBvZiBmYWlsdXJlIGNoZWNraW5nIGludGVncml0eSBvZiByZWxlYXNlLCByZXRyeS4KICBjZCAke0lOU1RBTExfRElSfS9iaW4KICB1bnRpbCB0cnktZG93bmxvYWQtcmVsZWFzZTsgZG8KICAgIHNsZWVwIDE1CiAgICBlY2hvICJDb3VsZG4ndCBkb3dubG9hZCByZWxlYXNlLiBSZXRyeWluZy4uLiIKICBkb25lCgogIGVjaG8gIlJ1bm5pbmcgbm9kZXVwIgogICMgV2UgY2FuJ3QgcnVuIGluIHRoZSBmb3JlZ3JvdW5kIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzIzNzkzCiAgKCBjZCAke0lOU1RBTExfRElSfS9iaW47IC4vbm9kZXVwIC0taW5zdGFsbC1zeXN0ZW1kLXVuaXQgLS1jb25mPSR7SU5TVEFMTF9ESVJ9L2NvbmYva3ViZV9lbnYueWFtbCAtLXY9OCAgKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi9iaW4vc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIHx8IGVjaG8gImZhaWxlZCB0byBzZXQgdXAgZW5zdXJlIG1hY2hpbmUtaWQgY29uZmlndXJlZCIKCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBzdGFydGluZyA9PSIKZW5zdXJlLWluc3RhbGwtZGlyCgpjYXQgPiBjb25mL2NsdXN0ZXJfc3BlYy55YW1sIDw8ICdfX0VPRl9DTFVTVEVSX1NQRUMnCmNsb3VkQ29uZmlnOiBudWxsCmNvbnRhaW5lclJ1bnRpbWU6IGRvY2tlcgpjb250YWluZXJkOgogIHNraXBJbnN0YWxsOiB0cnVlCmRvY2tlcjoKICBpcE1hc3E6IGZhbHNlCiAgaXBUYWJsZXM6IGZhbHNlCiAgbG9nRHJpdmVyOiBqc29uLWZpbGUKICBsb2dMZXZlbDogaW5mbwogIGxvZ09wdDoKICAtIG1heC1zaXplPTEwbQogIC0gbWF4LWZpbGU9NQogIHN0b3JhZ2U6IG92ZXJsYXkyLG92ZXJsYXksYXVmcwogIHZlcnNpb246IDE4LjA2LjMKZW5jcnlwdGlvbkNvbmZpZzogbnVsbApldGNkQ2x1c3RlcnM6CiAgZXZlbnRzOgogICAgdmVyc2lvbjogMy4zLjEwCiAgbWFpbjoKICAgIHZlcnNpb246IDMuMy4xMAprdWJlQVBJU2VydmVyOgogIGFsbG93UHJpdmlsZWdlZDogdHJ1ZQogIGFub255bW91c0F1dGg6IGZhbHNlCiAgYXBpU2VydmVyQ291bnQ6IDEKICBhdXRob3JpemF0aW9uTW9kZTogQWx3YXlzQWxsb3cKICBiaW5kQWRkcmVzczogMC4wLjAuMAogIGNsb3VkUHJvdmlkZXI6IGF3cwogIGVuYWJsZUFkbWlzc2lvblBsdWdpbnM6CiAgLSBOYW1lc3BhY2VMaWZlY3ljbGUKICAtIExpbWl0UmFuZ2VyCiAgLSBTZXJ2aWNlQWNjb3VudAogIC0gUGVyc2lzdGVudFZvbHVtZUxhYmVsCiAgLSBEZWZhdWx0U3RvcmFnZUNsYXNzCiAgLSBEZWZhdWx0VG9sZXJhdGlvblNlY29uZHMKICAtIE11dGF0aW5nQWRtaXNzaW9uV2ViaG9vawogIC0gVmFsaWRhdGluZ0FkbWlzc2lvbldlYmhvb2sKICAtIE5vZGVSZXN0cmljdGlvbgogIC0gUmVzb3VyY2VRdW90YQogIGV0Y2RTZXJ2ZXJzOgogIC0gaHR0cDovLzEyNy4wLjAuMTo0MDAxCiAgZXRjZFNlcnZlcnNPdmVycmlkZXM6CiAgLSAvZXZlbnRzI2h0dHA6Ly8xMjcuMC4wLjE6NDAwMgogIGltYWdlOiBrOHMuZ2NyLmlvL2t1YmUtYXBpc2VydmVyOnYxLjE0LjAKICBpbnNlY3VyZUJpbmRBZGRyZXNzOiAxMjcuMC4wLjEKICBpbnNlY3VyZVBvcnQ6IDgwODAKICBrdWJlbGV0UHJlZmVycmVkQWRkcmVzc1R5cGVzOgogIC0gSW50ZXJuYWxJUAogIC0gSG9zdG5hbWUKICAtIEV4dGVybmFsSVAKICBsb2dMZXZlbDogMgogIHJlcXVlc3RoZWFkZXJBbGxvd2VkTmFtZXM6CiAgLSBhZ2dyZWdhdG9yCiAgcmVxdWVzdGhlYWRlckV4dHJhSGVhZGVyUHJlZml4ZXM6CiAgLSBYLVJlbW90ZS1FeHRyYS0KICByZXF1ZXN0aGVhZGVyR3JvdXBIZWFkZXJzOgogIC0gWC1SZW1vdGUtR3JvdXAKICByZXF1ZXN0aGVhZGVyVXNlcm5hbWVIZWFkZXJzOgogIC0gWC1SZW1vdGUtVXNlcgogIHNlY3VyZVBvcnQ6IDQ0MwogIHNlcnZpY2VDbHVzdGVySVBSYW5nZTogMTAwLjY0LjAuMC8xMwogIHN0b3JhZ2VCYWNrZW5kOiBldGNkMwprdWJlQ29udHJvbGxlck1hbmFnZXI6CiAgYWxsb2NhdGVOb2RlQ0lEUnM6IHRydWUKICBhdHRhY2hEZXRhY2hSZWNvbmNpbGVTeW5jUGVyaW9kOiAxbTBzCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckNJRFI6IDEwMC45Ni4wLjAvMTEKICBjbHVzdGVyTmFtZTogbWluaW1hbC1qc29uLmV4YW1wbGUuY29tCiAgY29uZmlndXJlQ2xvdWRSb3V0ZXM6IHRydWUKICBpbWFnZTogazhzLmdjci5pby9rdWJlLWNvbnRyb2xsZXItbWFuYWdlcjp2MS4xNC4wCiAgbGVhZGVyRWxlY3Rpb246CiAgICBsZWFkZXJFbGVjdDogdHJ1ZQogIGxvZ0xldmVsOiAyCiAgdXNlU2VydmljZUFjY291bnRDcmVkZW50aWFsczogdHJ1ZQprdWJlUHJveHk6CiAgY2x1c3RlckNJRFI6IDEwMC45Ni4wLjAvMTEKICBjcHVSZXF1ZXN0OiAxMDBtCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAgaW1hZ2U6IGs4cy5nY3IuaW8va3ViZS1wcm94eTp2MS4xNC4wCiAgbG9nTGV2ZWw6IDIKa3ViZVNjaGVkdWxlcjoKICBpbWFnZTogazhzLmdjci5pby9rdWJlLXNjaGVkdWxlcjp2MS4xNC4wCiAgbGVhZGVyRWxlY3Rpb246CiAgICBsZWFkZXJFbGVjdDogdHJ1ZQogIGxvZ0xldmVsOiAyCmt1YmVsZXQ6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9uTWFzcXVlcmFkZUNJRFI6IDEwMC42NC4wLjAvMTAKICBwb2RJbmZyYUNvbnRhaW5lckltYWdlOiBrOHMuZ2NyLmlvL3BhdXNlOjMuMgogIHBvZE1hbmlmZXN0UGF0aDogL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cwptYXN0ZXJLdWJlbGV0OgogIGFub255bW91c0F1dGg6IGZhbHNlCiAgY2dyb3VwUm9vdDogLwogIGNsb3VkUHJvdmlkZXI6IGF3cwogIGNsdXN0ZXJETlM6IDEwMC42NC4wLjEwCiAgY2x1c3RlckRvbWFpbjogY2x1c3Rlci5sb2NhbAogIGVuYWJsZURlYnVnZ2luZ0hhbmRsZXJzOiB0cnVlCiAgZXZpY3Rpb25IYXJkOiBtZW1vcnkuYXZhaWxhYmxlPDEwME1pLG5vZGVmcy5hdmFpbGFibGU8MTAlLG5vZGVmcy5pbm9kZXNGcmVlPDUlLGltYWdlZnMuYXZhaWxhYmxlPDEwJSxpbWFnZWZzLmlub2Rlc0ZyZWU8NSUKICBmZWF0dXJlR2F0ZXM6CiAgICBFeHBlcmltZW50YWxDcml0aWNhbFBvZEFubm90YXRpb246ICJ0cnVlIgogIGhvc3RuYW1lT3ZlcnJpZGU6ICdAYXdzJwogIGt1YmVjb25maWdQYXRoOiAvdmFyL2xpYi9rdWJlbGV0L2t1YmVjb25maWcKICBsb2dMZXZlbDogMgogIG5ldHdvcmtQbHVnaW5NVFU6IDkwMDEKICBuZXR3b3JrUGx1Z2luTmFtZToga3ViZW5ldAogIG5vbk1hc3F1ZXJhZGVDSURSOiAxMDAuNjQuMC4wLzEwCiAgcG9kSW5mcmFDb250YWluZXJJbWFnZTogazhzLmdjci5pby9wYXVzZTozLjIKICBwb2RNYW5pZmVzdFBhdGg6IC9ldGMva3ViZXJuZXRlcy9tYW5pZmVzdHMKICByZWdpc3RlclNjaGVkdWxhYmxlOiBmYWxzZQoKX19FT0ZfQ0xVU1RFUl9TUEVDCgpjYXQgPiBjb25mL2lnX3NwZWMueWFtbCA8PCAnX19FT0ZfSUdfU1BFQycKa3ViZWxldDogbnVsbApub2RlTGFiZWxzOiBudWxsCnRhaW50czogbnVsbAoKX19FT0ZfSUdfU1BFQwoKY2F0ID4gY29uZi9rdWJlX2Vudi55YW1sIDw8ICdfX0VPRl9LVUJFX0VOVicKQXNzZXRzOgogIGFtZDY0OgogIC0gYzNiNzM2ZmQwZjAwMzc2NWMxMmQ5OWYyYzk5NWE4MzY5ZTYyNDFmNEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYW1kNjQva3ViZWxldAogIC0gN2UzYTNlYTY2MzE1M2Y5MDBjYmQ1MjkwMGEzOWM5MWZhOWYzMzRiZUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYW1kNjQva3ViZWN0bAogIC0gM2NhMTVjMGExOGVlODMwNTIwY2YzYTk1NDA4YmU4MjZjYmQyNTVhMTUzNWEzOGUwYmU5NjA4YjI1YWQ4YmY2NEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL25ldHdvcmstcGx1Z2lucy9jbmktcGx1Z2lucy1hbWQ2NC12MC43LjUudGd6CiAgYXJtNjQ6CiAgLSBkZjM4ZTA0NTc2MDI2MzkzMDU1Y2NjNzdjMGRjZTczNjEyOTk2NTYxQGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvcmVsZWFzZS92MS4xNC4wL2Jpbi9saW51eC9hcm02NC9rdWJlbGV0CiAgLSAwMWMyYjZiNDNkMzZiNmJmYWZjODBhMzczNzM5MWMxOWViZmI4YWQ1QGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvcmVsZWFzZS92MS4xNC4wL2Jpbi9saW51eC9hcm02NC9rdWJlY3RsCiAgLSA3ZmVjOTFhZjc4ZTk1NDhkZjMwNmYwZWM0M2JlYTUyN2M4YzEwY2MzYTk2ODJjMzNlOTcxYzg1MjJhN2ZjZGVkQGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvbmV0d29yay1wbHVnaW5zL2NuaS1wbHVnaW5zLWFybTY0LXYwLjcuNS50Z3oKQ2x1c3Rlck5hbWU6IG1pbmltYWwtanNvbi5leGFtcGxlLmNvbQpDb25maWdCYXNlOiBtZW1mczovL2NsdXN0ZXJzLmV4YW1wbGUuY29tL21pbmltYWwtanNvbi5leGFtcGxlLmNvbQpJbnN0YW5jZUdyb3VwTmFtZTogbWFzdGVyLXVzLXRlc3QtMWEKSW5zdGFuY2VHcm91cFJvbGU6IE1hc3RlcgpUYWdzOgotIF9hdXRvbWF0aWNfdXBncmFkZXMKLSBfYXdzCmNoYW5uZWxzOgotIG1lbWZzOi8vY2x1c3RlcnMuZXhhbXBsZS5jb20vbWluaW1hbC1qc29uLmV4YW1wbGUuY29tL2FkZG9ucy9ib290c3RyYXAtY2hhbm5lbC55YW1sCmV0Y2RNYW5pZmVzdHM6Ci0gbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLWpzb24uZXhhbXBsZS5jb20vbWFuaWZlc3RzL2V0Y2QvbWFpbi55YW1sCi0gbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLWpzb24uZXhhbXBsZS5jb20vbWFuaWZlc3RzL2V0Y2QvZXZlbnRzLnlhbWwKcHJvdG9rdWJlSW1hZ2U6CiAgaGFzaDogNDJhOWM0MzI0ZmUyNmQ2M2NlMTFmM2RkNzgzNjM3MWJjOTNmYTA2Y2E4ZjQ3OTgwNzcyOGYzNzQ2ZTI3MDYxYgogIG5hbWU6IHByb3Rva3ViZToxLjE1LjAKICBzb3VyY2VzOgogIC0gaHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2ltYWdlcy9wcm90b2t1YmUudGFyLmd6CiAgLSBodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvaW1hZ2VzLXByb3Rva3ViZS50YXIuZ3oKICAtIGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9pbWFnZXMvcHJvdG9rdWJlLnRhci5negoKX19FT0ZfS1VCRV9FTlYKCmRvd25sb2FkLXJlbGVhc2UKZWNobyAiPT0gbm9kZXVwIG5vZGUgY29uZmlnIGRvbmUgPT0iCg== +IyEvYmluL2Jhc2gKIyBDb3B5cmlnaHQgMjAxNiBUaGUgS3ViZXJuZXRlcyBBdXRob3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpzZXQgLW8gZXJyZXhpdApzZXQgLW8gbm91bnNldApzZXQgLW8gcGlwZWZhaWwKCk5PREVVUF9VUkxfQU1ENjQ9aHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2xpbnV4L2FtZDY0L25vZGV1cCxodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvbGludXgtYW1kNjQtbm9kZXVwLGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9saW51eC9hbWQ2NC9ub2RldXAKTk9ERVVQX0hBU0hfQU1ENjQ9OTYwNGVmMTgyNjdhZDdiNWNmNGNlYmJmN2FiNjQ0MjNjZjViYjAzNDJkMTY5YzYwOGFjNjM3NmU2YWYyNmQ4MQpOT0RFVVBfVVJMX0FSTTY0PQpOT0RFVVBfSEFTSF9BUk02ND0KCmV4cG9ydCBBV1NfUkVHSU9OPXVzLXRlc3QtMQoKCgoKZnVuY3Rpb24gZW5zdXJlLWluc3RhbGwtZGlyKCkgewogIElOU1RBTExfRElSPSIvb3B0L2tvcHMiCiAgIyBPbiBDb250YWluZXJPUywgd2UgaW5zdGFsbCB1bmRlciAvdmFyL2xpYi90b29sYm94OyAvb3B0IGlzIHJvIGFuZCBub2V4ZWMKICBpZiBbWyAtZCAvdmFyL2xpYi90b29sYm94IF1dOyB0aGVuCiAgICBJTlNUQUxMX0RJUj0iL3Zhci9saWIvdG9vbGJveC9rb3BzIgogIGZpCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vYmluCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vY29uZgogIGNkICR7SU5TVEFMTF9ESVJ9Cn0KCiMgUmV0cnkgYSBkb3dubG9hZCB1bnRpbCB3ZSBnZXQgaXQuIGFyZ3M6IG5hbWUsIHNoYSwgdXJsMSwgdXJsMi4uLgpkb3dubG9hZC1vci1idXN0KCkgewogIGxvY2FsIC1yIGZpbGU9IiQxIgogIGxvY2FsIC1yIGhhc2g9IiQyIgogIHNoaWZ0IDIKCiAgdXJscz0oICQqICkKICB3aGlsZSB0cnVlOyBkbwogICAgZm9yIHVybCBpbiAiJHt1cmxzW0BdfSI7IGRvCiAgICAgIGNvbW1hbmRzPSgKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLS1jb21wcmVzc2VkIC1MbyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQgMjAgLS1yZXRyeSA2IC0tcmV0cnktZGVsYXkgMTAiCiAgICAgICAgIndnZXQgLS1pbmV0NC1vbmx5IC0tY29tcHJlc3Npb249YXV0byAtTyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQ9MjAgLS10cmllcz02IC0td2FpdD0xMCIKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLUxvICIke2ZpbGV9IiAtLWNvbm5lY3QtdGltZW91dCAyMCAtLXJldHJ5IDYgLS1yZXRyeS1kZWxheSAxMCIKICAgICAgICAid2dldCAtLWluZXQ0LW9ubHkgLU8gIiR7ZmlsZX0iIC0tY29ubmVjdC10aW1lb3V0PTIwIC0tdHJpZXM9NiAtLXdhaXQ9MTAiCiAgICAgICkKICAgICAgZm9yIGNtZCBpbiAiJHtjb21tYW5kc1tAXX0iOyBkbwogICAgICAgIGVjaG8gIkF0dGVtcHRpbmcgZG93bmxvYWQgd2l0aDogJHtjbWR9IHt1cmx9IgogICAgICAgIGlmICEgKCR7Y21kfSAiJHt1cmx9Iik7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IERvd25sb2FkIGZhaWxlZCB3aXRoICR7Y21kfSA9PSIKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZmkKICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV0gJiYgISB2YWxpZGF0ZS1oYXNoICIke2ZpbGV9IiAiJHtoYXNofSI7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IEhhc2ggdmFsaWRhdGlvbiBvZiAke3VybH0gZmFpbGVkLiBSZXRyeWluZy4gPT0iCiAgICAgICAgICBybSAtZiAiJHtmaWxlfSIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gKFNIQTEgPSAke2hhc2h9KSA9PSIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gPT0iCiAgICAgICAgICBmaQogICAgICAgICAgcmV0dXJuCiAgICAgICAgZmkKICAgICAgZG9uZQogICAgZG9uZQoKICAgIGVjaG8gIkFsbCBkb3dubG9hZHMgZmFpbGVkOyBzbGVlcGluZyBiZWZvcmUgcmV0cnlpbmciCiAgICBzbGVlcCA2MAogIGRvbmUKfQoKdmFsaWRhdGUtaGFzaCgpIHsKICBsb2NhbCAtciBmaWxlPSIkMSIKICBsb2NhbCAtciBleHBlY3RlZD0iJDIiCiAgbG9jYWwgYWN0dWFsCgogIGFjdHVhbD0kKHNoYTI1NnN1bSAke2ZpbGV9IHwgYXdrICd7IHByaW50ICQxIH0nKSB8fCB0cnVlCiAgaWYgW1sgIiR7YWN0dWFsfSIgIT0gIiR7ZXhwZWN0ZWR9IiBdXTsgdGhlbgogICAgZWNobyAiPT0gJHtmaWxlfSBjb3JydXB0ZWQsIGhhc2ggJHthY3R1YWx9IGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgJHtleHBlY3RlZH0gPT0iCiAgICByZXR1cm4gMQogIGZpCn0KCmZ1bmN0aW9uIHNwbGl0LWNvbW1hcygpIHsKICBlY2hvICQxIHwgdHIgIiwiICJcbiIKfQoKZnVuY3Rpb24gdHJ5LWRvd25sb2FkLXJlbGVhc2UoKSB7CiAgbG9jYWwgLXIgbm9kZXVwX3VybHM9KCAkKHNwbGl0LWNvbW1hcyAiJHtOT0RFVVBfVVJMfSIpICkKICBpZiBbWyAtbiAiJHtOT0RFVVBfSEFTSDotfSIgXV07IHRoZW4KICAgIGxvY2FsIC1yIG5vZGV1cF9oYXNoPSIke05PREVVUF9IQVNIfSIKICBlbHNlCiAgIyBUT0RPOiBSZW1vdmU/CiAgICBlY2hvICJEb3dubG9hZGluZyBzaGEyNTYgKG5vdCBmb3VuZCBpbiBlbnYpIgogICAgZG93bmxvYWQtb3ItYnVzdCBub2RldXAuc2hhMjU2ICIiICIke25vZGV1cF91cmxzW0BdLyUvLnNoYTI1Nn0iCiAgICBsb2NhbCAtciBub2RldXBfaGFzaD0kKGNhdCBub2RldXAuc2hhMjU2KQogIGZpCgogIGVjaG8gIkRvd25sb2FkaW5nIG5vZGV1cCAoJHtub2RldXBfdXJsc1tAXX0pIgogIGRvd25sb2FkLW9yLWJ1c3Qgbm9kZXVwICIke25vZGV1cF9oYXNofSIgIiR7bm9kZXVwX3VybHNbQF19IgoKICBjaG1vZCAreCBub2RldXAKfQoKZnVuY3Rpb24gZG93bmxvYWQtcmVsZWFzZSgpIHsKICBjYXNlICIkKHVuYW1lIC1tKSIgaW4KICB4ODZfNjQqfGk/ODZfNjQqfGFtZDY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BTUQ2NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BTUQ2NH0iCiAgICA7OwogIGFhcmNoNjQqfGFybTY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BUk02NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BUk02NH0iCiAgICA7OwogICopCiAgICBlY2hvICJVbnN1cHBvcnRlZCBob3N0IGFyY2g6ICQodW5hbWUgLW0pIiA+JjIKICAgIGV4aXQgMQogICAgOzsKICBlc2FjCgogICMgSW4gY2FzZSBvZiBmYWlsdXJlIGNoZWNraW5nIGludGVncml0eSBvZiByZWxlYXNlLCByZXRyeS4KICBjZCAke0lOU1RBTExfRElSfS9iaW4KICB1bnRpbCB0cnktZG93bmxvYWQtcmVsZWFzZTsgZG8KICAgIHNsZWVwIDE1CiAgICBlY2hvICJDb3VsZG4ndCBkb3dubG9hZCByZWxlYXNlLiBSZXRyeWluZy4uLiIKICBkb25lCgogIGVjaG8gIlJ1bm5pbmcgbm9kZXVwIgogICMgV2UgY2FuJ3QgcnVuIGluIHRoZSBmb3JlZ3JvdW5kIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzIzNzkzCiAgKCBjZCAke0lOU1RBTExfRElSfS9iaW47IC4vbm9kZXVwIC0taW5zdGFsbC1zeXN0ZW1kLXVuaXQgLS1jb25mPSR7SU5TVEFMTF9ESVJ9L2NvbmYva3ViZV9lbnYueWFtbCAtLXY9OCAgKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi9iaW4vc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIHx8IGVjaG8gImZhaWxlZCB0byBzZXQgdXAgZW5zdXJlIG1hY2hpbmUtaWQgY29uZmlndXJlZCIKCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBzdGFydGluZyA9PSIKZW5zdXJlLWluc3RhbGwtZGlyCgpjYXQgPiBjb25mL2NsdXN0ZXJfc3BlYy55YW1sIDw8ICdfX0VPRl9DTFVTVEVSX1NQRUMnCmNsb3VkQ29uZmlnOiBudWxsCmNvbnRhaW5lclJ1bnRpbWU6IGRvY2tlcgpjb250YWluZXJkOgogIHNraXBJbnN0YWxsOiB0cnVlCmRvY2tlcjoKICBpcE1hc3E6IGZhbHNlCiAgaXBUYWJsZXM6IGZhbHNlCiAgbG9nRHJpdmVyOiBqc29uLWZpbGUKICBsb2dMZXZlbDogaW5mbwogIGxvZ09wdDoKICAtIG1heC1zaXplPTEwbQogIC0gbWF4LWZpbGU9NQogIHN0b3JhZ2U6IG92ZXJsYXkyLG92ZXJsYXksYXVmcwogIHZlcnNpb246IDE4LjA2LjMKZW5jcnlwdGlvbkNvbmZpZzogbnVsbApldGNkQ2x1c3RlcnM6CiAgZXZlbnRzOgogICAgdmVyc2lvbjogMy4zLjEwCiAgbWFpbjoKICAgIHZlcnNpb246IDMuMy4xMAprdWJlQVBJU2VydmVyOgogIGFsbG93UHJpdmlsZWdlZDogdHJ1ZQogIGFub255bW91c0F1dGg6IGZhbHNlCiAgYXBpU2VydmVyQ291bnQ6IDEKICBhdXRob3JpemF0aW9uTW9kZTogQWx3YXlzQWxsb3cKICBiaW5kQWRkcmVzczogMC4wLjAuMAogIGNsb3VkUHJvdmlkZXI6IGF3cwogIGVuYWJsZUFkbWlzc2lvblBsdWdpbnM6CiAgLSBOYW1lc3BhY2VMaWZlY3ljbGUKICAtIExpbWl0UmFuZ2VyCiAgLSBTZXJ2aWNlQWNjb3VudAogIC0gUGVyc2lzdGVudFZvbHVtZUxhYmVsCiAgLSBEZWZhdWx0U3RvcmFnZUNsYXNzCiAgLSBEZWZhdWx0VG9sZXJhdGlvblNlY29uZHMKICAtIE11dGF0aW5nQWRtaXNzaW9uV2ViaG9vawogIC0gVmFsaWRhdGluZ0FkbWlzc2lvbldlYmhvb2sKICAtIE5vZGVSZXN0cmljdGlvbgogIC0gUmVzb3VyY2VRdW90YQogIGV0Y2RTZXJ2ZXJzOgogIC0gaHR0cDovLzEyNy4wLjAuMTo0MDAxCiAgZXRjZFNlcnZlcnNPdmVycmlkZXM6CiAgLSAvZXZlbnRzI2h0dHA6Ly8xMjcuMC4wLjE6NDAwMgogIGltYWdlOiBrOHMuZ2NyLmlvL2t1YmUtYXBpc2VydmVyOnYxLjE0LjAKICBpbnNlY3VyZUJpbmRBZGRyZXNzOiAxMjcuMC4wLjEKICBpbnNlY3VyZVBvcnQ6IDgwODAKICBrdWJlbGV0UHJlZmVycmVkQWRkcmVzc1R5cGVzOgogIC0gSW50ZXJuYWxJUAogIC0gSG9zdG5hbWUKICAtIEV4dGVybmFsSVAKICBsb2dMZXZlbDogMgogIHJlcXVlc3RoZWFkZXJBbGxvd2VkTmFtZXM6CiAgLSBhZ2dyZWdhdG9yCiAgcmVxdWVzdGhlYWRlckV4dHJhSGVhZGVyUHJlZml4ZXM6CiAgLSBYLVJlbW90ZS1FeHRyYS0KICByZXF1ZXN0aGVhZGVyR3JvdXBIZWFkZXJzOgogIC0gWC1SZW1vdGUtR3JvdXAKICByZXF1ZXN0aGVhZGVyVXNlcm5hbWVIZWFkZXJzOgogIC0gWC1SZW1vdGUtVXNlcgogIHNlY3VyZVBvcnQ6IDQ0MwogIHNlcnZpY2VDbHVzdGVySVBSYW5nZTogMTAwLjY0LjAuMC8xMwogIHN0b3JhZ2VCYWNrZW5kOiBldGNkMwprdWJlQ29udHJvbGxlck1hbmFnZXI6CiAgYWxsb2NhdGVOb2RlQ0lEUnM6IHRydWUKICBhdHRhY2hEZXRhY2hSZWNvbmNpbGVTeW5jUGVyaW9kOiAxbTBzCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckNJRFI6IDEwMC45Ni4wLjAvMTEKICBjbHVzdGVyTmFtZTogbWluaW1hbC1qc29uLmV4YW1wbGUuY29tCiAgY29uZmlndXJlQ2xvdWRSb3V0ZXM6IHRydWUKICBpbWFnZTogazhzLmdjci5pby9rdWJlLWNvbnRyb2xsZXItbWFuYWdlcjp2MS4xNC4wCiAgbGVhZGVyRWxlY3Rpb246CiAgICBsZWFkZXJFbGVjdDogdHJ1ZQogIGxvZ0xldmVsOiAyCiAgdXNlU2VydmljZUFjY291bnRDcmVkZW50aWFsczogdHJ1ZQprdWJlUHJveHk6CiAgY2x1c3RlckNJRFI6IDEwMC45Ni4wLjAvMTEKICBjcHVSZXF1ZXN0OiAxMDBtCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAgaW1hZ2U6IGs4cy5nY3IuaW8va3ViZS1wcm94eTp2MS4xNC4wCiAgbG9nTGV2ZWw6IDIKa3ViZVNjaGVkdWxlcjoKICBpbWFnZTogazhzLmdjci5pby9rdWJlLXNjaGVkdWxlcjp2MS4xNC4wCiAgbGVhZGVyRWxlY3Rpb246CiAgICBsZWFkZXJFbGVjdDogdHJ1ZQogIGxvZ0xldmVsOiAyCmt1YmVsZXQ6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9uTWFzcXVlcmFkZUNJRFI6IDEwMC42NC4wLjAvMTAKICBwb2RJbmZyYUNvbnRhaW5lckltYWdlOiBrOHMuZ2NyLmlvL3BhdXNlOjMuMgogIHBvZE1hbmlmZXN0UGF0aDogL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cwptYXN0ZXJLdWJlbGV0OgogIGFub255bW91c0F1dGg6IGZhbHNlCiAgY2dyb3VwUm9vdDogLwogIGNsb3VkUHJvdmlkZXI6IGF3cwogIGNsdXN0ZXJETlM6IDEwMC42NC4wLjEwCiAgY2x1c3RlckRvbWFpbjogY2x1c3Rlci5sb2NhbAogIGVuYWJsZURlYnVnZ2luZ0hhbmRsZXJzOiB0cnVlCiAgZXZpY3Rpb25IYXJkOiBtZW1vcnkuYXZhaWxhYmxlPDEwME1pLG5vZGVmcy5hdmFpbGFibGU8MTAlLG5vZGVmcy5pbm9kZXNGcmVlPDUlLGltYWdlZnMuYXZhaWxhYmxlPDEwJSxpbWFnZWZzLmlub2Rlc0ZyZWU8NSUKICBmZWF0dXJlR2F0ZXM6CiAgICBFeHBlcmltZW50YWxDcml0aWNhbFBvZEFubm90YXRpb246ICJ0cnVlIgogIGhvc3RuYW1lT3ZlcnJpZGU6ICdAYXdzJwogIGt1YmVjb25maWdQYXRoOiAvdmFyL2xpYi9rdWJlbGV0L2t1YmVjb25maWcKICBsb2dMZXZlbDogMgogIG5ldHdvcmtQbHVnaW5NVFU6IDkwMDEKICBuZXR3b3JrUGx1Z2luTmFtZToga3ViZW5ldAogIG5vbk1hc3F1ZXJhZGVDSURSOiAxMDAuNjQuMC4wLzEwCiAgcG9kSW5mcmFDb250YWluZXJJbWFnZTogazhzLmdjci5pby9wYXVzZTozLjIKICBwb2RNYW5pZmVzdFBhdGg6IC9ldGMva3ViZXJuZXRlcy9tYW5pZmVzdHMKICByZWdpc3RlclNjaGVkdWxhYmxlOiBmYWxzZQoKX19FT0ZfQ0xVU1RFUl9TUEVDCgpjYXQgPiBjb25mL2lnX3NwZWMueWFtbCA8PCAnX19FT0ZfSUdfU1BFQycKe30KCl9fRU9GX0lHX1NQRUMKCmNhdCA+IGNvbmYva3ViZV9lbnYueWFtbCA8PCAnX19FT0ZfS1VCRV9FTlYnCkFzc2V0czoKICBhbWQ2NDoKICAtIGMzYjczNmZkMGYwMDM3NjVjMTJkOTlmMmM5OTVhODM2OWU2MjQxZjRAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9yZWxlYXNlL3YxLjE0LjAvYmluL2xpbnV4L2FtZDY0L2t1YmVsZXQKICAtIDdlM2EzZWE2NjMxNTNmOTAwY2JkNTI5MDBhMzljOTFmYTlmMzM0YmVAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9yZWxlYXNlL3YxLjE0LjAvYmluL2xpbnV4L2FtZDY0L2t1YmVjdGwKICAtIDNjYTE1YzBhMThlZTgzMDUyMGNmM2E5NTQwOGJlODI2Y2JkMjU1YTE1MzVhMzhlMGJlOTYwOGIyNWFkOGJmNjRAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9uZXR3b3JrLXBsdWdpbnMvY25pLXBsdWdpbnMtYW1kNjQtdjAuNy41LnRnegogIGFybTY0OgogIC0gZGYzOGUwNDU3NjAyNjM5MzA1NWNjYzc3YzBkY2U3MzYxMjk5NjU2MUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYXJtNjQva3ViZWxldAogIC0gMDFjMmI2YjQzZDM2YjZiZmFmYzgwYTM3MzczOTFjMTllYmZiOGFkNUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYXJtNjQva3ViZWN0bAogIC0gN2ZlYzkxYWY3OGU5NTQ4ZGYzMDZmMGVjNDNiZWE1MjdjOGMxMGNjM2E5NjgyYzMzZTk3MWM4NTIyYTdmY2RlZEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL25ldHdvcmstcGx1Z2lucy9jbmktcGx1Z2lucy1hcm02NC12MC43LjUudGd6CkNsdXN0ZXJOYW1lOiBtaW5pbWFsLWpzb24uZXhhbXBsZS5jb20KQ29uZmlnQmFzZTogbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLWpzb24uZXhhbXBsZS5jb20KSW5zdGFuY2VHcm91cE5hbWU6IG1hc3Rlci11cy10ZXN0LTFhCkluc3RhbmNlR3JvdXBSb2xlOiBNYXN0ZXIKS3ViZWxldENvbmZpZzoKICBhbm9ueW1vdXNBdXRoOiBmYWxzZQogIGNncm91cFJvb3Q6IC8KICBjbG91ZFByb3ZpZGVyOiBhd3MKICBjbHVzdGVyRE5TOiAxMDAuNjQuMC4xMAogIGNsdXN0ZXJEb21haW46IGNsdXN0ZXIubG9jYWwKICBlbmFibGVEZWJ1Z2dpbmdIYW5kbGVyczogdHJ1ZQogIGV2aWN0aW9uSGFyZDogbWVtb3J5LmF2YWlsYWJsZTwxMDBNaSxub2RlZnMuYXZhaWxhYmxlPDEwJSxub2RlZnMuaW5vZGVzRnJlZTw1JSxpbWFnZWZzLmF2YWlsYWJsZTwxMCUsaW1hZ2Vmcy5pbm9kZXNGcmVlPDUlCiAgZmVhdHVyZUdhdGVzOgogICAgRXhwZXJpbWVudGFsQ3JpdGljYWxQb2RBbm5vdGF0aW9uOiAidHJ1ZSIKICBob3N0bmFtZU92ZXJyaWRlOiAnQGF3cycKICBrdWJlY29uZmlnUGF0aDogL3Zhci9saWIva3ViZWxldC9rdWJlY29uZmlnCiAgbG9nTGV2ZWw6IDIKICBuZXR3b3JrUGx1Z2luTVRVOiA5MDAxCiAgbmV0d29ya1BsdWdpbk5hbWU6IGt1YmVuZXQKICBub2RlTGFiZWxzOgogICAga3ViZXJuZXRlcy5pby9yb2xlOiBtYXN0ZXIKICAgIG5vZGUtcm9sZS5rdWJlcm5ldGVzLmlvL21hc3RlcjogIiIKICBub25NYXNxdWVyYWRlQ0lEUjogMTAwLjY0LjAuMC8xMAogIHBvZEluZnJhQ29udGFpbmVySW1hZ2U6IGs4cy5nY3IuaW8vcGF1c2U6My4yCiAgcG9kTWFuaWZlc3RQYXRoOiAvZXRjL2t1YmVybmV0ZXMvbWFuaWZlc3RzCiAgcmVnaXN0ZXJTY2hlZHVsYWJsZTogZmFsc2UKVGFnczoKLSBfYXV0b21hdGljX3VwZ3JhZGVzCi0gX2F3cwpjaGFubmVsczoKLSBtZW1mczovL2NsdXN0ZXJzLmV4YW1wbGUuY29tL21pbmltYWwtanNvbi5leGFtcGxlLmNvbS9hZGRvbnMvYm9vdHN0cmFwLWNoYW5uZWwueWFtbApldGNkTWFuaWZlc3RzOgotIG1lbWZzOi8vY2x1c3RlcnMuZXhhbXBsZS5jb20vbWluaW1hbC1qc29uLmV4YW1wbGUuY29tL21hbmlmZXN0cy9ldGNkL21haW4ueWFtbAotIG1lbWZzOi8vY2x1c3RlcnMuZXhhbXBsZS5jb20vbWluaW1hbC1qc29uLmV4YW1wbGUuY29tL21hbmlmZXN0cy9ldGNkL2V2ZW50cy55YW1sCnByb3Rva3ViZUltYWdlOgogIGhhc2g6IDQyYTljNDMyNGZlMjZkNjNjZTExZjNkZDc4MzYzNzFiYzkzZmEwNmNhOGY0Nzk4MDc3MjhmMzc0NmUyNzA2MWIKICBuYW1lOiBwcm90b2t1YmU6MS4xNS4wCiAgc291cmNlczoKICAtIGh0dHBzOi8vYXJ0aWZhY3RzLms4cy5pby9iaW5hcmllcy9rb3BzLzEuMTUuMC9pbWFnZXMvcHJvdG9rdWJlLnRhci5negogIC0gaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMva29wcy9yZWxlYXNlcy9kb3dubG9hZC92MS4xNS4wL2ltYWdlcy1wcm90b2t1YmUudGFyLmd6CiAgLSBodHRwczovL2t1YmV1cHYyLnMzLmFtYXpvbmF3cy5jb20va29wcy8xLjE1LjAvaW1hZ2VzL3Byb3Rva3ViZS50YXIuZ3oKCl9fRU9GX0tVQkVfRU5WCgpkb3dubG9hZC1yZWxlYXNlCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBkb25lID09Igo= diff --git a/tests/integration/update_cluster/minimal-json/data/aws_launch_template_nodes.minimal-json.example.com_user_data b/tests/integration/update_cluster/minimal-json/data/aws_launch_template_nodes.minimal-json.example.com_user_data index 04bde7468766a..f0514597e08a5 100644 --- a/tests/integration/update_cluster/minimal-json/data/aws_launch_template_nodes.minimal-json.example.com_user_data +++ b/tests/integration/update_cluster/minimal-json/data/aws_launch_template_nodes.minimal-json.example.com_user_data @@ -1 +1 @@ -IyEvYmluL2Jhc2gKIyBDb3B5cmlnaHQgMjAxNiBUaGUgS3ViZXJuZXRlcyBBdXRob3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpzZXQgLW8gZXJyZXhpdApzZXQgLW8gbm91bnNldApzZXQgLW8gcGlwZWZhaWwKCk5PREVVUF9VUkxfQU1ENjQ9aHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2xpbnV4L2FtZDY0L25vZGV1cCxodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvbGludXgtYW1kNjQtbm9kZXVwLGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9saW51eC9hbWQ2NC9ub2RldXAKTk9ERVVQX0hBU0hfQU1ENjQ9OTYwNGVmMTgyNjdhZDdiNWNmNGNlYmJmN2FiNjQ0MjNjZjViYjAzNDJkMTY5YzYwOGFjNjM3NmU2YWYyNmQ4MQpOT0RFVVBfVVJMX0FSTTY0PQpOT0RFVVBfSEFTSF9BUk02ND0KCmV4cG9ydCBBV1NfUkVHSU9OPXVzLXRlc3QtMQoKCgoKZnVuY3Rpb24gZW5zdXJlLWluc3RhbGwtZGlyKCkgewogIElOU1RBTExfRElSPSIvb3B0L2tvcHMiCiAgIyBPbiBDb250YWluZXJPUywgd2UgaW5zdGFsbCB1bmRlciAvdmFyL2xpYi90b29sYm94OyAvb3B0IGlzIHJvIGFuZCBub2V4ZWMKICBpZiBbWyAtZCAvdmFyL2xpYi90b29sYm94IF1dOyB0aGVuCiAgICBJTlNUQUxMX0RJUj0iL3Zhci9saWIvdG9vbGJveC9rb3BzIgogIGZpCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vYmluCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vY29uZgogIGNkICR7SU5TVEFMTF9ESVJ9Cn0KCiMgUmV0cnkgYSBkb3dubG9hZCB1bnRpbCB3ZSBnZXQgaXQuIGFyZ3M6IG5hbWUsIHNoYSwgdXJsMSwgdXJsMi4uLgpkb3dubG9hZC1vci1idXN0KCkgewogIGxvY2FsIC1yIGZpbGU9IiQxIgogIGxvY2FsIC1yIGhhc2g9IiQyIgogIHNoaWZ0IDIKCiAgdXJscz0oICQqICkKICB3aGlsZSB0cnVlOyBkbwogICAgZm9yIHVybCBpbiAiJHt1cmxzW0BdfSI7IGRvCiAgICAgIGNvbW1hbmRzPSgKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLS1jb21wcmVzc2VkIC1MbyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQgMjAgLS1yZXRyeSA2IC0tcmV0cnktZGVsYXkgMTAiCiAgICAgICAgIndnZXQgLS1pbmV0NC1vbmx5IC0tY29tcHJlc3Npb249YXV0byAtTyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQ9MjAgLS10cmllcz02IC0td2FpdD0xMCIKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLUxvICIke2ZpbGV9IiAtLWNvbm5lY3QtdGltZW91dCAyMCAtLXJldHJ5IDYgLS1yZXRyeS1kZWxheSAxMCIKICAgICAgICAid2dldCAtLWluZXQ0LW9ubHkgLU8gIiR7ZmlsZX0iIC0tY29ubmVjdC10aW1lb3V0PTIwIC0tdHJpZXM9NiAtLXdhaXQ9MTAiCiAgICAgICkKICAgICAgZm9yIGNtZCBpbiAiJHtjb21tYW5kc1tAXX0iOyBkbwogICAgICAgIGVjaG8gIkF0dGVtcHRpbmcgZG93bmxvYWQgd2l0aDogJHtjbWR9IHt1cmx9IgogICAgICAgIGlmICEgKCR7Y21kfSAiJHt1cmx9Iik7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IERvd25sb2FkIGZhaWxlZCB3aXRoICR7Y21kfSA9PSIKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZmkKICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV0gJiYgISB2YWxpZGF0ZS1oYXNoICIke2ZpbGV9IiAiJHtoYXNofSI7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IEhhc2ggdmFsaWRhdGlvbiBvZiAke3VybH0gZmFpbGVkLiBSZXRyeWluZy4gPT0iCiAgICAgICAgICBybSAtZiAiJHtmaWxlfSIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gKFNIQTEgPSAke2hhc2h9KSA9PSIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gPT0iCiAgICAgICAgICBmaQogICAgICAgICAgcmV0dXJuCiAgICAgICAgZmkKICAgICAgZG9uZQogICAgZG9uZQoKICAgIGVjaG8gIkFsbCBkb3dubG9hZHMgZmFpbGVkOyBzbGVlcGluZyBiZWZvcmUgcmV0cnlpbmciCiAgICBzbGVlcCA2MAogIGRvbmUKfQoKdmFsaWRhdGUtaGFzaCgpIHsKICBsb2NhbCAtciBmaWxlPSIkMSIKICBsb2NhbCAtciBleHBlY3RlZD0iJDIiCiAgbG9jYWwgYWN0dWFsCgogIGFjdHVhbD0kKHNoYTI1NnN1bSAke2ZpbGV9IHwgYXdrICd7IHByaW50ICQxIH0nKSB8fCB0cnVlCiAgaWYgW1sgIiR7YWN0dWFsfSIgIT0gIiR7ZXhwZWN0ZWR9IiBdXTsgdGhlbgogICAgZWNobyAiPT0gJHtmaWxlfSBjb3JydXB0ZWQsIGhhc2ggJHthY3R1YWx9IGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgJHtleHBlY3RlZH0gPT0iCiAgICByZXR1cm4gMQogIGZpCn0KCmZ1bmN0aW9uIHNwbGl0LWNvbW1hcygpIHsKICBlY2hvICQxIHwgdHIgIiwiICJcbiIKfQoKZnVuY3Rpb24gdHJ5LWRvd25sb2FkLXJlbGVhc2UoKSB7CiAgbG9jYWwgLXIgbm9kZXVwX3VybHM9KCAkKHNwbGl0LWNvbW1hcyAiJHtOT0RFVVBfVVJMfSIpICkKICBpZiBbWyAtbiAiJHtOT0RFVVBfSEFTSDotfSIgXV07IHRoZW4KICAgIGxvY2FsIC1yIG5vZGV1cF9oYXNoPSIke05PREVVUF9IQVNIfSIKICBlbHNlCiAgIyBUT0RPOiBSZW1vdmU/CiAgICBlY2hvICJEb3dubG9hZGluZyBzaGEyNTYgKG5vdCBmb3VuZCBpbiBlbnYpIgogICAgZG93bmxvYWQtb3ItYnVzdCBub2RldXAuc2hhMjU2ICIiICIke25vZGV1cF91cmxzW0BdLyUvLnNoYTI1Nn0iCiAgICBsb2NhbCAtciBub2RldXBfaGFzaD0kKGNhdCBub2RldXAuc2hhMjU2KQogIGZpCgogIGVjaG8gIkRvd25sb2FkaW5nIG5vZGV1cCAoJHtub2RldXBfdXJsc1tAXX0pIgogIGRvd25sb2FkLW9yLWJ1c3Qgbm9kZXVwICIke25vZGV1cF9oYXNofSIgIiR7bm9kZXVwX3VybHNbQF19IgoKICBjaG1vZCAreCBub2RldXAKfQoKZnVuY3Rpb24gZG93bmxvYWQtcmVsZWFzZSgpIHsKICBjYXNlICIkKHVuYW1lIC1tKSIgaW4KICB4ODZfNjQqfGk/ODZfNjQqfGFtZDY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BTUQ2NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BTUQ2NH0iCiAgICA7OwogIGFhcmNoNjQqfGFybTY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BUk02NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BUk02NH0iCiAgICA7OwogICopCiAgICBlY2hvICJVbnN1cHBvcnRlZCBob3N0IGFyY2g6ICQodW5hbWUgLW0pIiA+JjIKICAgIGV4aXQgMQogICAgOzsKICBlc2FjCgogICMgSW4gY2FzZSBvZiBmYWlsdXJlIGNoZWNraW5nIGludGVncml0eSBvZiByZWxlYXNlLCByZXRyeS4KICBjZCAke0lOU1RBTExfRElSfS9iaW4KICB1bnRpbCB0cnktZG93bmxvYWQtcmVsZWFzZTsgZG8KICAgIHNsZWVwIDE1CiAgICBlY2hvICJDb3VsZG4ndCBkb3dubG9hZCByZWxlYXNlLiBSZXRyeWluZy4uLiIKICBkb25lCgogIGVjaG8gIlJ1bm5pbmcgbm9kZXVwIgogICMgV2UgY2FuJ3QgcnVuIGluIHRoZSBmb3JlZ3JvdW5kIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzIzNzkzCiAgKCBjZCAke0lOU1RBTExfRElSfS9iaW47IC4vbm9kZXVwIC0taW5zdGFsbC1zeXN0ZW1kLXVuaXQgLS1jb25mPSR7SU5TVEFMTF9ESVJ9L2NvbmYva3ViZV9lbnYueWFtbCAtLXY9OCAgKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi9iaW4vc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIHx8IGVjaG8gImZhaWxlZCB0byBzZXQgdXAgZW5zdXJlIG1hY2hpbmUtaWQgY29uZmlndXJlZCIKCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBzdGFydGluZyA9PSIKZW5zdXJlLWluc3RhbGwtZGlyCgpjYXQgPiBjb25mL2NsdXN0ZXJfc3BlYy55YW1sIDw8ICdfX0VPRl9DTFVTVEVSX1NQRUMnCmNsb3VkQ29uZmlnOiBudWxsCmNvbnRhaW5lclJ1bnRpbWU6IGRvY2tlcgpjb250YWluZXJkOgogIHNraXBJbnN0YWxsOiB0cnVlCmRvY2tlcjoKICBpcE1hc3E6IGZhbHNlCiAgaXBUYWJsZXM6IGZhbHNlCiAgbG9nRHJpdmVyOiBqc29uLWZpbGUKICBsb2dMZXZlbDogaW5mbwogIGxvZ09wdDoKICAtIG1heC1zaXplPTEwbQogIC0gbWF4LWZpbGU9NQogIHN0b3JhZ2U6IG92ZXJsYXkyLG92ZXJsYXksYXVmcwogIHZlcnNpb246IDE4LjA2LjMKa3ViZVByb3h5OgogIGNsdXN0ZXJDSURSOiAxMDAuOTYuMC4wLzExCiAgY3B1UmVxdWVzdDogMTAwbQogIGhvc3RuYW1lT3ZlcnJpZGU6ICdAYXdzJwogIGltYWdlOiBrOHMuZ2NyLmlvL2t1YmUtcHJveHk6djEuMTQuMAogIGxvZ0xldmVsOiAyCmt1YmVsZXQ6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9uTWFzcXVlcmFkZUNJRFI6IDEwMC42NC4wLjAvMTAKICBwb2RJbmZyYUNvbnRhaW5lckltYWdlOiBrOHMuZ2NyLmlvL3BhdXNlOjMuMgogIHBvZE1hbmlmZXN0UGF0aDogL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cwoKX19FT0ZfQ0xVU1RFUl9TUEVDCgpjYXQgPiBjb25mL2lnX3NwZWMueWFtbCA8PCAnX19FT0ZfSUdfU1BFQycKa3ViZWxldDogbnVsbApub2RlTGFiZWxzOiBudWxsCnRhaW50czogbnVsbAoKX19FT0ZfSUdfU1BFQwoKY2F0ID4gY29uZi9rdWJlX2Vudi55YW1sIDw8ICdfX0VPRl9LVUJFX0VOVicKQXNzZXRzOgogIGFtZDY0OgogIC0gYzNiNzM2ZmQwZjAwMzc2NWMxMmQ5OWYyYzk5NWE4MzY5ZTYyNDFmNEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYW1kNjQva3ViZWxldAogIC0gN2UzYTNlYTY2MzE1M2Y5MDBjYmQ1MjkwMGEzOWM5MWZhOWYzMzRiZUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYW1kNjQva3ViZWN0bAogIC0gM2NhMTVjMGExOGVlODMwNTIwY2YzYTk1NDA4YmU4MjZjYmQyNTVhMTUzNWEzOGUwYmU5NjA4YjI1YWQ4YmY2NEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL25ldHdvcmstcGx1Z2lucy9jbmktcGx1Z2lucy1hbWQ2NC12MC43LjUudGd6CiAgYXJtNjQ6CiAgLSBkZjM4ZTA0NTc2MDI2MzkzMDU1Y2NjNzdjMGRjZTczNjEyOTk2NTYxQGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvcmVsZWFzZS92MS4xNC4wL2Jpbi9saW51eC9hcm02NC9rdWJlbGV0CiAgLSAwMWMyYjZiNDNkMzZiNmJmYWZjODBhMzczNzM5MWMxOWViZmI4YWQ1QGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvcmVsZWFzZS92MS4xNC4wL2Jpbi9saW51eC9hcm02NC9rdWJlY3RsCiAgLSA3ZmVjOTFhZjc4ZTk1NDhkZjMwNmYwZWM0M2JlYTUyN2M4YzEwY2MzYTk2ODJjMzNlOTcxYzg1MjJhN2ZjZGVkQGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvbmV0d29yay1wbHVnaW5zL2NuaS1wbHVnaW5zLWFybTY0LXYwLjcuNS50Z3oKQ2x1c3Rlck5hbWU6IG1pbmltYWwtanNvbi5leGFtcGxlLmNvbQpDb25maWdCYXNlOiBtZW1mczovL2NsdXN0ZXJzLmV4YW1wbGUuY29tL21pbmltYWwtanNvbi5leGFtcGxlLmNvbQpJbnN0YW5jZUdyb3VwTmFtZTogbm9kZXMKSW5zdGFuY2VHcm91cFJvbGU6IE5vZGUKVGFnczoKLSBfYXV0b21hdGljX3VwZ3JhZGVzCi0gX2F3cwpjaGFubmVsczoKLSBtZW1mczovL2NsdXN0ZXJzLmV4YW1wbGUuY29tL21pbmltYWwtanNvbi5leGFtcGxlLmNvbS9hZGRvbnMvYm9vdHN0cmFwLWNoYW5uZWwueWFtbAoKX19FT0ZfS1VCRV9FTlYKCmRvd25sb2FkLXJlbGVhc2UKZWNobyAiPT0gbm9kZXVwIG5vZGUgY29uZmlnIGRvbmUgPT0iCg== +IyEvYmluL2Jhc2gKIyBDb3B5cmlnaHQgMjAxNiBUaGUgS3ViZXJuZXRlcyBBdXRob3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpzZXQgLW8gZXJyZXhpdApzZXQgLW8gbm91bnNldApzZXQgLW8gcGlwZWZhaWwKCk5PREVVUF9VUkxfQU1ENjQ9aHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2xpbnV4L2FtZDY0L25vZGV1cCxodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvbGludXgtYW1kNjQtbm9kZXVwLGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9saW51eC9hbWQ2NC9ub2RldXAKTk9ERVVQX0hBU0hfQU1ENjQ9OTYwNGVmMTgyNjdhZDdiNWNmNGNlYmJmN2FiNjQ0MjNjZjViYjAzNDJkMTY5YzYwOGFjNjM3NmU2YWYyNmQ4MQpOT0RFVVBfVVJMX0FSTTY0PQpOT0RFVVBfSEFTSF9BUk02ND0KCmV4cG9ydCBBV1NfUkVHSU9OPXVzLXRlc3QtMQoKCgoKZnVuY3Rpb24gZW5zdXJlLWluc3RhbGwtZGlyKCkgewogIElOU1RBTExfRElSPSIvb3B0L2tvcHMiCiAgIyBPbiBDb250YWluZXJPUywgd2UgaW5zdGFsbCB1bmRlciAvdmFyL2xpYi90b29sYm94OyAvb3B0IGlzIHJvIGFuZCBub2V4ZWMKICBpZiBbWyAtZCAvdmFyL2xpYi90b29sYm94IF1dOyB0aGVuCiAgICBJTlNUQUxMX0RJUj0iL3Zhci9saWIvdG9vbGJveC9rb3BzIgogIGZpCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vYmluCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vY29uZgogIGNkICR7SU5TVEFMTF9ESVJ9Cn0KCiMgUmV0cnkgYSBkb3dubG9hZCB1bnRpbCB3ZSBnZXQgaXQuIGFyZ3M6IG5hbWUsIHNoYSwgdXJsMSwgdXJsMi4uLgpkb3dubG9hZC1vci1idXN0KCkgewogIGxvY2FsIC1yIGZpbGU9IiQxIgogIGxvY2FsIC1yIGhhc2g9IiQyIgogIHNoaWZ0IDIKCiAgdXJscz0oICQqICkKICB3aGlsZSB0cnVlOyBkbwogICAgZm9yIHVybCBpbiAiJHt1cmxzW0BdfSI7IGRvCiAgICAgIGNvbW1hbmRzPSgKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLS1jb21wcmVzc2VkIC1MbyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQgMjAgLS1yZXRyeSA2IC0tcmV0cnktZGVsYXkgMTAiCiAgICAgICAgIndnZXQgLS1pbmV0NC1vbmx5IC0tY29tcHJlc3Npb249YXV0byAtTyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQ9MjAgLS10cmllcz02IC0td2FpdD0xMCIKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLUxvICIke2ZpbGV9IiAtLWNvbm5lY3QtdGltZW91dCAyMCAtLXJldHJ5IDYgLS1yZXRyeS1kZWxheSAxMCIKICAgICAgICAid2dldCAtLWluZXQ0LW9ubHkgLU8gIiR7ZmlsZX0iIC0tY29ubmVjdC10aW1lb3V0PTIwIC0tdHJpZXM9NiAtLXdhaXQ9MTAiCiAgICAgICkKICAgICAgZm9yIGNtZCBpbiAiJHtjb21tYW5kc1tAXX0iOyBkbwogICAgICAgIGVjaG8gIkF0dGVtcHRpbmcgZG93bmxvYWQgd2l0aDogJHtjbWR9IHt1cmx9IgogICAgICAgIGlmICEgKCR7Y21kfSAiJHt1cmx9Iik7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IERvd25sb2FkIGZhaWxlZCB3aXRoICR7Y21kfSA9PSIKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZmkKICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV0gJiYgISB2YWxpZGF0ZS1oYXNoICIke2ZpbGV9IiAiJHtoYXNofSI7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IEhhc2ggdmFsaWRhdGlvbiBvZiAke3VybH0gZmFpbGVkLiBSZXRyeWluZy4gPT0iCiAgICAgICAgICBybSAtZiAiJHtmaWxlfSIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gKFNIQTEgPSAke2hhc2h9KSA9PSIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gPT0iCiAgICAgICAgICBmaQogICAgICAgICAgcmV0dXJuCiAgICAgICAgZmkKICAgICAgZG9uZQogICAgZG9uZQoKICAgIGVjaG8gIkFsbCBkb3dubG9hZHMgZmFpbGVkOyBzbGVlcGluZyBiZWZvcmUgcmV0cnlpbmciCiAgICBzbGVlcCA2MAogIGRvbmUKfQoKdmFsaWRhdGUtaGFzaCgpIHsKICBsb2NhbCAtciBmaWxlPSIkMSIKICBsb2NhbCAtciBleHBlY3RlZD0iJDIiCiAgbG9jYWwgYWN0dWFsCgogIGFjdHVhbD0kKHNoYTI1NnN1bSAke2ZpbGV9IHwgYXdrICd7IHByaW50ICQxIH0nKSB8fCB0cnVlCiAgaWYgW1sgIiR7YWN0dWFsfSIgIT0gIiR7ZXhwZWN0ZWR9IiBdXTsgdGhlbgogICAgZWNobyAiPT0gJHtmaWxlfSBjb3JydXB0ZWQsIGhhc2ggJHthY3R1YWx9IGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgJHtleHBlY3RlZH0gPT0iCiAgICByZXR1cm4gMQogIGZpCn0KCmZ1bmN0aW9uIHNwbGl0LWNvbW1hcygpIHsKICBlY2hvICQxIHwgdHIgIiwiICJcbiIKfQoKZnVuY3Rpb24gdHJ5LWRvd25sb2FkLXJlbGVhc2UoKSB7CiAgbG9jYWwgLXIgbm9kZXVwX3VybHM9KCAkKHNwbGl0LWNvbW1hcyAiJHtOT0RFVVBfVVJMfSIpICkKICBpZiBbWyAtbiAiJHtOT0RFVVBfSEFTSDotfSIgXV07IHRoZW4KICAgIGxvY2FsIC1yIG5vZGV1cF9oYXNoPSIke05PREVVUF9IQVNIfSIKICBlbHNlCiAgIyBUT0RPOiBSZW1vdmU/CiAgICBlY2hvICJEb3dubG9hZGluZyBzaGEyNTYgKG5vdCBmb3VuZCBpbiBlbnYpIgogICAgZG93bmxvYWQtb3ItYnVzdCBub2RldXAuc2hhMjU2ICIiICIke25vZGV1cF91cmxzW0BdLyUvLnNoYTI1Nn0iCiAgICBsb2NhbCAtciBub2RldXBfaGFzaD0kKGNhdCBub2RldXAuc2hhMjU2KQogIGZpCgogIGVjaG8gIkRvd25sb2FkaW5nIG5vZGV1cCAoJHtub2RldXBfdXJsc1tAXX0pIgogIGRvd25sb2FkLW9yLWJ1c3Qgbm9kZXVwICIke25vZGV1cF9oYXNofSIgIiR7bm9kZXVwX3VybHNbQF19IgoKICBjaG1vZCAreCBub2RldXAKfQoKZnVuY3Rpb24gZG93bmxvYWQtcmVsZWFzZSgpIHsKICBjYXNlICIkKHVuYW1lIC1tKSIgaW4KICB4ODZfNjQqfGk/ODZfNjQqfGFtZDY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BTUQ2NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BTUQ2NH0iCiAgICA7OwogIGFhcmNoNjQqfGFybTY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BUk02NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BUk02NH0iCiAgICA7OwogICopCiAgICBlY2hvICJVbnN1cHBvcnRlZCBob3N0IGFyY2g6ICQodW5hbWUgLW0pIiA+JjIKICAgIGV4aXQgMQogICAgOzsKICBlc2FjCgogICMgSW4gY2FzZSBvZiBmYWlsdXJlIGNoZWNraW5nIGludGVncml0eSBvZiByZWxlYXNlLCByZXRyeS4KICBjZCAke0lOU1RBTExfRElSfS9iaW4KICB1bnRpbCB0cnktZG93bmxvYWQtcmVsZWFzZTsgZG8KICAgIHNsZWVwIDE1CiAgICBlY2hvICJDb3VsZG4ndCBkb3dubG9hZCByZWxlYXNlLiBSZXRyeWluZy4uLiIKICBkb25lCgogIGVjaG8gIlJ1bm5pbmcgbm9kZXVwIgogICMgV2UgY2FuJ3QgcnVuIGluIHRoZSBmb3JlZ3JvdW5kIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzIzNzkzCiAgKCBjZCAke0lOU1RBTExfRElSfS9iaW47IC4vbm9kZXVwIC0taW5zdGFsbC1zeXN0ZW1kLXVuaXQgLS1jb25mPSR7SU5TVEFMTF9ESVJ9L2NvbmYva3ViZV9lbnYueWFtbCAtLXY9OCAgKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi9iaW4vc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIHx8IGVjaG8gImZhaWxlZCB0byBzZXQgdXAgZW5zdXJlIG1hY2hpbmUtaWQgY29uZmlndXJlZCIKCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBzdGFydGluZyA9PSIKZW5zdXJlLWluc3RhbGwtZGlyCgpjYXQgPiBjb25mL2NsdXN0ZXJfc3BlYy55YW1sIDw8ICdfX0VPRl9DTFVTVEVSX1NQRUMnCmNsb3VkQ29uZmlnOiBudWxsCmNvbnRhaW5lclJ1bnRpbWU6IGRvY2tlcgpjb250YWluZXJkOgogIHNraXBJbnN0YWxsOiB0cnVlCmRvY2tlcjoKICBpcE1hc3E6IGZhbHNlCiAgaXBUYWJsZXM6IGZhbHNlCiAgbG9nRHJpdmVyOiBqc29uLWZpbGUKICBsb2dMZXZlbDogaW5mbwogIGxvZ09wdDoKICAtIG1heC1zaXplPTEwbQogIC0gbWF4LWZpbGU9NQogIHN0b3JhZ2U6IG92ZXJsYXkyLG92ZXJsYXksYXVmcwogIHZlcnNpb246IDE4LjA2LjMKa3ViZVByb3h5OgogIGNsdXN0ZXJDSURSOiAxMDAuOTYuMC4wLzExCiAgY3B1UmVxdWVzdDogMTAwbQogIGhvc3RuYW1lT3ZlcnJpZGU6ICdAYXdzJwogIGltYWdlOiBrOHMuZ2NyLmlvL2t1YmUtcHJveHk6djEuMTQuMAogIGxvZ0xldmVsOiAyCmt1YmVsZXQ6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9uTWFzcXVlcmFkZUNJRFI6IDEwMC42NC4wLjAvMTAKICBwb2RJbmZyYUNvbnRhaW5lckltYWdlOiBrOHMuZ2NyLmlvL3BhdXNlOjMuMgogIHBvZE1hbmlmZXN0UGF0aDogL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cwoKX19FT0ZfQ0xVU1RFUl9TUEVDCgpjYXQgPiBjb25mL2lnX3NwZWMueWFtbCA8PCAnX19FT0ZfSUdfU1BFQycKe30KCl9fRU9GX0lHX1NQRUMKCmNhdCA+IGNvbmYva3ViZV9lbnYueWFtbCA8PCAnX19FT0ZfS1VCRV9FTlYnCkFzc2V0czoKICBhbWQ2NDoKICAtIGMzYjczNmZkMGYwMDM3NjVjMTJkOTlmMmM5OTVhODM2OWU2MjQxZjRAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9yZWxlYXNlL3YxLjE0LjAvYmluL2xpbnV4L2FtZDY0L2t1YmVsZXQKICAtIDdlM2EzZWE2NjMxNTNmOTAwY2JkNTI5MDBhMzljOTFmYTlmMzM0YmVAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9yZWxlYXNlL3YxLjE0LjAvYmluL2xpbnV4L2FtZDY0L2t1YmVjdGwKICAtIDNjYTE1YzBhMThlZTgzMDUyMGNmM2E5NTQwOGJlODI2Y2JkMjU1YTE1MzVhMzhlMGJlOTYwOGIyNWFkOGJmNjRAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9uZXR3b3JrLXBsdWdpbnMvY25pLXBsdWdpbnMtYW1kNjQtdjAuNy41LnRnegogIGFybTY0OgogIC0gZGYzOGUwNDU3NjAyNjM5MzA1NWNjYzc3YzBkY2U3MzYxMjk5NjU2MUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYXJtNjQva3ViZWxldAogIC0gMDFjMmI2YjQzZDM2YjZiZmFmYzgwYTM3MzczOTFjMTllYmZiOGFkNUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYXJtNjQva3ViZWN0bAogIC0gN2ZlYzkxYWY3OGU5NTQ4ZGYzMDZmMGVjNDNiZWE1MjdjOGMxMGNjM2E5NjgyYzMzZTk3MWM4NTIyYTdmY2RlZEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL25ldHdvcmstcGx1Z2lucy9jbmktcGx1Z2lucy1hcm02NC12MC43LjUudGd6CkNsdXN0ZXJOYW1lOiBtaW5pbWFsLWpzb24uZXhhbXBsZS5jb20KQ29uZmlnQmFzZTogbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLWpzb24uZXhhbXBsZS5jb20KSW5zdGFuY2VHcm91cE5hbWU6IG5vZGVzCkluc3RhbmNlR3JvdXBSb2xlOiBOb2RlCkt1YmVsZXRDb25maWc6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9kZUxhYmVsczoKICAgIGt1YmVybmV0ZXMuaW8vcm9sZTogbm9kZQogICAgbm9kZS1yb2xlLmt1YmVybmV0ZXMuaW8vbm9kZTogIiIKICBub25NYXNxdWVyYWRlQ0lEUjogMTAwLjY0LjAuMC8xMAogIHBvZEluZnJhQ29udGFpbmVySW1hZ2U6IGs4cy5nY3IuaW8vcGF1c2U6My4yCiAgcG9kTWFuaWZlc3RQYXRoOiAvZXRjL2t1YmVybmV0ZXMvbWFuaWZlc3RzClRhZ3M6Ci0gX2F1dG9tYXRpY191cGdyYWRlcwotIF9hd3MKY2hhbm5lbHM6Ci0gbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLWpzb24uZXhhbXBsZS5jb20vYWRkb25zL2Jvb3RzdHJhcC1jaGFubmVsLnlhbWwKCl9fRU9GX0tVQkVfRU5WCgpkb3dubG9hZC1yZWxlYXNlCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBkb25lID09Igo= diff --git a/tests/integration/update_cluster/minimal-tf11/data/aws_launch_template_master-us-test-1a.masters.minimal-tf11.example.com_user_data b/tests/integration/update_cluster/minimal-tf11/data/aws_launch_template_master-us-test-1a.masters.minimal-tf11.example.com_user_data index 0ff61bf0edba4..3965144add604 100644 --- a/tests/integration/update_cluster/minimal-tf11/data/aws_launch_template_master-us-test-1a.masters.minimal-tf11.example.com_user_data +++ b/tests/integration/update_cluster/minimal-tf11/data/aws_launch_template_master-us-test-1a.masters.minimal-tf11.example.com_user_data @@ -1 +1 @@ -IyEvYmluL2Jhc2gKIyBDb3B5cmlnaHQgMjAxNiBUaGUgS3ViZXJuZXRlcyBBdXRob3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpzZXQgLW8gZXJyZXhpdApzZXQgLW8gbm91bnNldApzZXQgLW8gcGlwZWZhaWwKCk5PREVVUF9VUkxfQU1ENjQ9aHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2xpbnV4L2FtZDY0L25vZGV1cCxodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvbGludXgtYW1kNjQtbm9kZXVwLGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9saW51eC9hbWQ2NC9ub2RldXAKTk9ERVVQX0hBU0hfQU1ENjQ9OTYwNGVmMTgyNjdhZDdiNWNmNGNlYmJmN2FiNjQ0MjNjZjViYjAzNDJkMTY5YzYwOGFjNjM3NmU2YWYyNmQ4MQpOT0RFVVBfVVJMX0FSTTY0PQpOT0RFVVBfSEFTSF9BUk02ND0KCmV4cG9ydCBBV1NfUkVHSU9OPXVzLXRlc3QtMQoKCgoKZnVuY3Rpb24gZW5zdXJlLWluc3RhbGwtZGlyKCkgewogIElOU1RBTExfRElSPSIvb3B0L2tvcHMiCiAgIyBPbiBDb250YWluZXJPUywgd2UgaW5zdGFsbCB1bmRlciAvdmFyL2xpYi90b29sYm94OyAvb3B0IGlzIHJvIGFuZCBub2V4ZWMKICBpZiBbWyAtZCAvdmFyL2xpYi90b29sYm94IF1dOyB0aGVuCiAgICBJTlNUQUxMX0RJUj0iL3Zhci9saWIvdG9vbGJveC9rb3BzIgogIGZpCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vYmluCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vY29uZgogIGNkICR7SU5TVEFMTF9ESVJ9Cn0KCiMgUmV0cnkgYSBkb3dubG9hZCB1bnRpbCB3ZSBnZXQgaXQuIGFyZ3M6IG5hbWUsIHNoYSwgdXJsMSwgdXJsMi4uLgpkb3dubG9hZC1vci1idXN0KCkgewogIGxvY2FsIC1yIGZpbGU9IiQxIgogIGxvY2FsIC1yIGhhc2g9IiQyIgogIHNoaWZ0IDIKCiAgdXJscz0oICQqICkKICB3aGlsZSB0cnVlOyBkbwogICAgZm9yIHVybCBpbiAiJHt1cmxzW0BdfSI7IGRvCiAgICAgIGNvbW1hbmRzPSgKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLS1jb21wcmVzc2VkIC1MbyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQgMjAgLS1yZXRyeSA2IC0tcmV0cnktZGVsYXkgMTAiCiAgICAgICAgIndnZXQgLS1pbmV0NC1vbmx5IC0tY29tcHJlc3Npb249YXV0byAtTyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQ9MjAgLS10cmllcz02IC0td2FpdD0xMCIKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLUxvICIke2ZpbGV9IiAtLWNvbm5lY3QtdGltZW91dCAyMCAtLXJldHJ5IDYgLS1yZXRyeS1kZWxheSAxMCIKICAgICAgICAid2dldCAtLWluZXQ0LW9ubHkgLU8gIiR7ZmlsZX0iIC0tY29ubmVjdC10aW1lb3V0PTIwIC0tdHJpZXM9NiAtLXdhaXQ9MTAiCiAgICAgICkKICAgICAgZm9yIGNtZCBpbiAiJHtjb21tYW5kc1tAXX0iOyBkbwogICAgICAgIGVjaG8gIkF0dGVtcHRpbmcgZG93bmxvYWQgd2l0aDogJHtjbWR9IHt1cmx9IgogICAgICAgIGlmICEgKCR7Y21kfSAiJHt1cmx9Iik7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IERvd25sb2FkIGZhaWxlZCB3aXRoICR7Y21kfSA9PSIKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZmkKICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV0gJiYgISB2YWxpZGF0ZS1oYXNoICIke2ZpbGV9IiAiJHtoYXNofSI7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IEhhc2ggdmFsaWRhdGlvbiBvZiAke3VybH0gZmFpbGVkLiBSZXRyeWluZy4gPT0iCiAgICAgICAgICBybSAtZiAiJHtmaWxlfSIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gKFNIQTEgPSAke2hhc2h9KSA9PSIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gPT0iCiAgICAgICAgICBmaQogICAgICAgICAgcmV0dXJuCiAgICAgICAgZmkKICAgICAgZG9uZQogICAgZG9uZQoKICAgIGVjaG8gIkFsbCBkb3dubG9hZHMgZmFpbGVkOyBzbGVlcGluZyBiZWZvcmUgcmV0cnlpbmciCiAgICBzbGVlcCA2MAogIGRvbmUKfQoKdmFsaWRhdGUtaGFzaCgpIHsKICBsb2NhbCAtciBmaWxlPSIkMSIKICBsb2NhbCAtciBleHBlY3RlZD0iJDIiCiAgbG9jYWwgYWN0dWFsCgogIGFjdHVhbD0kKHNoYTI1NnN1bSAke2ZpbGV9IHwgYXdrICd7IHByaW50ICQxIH0nKSB8fCB0cnVlCiAgaWYgW1sgIiR7YWN0dWFsfSIgIT0gIiR7ZXhwZWN0ZWR9IiBdXTsgdGhlbgogICAgZWNobyAiPT0gJHtmaWxlfSBjb3JydXB0ZWQsIGhhc2ggJHthY3R1YWx9IGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgJHtleHBlY3RlZH0gPT0iCiAgICByZXR1cm4gMQogIGZpCn0KCmZ1bmN0aW9uIHNwbGl0LWNvbW1hcygpIHsKICBlY2hvICQxIHwgdHIgIiwiICJcbiIKfQoKZnVuY3Rpb24gdHJ5LWRvd25sb2FkLXJlbGVhc2UoKSB7CiAgbG9jYWwgLXIgbm9kZXVwX3VybHM9KCAkKHNwbGl0LWNvbW1hcyAiJHtOT0RFVVBfVVJMfSIpICkKICBpZiBbWyAtbiAiJHtOT0RFVVBfSEFTSDotfSIgXV07IHRoZW4KICAgIGxvY2FsIC1yIG5vZGV1cF9oYXNoPSIke05PREVVUF9IQVNIfSIKICBlbHNlCiAgIyBUT0RPOiBSZW1vdmU/CiAgICBlY2hvICJEb3dubG9hZGluZyBzaGEyNTYgKG5vdCBmb3VuZCBpbiBlbnYpIgogICAgZG93bmxvYWQtb3ItYnVzdCBub2RldXAuc2hhMjU2ICIiICIke25vZGV1cF91cmxzW0BdLyUvLnNoYTI1Nn0iCiAgICBsb2NhbCAtciBub2RldXBfaGFzaD0kKGNhdCBub2RldXAuc2hhMjU2KQogIGZpCgogIGVjaG8gIkRvd25sb2FkaW5nIG5vZGV1cCAoJHtub2RldXBfdXJsc1tAXX0pIgogIGRvd25sb2FkLW9yLWJ1c3Qgbm9kZXVwICIke25vZGV1cF9oYXNofSIgIiR7bm9kZXVwX3VybHNbQF19IgoKICBjaG1vZCAreCBub2RldXAKfQoKZnVuY3Rpb24gZG93bmxvYWQtcmVsZWFzZSgpIHsKICBjYXNlICIkKHVuYW1lIC1tKSIgaW4KICB4ODZfNjQqfGk/ODZfNjQqfGFtZDY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BTUQ2NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BTUQ2NH0iCiAgICA7OwogIGFhcmNoNjQqfGFybTY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BUk02NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BUk02NH0iCiAgICA7OwogICopCiAgICBlY2hvICJVbnN1cHBvcnRlZCBob3N0IGFyY2g6ICQodW5hbWUgLW0pIiA+JjIKICAgIGV4aXQgMQogICAgOzsKICBlc2FjCgogICMgSW4gY2FzZSBvZiBmYWlsdXJlIGNoZWNraW5nIGludGVncml0eSBvZiByZWxlYXNlLCByZXRyeS4KICBjZCAke0lOU1RBTExfRElSfS9iaW4KICB1bnRpbCB0cnktZG93bmxvYWQtcmVsZWFzZTsgZG8KICAgIHNsZWVwIDE1CiAgICBlY2hvICJDb3VsZG4ndCBkb3dubG9hZCByZWxlYXNlLiBSZXRyeWluZy4uLiIKICBkb25lCgogIGVjaG8gIlJ1bm5pbmcgbm9kZXVwIgogICMgV2UgY2FuJ3QgcnVuIGluIHRoZSBmb3JlZ3JvdW5kIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzIzNzkzCiAgKCBjZCAke0lOU1RBTExfRElSfS9iaW47IC4vbm9kZXVwIC0taW5zdGFsbC1zeXN0ZW1kLXVuaXQgLS1jb25mPSR7SU5TVEFMTF9ESVJ9L2NvbmYva3ViZV9lbnYueWFtbCAtLXY9OCAgKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi9iaW4vc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIHx8IGVjaG8gImZhaWxlZCB0byBzZXQgdXAgZW5zdXJlIG1hY2hpbmUtaWQgY29uZmlndXJlZCIKCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBzdGFydGluZyA9PSIKZW5zdXJlLWluc3RhbGwtZGlyCgpjYXQgPiBjb25mL2NsdXN0ZXJfc3BlYy55YW1sIDw8ICdfX0VPRl9DTFVTVEVSX1NQRUMnCmNsb3VkQ29uZmlnOiBudWxsCmNvbnRhaW5lclJ1bnRpbWU6IGRvY2tlcgpjb250YWluZXJkOgogIHNraXBJbnN0YWxsOiB0cnVlCmRvY2tlcjoKICBpcE1hc3E6IGZhbHNlCiAgaXBUYWJsZXM6IGZhbHNlCiAgbG9nRHJpdmVyOiBqc29uLWZpbGUKICBsb2dMZXZlbDogaW5mbwogIGxvZ09wdDoKICAtIG1heC1zaXplPTEwbQogIC0gbWF4LWZpbGU9NQogIHN0b3JhZ2U6IG92ZXJsYXkyLG92ZXJsYXksYXVmcwogIHZlcnNpb246IDE4LjA2LjMKZW5jcnlwdGlvbkNvbmZpZzogbnVsbApldGNkQ2x1c3RlcnM6CiAgZXZlbnRzOgogICAgdmVyc2lvbjogMy4zLjEwCiAgbWFpbjoKICAgIHZlcnNpb246IDMuMy4xMAprdWJlQVBJU2VydmVyOgogIGFsbG93UHJpdmlsZWdlZDogdHJ1ZQogIGFub255bW91c0F1dGg6IGZhbHNlCiAgYXBpU2VydmVyQ291bnQ6IDEKICBhdXRob3JpemF0aW9uTW9kZTogQWx3YXlzQWxsb3cKICBiaW5kQWRkcmVzczogMC4wLjAuMAogIGNsb3VkUHJvdmlkZXI6IGF3cwogIGVuYWJsZUFkbWlzc2lvblBsdWdpbnM6CiAgLSBOYW1lc3BhY2VMaWZlY3ljbGUKICAtIExpbWl0UmFuZ2VyCiAgLSBTZXJ2aWNlQWNjb3VudAogIC0gUGVyc2lzdGVudFZvbHVtZUxhYmVsCiAgLSBEZWZhdWx0U3RvcmFnZUNsYXNzCiAgLSBEZWZhdWx0VG9sZXJhdGlvblNlY29uZHMKICAtIE11dGF0aW5nQWRtaXNzaW9uV2ViaG9vawogIC0gVmFsaWRhdGluZ0FkbWlzc2lvbldlYmhvb2sKICAtIE5vZGVSZXN0cmljdGlvbgogIC0gUmVzb3VyY2VRdW90YQogIGV0Y2RTZXJ2ZXJzOgogIC0gaHR0cDovLzEyNy4wLjAuMTo0MDAxCiAgZXRjZFNlcnZlcnNPdmVycmlkZXM6CiAgLSAvZXZlbnRzI2h0dHA6Ly8xMjcuMC4wLjE6NDAwMgogIGltYWdlOiBrOHMuZ2NyLmlvL2t1YmUtYXBpc2VydmVyOnYxLjE0LjAKICBpbnNlY3VyZUJpbmRBZGRyZXNzOiAxMjcuMC4wLjEKICBpbnNlY3VyZVBvcnQ6IDgwODAKICBrdWJlbGV0UHJlZmVycmVkQWRkcmVzc1R5cGVzOgogIC0gSW50ZXJuYWxJUAogIC0gSG9zdG5hbWUKICAtIEV4dGVybmFsSVAKICBsb2dMZXZlbDogMgogIHJlcXVlc3RoZWFkZXJBbGxvd2VkTmFtZXM6CiAgLSBhZ2dyZWdhdG9yCiAgcmVxdWVzdGhlYWRlckV4dHJhSGVhZGVyUHJlZml4ZXM6CiAgLSBYLVJlbW90ZS1FeHRyYS0KICByZXF1ZXN0aGVhZGVyR3JvdXBIZWFkZXJzOgogIC0gWC1SZW1vdGUtR3JvdXAKICByZXF1ZXN0aGVhZGVyVXNlcm5hbWVIZWFkZXJzOgogIC0gWC1SZW1vdGUtVXNlcgogIHNlY3VyZVBvcnQ6IDQ0MwogIHNlcnZpY2VDbHVzdGVySVBSYW5nZTogMTAwLjY0LjAuMC8xMwogIHN0b3JhZ2VCYWNrZW5kOiBldGNkMwprdWJlQ29udHJvbGxlck1hbmFnZXI6CiAgYWxsb2NhdGVOb2RlQ0lEUnM6IHRydWUKICBhdHRhY2hEZXRhY2hSZWNvbmNpbGVTeW5jUGVyaW9kOiAxbTBzCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckNJRFI6IDEwMC45Ni4wLjAvMTEKICBjbHVzdGVyTmFtZTogbWluaW1hbC10ZjExLmV4YW1wbGUuY29tCiAgY29uZmlndXJlQ2xvdWRSb3V0ZXM6IHRydWUKICBpbWFnZTogazhzLmdjci5pby9rdWJlLWNvbnRyb2xsZXItbWFuYWdlcjp2MS4xNC4wCiAgbGVhZGVyRWxlY3Rpb246CiAgICBsZWFkZXJFbGVjdDogdHJ1ZQogIGxvZ0xldmVsOiAyCiAgdXNlU2VydmljZUFjY291bnRDcmVkZW50aWFsczogdHJ1ZQprdWJlUHJveHk6CiAgY2x1c3RlckNJRFI6IDEwMC45Ni4wLjAvMTEKICBjcHVSZXF1ZXN0OiAxMDBtCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAgaW1hZ2U6IGs4cy5nY3IuaW8va3ViZS1wcm94eTp2MS4xNC4wCiAgbG9nTGV2ZWw6IDIKa3ViZVNjaGVkdWxlcjoKICBpbWFnZTogazhzLmdjci5pby9rdWJlLXNjaGVkdWxlcjp2MS4xNC4wCiAgbGVhZGVyRWxlY3Rpb246CiAgICBsZWFkZXJFbGVjdDogdHJ1ZQogIGxvZ0xldmVsOiAyCmt1YmVsZXQ6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9uTWFzcXVlcmFkZUNJRFI6IDEwMC42NC4wLjAvMTAKICBwb2RJbmZyYUNvbnRhaW5lckltYWdlOiBrOHMuZ2NyLmlvL3BhdXNlOjMuMgogIHBvZE1hbmlmZXN0UGF0aDogL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cwptYXN0ZXJLdWJlbGV0OgogIGFub255bW91c0F1dGg6IGZhbHNlCiAgY2dyb3VwUm9vdDogLwogIGNsb3VkUHJvdmlkZXI6IGF3cwogIGNsdXN0ZXJETlM6IDEwMC42NC4wLjEwCiAgY2x1c3RlckRvbWFpbjogY2x1c3Rlci5sb2NhbAogIGVuYWJsZURlYnVnZ2luZ0hhbmRsZXJzOiB0cnVlCiAgZXZpY3Rpb25IYXJkOiBtZW1vcnkuYXZhaWxhYmxlPDEwME1pLG5vZGVmcy5hdmFpbGFibGU8MTAlLG5vZGVmcy5pbm9kZXNGcmVlPDUlLGltYWdlZnMuYXZhaWxhYmxlPDEwJSxpbWFnZWZzLmlub2Rlc0ZyZWU8NSUKICBmZWF0dXJlR2F0ZXM6CiAgICBFeHBlcmltZW50YWxDcml0aWNhbFBvZEFubm90YXRpb246ICJ0cnVlIgogIGhvc3RuYW1lT3ZlcnJpZGU6ICdAYXdzJwogIGt1YmVjb25maWdQYXRoOiAvdmFyL2xpYi9rdWJlbGV0L2t1YmVjb25maWcKICBsb2dMZXZlbDogMgogIG5ldHdvcmtQbHVnaW5NVFU6IDkwMDEKICBuZXR3b3JrUGx1Z2luTmFtZToga3ViZW5ldAogIG5vbk1hc3F1ZXJhZGVDSURSOiAxMDAuNjQuMC4wLzEwCiAgcG9kSW5mcmFDb250YWluZXJJbWFnZTogazhzLmdjci5pby9wYXVzZTozLjIKICBwb2RNYW5pZmVzdFBhdGg6IC9ldGMva3ViZXJuZXRlcy9tYW5pZmVzdHMKICByZWdpc3RlclNjaGVkdWxhYmxlOiBmYWxzZQoKX19FT0ZfQ0xVU1RFUl9TUEVDCgpjYXQgPiBjb25mL2lnX3NwZWMueWFtbCA8PCAnX19FT0ZfSUdfU1BFQycKa3ViZWxldDogbnVsbApub2RlTGFiZWxzOiBudWxsCnRhaW50czogbnVsbAoKX19FT0ZfSUdfU1BFQwoKY2F0ID4gY29uZi9rdWJlX2Vudi55YW1sIDw8ICdfX0VPRl9LVUJFX0VOVicKQXNzZXRzOgogIGFtZDY0OgogIC0gYzNiNzM2ZmQwZjAwMzc2NWMxMmQ5OWYyYzk5NWE4MzY5ZTYyNDFmNEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYW1kNjQva3ViZWxldAogIC0gN2UzYTNlYTY2MzE1M2Y5MDBjYmQ1MjkwMGEzOWM5MWZhOWYzMzRiZUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYW1kNjQva3ViZWN0bAogIC0gM2NhMTVjMGExOGVlODMwNTIwY2YzYTk1NDA4YmU4MjZjYmQyNTVhMTUzNWEzOGUwYmU5NjA4YjI1YWQ4YmY2NEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL25ldHdvcmstcGx1Z2lucy9jbmktcGx1Z2lucy1hbWQ2NC12MC43LjUudGd6CiAgYXJtNjQ6CiAgLSBkZjM4ZTA0NTc2MDI2MzkzMDU1Y2NjNzdjMGRjZTczNjEyOTk2NTYxQGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvcmVsZWFzZS92MS4xNC4wL2Jpbi9saW51eC9hcm02NC9rdWJlbGV0CiAgLSAwMWMyYjZiNDNkMzZiNmJmYWZjODBhMzczNzM5MWMxOWViZmI4YWQ1QGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvcmVsZWFzZS92MS4xNC4wL2Jpbi9saW51eC9hcm02NC9rdWJlY3RsCiAgLSA3ZmVjOTFhZjc4ZTk1NDhkZjMwNmYwZWM0M2JlYTUyN2M4YzEwY2MzYTk2ODJjMzNlOTcxYzg1MjJhN2ZjZGVkQGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvbmV0d29yay1wbHVnaW5zL2NuaS1wbHVnaW5zLWFybTY0LXYwLjcuNS50Z3oKQ2x1c3Rlck5hbWU6IG1pbmltYWwtdGYxMS5leGFtcGxlLmNvbQpDb25maWdCYXNlOiBtZW1mczovL2NsdXN0ZXJzLmV4YW1wbGUuY29tL21pbmltYWwtdGYxMS5leGFtcGxlLmNvbQpJbnN0YW5jZUdyb3VwTmFtZTogbWFzdGVyLXVzLXRlc3QtMWEKSW5zdGFuY2VHcm91cFJvbGU6IE1hc3RlcgpUYWdzOgotIF9hdXRvbWF0aWNfdXBncmFkZXMKLSBfYXdzCmNoYW5uZWxzOgotIG1lbWZzOi8vY2x1c3RlcnMuZXhhbXBsZS5jb20vbWluaW1hbC10ZjExLmV4YW1wbGUuY29tL2FkZG9ucy9ib290c3RyYXAtY2hhbm5lbC55YW1sCmV0Y2RNYW5pZmVzdHM6Ci0gbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLXRmMTEuZXhhbXBsZS5jb20vbWFuaWZlc3RzL2V0Y2QvbWFpbi55YW1sCi0gbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLXRmMTEuZXhhbXBsZS5jb20vbWFuaWZlc3RzL2V0Y2QvZXZlbnRzLnlhbWwKcHJvdG9rdWJlSW1hZ2U6CiAgaGFzaDogNDJhOWM0MzI0ZmUyNmQ2M2NlMTFmM2RkNzgzNjM3MWJjOTNmYTA2Y2E4ZjQ3OTgwNzcyOGYzNzQ2ZTI3MDYxYgogIG5hbWU6IHByb3Rva3ViZToxLjE1LjAKICBzb3VyY2VzOgogIC0gaHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2ltYWdlcy9wcm90b2t1YmUudGFyLmd6CiAgLSBodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvaW1hZ2VzLXByb3Rva3ViZS50YXIuZ3oKICAtIGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9pbWFnZXMvcHJvdG9rdWJlLnRhci5negoKX19FT0ZfS1VCRV9FTlYKCmRvd25sb2FkLXJlbGVhc2UKZWNobyAiPT0gbm9kZXVwIG5vZGUgY29uZmlnIGRvbmUgPT0iCg== +IyEvYmluL2Jhc2gKIyBDb3B5cmlnaHQgMjAxNiBUaGUgS3ViZXJuZXRlcyBBdXRob3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpzZXQgLW8gZXJyZXhpdApzZXQgLW8gbm91bnNldApzZXQgLW8gcGlwZWZhaWwKCk5PREVVUF9VUkxfQU1ENjQ9aHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2xpbnV4L2FtZDY0L25vZGV1cCxodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvbGludXgtYW1kNjQtbm9kZXVwLGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9saW51eC9hbWQ2NC9ub2RldXAKTk9ERVVQX0hBU0hfQU1ENjQ9OTYwNGVmMTgyNjdhZDdiNWNmNGNlYmJmN2FiNjQ0MjNjZjViYjAzNDJkMTY5YzYwOGFjNjM3NmU2YWYyNmQ4MQpOT0RFVVBfVVJMX0FSTTY0PQpOT0RFVVBfSEFTSF9BUk02ND0KCmV4cG9ydCBBV1NfUkVHSU9OPXVzLXRlc3QtMQoKCgoKZnVuY3Rpb24gZW5zdXJlLWluc3RhbGwtZGlyKCkgewogIElOU1RBTExfRElSPSIvb3B0L2tvcHMiCiAgIyBPbiBDb250YWluZXJPUywgd2UgaW5zdGFsbCB1bmRlciAvdmFyL2xpYi90b29sYm94OyAvb3B0IGlzIHJvIGFuZCBub2V4ZWMKICBpZiBbWyAtZCAvdmFyL2xpYi90b29sYm94IF1dOyB0aGVuCiAgICBJTlNUQUxMX0RJUj0iL3Zhci9saWIvdG9vbGJveC9rb3BzIgogIGZpCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vYmluCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vY29uZgogIGNkICR7SU5TVEFMTF9ESVJ9Cn0KCiMgUmV0cnkgYSBkb3dubG9hZCB1bnRpbCB3ZSBnZXQgaXQuIGFyZ3M6IG5hbWUsIHNoYSwgdXJsMSwgdXJsMi4uLgpkb3dubG9hZC1vci1idXN0KCkgewogIGxvY2FsIC1yIGZpbGU9IiQxIgogIGxvY2FsIC1yIGhhc2g9IiQyIgogIHNoaWZ0IDIKCiAgdXJscz0oICQqICkKICB3aGlsZSB0cnVlOyBkbwogICAgZm9yIHVybCBpbiAiJHt1cmxzW0BdfSI7IGRvCiAgICAgIGNvbW1hbmRzPSgKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLS1jb21wcmVzc2VkIC1MbyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQgMjAgLS1yZXRyeSA2IC0tcmV0cnktZGVsYXkgMTAiCiAgICAgICAgIndnZXQgLS1pbmV0NC1vbmx5IC0tY29tcHJlc3Npb249YXV0byAtTyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQ9MjAgLS10cmllcz02IC0td2FpdD0xMCIKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLUxvICIke2ZpbGV9IiAtLWNvbm5lY3QtdGltZW91dCAyMCAtLXJldHJ5IDYgLS1yZXRyeS1kZWxheSAxMCIKICAgICAgICAid2dldCAtLWluZXQ0LW9ubHkgLU8gIiR7ZmlsZX0iIC0tY29ubmVjdC10aW1lb3V0PTIwIC0tdHJpZXM9NiAtLXdhaXQ9MTAiCiAgICAgICkKICAgICAgZm9yIGNtZCBpbiAiJHtjb21tYW5kc1tAXX0iOyBkbwogICAgICAgIGVjaG8gIkF0dGVtcHRpbmcgZG93bmxvYWQgd2l0aDogJHtjbWR9IHt1cmx9IgogICAgICAgIGlmICEgKCR7Y21kfSAiJHt1cmx9Iik7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IERvd25sb2FkIGZhaWxlZCB3aXRoICR7Y21kfSA9PSIKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZmkKICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV0gJiYgISB2YWxpZGF0ZS1oYXNoICIke2ZpbGV9IiAiJHtoYXNofSI7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IEhhc2ggdmFsaWRhdGlvbiBvZiAke3VybH0gZmFpbGVkLiBSZXRyeWluZy4gPT0iCiAgICAgICAgICBybSAtZiAiJHtmaWxlfSIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gKFNIQTEgPSAke2hhc2h9KSA9PSIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gPT0iCiAgICAgICAgICBmaQogICAgICAgICAgcmV0dXJuCiAgICAgICAgZmkKICAgICAgZG9uZQogICAgZG9uZQoKICAgIGVjaG8gIkFsbCBkb3dubG9hZHMgZmFpbGVkOyBzbGVlcGluZyBiZWZvcmUgcmV0cnlpbmciCiAgICBzbGVlcCA2MAogIGRvbmUKfQoKdmFsaWRhdGUtaGFzaCgpIHsKICBsb2NhbCAtciBmaWxlPSIkMSIKICBsb2NhbCAtciBleHBlY3RlZD0iJDIiCiAgbG9jYWwgYWN0dWFsCgogIGFjdHVhbD0kKHNoYTI1NnN1bSAke2ZpbGV9IHwgYXdrICd7IHByaW50ICQxIH0nKSB8fCB0cnVlCiAgaWYgW1sgIiR7YWN0dWFsfSIgIT0gIiR7ZXhwZWN0ZWR9IiBdXTsgdGhlbgogICAgZWNobyAiPT0gJHtmaWxlfSBjb3JydXB0ZWQsIGhhc2ggJHthY3R1YWx9IGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgJHtleHBlY3RlZH0gPT0iCiAgICByZXR1cm4gMQogIGZpCn0KCmZ1bmN0aW9uIHNwbGl0LWNvbW1hcygpIHsKICBlY2hvICQxIHwgdHIgIiwiICJcbiIKfQoKZnVuY3Rpb24gdHJ5LWRvd25sb2FkLXJlbGVhc2UoKSB7CiAgbG9jYWwgLXIgbm9kZXVwX3VybHM9KCAkKHNwbGl0LWNvbW1hcyAiJHtOT0RFVVBfVVJMfSIpICkKICBpZiBbWyAtbiAiJHtOT0RFVVBfSEFTSDotfSIgXV07IHRoZW4KICAgIGxvY2FsIC1yIG5vZGV1cF9oYXNoPSIke05PREVVUF9IQVNIfSIKICBlbHNlCiAgIyBUT0RPOiBSZW1vdmU/CiAgICBlY2hvICJEb3dubG9hZGluZyBzaGEyNTYgKG5vdCBmb3VuZCBpbiBlbnYpIgogICAgZG93bmxvYWQtb3ItYnVzdCBub2RldXAuc2hhMjU2ICIiICIke25vZGV1cF91cmxzW0BdLyUvLnNoYTI1Nn0iCiAgICBsb2NhbCAtciBub2RldXBfaGFzaD0kKGNhdCBub2RldXAuc2hhMjU2KQogIGZpCgogIGVjaG8gIkRvd25sb2FkaW5nIG5vZGV1cCAoJHtub2RldXBfdXJsc1tAXX0pIgogIGRvd25sb2FkLW9yLWJ1c3Qgbm9kZXVwICIke25vZGV1cF9oYXNofSIgIiR7bm9kZXVwX3VybHNbQF19IgoKICBjaG1vZCAreCBub2RldXAKfQoKZnVuY3Rpb24gZG93bmxvYWQtcmVsZWFzZSgpIHsKICBjYXNlICIkKHVuYW1lIC1tKSIgaW4KICB4ODZfNjQqfGk/ODZfNjQqfGFtZDY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BTUQ2NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BTUQ2NH0iCiAgICA7OwogIGFhcmNoNjQqfGFybTY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BUk02NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BUk02NH0iCiAgICA7OwogICopCiAgICBlY2hvICJVbnN1cHBvcnRlZCBob3N0IGFyY2g6ICQodW5hbWUgLW0pIiA+JjIKICAgIGV4aXQgMQogICAgOzsKICBlc2FjCgogICMgSW4gY2FzZSBvZiBmYWlsdXJlIGNoZWNraW5nIGludGVncml0eSBvZiByZWxlYXNlLCByZXRyeS4KICBjZCAke0lOU1RBTExfRElSfS9iaW4KICB1bnRpbCB0cnktZG93bmxvYWQtcmVsZWFzZTsgZG8KICAgIHNsZWVwIDE1CiAgICBlY2hvICJDb3VsZG4ndCBkb3dubG9hZCByZWxlYXNlLiBSZXRyeWluZy4uLiIKICBkb25lCgogIGVjaG8gIlJ1bm5pbmcgbm9kZXVwIgogICMgV2UgY2FuJ3QgcnVuIGluIHRoZSBmb3JlZ3JvdW5kIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzIzNzkzCiAgKCBjZCAke0lOU1RBTExfRElSfS9iaW47IC4vbm9kZXVwIC0taW5zdGFsbC1zeXN0ZW1kLXVuaXQgLS1jb25mPSR7SU5TVEFMTF9ESVJ9L2NvbmYva3ViZV9lbnYueWFtbCAtLXY9OCAgKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi9iaW4vc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIHx8IGVjaG8gImZhaWxlZCB0byBzZXQgdXAgZW5zdXJlIG1hY2hpbmUtaWQgY29uZmlndXJlZCIKCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBzdGFydGluZyA9PSIKZW5zdXJlLWluc3RhbGwtZGlyCgpjYXQgPiBjb25mL2NsdXN0ZXJfc3BlYy55YW1sIDw8ICdfX0VPRl9DTFVTVEVSX1NQRUMnCmNsb3VkQ29uZmlnOiBudWxsCmNvbnRhaW5lclJ1bnRpbWU6IGRvY2tlcgpjb250YWluZXJkOgogIHNraXBJbnN0YWxsOiB0cnVlCmRvY2tlcjoKICBpcE1hc3E6IGZhbHNlCiAgaXBUYWJsZXM6IGZhbHNlCiAgbG9nRHJpdmVyOiBqc29uLWZpbGUKICBsb2dMZXZlbDogaW5mbwogIGxvZ09wdDoKICAtIG1heC1zaXplPTEwbQogIC0gbWF4LWZpbGU9NQogIHN0b3JhZ2U6IG92ZXJsYXkyLG92ZXJsYXksYXVmcwogIHZlcnNpb246IDE4LjA2LjMKZW5jcnlwdGlvbkNvbmZpZzogbnVsbApldGNkQ2x1c3RlcnM6CiAgZXZlbnRzOgogICAgdmVyc2lvbjogMy4zLjEwCiAgbWFpbjoKICAgIHZlcnNpb246IDMuMy4xMAprdWJlQVBJU2VydmVyOgogIGFsbG93UHJpdmlsZWdlZDogdHJ1ZQogIGFub255bW91c0F1dGg6IGZhbHNlCiAgYXBpU2VydmVyQ291bnQ6IDEKICBhdXRob3JpemF0aW9uTW9kZTogQWx3YXlzQWxsb3cKICBiaW5kQWRkcmVzczogMC4wLjAuMAogIGNsb3VkUHJvdmlkZXI6IGF3cwogIGVuYWJsZUFkbWlzc2lvblBsdWdpbnM6CiAgLSBOYW1lc3BhY2VMaWZlY3ljbGUKICAtIExpbWl0UmFuZ2VyCiAgLSBTZXJ2aWNlQWNjb3VudAogIC0gUGVyc2lzdGVudFZvbHVtZUxhYmVsCiAgLSBEZWZhdWx0U3RvcmFnZUNsYXNzCiAgLSBEZWZhdWx0VG9sZXJhdGlvblNlY29uZHMKICAtIE11dGF0aW5nQWRtaXNzaW9uV2ViaG9vawogIC0gVmFsaWRhdGluZ0FkbWlzc2lvbldlYmhvb2sKICAtIE5vZGVSZXN0cmljdGlvbgogIC0gUmVzb3VyY2VRdW90YQogIGV0Y2RTZXJ2ZXJzOgogIC0gaHR0cDovLzEyNy4wLjAuMTo0MDAxCiAgZXRjZFNlcnZlcnNPdmVycmlkZXM6CiAgLSAvZXZlbnRzI2h0dHA6Ly8xMjcuMC4wLjE6NDAwMgogIGltYWdlOiBrOHMuZ2NyLmlvL2t1YmUtYXBpc2VydmVyOnYxLjE0LjAKICBpbnNlY3VyZUJpbmRBZGRyZXNzOiAxMjcuMC4wLjEKICBpbnNlY3VyZVBvcnQ6IDgwODAKICBrdWJlbGV0UHJlZmVycmVkQWRkcmVzc1R5cGVzOgogIC0gSW50ZXJuYWxJUAogIC0gSG9zdG5hbWUKICAtIEV4dGVybmFsSVAKICBsb2dMZXZlbDogMgogIHJlcXVlc3RoZWFkZXJBbGxvd2VkTmFtZXM6CiAgLSBhZ2dyZWdhdG9yCiAgcmVxdWVzdGhlYWRlckV4dHJhSGVhZGVyUHJlZml4ZXM6CiAgLSBYLVJlbW90ZS1FeHRyYS0KICByZXF1ZXN0aGVhZGVyR3JvdXBIZWFkZXJzOgogIC0gWC1SZW1vdGUtR3JvdXAKICByZXF1ZXN0aGVhZGVyVXNlcm5hbWVIZWFkZXJzOgogIC0gWC1SZW1vdGUtVXNlcgogIHNlY3VyZVBvcnQ6IDQ0MwogIHNlcnZpY2VDbHVzdGVySVBSYW5nZTogMTAwLjY0LjAuMC8xMwogIHN0b3JhZ2VCYWNrZW5kOiBldGNkMwprdWJlQ29udHJvbGxlck1hbmFnZXI6CiAgYWxsb2NhdGVOb2RlQ0lEUnM6IHRydWUKICBhdHRhY2hEZXRhY2hSZWNvbmNpbGVTeW5jUGVyaW9kOiAxbTBzCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckNJRFI6IDEwMC45Ni4wLjAvMTEKICBjbHVzdGVyTmFtZTogbWluaW1hbC10ZjExLmV4YW1wbGUuY29tCiAgY29uZmlndXJlQ2xvdWRSb3V0ZXM6IHRydWUKICBpbWFnZTogazhzLmdjci5pby9rdWJlLWNvbnRyb2xsZXItbWFuYWdlcjp2MS4xNC4wCiAgbGVhZGVyRWxlY3Rpb246CiAgICBsZWFkZXJFbGVjdDogdHJ1ZQogIGxvZ0xldmVsOiAyCiAgdXNlU2VydmljZUFjY291bnRDcmVkZW50aWFsczogdHJ1ZQprdWJlUHJveHk6CiAgY2x1c3RlckNJRFI6IDEwMC45Ni4wLjAvMTEKICBjcHVSZXF1ZXN0OiAxMDBtCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAgaW1hZ2U6IGs4cy5nY3IuaW8va3ViZS1wcm94eTp2MS4xNC4wCiAgbG9nTGV2ZWw6IDIKa3ViZVNjaGVkdWxlcjoKICBpbWFnZTogazhzLmdjci5pby9rdWJlLXNjaGVkdWxlcjp2MS4xNC4wCiAgbGVhZGVyRWxlY3Rpb246CiAgICBsZWFkZXJFbGVjdDogdHJ1ZQogIGxvZ0xldmVsOiAyCmt1YmVsZXQ6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9uTWFzcXVlcmFkZUNJRFI6IDEwMC42NC4wLjAvMTAKICBwb2RJbmZyYUNvbnRhaW5lckltYWdlOiBrOHMuZ2NyLmlvL3BhdXNlOjMuMgogIHBvZE1hbmlmZXN0UGF0aDogL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cwptYXN0ZXJLdWJlbGV0OgogIGFub255bW91c0F1dGg6IGZhbHNlCiAgY2dyb3VwUm9vdDogLwogIGNsb3VkUHJvdmlkZXI6IGF3cwogIGNsdXN0ZXJETlM6IDEwMC42NC4wLjEwCiAgY2x1c3RlckRvbWFpbjogY2x1c3Rlci5sb2NhbAogIGVuYWJsZURlYnVnZ2luZ0hhbmRsZXJzOiB0cnVlCiAgZXZpY3Rpb25IYXJkOiBtZW1vcnkuYXZhaWxhYmxlPDEwME1pLG5vZGVmcy5hdmFpbGFibGU8MTAlLG5vZGVmcy5pbm9kZXNGcmVlPDUlLGltYWdlZnMuYXZhaWxhYmxlPDEwJSxpbWFnZWZzLmlub2Rlc0ZyZWU8NSUKICBmZWF0dXJlR2F0ZXM6CiAgICBFeHBlcmltZW50YWxDcml0aWNhbFBvZEFubm90YXRpb246ICJ0cnVlIgogIGhvc3RuYW1lT3ZlcnJpZGU6ICdAYXdzJwogIGt1YmVjb25maWdQYXRoOiAvdmFyL2xpYi9rdWJlbGV0L2t1YmVjb25maWcKICBsb2dMZXZlbDogMgogIG5ldHdvcmtQbHVnaW5NVFU6IDkwMDEKICBuZXR3b3JrUGx1Z2luTmFtZToga3ViZW5ldAogIG5vbk1hc3F1ZXJhZGVDSURSOiAxMDAuNjQuMC4wLzEwCiAgcG9kSW5mcmFDb250YWluZXJJbWFnZTogazhzLmdjci5pby9wYXVzZTozLjIKICBwb2RNYW5pZmVzdFBhdGg6IC9ldGMva3ViZXJuZXRlcy9tYW5pZmVzdHMKICByZWdpc3RlclNjaGVkdWxhYmxlOiBmYWxzZQoKX19FT0ZfQ0xVU1RFUl9TUEVDCgpjYXQgPiBjb25mL2lnX3NwZWMueWFtbCA8PCAnX19FT0ZfSUdfU1BFQycKe30KCl9fRU9GX0lHX1NQRUMKCmNhdCA+IGNvbmYva3ViZV9lbnYueWFtbCA8PCAnX19FT0ZfS1VCRV9FTlYnCkFzc2V0czoKICBhbWQ2NDoKICAtIGMzYjczNmZkMGYwMDM3NjVjMTJkOTlmMmM5OTVhODM2OWU2MjQxZjRAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9yZWxlYXNlL3YxLjE0LjAvYmluL2xpbnV4L2FtZDY0L2t1YmVsZXQKICAtIDdlM2EzZWE2NjMxNTNmOTAwY2JkNTI5MDBhMzljOTFmYTlmMzM0YmVAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9yZWxlYXNlL3YxLjE0LjAvYmluL2xpbnV4L2FtZDY0L2t1YmVjdGwKICAtIDNjYTE1YzBhMThlZTgzMDUyMGNmM2E5NTQwOGJlODI2Y2JkMjU1YTE1MzVhMzhlMGJlOTYwOGIyNWFkOGJmNjRAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9uZXR3b3JrLXBsdWdpbnMvY25pLXBsdWdpbnMtYW1kNjQtdjAuNy41LnRnegogIGFybTY0OgogIC0gZGYzOGUwNDU3NjAyNjM5MzA1NWNjYzc3YzBkY2U3MzYxMjk5NjU2MUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYXJtNjQva3ViZWxldAogIC0gMDFjMmI2YjQzZDM2YjZiZmFmYzgwYTM3MzczOTFjMTllYmZiOGFkNUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYXJtNjQva3ViZWN0bAogIC0gN2ZlYzkxYWY3OGU5NTQ4ZGYzMDZmMGVjNDNiZWE1MjdjOGMxMGNjM2E5NjgyYzMzZTk3MWM4NTIyYTdmY2RlZEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL25ldHdvcmstcGx1Z2lucy9jbmktcGx1Z2lucy1hcm02NC12MC43LjUudGd6CkNsdXN0ZXJOYW1lOiBtaW5pbWFsLXRmMTEuZXhhbXBsZS5jb20KQ29uZmlnQmFzZTogbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLXRmMTEuZXhhbXBsZS5jb20KSW5zdGFuY2VHcm91cE5hbWU6IG1hc3Rlci11cy10ZXN0LTFhCkluc3RhbmNlR3JvdXBSb2xlOiBNYXN0ZXIKS3ViZWxldENvbmZpZzoKICBhbm9ueW1vdXNBdXRoOiBmYWxzZQogIGNncm91cFJvb3Q6IC8KICBjbG91ZFByb3ZpZGVyOiBhd3MKICBjbHVzdGVyRE5TOiAxMDAuNjQuMC4xMAogIGNsdXN0ZXJEb21haW46IGNsdXN0ZXIubG9jYWwKICBlbmFibGVEZWJ1Z2dpbmdIYW5kbGVyczogdHJ1ZQogIGV2aWN0aW9uSGFyZDogbWVtb3J5LmF2YWlsYWJsZTwxMDBNaSxub2RlZnMuYXZhaWxhYmxlPDEwJSxub2RlZnMuaW5vZGVzRnJlZTw1JSxpbWFnZWZzLmF2YWlsYWJsZTwxMCUsaW1hZ2Vmcy5pbm9kZXNGcmVlPDUlCiAgZmVhdHVyZUdhdGVzOgogICAgRXhwZXJpbWVudGFsQ3JpdGljYWxQb2RBbm5vdGF0aW9uOiAidHJ1ZSIKICBob3N0bmFtZU92ZXJyaWRlOiAnQGF3cycKICBrdWJlY29uZmlnUGF0aDogL3Zhci9saWIva3ViZWxldC9rdWJlY29uZmlnCiAgbG9nTGV2ZWw6IDIKICBuZXR3b3JrUGx1Z2luTVRVOiA5MDAxCiAgbmV0d29ya1BsdWdpbk5hbWU6IGt1YmVuZXQKICBub2RlTGFiZWxzOgogICAga3ViZXJuZXRlcy5pby9yb2xlOiBtYXN0ZXIKICAgIG5vZGUtcm9sZS5rdWJlcm5ldGVzLmlvL21hc3RlcjogIiIKICBub25NYXNxdWVyYWRlQ0lEUjogMTAwLjY0LjAuMC8xMAogIHBvZEluZnJhQ29udGFpbmVySW1hZ2U6IGs4cy5nY3IuaW8vcGF1c2U6My4yCiAgcG9kTWFuaWZlc3RQYXRoOiAvZXRjL2t1YmVybmV0ZXMvbWFuaWZlc3RzCiAgcmVnaXN0ZXJTY2hlZHVsYWJsZTogZmFsc2UKVGFnczoKLSBfYXV0b21hdGljX3VwZ3JhZGVzCi0gX2F3cwpjaGFubmVsczoKLSBtZW1mczovL2NsdXN0ZXJzLmV4YW1wbGUuY29tL21pbmltYWwtdGYxMS5leGFtcGxlLmNvbS9hZGRvbnMvYm9vdHN0cmFwLWNoYW5uZWwueWFtbApldGNkTWFuaWZlc3RzOgotIG1lbWZzOi8vY2x1c3RlcnMuZXhhbXBsZS5jb20vbWluaW1hbC10ZjExLmV4YW1wbGUuY29tL21hbmlmZXN0cy9ldGNkL21haW4ueWFtbAotIG1lbWZzOi8vY2x1c3RlcnMuZXhhbXBsZS5jb20vbWluaW1hbC10ZjExLmV4YW1wbGUuY29tL21hbmlmZXN0cy9ldGNkL2V2ZW50cy55YW1sCnByb3Rva3ViZUltYWdlOgogIGhhc2g6IDQyYTljNDMyNGZlMjZkNjNjZTExZjNkZDc4MzYzNzFiYzkzZmEwNmNhOGY0Nzk4MDc3MjhmMzc0NmUyNzA2MWIKICBuYW1lOiBwcm90b2t1YmU6MS4xNS4wCiAgc291cmNlczoKICAtIGh0dHBzOi8vYXJ0aWZhY3RzLms4cy5pby9iaW5hcmllcy9rb3BzLzEuMTUuMC9pbWFnZXMvcHJvdG9rdWJlLnRhci5negogIC0gaHR0cHM6Ly9naXRodWIuY29tL2t1YmVybmV0ZXMva29wcy9yZWxlYXNlcy9kb3dubG9hZC92MS4xNS4wL2ltYWdlcy1wcm90b2t1YmUudGFyLmd6CiAgLSBodHRwczovL2t1YmV1cHYyLnMzLmFtYXpvbmF3cy5jb20va29wcy8xLjE1LjAvaW1hZ2VzL3Byb3Rva3ViZS50YXIuZ3oKCl9fRU9GX0tVQkVfRU5WCgpkb3dubG9hZC1yZWxlYXNlCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBkb25lID09Igo= diff --git a/tests/integration/update_cluster/minimal-tf11/data/aws_launch_template_nodes.minimal-tf11.example.com_user_data b/tests/integration/update_cluster/minimal-tf11/data/aws_launch_template_nodes.minimal-tf11.example.com_user_data index 22111a4ed9e07..1ffda264597ed 100644 --- a/tests/integration/update_cluster/minimal-tf11/data/aws_launch_template_nodes.minimal-tf11.example.com_user_data +++ b/tests/integration/update_cluster/minimal-tf11/data/aws_launch_template_nodes.minimal-tf11.example.com_user_data @@ -1 +1 @@ -IyEvYmluL2Jhc2gKIyBDb3B5cmlnaHQgMjAxNiBUaGUgS3ViZXJuZXRlcyBBdXRob3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpzZXQgLW8gZXJyZXhpdApzZXQgLW8gbm91bnNldApzZXQgLW8gcGlwZWZhaWwKCk5PREVVUF9VUkxfQU1ENjQ9aHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2xpbnV4L2FtZDY0L25vZGV1cCxodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvbGludXgtYW1kNjQtbm9kZXVwLGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9saW51eC9hbWQ2NC9ub2RldXAKTk9ERVVQX0hBU0hfQU1ENjQ9OTYwNGVmMTgyNjdhZDdiNWNmNGNlYmJmN2FiNjQ0MjNjZjViYjAzNDJkMTY5YzYwOGFjNjM3NmU2YWYyNmQ4MQpOT0RFVVBfVVJMX0FSTTY0PQpOT0RFVVBfSEFTSF9BUk02ND0KCmV4cG9ydCBBV1NfUkVHSU9OPXVzLXRlc3QtMQoKCgoKZnVuY3Rpb24gZW5zdXJlLWluc3RhbGwtZGlyKCkgewogIElOU1RBTExfRElSPSIvb3B0L2tvcHMiCiAgIyBPbiBDb250YWluZXJPUywgd2UgaW5zdGFsbCB1bmRlciAvdmFyL2xpYi90b29sYm94OyAvb3B0IGlzIHJvIGFuZCBub2V4ZWMKICBpZiBbWyAtZCAvdmFyL2xpYi90b29sYm94IF1dOyB0aGVuCiAgICBJTlNUQUxMX0RJUj0iL3Zhci9saWIvdG9vbGJveC9rb3BzIgogIGZpCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vYmluCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vY29uZgogIGNkICR7SU5TVEFMTF9ESVJ9Cn0KCiMgUmV0cnkgYSBkb3dubG9hZCB1bnRpbCB3ZSBnZXQgaXQuIGFyZ3M6IG5hbWUsIHNoYSwgdXJsMSwgdXJsMi4uLgpkb3dubG9hZC1vci1idXN0KCkgewogIGxvY2FsIC1yIGZpbGU9IiQxIgogIGxvY2FsIC1yIGhhc2g9IiQyIgogIHNoaWZ0IDIKCiAgdXJscz0oICQqICkKICB3aGlsZSB0cnVlOyBkbwogICAgZm9yIHVybCBpbiAiJHt1cmxzW0BdfSI7IGRvCiAgICAgIGNvbW1hbmRzPSgKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLS1jb21wcmVzc2VkIC1MbyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQgMjAgLS1yZXRyeSA2IC0tcmV0cnktZGVsYXkgMTAiCiAgICAgICAgIndnZXQgLS1pbmV0NC1vbmx5IC0tY29tcHJlc3Npb249YXV0byAtTyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQ9MjAgLS10cmllcz02IC0td2FpdD0xMCIKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLUxvICIke2ZpbGV9IiAtLWNvbm5lY3QtdGltZW91dCAyMCAtLXJldHJ5IDYgLS1yZXRyeS1kZWxheSAxMCIKICAgICAgICAid2dldCAtLWluZXQ0LW9ubHkgLU8gIiR7ZmlsZX0iIC0tY29ubmVjdC10aW1lb3V0PTIwIC0tdHJpZXM9NiAtLXdhaXQ9MTAiCiAgICAgICkKICAgICAgZm9yIGNtZCBpbiAiJHtjb21tYW5kc1tAXX0iOyBkbwogICAgICAgIGVjaG8gIkF0dGVtcHRpbmcgZG93bmxvYWQgd2l0aDogJHtjbWR9IHt1cmx9IgogICAgICAgIGlmICEgKCR7Y21kfSAiJHt1cmx9Iik7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IERvd25sb2FkIGZhaWxlZCB3aXRoICR7Y21kfSA9PSIKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZmkKICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV0gJiYgISB2YWxpZGF0ZS1oYXNoICIke2ZpbGV9IiAiJHtoYXNofSI7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IEhhc2ggdmFsaWRhdGlvbiBvZiAke3VybH0gZmFpbGVkLiBSZXRyeWluZy4gPT0iCiAgICAgICAgICBybSAtZiAiJHtmaWxlfSIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gKFNIQTEgPSAke2hhc2h9KSA9PSIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gPT0iCiAgICAgICAgICBmaQogICAgICAgICAgcmV0dXJuCiAgICAgICAgZmkKICAgICAgZG9uZQogICAgZG9uZQoKICAgIGVjaG8gIkFsbCBkb3dubG9hZHMgZmFpbGVkOyBzbGVlcGluZyBiZWZvcmUgcmV0cnlpbmciCiAgICBzbGVlcCA2MAogIGRvbmUKfQoKdmFsaWRhdGUtaGFzaCgpIHsKICBsb2NhbCAtciBmaWxlPSIkMSIKICBsb2NhbCAtciBleHBlY3RlZD0iJDIiCiAgbG9jYWwgYWN0dWFsCgogIGFjdHVhbD0kKHNoYTI1NnN1bSAke2ZpbGV9IHwgYXdrICd7IHByaW50ICQxIH0nKSB8fCB0cnVlCiAgaWYgW1sgIiR7YWN0dWFsfSIgIT0gIiR7ZXhwZWN0ZWR9IiBdXTsgdGhlbgogICAgZWNobyAiPT0gJHtmaWxlfSBjb3JydXB0ZWQsIGhhc2ggJHthY3R1YWx9IGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgJHtleHBlY3RlZH0gPT0iCiAgICByZXR1cm4gMQogIGZpCn0KCmZ1bmN0aW9uIHNwbGl0LWNvbW1hcygpIHsKICBlY2hvICQxIHwgdHIgIiwiICJcbiIKfQoKZnVuY3Rpb24gdHJ5LWRvd25sb2FkLXJlbGVhc2UoKSB7CiAgbG9jYWwgLXIgbm9kZXVwX3VybHM9KCAkKHNwbGl0LWNvbW1hcyAiJHtOT0RFVVBfVVJMfSIpICkKICBpZiBbWyAtbiAiJHtOT0RFVVBfSEFTSDotfSIgXV07IHRoZW4KICAgIGxvY2FsIC1yIG5vZGV1cF9oYXNoPSIke05PREVVUF9IQVNIfSIKICBlbHNlCiAgIyBUT0RPOiBSZW1vdmU/CiAgICBlY2hvICJEb3dubG9hZGluZyBzaGEyNTYgKG5vdCBmb3VuZCBpbiBlbnYpIgogICAgZG93bmxvYWQtb3ItYnVzdCBub2RldXAuc2hhMjU2ICIiICIke25vZGV1cF91cmxzW0BdLyUvLnNoYTI1Nn0iCiAgICBsb2NhbCAtciBub2RldXBfaGFzaD0kKGNhdCBub2RldXAuc2hhMjU2KQogIGZpCgogIGVjaG8gIkRvd25sb2FkaW5nIG5vZGV1cCAoJHtub2RldXBfdXJsc1tAXX0pIgogIGRvd25sb2FkLW9yLWJ1c3Qgbm9kZXVwICIke25vZGV1cF9oYXNofSIgIiR7bm9kZXVwX3VybHNbQF19IgoKICBjaG1vZCAreCBub2RldXAKfQoKZnVuY3Rpb24gZG93bmxvYWQtcmVsZWFzZSgpIHsKICBjYXNlICIkKHVuYW1lIC1tKSIgaW4KICB4ODZfNjQqfGk/ODZfNjQqfGFtZDY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BTUQ2NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BTUQ2NH0iCiAgICA7OwogIGFhcmNoNjQqfGFybTY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BUk02NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BUk02NH0iCiAgICA7OwogICopCiAgICBlY2hvICJVbnN1cHBvcnRlZCBob3N0IGFyY2g6ICQodW5hbWUgLW0pIiA+JjIKICAgIGV4aXQgMQogICAgOzsKICBlc2FjCgogICMgSW4gY2FzZSBvZiBmYWlsdXJlIGNoZWNraW5nIGludGVncml0eSBvZiByZWxlYXNlLCByZXRyeS4KICBjZCAke0lOU1RBTExfRElSfS9iaW4KICB1bnRpbCB0cnktZG93bmxvYWQtcmVsZWFzZTsgZG8KICAgIHNsZWVwIDE1CiAgICBlY2hvICJDb3VsZG4ndCBkb3dubG9hZCByZWxlYXNlLiBSZXRyeWluZy4uLiIKICBkb25lCgogIGVjaG8gIlJ1bm5pbmcgbm9kZXVwIgogICMgV2UgY2FuJ3QgcnVuIGluIHRoZSBmb3JlZ3JvdW5kIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzIzNzkzCiAgKCBjZCAke0lOU1RBTExfRElSfS9iaW47IC4vbm9kZXVwIC0taW5zdGFsbC1zeXN0ZW1kLXVuaXQgLS1jb25mPSR7SU5TVEFMTF9ESVJ9L2NvbmYva3ViZV9lbnYueWFtbCAtLXY9OCAgKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi9iaW4vc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIHx8IGVjaG8gImZhaWxlZCB0byBzZXQgdXAgZW5zdXJlIG1hY2hpbmUtaWQgY29uZmlndXJlZCIKCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBzdGFydGluZyA9PSIKZW5zdXJlLWluc3RhbGwtZGlyCgpjYXQgPiBjb25mL2NsdXN0ZXJfc3BlYy55YW1sIDw8ICdfX0VPRl9DTFVTVEVSX1NQRUMnCmNsb3VkQ29uZmlnOiBudWxsCmNvbnRhaW5lclJ1bnRpbWU6IGRvY2tlcgpjb250YWluZXJkOgogIHNraXBJbnN0YWxsOiB0cnVlCmRvY2tlcjoKICBpcE1hc3E6IGZhbHNlCiAgaXBUYWJsZXM6IGZhbHNlCiAgbG9nRHJpdmVyOiBqc29uLWZpbGUKICBsb2dMZXZlbDogaW5mbwogIGxvZ09wdDoKICAtIG1heC1zaXplPTEwbQogIC0gbWF4LWZpbGU9NQogIHN0b3JhZ2U6IG92ZXJsYXkyLG92ZXJsYXksYXVmcwogIHZlcnNpb246IDE4LjA2LjMKa3ViZVByb3h5OgogIGNsdXN0ZXJDSURSOiAxMDAuOTYuMC4wLzExCiAgY3B1UmVxdWVzdDogMTAwbQogIGhvc3RuYW1lT3ZlcnJpZGU6ICdAYXdzJwogIGltYWdlOiBrOHMuZ2NyLmlvL2t1YmUtcHJveHk6djEuMTQuMAogIGxvZ0xldmVsOiAyCmt1YmVsZXQ6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9uTWFzcXVlcmFkZUNJRFI6IDEwMC42NC4wLjAvMTAKICBwb2RJbmZyYUNvbnRhaW5lckltYWdlOiBrOHMuZ2NyLmlvL3BhdXNlOjMuMgogIHBvZE1hbmlmZXN0UGF0aDogL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cwoKX19FT0ZfQ0xVU1RFUl9TUEVDCgpjYXQgPiBjb25mL2lnX3NwZWMueWFtbCA8PCAnX19FT0ZfSUdfU1BFQycKa3ViZWxldDogbnVsbApub2RlTGFiZWxzOiBudWxsCnRhaW50czogbnVsbAoKX19FT0ZfSUdfU1BFQwoKY2F0ID4gY29uZi9rdWJlX2Vudi55YW1sIDw8ICdfX0VPRl9LVUJFX0VOVicKQXNzZXRzOgogIGFtZDY0OgogIC0gYzNiNzM2ZmQwZjAwMzc2NWMxMmQ5OWYyYzk5NWE4MzY5ZTYyNDFmNEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYW1kNjQva3ViZWxldAogIC0gN2UzYTNlYTY2MzE1M2Y5MDBjYmQ1MjkwMGEzOWM5MWZhOWYzMzRiZUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYW1kNjQva3ViZWN0bAogIC0gM2NhMTVjMGExOGVlODMwNTIwY2YzYTk1NDA4YmU4MjZjYmQyNTVhMTUzNWEzOGUwYmU5NjA4YjI1YWQ4YmY2NEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL25ldHdvcmstcGx1Z2lucy9jbmktcGx1Z2lucy1hbWQ2NC12MC43LjUudGd6CiAgYXJtNjQ6CiAgLSBkZjM4ZTA0NTc2MDI2MzkzMDU1Y2NjNzdjMGRjZTczNjEyOTk2NTYxQGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvcmVsZWFzZS92MS4xNC4wL2Jpbi9saW51eC9hcm02NC9rdWJlbGV0CiAgLSAwMWMyYjZiNDNkMzZiNmJmYWZjODBhMzczNzM5MWMxOWViZmI4YWQ1QGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvcmVsZWFzZS92MS4xNC4wL2Jpbi9saW51eC9hcm02NC9rdWJlY3RsCiAgLSA3ZmVjOTFhZjc4ZTk1NDhkZjMwNmYwZWM0M2JlYTUyN2M4YzEwY2MzYTk2ODJjMzNlOTcxYzg1MjJhN2ZjZGVkQGh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9rdWJlcm5ldGVzLXJlbGVhc2UvbmV0d29yay1wbHVnaW5zL2NuaS1wbHVnaW5zLWFybTY0LXYwLjcuNS50Z3oKQ2x1c3Rlck5hbWU6IG1pbmltYWwtdGYxMS5leGFtcGxlLmNvbQpDb25maWdCYXNlOiBtZW1mczovL2NsdXN0ZXJzLmV4YW1wbGUuY29tL21pbmltYWwtdGYxMS5leGFtcGxlLmNvbQpJbnN0YW5jZUdyb3VwTmFtZTogbm9kZXMKSW5zdGFuY2VHcm91cFJvbGU6IE5vZGUKVGFnczoKLSBfYXV0b21hdGljX3VwZ3JhZGVzCi0gX2F3cwpjaGFubmVsczoKLSBtZW1mczovL2NsdXN0ZXJzLmV4YW1wbGUuY29tL21pbmltYWwtdGYxMS5leGFtcGxlLmNvbS9hZGRvbnMvYm9vdHN0cmFwLWNoYW5uZWwueWFtbAoKX19FT0ZfS1VCRV9FTlYKCmRvd25sb2FkLXJlbGVhc2UKZWNobyAiPT0gbm9kZXVwIG5vZGUgY29uZmlnIGRvbmUgPT0iCg== +IyEvYmluL2Jhc2gKIyBDb3B5cmlnaHQgMjAxNiBUaGUgS3ViZXJuZXRlcyBBdXRob3JzIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCiMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCgpzZXQgLW8gZXJyZXhpdApzZXQgLW8gbm91bnNldApzZXQgLW8gcGlwZWZhaWwKCk5PREVVUF9VUkxfQU1ENjQ9aHR0cHM6Ly9hcnRpZmFjdHMuazhzLmlvL2JpbmFyaWVzL2tvcHMvMS4xNS4wL2xpbnV4L2FtZDY0L25vZGV1cCxodHRwczovL2dpdGh1Yi5jb20va3ViZXJuZXRlcy9rb3BzL3JlbGVhc2VzL2Rvd25sb2FkL3YxLjE1LjAvbGludXgtYW1kNjQtbm9kZXVwLGh0dHBzOi8va3ViZXVwdjIuczMuYW1hem9uYXdzLmNvbS9rb3BzLzEuMTUuMC9saW51eC9hbWQ2NC9ub2RldXAKTk9ERVVQX0hBU0hfQU1ENjQ9OTYwNGVmMTgyNjdhZDdiNWNmNGNlYmJmN2FiNjQ0MjNjZjViYjAzNDJkMTY5YzYwOGFjNjM3NmU2YWYyNmQ4MQpOT0RFVVBfVVJMX0FSTTY0PQpOT0RFVVBfSEFTSF9BUk02ND0KCmV4cG9ydCBBV1NfUkVHSU9OPXVzLXRlc3QtMQoKCgoKZnVuY3Rpb24gZW5zdXJlLWluc3RhbGwtZGlyKCkgewogIElOU1RBTExfRElSPSIvb3B0L2tvcHMiCiAgIyBPbiBDb250YWluZXJPUywgd2UgaW5zdGFsbCB1bmRlciAvdmFyL2xpYi90b29sYm94OyAvb3B0IGlzIHJvIGFuZCBub2V4ZWMKICBpZiBbWyAtZCAvdmFyL2xpYi90b29sYm94IF1dOyB0aGVuCiAgICBJTlNUQUxMX0RJUj0iL3Zhci9saWIvdG9vbGJveC9rb3BzIgogIGZpCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vYmluCiAgbWtkaXIgLXAgJHtJTlNUQUxMX0RJUn0vY29uZgogIGNkICR7SU5TVEFMTF9ESVJ9Cn0KCiMgUmV0cnkgYSBkb3dubG9hZCB1bnRpbCB3ZSBnZXQgaXQuIGFyZ3M6IG5hbWUsIHNoYSwgdXJsMSwgdXJsMi4uLgpkb3dubG9hZC1vci1idXN0KCkgewogIGxvY2FsIC1yIGZpbGU9IiQxIgogIGxvY2FsIC1yIGhhc2g9IiQyIgogIHNoaWZ0IDIKCiAgdXJscz0oICQqICkKICB3aGlsZSB0cnVlOyBkbwogICAgZm9yIHVybCBpbiAiJHt1cmxzW0BdfSI7IGRvCiAgICAgIGNvbW1hbmRzPSgKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLS1jb21wcmVzc2VkIC1MbyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQgMjAgLS1yZXRyeSA2IC0tcmV0cnktZGVsYXkgMTAiCiAgICAgICAgIndnZXQgLS1pbmV0NC1vbmx5IC0tY29tcHJlc3Npb249YXV0byAtTyAiJHtmaWxlfSIgLS1jb25uZWN0LXRpbWVvdXQ9MjAgLS10cmllcz02IC0td2FpdD0xMCIKICAgICAgICAiY3VybCAtZiAtLWlwdjQgLUxvICIke2ZpbGV9IiAtLWNvbm5lY3QtdGltZW91dCAyMCAtLXJldHJ5IDYgLS1yZXRyeS1kZWxheSAxMCIKICAgICAgICAid2dldCAtLWluZXQ0LW9ubHkgLU8gIiR7ZmlsZX0iIC0tY29ubmVjdC10aW1lb3V0PTIwIC0tdHJpZXM9NiAtLXdhaXQ9MTAiCiAgICAgICkKICAgICAgZm9yIGNtZCBpbiAiJHtjb21tYW5kc1tAXX0iOyBkbwogICAgICAgIGVjaG8gIkF0dGVtcHRpbmcgZG93bmxvYWQgd2l0aDogJHtjbWR9IHt1cmx9IgogICAgICAgIGlmICEgKCR7Y21kfSAiJHt1cmx9Iik7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IERvd25sb2FkIGZhaWxlZCB3aXRoICR7Y21kfSA9PSIKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgZmkKICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV0gJiYgISB2YWxpZGF0ZS1oYXNoICIke2ZpbGV9IiAiJHtoYXNofSI7IHRoZW4KICAgICAgICAgIGVjaG8gIj09IEhhc2ggdmFsaWRhdGlvbiBvZiAke3VybH0gZmFpbGVkLiBSZXRyeWluZy4gPT0iCiAgICAgICAgICBybSAtZiAiJHtmaWxlfSIKICAgICAgICBlbHNlCiAgICAgICAgICBpZiBbWyAtbiAiJHtoYXNofSIgXV07IHRoZW4KICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gKFNIQTEgPSAke2hhc2h9KSA9PSIKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgZWNobyAiPT0gRG93bmxvYWRlZCAke3VybH0gPT0iCiAgICAgICAgICBmaQogICAgICAgICAgcmV0dXJuCiAgICAgICAgZmkKICAgICAgZG9uZQogICAgZG9uZQoKICAgIGVjaG8gIkFsbCBkb3dubG9hZHMgZmFpbGVkOyBzbGVlcGluZyBiZWZvcmUgcmV0cnlpbmciCiAgICBzbGVlcCA2MAogIGRvbmUKfQoKdmFsaWRhdGUtaGFzaCgpIHsKICBsb2NhbCAtciBmaWxlPSIkMSIKICBsb2NhbCAtciBleHBlY3RlZD0iJDIiCiAgbG9jYWwgYWN0dWFsCgogIGFjdHVhbD0kKHNoYTI1NnN1bSAke2ZpbGV9IHwgYXdrICd7IHByaW50ICQxIH0nKSB8fCB0cnVlCiAgaWYgW1sgIiR7YWN0dWFsfSIgIT0gIiR7ZXhwZWN0ZWR9IiBdXTsgdGhlbgogICAgZWNobyAiPT0gJHtmaWxlfSBjb3JydXB0ZWQsIGhhc2ggJHthY3R1YWx9IGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgJHtleHBlY3RlZH0gPT0iCiAgICByZXR1cm4gMQogIGZpCn0KCmZ1bmN0aW9uIHNwbGl0LWNvbW1hcygpIHsKICBlY2hvICQxIHwgdHIgIiwiICJcbiIKfQoKZnVuY3Rpb24gdHJ5LWRvd25sb2FkLXJlbGVhc2UoKSB7CiAgbG9jYWwgLXIgbm9kZXVwX3VybHM9KCAkKHNwbGl0LWNvbW1hcyAiJHtOT0RFVVBfVVJMfSIpICkKICBpZiBbWyAtbiAiJHtOT0RFVVBfSEFTSDotfSIgXV07IHRoZW4KICAgIGxvY2FsIC1yIG5vZGV1cF9oYXNoPSIke05PREVVUF9IQVNIfSIKICBlbHNlCiAgIyBUT0RPOiBSZW1vdmU/CiAgICBlY2hvICJEb3dubG9hZGluZyBzaGEyNTYgKG5vdCBmb3VuZCBpbiBlbnYpIgogICAgZG93bmxvYWQtb3ItYnVzdCBub2RldXAuc2hhMjU2ICIiICIke25vZGV1cF91cmxzW0BdLyUvLnNoYTI1Nn0iCiAgICBsb2NhbCAtciBub2RldXBfaGFzaD0kKGNhdCBub2RldXAuc2hhMjU2KQogIGZpCgogIGVjaG8gIkRvd25sb2FkaW5nIG5vZGV1cCAoJHtub2RldXBfdXJsc1tAXX0pIgogIGRvd25sb2FkLW9yLWJ1c3Qgbm9kZXVwICIke25vZGV1cF9oYXNofSIgIiR7bm9kZXVwX3VybHNbQF19IgoKICBjaG1vZCAreCBub2RldXAKfQoKZnVuY3Rpb24gZG93bmxvYWQtcmVsZWFzZSgpIHsKICBjYXNlICIkKHVuYW1lIC1tKSIgaW4KICB4ODZfNjQqfGk/ODZfNjQqfGFtZDY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BTUQ2NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BTUQ2NH0iCiAgICA7OwogIGFhcmNoNjQqfGFybTY0KikKICAgIE5PREVVUF9VUkw9IiR7Tk9ERVVQX1VSTF9BUk02NH0iCiAgICBOT0RFVVBfSEFTSD0iJHtOT0RFVVBfSEFTSF9BUk02NH0iCiAgICA7OwogICopCiAgICBlY2hvICJVbnN1cHBvcnRlZCBob3N0IGFyY2g6ICQodW5hbWUgLW0pIiA+JjIKICAgIGV4aXQgMQogICAgOzsKICBlc2FjCgogICMgSW4gY2FzZSBvZiBmYWlsdXJlIGNoZWNraW5nIGludGVncml0eSBvZiByZWxlYXNlLCByZXRyeS4KICBjZCAke0lOU1RBTExfRElSfS9iaW4KICB1bnRpbCB0cnktZG93bmxvYWQtcmVsZWFzZTsgZG8KICAgIHNsZWVwIDE1CiAgICBlY2hvICJDb3VsZG4ndCBkb3dubG9hZCByZWxlYXNlLiBSZXRyeWluZy4uLiIKICBkb25lCgogIGVjaG8gIlJ1bm5pbmcgbm9kZXVwIgogICMgV2UgY2FuJ3QgcnVuIGluIHRoZSBmb3JlZ3JvdW5kIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL2RvY2tlci9kb2NrZXIvaXNzdWVzLzIzNzkzCiAgKCBjZCAke0lOU1RBTExfRElSfS9iaW47IC4vbm9kZXVwIC0taW5zdGFsbC1zeXN0ZW1kLXVuaXQgLS1jb25mPSR7SU5TVEFMTF9ESVJ9L2NvbmYva3ViZV9lbnYueWFtbCAtLXY9OCAgKQp9CgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCi9iaW4vc3lzdGVtZC1tYWNoaW5lLWlkLXNldHVwIHx8IGVjaG8gImZhaWxlZCB0byBzZXQgdXAgZW5zdXJlIG1hY2hpbmUtaWQgY29uZmlndXJlZCIKCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBzdGFydGluZyA9PSIKZW5zdXJlLWluc3RhbGwtZGlyCgpjYXQgPiBjb25mL2NsdXN0ZXJfc3BlYy55YW1sIDw8ICdfX0VPRl9DTFVTVEVSX1NQRUMnCmNsb3VkQ29uZmlnOiBudWxsCmNvbnRhaW5lclJ1bnRpbWU6IGRvY2tlcgpjb250YWluZXJkOgogIHNraXBJbnN0YWxsOiB0cnVlCmRvY2tlcjoKICBpcE1hc3E6IGZhbHNlCiAgaXBUYWJsZXM6IGZhbHNlCiAgbG9nRHJpdmVyOiBqc29uLWZpbGUKICBsb2dMZXZlbDogaW5mbwogIGxvZ09wdDoKICAtIG1heC1zaXplPTEwbQogIC0gbWF4LWZpbGU9NQogIHN0b3JhZ2U6IG92ZXJsYXkyLG92ZXJsYXksYXVmcwogIHZlcnNpb246IDE4LjA2LjMKa3ViZVByb3h5OgogIGNsdXN0ZXJDSURSOiAxMDAuOTYuMC4wLzExCiAgY3B1UmVxdWVzdDogMTAwbQogIGhvc3RuYW1lT3ZlcnJpZGU6ICdAYXdzJwogIGltYWdlOiBrOHMuZ2NyLmlvL2t1YmUtcHJveHk6djEuMTQuMAogIGxvZ0xldmVsOiAyCmt1YmVsZXQ6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9uTWFzcXVlcmFkZUNJRFI6IDEwMC42NC4wLjAvMTAKICBwb2RJbmZyYUNvbnRhaW5lckltYWdlOiBrOHMuZ2NyLmlvL3BhdXNlOjMuMgogIHBvZE1hbmlmZXN0UGF0aDogL2V0Yy9rdWJlcm5ldGVzL21hbmlmZXN0cwoKX19FT0ZfQ0xVU1RFUl9TUEVDCgpjYXQgPiBjb25mL2lnX3NwZWMueWFtbCA8PCAnX19FT0ZfSUdfU1BFQycKe30KCl9fRU9GX0lHX1NQRUMKCmNhdCA+IGNvbmYva3ViZV9lbnYueWFtbCA8PCAnX19FT0ZfS1VCRV9FTlYnCkFzc2V0czoKICBhbWQ2NDoKICAtIGMzYjczNmZkMGYwMDM3NjVjMTJkOTlmMmM5OTVhODM2OWU2MjQxZjRAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9yZWxlYXNlL3YxLjE0LjAvYmluL2xpbnV4L2FtZDY0L2t1YmVsZXQKICAtIDdlM2EzZWE2NjMxNTNmOTAwY2JkNTI5MDBhMzljOTFmYTlmMzM0YmVAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9yZWxlYXNlL3YxLjE0LjAvYmluL2xpbnV4L2FtZDY0L2t1YmVjdGwKICAtIDNjYTE1YzBhMThlZTgzMDUyMGNmM2E5NTQwOGJlODI2Y2JkMjU1YTE1MzVhMzhlMGJlOTYwOGIyNWFkOGJmNjRAaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2t1YmVybmV0ZXMtcmVsZWFzZS9uZXR3b3JrLXBsdWdpbnMvY25pLXBsdWdpbnMtYW1kNjQtdjAuNy41LnRnegogIGFybTY0OgogIC0gZGYzOGUwNDU3NjAyNjM5MzA1NWNjYzc3YzBkY2U3MzYxMjk5NjU2MUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYXJtNjQva3ViZWxldAogIC0gMDFjMmI2YjQzZDM2YjZiZmFmYzgwYTM3MzczOTFjMTllYmZiOGFkNUBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL3JlbGVhc2UvdjEuMTQuMC9iaW4vbGludXgvYXJtNjQva3ViZWN0bAogIC0gN2ZlYzkxYWY3OGU5NTQ4ZGYzMDZmMGVjNDNiZWE1MjdjOGMxMGNjM2E5NjgyYzMzZTk3MWM4NTIyYTdmY2RlZEBodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20va3ViZXJuZXRlcy1yZWxlYXNlL25ldHdvcmstcGx1Z2lucy9jbmktcGx1Z2lucy1hcm02NC12MC43LjUudGd6CkNsdXN0ZXJOYW1lOiBtaW5pbWFsLXRmMTEuZXhhbXBsZS5jb20KQ29uZmlnQmFzZTogbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLXRmMTEuZXhhbXBsZS5jb20KSW5zdGFuY2VHcm91cE5hbWU6IG5vZGVzCkluc3RhbmNlR3JvdXBSb2xlOiBOb2RlCkt1YmVsZXRDb25maWc6CiAgYW5vbnltb3VzQXV0aDogZmFsc2UKICBjZ3JvdXBSb290OiAvCiAgY2xvdWRQcm92aWRlcjogYXdzCiAgY2x1c3RlckROUzogMTAwLjY0LjAuMTAKICBjbHVzdGVyRG9tYWluOiBjbHVzdGVyLmxvY2FsCiAgZW5hYmxlRGVidWdnaW5nSGFuZGxlcnM6IHRydWUKICBldmljdGlvbkhhcmQ6IG1lbW9yeS5hdmFpbGFibGU8MTAwTWksbm9kZWZzLmF2YWlsYWJsZTwxMCUsbm9kZWZzLmlub2Rlc0ZyZWU8NSUsaW1hZ2Vmcy5hdmFpbGFibGU8MTAlLGltYWdlZnMuaW5vZGVzRnJlZTw1JQogIGZlYXR1cmVHYXRlczoKICAgIEV4cGVyaW1lbnRhbENyaXRpY2FsUG9kQW5ub3RhdGlvbjogInRydWUiCiAgaG9zdG5hbWVPdmVycmlkZTogJ0Bhd3MnCiAga3ViZWNvbmZpZ1BhdGg6IC92YXIvbGliL2t1YmVsZXQva3ViZWNvbmZpZwogIGxvZ0xldmVsOiAyCiAgbmV0d29ya1BsdWdpbk1UVTogOTAwMQogIG5ldHdvcmtQbHVnaW5OYW1lOiBrdWJlbmV0CiAgbm9kZUxhYmVsczoKICAgIGt1YmVybmV0ZXMuaW8vcm9sZTogbm9kZQogICAgbm9kZS1yb2xlLmt1YmVybmV0ZXMuaW8vbm9kZTogIiIKICBub25NYXNxdWVyYWRlQ0lEUjogMTAwLjY0LjAuMC8xMAogIHBvZEluZnJhQ29udGFpbmVySW1hZ2U6IGs4cy5nY3IuaW8vcGF1c2U6My4yCiAgcG9kTWFuaWZlc3RQYXRoOiAvZXRjL2t1YmVybmV0ZXMvbWFuaWZlc3RzClRhZ3M6Ci0gX2F1dG9tYXRpY191cGdyYWRlcwotIF9hd3MKY2hhbm5lbHM6Ci0gbWVtZnM6Ly9jbHVzdGVycy5leGFtcGxlLmNvbS9taW5pbWFsLXRmMTEuZXhhbXBsZS5jb20vYWRkb25zL2Jvb3RzdHJhcC1jaGFubmVsLnlhbWwKCl9fRU9GX0tVQkVfRU5WCgpkb3dubG9hZC1yZWxlYXNlCmVjaG8gIj09IG5vZGV1cCBub2RlIGNvbmZpZyBkb25lID09Igo= diff --git a/tests/integration/update_cluster/minimal/data/aws_launch_template_master-us-test-1a.masters.minimal.example.com_user_data b/tests/integration/update_cluster/minimal/data/aws_launch_template_master-us-test-1a.masters.minimal.example.com_user_data index d1ce3777b71ab..5d0b9985eb76a 100644 --- a/tests/integration/update_cluster/minimal/data/aws_launch_template_master-us-test-1a.masters.minimal.example.com_user_data +++ b/tests/integration/update_cluster/minimal/data/aws_launch_template_master-us-test-1a.masters.minimal.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: minimal.example.com ConfigBase: memfs://clusters.example.com/minimal.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/minimal/data/aws_launch_template_nodes.minimal.example.com_user_data b/tests/integration/update_cluster/minimal/data/aws_launch_template_nodes.minimal.example.com_user_data index 2457f27360cdb..3e5c793771ee3 100644 --- a/tests/integration/update_cluster/minimal/data/aws_launch_template_nodes.minimal.example.com_user_data +++ b/tests/integration/update_cluster/minimal/data/aws_launch_template_nodes.minimal.example.com_user_data @@ -189,9 +189,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -209,6 +207,27 @@ ClusterName: minimal.example.com ConfigBase: memfs://clusters.example.com/minimal.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/minimal_gce/data/google_compute_instance_template_master-us-test1-a-minimal-gce-example-com_metadata_startup-script b/tests/integration/update_cluster/minimal_gce/data/google_compute_instance_template_master-us-test1-a-minimal-gce-example-com_metadata_startup-script index 9a73eafc700f0..057bbedfa4948 100644 --- a/tests/integration/update_cluster/minimal_gce/data/google_compute_instance_template_master-us-test1-a-minimal-gce-example-com_metadata_startup-script +++ b/tests/integration/update_cluster/minimal_gce/data/google_compute_instance_template_master-us-test1-a-minimal-gce-example-com_metadata_startup-script @@ -275,9 +275,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -297,6 +295,29 @@ ClusterName: minimal-gce.example.com ConfigBase: memfs://tests/minimal-gce.example.com InstanceGroupName: master-us-test1-a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: gce + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hairpinMode: promiscuous-bridge + hostnameOverride: '@gce' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _gce diff --git a/tests/integration/update_cluster/minimal_gce/data/google_compute_instance_template_nodes-minimal-gce-example-com_metadata_startup-script b/tests/integration/update_cluster/minimal_gce/data/google_compute_instance_template_nodes-minimal-gce-example-com_metadata_startup-script index bb2d214b76c1a..803539c677846 100644 --- a/tests/integration/update_cluster/minimal_gce/data/google_compute_instance_template_nodes-minimal-gce-example-com_metadata_startup-script +++ b/tests/integration/update_cluster/minimal_gce/data/google_compute_instance_template_nodes-minimal-gce-example-com_metadata_startup-script @@ -191,9 +191,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -213,6 +211,28 @@ ClusterName: minimal-gce.example.com ConfigBase: memfs://tests/minimal-gce.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: gce + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hairpinMode: promiscuous-bridge + hostnameOverride: '@gce' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _gce diff --git a/tests/integration/update_cluster/mixed_instances/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/mixed_instances/cloudformation.json.extracted.yaml index 5c9a7e3b83758..a5f194e9f1273 100644 --- a/tests/integration/update_cluster/mixed_instances/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/mixed_instances/cloudformation.json.extracted.yaml @@ -275,9 +275,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersmixedinstancesexamplecom.Prop __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -295,6 +293,29 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersmixedinstancesexamplecom.Prop ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -592,9 +613,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1bmastersmixedinstancesexamplecom.Prop __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -612,6 +631,29 @@ Resources.AWSEC2LaunchTemplatemasterustest1bmastersmixedinstancesexamplecom.Prop ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1b InstanceGroupRole: Master + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -909,9 +951,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1cmastersmixedinstancesexamplecom.Prop __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -929,6 +969,29 @@ Resources.AWSEC2LaunchTemplatemasterustest1cmastersmixedinstancesexamplecom.Prop ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1c InstanceGroupRole: Master + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -1142,9 +1205,7 @@ Resources.AWSEC2LaunchTemplatenodesmixedinstancesexamplecom.Properties.LaunchTem __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -1162,6 +1223,28 @@ Resources.AWSEC2LaunchTemplatenodesmixedinstancesexamplecom.Properties.LaunchTem ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1a.masters.mixedinstances.example.com_user_data b/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1a.masters.mixedinstances.example.com_user_data index 851a95f5f6022..b379bdb72752a 100644 --- a/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1a.masters.mixedinstances.example.com_user_data +++ b/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1a.masters.mixedinstances.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,29 @@ ClusterName: mixedinstances.example.com ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1b.masters.mixedinstances.example.com_user_data b/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1b.masters.mixedinstances.example.com_user_data index 9de0affc52083..1e306bf4dfba5 100644 --- a/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1b.masters.mixedinstances.example.com_user_data +++ b/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1b.masters.mixedinstances.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,29 @@ ClusterName: mixedinstances.example.com ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1b InstanceGroupRole: Master +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1c.masters.mixedinstances.example.com_user_data b/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1c.masters.mixedinstances.example.com_user_data index 433d4ed1daf4e..1a550d819a9a5 100644 --- a/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1c.masters.mixedinstances.example.com_user_data +++ b/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_master-us-test-1c.masters.mixedinstances.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,29 @@ ClusterName: mixedinstances.example.com ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1c InstanceGroupRole: Master +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_nodes.mixedinstances.example.com_user_data b/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_nodes.mixedinstances.example.com_user_data index 3426f825c9bc3..51e1aa8c12894 100644 --- a/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_nodes.mixedinstances.example.com_user_data +++ b/tests/integration/update_cluster/mixed_instances/data/aws_launch_template_nodes.mixedinstances.example.com_user_data @@ -190,9 +190,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -210,6 +208,28 @@ ClusterName: mixedinstances.example.com ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/mixed_instances_spot/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/mixed_instances_spot/cloudformation.json.extracted.yaml index 5c9a7e3b83758..a5f194e9f1273 100644 --- a/tests/integration/update_cluster/mixed_instances_spot/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/mixed_instances_spot/cloudformation.json.extracted.yaml @@ -275,9 +275,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersmixedinstancesexamplecom.Prop __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -295,6 +293,29 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersmixedinstancesexamplecom.Prop ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -592,9 +613,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1bmastersmixedinstancesexamplecom.Prop __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -612,6 +631,29 @@ Resources.AWSEC2LaunchTemplatemasterustest1bmastersmixedinstancesexamplecom.Prop ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1b InstanceGroupRole: Master + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -909,9 +951,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1cmastersmixedinstancesexamplecom.Prop __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -929,6 +969,29 @@ Resources.AWSEC2LaunchTemplatemasterustest1cmastersmixedinstancesexamplecom.Prop ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1c InstanceGroupRole: Master + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -1142,9 +1205,7 @@ Resources.AWSEC2LaunchTemplatenodesmixedinstancesexamplecom.Properties.LaunchTem __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -1162,6 +1223,28 @@ Resources.AWSEC2LaunchTemplatenodesmixedinstancesexamplecom.Properties.LaunchTem ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1a.masters.mixedinstances.example.com_user_data b/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1a.masters.mixedinstances.example.com_user_data index 851a95f5f6022..b379bdb72752a 100644 --- a/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1a.masters.mixedinstances.example.com_user_data +++ b/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1a.masters.mixedinstances.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,29 @@ ClusterName: mixedinstances.example.com ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1b.masters.mixedinstances.example.com_user_data b/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1b.masters.mixedinstances.example.com_user_data index 9de0affc52083..1e306bf4dfba5 100644 --- a/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1b.masters.mixedinstances.example.com_user_data +++ b/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1b.masters.mixedinstances.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,29 @@ ClusterName: mixedinstances.example.com ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1b InstanceGroupRole: Master +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1c.masters.mixedinstances.example.com_user_data b/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1c.masters.mixedinstances.example.com_user_data index 433d4ed1daf4e..1a550d819a9a5 100644 --- a/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1c.masters.mixedinstances.example.com_user_data +++ b/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_master-us-test-1c.masters.mixedinstances.example.com_user_data @@ -274,9 +274,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -294,6 +292,29 @@ ClusterName: mixedinstances.example.com ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: master-us-test-1c InstanceGroupRole: Master +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_nodes.mixedinstances.example.com_user_data b/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_nodes.mixedinstances.example.com_user_data index 3426f825c9bc3..51e1aa8c12894 100644 --- a/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_nodes.mixedinstances.example.com_user_data +++ b/tests/integration/update_cluster/mixed_instances_spot/data/aws_launch_template_nodes.mixedinstances.example.com_user_data @@ -190,9 +190,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -210,6 +208,28 @@ ClusterName: mixedinstances.example.com ConfigBase: memfs://clusters.example.com/mixedinstances.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + allowPrivileged: true + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/private-shared-subnet/data/aws_launch_template_master-us-test-1a.masters.private-shared-subnet.example.com_user_data b/tests/integration/update_cluster/private-shared-subnet/data/aws_launch_template_master-us-test-1a.masters.private-shared-subnet.example.com_user_data index e006c83651d58..92203bbd4656d 100644 --- a/tests/integration/update_cluster/private-shared-subnet/data/aws_launch_template_master-us-test-1a.masters.private-shared-subnet.example.com_user_data +++ b/tests/integration/update_cluster/private-shared-subnet/data/aws_launch_template_master-us-test-1a.masters.private-shared-subnet.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: private-shared-subnet.example.com ConfigBase: memfs://clusters.example.com/private-shared-subnet.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/private-shared-subnet/data/aws_launch_template_nodes.private-shared-subnet.example.com_user_data b/tests/integration/update_cluster/private-shared-subnet/data/aws_launch_template_nodes.private-shared-subnet.example.com_user_data index 6ffdaa6a1c42c..749a748ea97e6 100644 --- a/tests/integration/update_cluster/private-shared-subnet/data/aws_launch_template_nodes.private-shared-subnet.example.com_user_data +++ b/tests/integration/update_cluster/private-shared-subnet/data/aws_launch_template_nodes.private-shared-subnet.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: private-shared-subnet.example.com ConfigBase: memfs://clusters.example.com/private-shared-subnet.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatecalico/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/privatecalico/cloudformation.json.extracted.yaml index 58ca873f9ed89..12d75060492ce 100644 --- a/tests/integration/update_cluster/privatecalico/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/privatecalico/cloudformation.json.extracted.yaml @@ -272,9 +272,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersprivatecalicoexamplecom.Prope __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -292,6 +290,27 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersprivatecalicoexamplecom.Prope ConfigBase: memfs://clusters.example.com/privatecalico.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -503,9 +522,7 @@ Resources.AWSEC2LaunchTemplatenodesprivatecalicoexamplecom.Properties.LaunchTemp __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -523,6 +540,26 @@ Resources.AWSEC2LaunchTemplatenodesprivatecalicoexamplecom.Properties.LaunchTemp ConfigBase: memfs://clusters.example.com/privatecalico.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatecalico/data/aws_launch_template_master-us-test-1a.masters.privatecalico.example.com_user_data b/tests/integration/update_cluster/privatecalico/data/aws_launch_template_master-us-test-1a.masters.privatecalico.example.com_user_data index 18ba27301c3b9..300fd747706ee 100644 --- a/tests/integration/update_cluster/privatecalico/data/aws_launch_template_master-us-test-1a.masters.privatecalico.example.com_user_data +++ b/tests/integration/update_cluster/privatecalico/data/aws_launch_template_master-us-test-1a.masters.privatecalico.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: privatecalico.example.com ConfigBase: memfs://clusters.example.com/privatecalico.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatecalico/data/aws_launch_template_nodes.privatecalico.example.com_user_data b/tests/integration/update_cluster/privatecalico/data/aws_launch_template_nodes.privatecalico.example.com_user_data index a72a33a054067..2a02163945939 100644 --- a/tests/integration/update_cluster/privatecalico/data/aws_launch_template_nodes.privatecalico.example.com_user_data +++ b/tests/integration/update_cluster/privatecalico/data/aws_launch_template_nodes.privatecalico.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: privatecalico.example.com ConfigBase: memfs://clusters.example.com/privatecalico.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatecanal/data/aws_launch_template_master-us-test-1a.masters.privatecanal.example.com_user_data b/tests/integration/update_cluster/privatecanal/data/aws_launch_template_master-us-test-1a.masters.privatecanal.example.com_user_data index bc2d7d18ebe1c..a4c4f16aa2de2 100644 --- a/tests/integration/update_cluster/privatecanal/data/aws_launch_template_master-us-test-1a.masters.privatecanal.example.com_user_data +++ b/tests/integration/update_cluster/privatecanal/data/aws_launch_template_master-us-test-1a.masters.privatecanal.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: privatecanal.example.com ConfigBase: memfs://clusters.example.com/privatecanal.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatecanal/data/aws_launch_template_nodes.privatecanal.example.com_user_data b/tests/integration/update_cluster/privatecanal/data/aws_launch_template_nodes.privatecanal.example.com_user_data index 39f50fc0e0716..8173e15f1600e 100644 --- a/tests/integration/update_cluster/privatecanal/data/aws_launch_template_nodes.privatecanal.example.com_user_data +++ b/tests/integration/update_cluster/privatecanal/data/aws_launch_template_nodes.privatecanal.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: privatecanal.example.com ConfigBase: memfs://clusters.example.com/privatecanal.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatecilium/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/privatecilium/cloudformation.json.extracted.yaml index b21a78893a47a..3ac442e3866b8 100644 --- a/tests/integration/update_cluster/privatecilium/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/privatecilium/cloudformation.json.extracted.yaml @@ -272,9 +272,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersprivateciliumexamplecom.Prope __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -292,6 +290,27 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersprivateciliumexamplecom.Prope ConfigBase: memfs://clusters.example.com/privatecilium.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -503,9 +522,7 @@ Resources.AWSEC2LaunchTemplatenodesprivateciliumexamplecom.Properties.LaunchTemp __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -523,6 +540,26 @@ Resources.AWSEC2LaunchTemplatenodesprivateciliumexamplecom.Properties.LaunchTemp ConfigBase: memfs://clusters.example.com/privatecilium.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatecilium/data/aws_launch_template_master-us-test-1a.masters.privatecilium.example.com_user_data b/tests/integration/update_cluster/privatecilium/data/aws_launch_template_master-us-test-1a.masters.privatecilium.example.com_user_data index 303efca9fb9e8..238b490afe25e 100644 --- a/tests/integration/update_cluster/privatecilium/data/aws_launch_template_master-us-test-1a.masters.privatecilium.example.com_user_data +++ b/tests/integration/update_cluster/privatecilium/data/aws_launch_template_master-us-test-1a.masters.privatecilium.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: privatecilium.example.com ConfigBase: memfs://clusters.example.com/privatecilium.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatecilium/data/aws_launch_template_nodes.privatecilium.example.com_user_data b/tests/integration/update_cluster/privatecilium/data/aws_launch_template_nodes.privatecilium.example.com_user_data index 9eaec3829b176..b9e38a58f9980 100644 --- a/tests/integration/update_cluster/privatecilium/data/aws_launch_template_nodes.privatecilium.example.com_user_data +++ b/tests/integration/update_cluster/privatecilium/data/aws_launch_template_nodes.privatecilium.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: privatecilium.example.com ConfigBase: memfs://clusters.example.com/privatecilium.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privateciliumadvanced/cloudformation.json.extracted.yaml b/tests/integration/update_cluster/privateciliumadvanced/cloudformation.json.extracted.yaml index a292c47eb0da9..be228c002abb4 100644 --- a/tests/integration/update_cluster/privateciliumadvanced/cloudformation.json.extracted.yaml +++ b/tests/integration/update_cluster/privateciliumadvanced/cloudformation.json.extracted.yaml @@ -275,9 +275,7 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersprivateciliumadvancedexamplec __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -295,6 +293,27 @@ Resources.AWSEC2LaunchTemplatemasterustest1amastersprivateciliumadvancedexamplec ConfigBase: memfs://clusters.example.com/privateciliumadvanced.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws @@ -508,9 +527,7 @@ Resources.AWSEC2LaunchTemplatenodesprivateciliumadvancedexamplecom.Properties.La __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' - kubelet: null - nodeLabels: null - taints: null + {} __EOF_IG_SPEC @@ -528,6 +545,26 @@ Resources.AWSEC2LaunchTemplatenodesprivateciliumadvancedexamplecom.Properties.La ConfigBase: memfs://clusters.example.com/privateciliumadvanced.example.com InstanceGroupName: nodes InstanceGroupRole: Node + KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privateciliumadvanced/data/aws_launch_template_master-us-test-1a.masters.privateciliumadvanced.example.com_user_data b/tests/integration/update_cluster/privateciliumadvanced/data/aws_launch_template_master-us-test-1a.masters.privateciliumadvanced.example.com_user_data index 8127b75dc77ef..fb6370a4d8feb 100644 --- a/tests/integration/update_cluster/privateciliumadvanced/data/aws_launch_template_master-us-test-1a.masters.privateciliumadvanced.example.com_user_data +++ b/tests/integration/update_cluster/privateciliumadvanced/data/aws_launch_template_master-us-test-1a.masters.privateciliumadvanced.example.com_user_data @@ -273,9 +273,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -293,6 +291,27 @@ ClusterName: privateciliumadvanced.example.com ConfigBase: memfs://clusters.example.com/privateciliumadvanced.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privateciliumadvanced/data/aws_launch_template_nodes.privateciliumadvanced.example.com_user_data b/tests/integration/update_cluster/privateciliumadvanced/data/aws_launch_template_nodes.privateciliumadvanced.example.com_user_data index f10cf25958a6d..fb1cbb0d907c3 100644 --- a/tests/integration/update_cluster/privateciliumadvanced/data/aws_launch_template_nodes.privateciliumadvanced.example.com_user_data +++ b/tests/integration/update_cluster/privateciliumadvanced/data/aws_launch_template_nodes.privateciliumadvanced.example.com_user_data @@ -189,9 +189,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -209,6 +207,26 @@ ClusterName: privateciliumadvanced.example.com ConfigBase: memfs://clusters.example.com/privateciliumadvanced.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatedns1/data/aws_launch_template_master-us-test-1a.masters.privatedns1.example.com_user_data b/tests/integration/update_cluster/privatedns1/data/aws_launch_template_master-us-test-1a.masters.privatedns1.example.com_user_data index 904094a2357af..3b1c6b2898c6f 100644 --- a/tests/integration/update_cluster/privatedns1/data/aws_launch_template_master-us-test-1a.masters.privatedns1.example.com_user_data +++ b/tests/integration/update_cluster/privatedns1/data/aws_launch_template_master-us-test-1a.masters.privatedns1.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: privatedns1.example.com ConfigBase: memfs://clusters.example.com/privatedns1.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatedns1/data/aws_launch_template_nodes.privatedns1.example.com_user_data b/tests/integration/update_cluster/privatedns1/data/aws_launch_template_nodes.privatedns1.example.com_user_data index 9f85a93728b8d..177f7d71112b5 100644 --- a/tests/integration/update_cluster/privatedns1/data/aws_launch_template_nodes.privatedns1.example.com_user_data +++ b/tests/integration/update_cluster/privatedns1/data/aws_launch_template_nodes.privatedns1.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: privatedns1.example.com ConfigBase: memfs://clusters.example.com/privatedns1.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatedns2/data/aws_launch_template_master-us-test-1a.masters.privatedns2.example.com_user_data b/tests/integration/update_cluster/privatedns2/data/aws_launch_template_master-us-test-1a.masters.privatedns2.example.com_user_data index 52de46ad58cc0..89cd86b027b30 100644 --- a/tests/integration/update_cluster/privatedns2/data/aws_launch_template_master-us-test-1a.masters.privatedns2.example.com_user_data +++ b/tests/integration/update_cluster/privatedns2/data/aws_launch_template_master-us-test-1a.masters.privatedns2.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: privatedns2.example.com ConfigBase: memfs://clusters.example.com/privatedns2.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatedns2/data/aws_launch_template_nodes.privatedns2.example.com_user_data b/tests/integration/update_cluster/privatedns2/data/aws_launch_template_nodes.privatedns2.example.com_user_data index 76fe1600f333f..3109e5b1ad2b8 100644 --- a/tests/integration/update_cluster/privatedns2/data/aws_launch_template_nodes.privatedns2.example.com_user_data +++ b/tests/integration/update_cluster/privatedns2/data/aws_launch_template_nodes.privatedns2.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: privatedns2.example.com ConfigBase: memfs://clusters.example.com/privatedns2.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privateflannel/data/aws_launch_template_master-us-test-1a.masters.privateflannel.example.com_user_data b/tests/integration/update_cluster/privateflannel/data/aws_launch_template_master-us-test-1a.masters.privateflannel.example.com_user_data index 14677dd359337..67477b9c3d1d4 100644 --- a/tests/integration/update_cluster/privateflannel/data/aws_launch_template_master-us-test-1a.masters.privateflannel.example.com_user_data +++ b/tests/integration/update_cluster/privateflannel/data/aws_launch_template_master-us-test-1a.masters.privateflannel.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: privateflannel.example.com ConfigBase: memfs://clusters.example.com/privateflannel.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privateflannel/data/aws_launch_template_nodes.privateflannel.example.com_user_data b/tests/integration/update_cluster/privateflannel/data/aws_launch_template_nodes.privateflannel.example.com_user_data index 757babc5a813f..b6507d3793755 100644 --- a/tests/integration/update_cluster/privateflannel/data/aws_launch_template_nodes.privateflannel.example.com_user_data +++ b/tests/integration/update_cluster/privateflannel/data/aws_launch_template_nodes.privateflannel.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: privateflannel.example.com ConfigBase: memfs://clusters.example.com/privateflannel.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatekopeio/data/aws_launch_template_master-us-test-1a.masters.privatekopeio.example.com_user_data b/tests/integration/update_cluster/privatekopeio/data/aws_launch_template_master-us-test-1a.masters.privatekopeio.example.com_user_data index 06c30842c2f49..ab32f4000423e 100644 --- a/tests/integration/update_cluster/privatekopeio/data/aws_launch_template_master-us-test-1a.masters.privatekopeio.example.com_user_data +++ b/tests/integration/update_cluster/privatekopeio/data/aws_launch_template_master-us-test-1a.masters.privatekopeio.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: privatekopeio.example.com ConfigBase: memfs://clusters.example.com/privatekopeio.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privatekopeio/data/aws_launch_template_nodes.privatekopeio.example.com_user_data b/tests/integration/update_cluster/privatekopeio/data/aws_launch_template_nodes.privatekopeio.example.com_user_data index f048aef790d79..994913e5ab379 100644 --- a/tests/integration/update_cluster/privatekopeio/data/aws_launch_template_nodes.privatekopeio.example.com_user_data +++ b/tests/integration/update_cluster/privatekopeio/data/aws_launch_template_nodes.privatekopeio.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: privatekopeio.example.com ConfigBase: memfs://clusters.example.com/privatekopeio.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privateweave/data/aws_launch_template_master-us-test-1a.masters.privateweave.example.com_user_data b/tests/integration/update_cluster/privateweave/data/aws_launch_template_master-us-test-1a.masters.privateweave.example.com_user_data index 84d162a1783a9..e7728e458a6d3 100644 --- a/tests/integration/update_cluster/privateweave/data/aws_launch_template_master-us-test-1a.masters.privateweave.example.com_user_data +++ b/tests/integration/update_cluster/privateweave/data/aws_launch_template_master-us-test-1a.masters.privateweave.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: privateweave.example.com ConfigBase: memfs://clusters.example.com/privateweave.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/privateweave/data/aws_launch_template_nodes.privateweave.example.com_user_data b/tests/integration/update_cluster/privateweave/data/aws_launch_template_nodes.privateweave.example.com_user_data index 01b610f429876..6e20472a3b710 100644 --- a/tests/integration/update_cluster/privateweave/data/aws_launch_template_nodes.privateweave.example.com_user_data +++ b/tests/integration/update_cluster/privateweave/data/aws_launch_template_nodes.privateweave.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: privateweave.example.com ConfigBase: memfs://clusters.example.com/privateweave.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/shared_subnet/data/aws_launch_template_master-us-test-1a.masters.sharedsubnet.example.com_user_data b/tests/integration/update_cluster/shared_subnet/data/aws_launch_template_master-us-test-1a.masters.sharedsubnet.example.com_user_data index 976fd9a6580c3..dd3076c369817 100644 --- a/tests/integration/update_cluster/shared_subnet/data/aws_launch_template_master-us-test-1a.masters.sharedsubnet.example.com_user_data +++ b/tests/integration/update_cluster/shared_subnet/data/aws_launch_template_master-us-test-1a.masters.sharedsubnet.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: sharedsubnet.example.com ConfigBase: memfs://clusters.example.com/sharedsubnet.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/shared_subnet/data/aws_launch_template_nodes.sharedsubnet.example.com_user_data b/tests/integration/update_cluster/shared_subnet/data/aws_launch_template_nodes.sharedsubnet.example.com_user_data index 77ed40952dca4..2670f50568224 100644 --- a/tests/integration/update_cluster/shared_subnet/data/aws_launch_template_nodes.sharedsubnet.example.com_user_data +++ b/tests/integration/update_cluster/shared_subnet/data/aws_launch_template_nodes.sharedsubnet.example.com_user_data @@ -189,9 +189,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -209,6 +207,27 @@ ClusterName: sharedsubnet.example.com ConfigBase: memfs://clusters.example.com/sharedsubnet.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/shared_vpc/data/aws_launch_template_master-us-test-1a.masters.sharedvpc.example.com_user_data b/tests/integration/update_cluster/shared_vpc/data/aws_launch_template_master-us-test-1a.masters.sharedvpc.example.com_user_data index ed9a5dd3d7393..1d65849f68f66 100644 --- a/tests/integration/update_cluster/shared_vpc/data/aws_launch_template_master-us-test-1a.masters.sharedvpc.example.com_user_data +++ b/tests/integration/update_cluster/shared_vpc/data/aws_launch_template_master-us-test-1a.masters.sharedvpc.example.com_user_data @@ -272,9 +272,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -292,6 +290,28 @@ ClusterName: sharedvpc.example.com ConfigBase: memfs://clusters.example.com/sharedvpc.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/shared_vpc/data/aws_launch_template_nodes.sharedvpc.example.com_user_data b/tests/integration/update_cluster/shared_vpc/data/aws_launch_template_nodes.sharedvpc.example.com_user_data index 75d4377162464..3b1f51b41ab04 100644 --- a/tests/integration/update_cluster/shared_vpc/data/aws_launch_template_nodes.sharedvpc.example.com_user_data +++ b/tests/integration/update_cluster/shared_vpc/data/aws_launch_template_nodes.sharedvpc.example.com_user_data @@ -189,9 +189,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -209,6 +207,27 @@ ClusterName: sharedvpc.example.com ConfigBase: memfs://clusters.example.com/sharedvpc.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginMTU: 9001 + networkPluginName: kubenet + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/unmanaged/data/aws_launch_template_master-us-test-1a.masters.unmanaged.example.com_user_data b/tests/integration/update_cluster/unmanaged/data/aws_launch_template_master-us-test-1a.masters.unmanaged.example.com_user_data index 360e1f72b8763..605f16239ca79 100644 --- a/tests/integration/update_cluster/unmanaged/data/aws_launch_template_master-us-test-1a.masters.unmanaged.example.com_user_data +++ b/tests/integration/update_cluster/unmanaged/data/aws_launch_template_master-us-test-1a.masters.unmanaged.example.com_user_data @@ -270,9 +270,7 @@ masterKubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -290,6 +288,27 @@ ClusterName: unmanaged.example.com ConfigBase: memfs://clusters.example.com/unmanaged.example.com InstanceGroupName: master-us-test-1a InstanceGroupRole: Master +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: master + node-role.kubernetes.io/master: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests + registerSchedulable: false Tags: - _automatic_upgrades - _aws diff --git a/tests/integration/update_cluster/unmanaged/data/aws_launch_template_nodes.unmanaged.example.com_user_data b/tests/integration/update_cluster/unmanaged/data/aws_launch_template_nodes.unmanaged.example.com_user_data index a09ef90a4c8be..c38a784f95161 100644 --- a/tests/integration/update_cluster/unmanaged/data/aws_launch_template_nodes.unmanaged.example.com_user_data +++ b/tests/integration/update_cluster/unmanaged/data/aws_launch_template_nodes.unmanaged.example.com_user_data @@ -188,9 +188,7 @@ kubelet: __EOF_CLUSTER_SPEC cat > conf/ig_spec.yaml << '__EOF_IG_SPEC' -kubelet: null -nodeLabels: null -taints: null +{} __EOF_IG_SPEC @@ -208,6 +206,26 @@ ClusterName: unmanaged.example.com ConfigBase: memfs://clusters.example.com/unmanaged.example.com InstanceGroupName: nodes InstanceGroupRole: Node +KubeletConfig: + anonymousAuth: false + cgroupRoot: / + cloudProvider: aws + clusterDNS: 100.64.0.10 + clusterDomain: cluster.local + enableDebuggingHandlers: true + evictionHard: memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%,imagefs.available<10%,imagefs.inodesFree<5% + featureGates: + ExperimentalCriticalPodAnnotation: "true" + hostnameOverride: '@aws' + kubeconfigPath: /var/lib/kubelet/kubeconfig + logLevel: 2 + networkPluginName: cni + nodeLabels: + kubernetes.io/role: node + node-role.kubernetes.io/node: "" + nonMasqueradeCIDR: 100.64.0.0/10 + podInfraContainerImage: k8s.gcr.io/pause:3.2 + podManifestPath: /etc/kubernetes/manifests Tags: - _automatic_upgrades - _aws diff --git a/upup/pkg/fi/nodeup/command.go b/upup/pkg/fi/nodeup/command.go index 3a820096dbab6..25c07de08bfef 100644 --- a/upup/pkg/fi/nodeup/command.go +++ b/upup/pkg/fi/nodeup/command.go @@ -153,7 +153,7 @@ func (c *NodeUpCommand) Run(out io.Writer) error { klog.Warningf("No instance group defined in nodeup config") } - err := evaluateSpec(c.cluster) + err := evaluateSpec(c) if err != nil { return err } @@ -328,32 +328,37 @@ func (c *NodeUpCommand) Run(out io.Writer) error { return nil } -func evaluateSpec(c *api.Cluster) error { +func evaluateSpec(c *NodeUpCommand) error { var err error - c.Spec.Kubelet.HostnameOverride, err = evaluateHostnameOverride(c.Spec.Kubelet.HostnameOverride) + c.cluster.Spec.Kubelet.HostnameOverride, err = evaluateHostnameOverride(c.cluster.Spec.Kubelet.HostnameOverride) if err != nil { return err } - c.Spec.MasterKubelet.HostnameOverride, err = evaluateHostnameOverride(c.Spec.MasterKubelet.HostnameOverride) + c.cluster.Spec.MasterKubelet.HostnameOverride, err = evaluateHostnameOverride(c.cluster.Spec.MasterKubelet.HostnameOverride) if err != nil { return err } - if c.Spec.KubeProxy != nil { - c.Spec.KubeProxy.HostnameOverride, err = evaluateHostnameOverride(c.Spec.KubeProxy.HostnameOverride) + c.config.KubeletConfig.HostnameOverride, err = evaluateHostnameOverride(c.config.KubeletConfig.HostnameOverride) + if err != nil { + return err + } + + if c.cluster.Spec.KubeProxy != nil { + c.cluster.Spec.KubeProxy.HostnameOverride, err = evaluateHostnameOverride(c.cluster.Spec.KubeProxy.HostnameOverride) if err != nil { return err } - c.Spec.KubeProxy.BindAddress, err = evaluateBindAddress(c.Spec.KubeProxy.BindAddress) + c.cluster.Spec.KubeProxy.BindAddress, err = evaluateBindAddress(c.cluster.Spec.KubeProxy.BindAddress) if err != nil { return err } } - if c.Spec.Docker != nil { - err = evaluateDockerSpecStorage(c.Spec.Docker) + if c.cluster.Spec.Docker != nil { + err = evaluateDockerSpecStorage(c.cluster.Spec.Docker) if err != nil { return err }