@@ -58,7 +58,7 @@ func NewDefaultCluster() *Cluster {
58
58
AwsNodeLabels : AwsNodeLabels {
59
59
Enabled : false ,
60
60
},
61
- ClusterAutoscalerSupport : ClusterAutoscalerSupport {
61
+ ClusterAutoscalerSupport : model. ClusterAutoscalerSupport {
62
62
Enabled : false ,
63
63
},
64
64
TLSBootstrap : TLSBootstrap {
@@ -81,7 +81,7 @@ func NewDefaultCluster() *Cluster {
81
81
NodeDrainer : NodeDrainer {
82
82
Enabled : false ,
83
83
},
84
- NodeLabels : NodeLabels {},
84
+ NodeLabels : model. NodeLabels {},
85
85
Plugins : Plugins {
86
86
Rbac : Rbac {
87
87
Enabled : false ,
@@ -104,34 +104,35 @@ func NewDefaultCluster() *Cluster {
104
104
105
105
return & Cluster {
106
106
DeploymentSettings : DeploymentSettings {
107
- ClusterName : "kubernetes" ,
108
- VPCCIDR : "10.0.0.0/16" ,
109
- ReleaseChannel : "stable" ,
110
- K8sVer : k8sVer ,
111
- ContainerRuntime : "docker" ,
112
- Subnets : []model.Subnet {},
113
- EIPAllocationIDs : []string {},
114
- MapPublicIPs : true ,
115
- Experimental : experimental ,
116
- ManageCertificates : true ,
117
- HyperkubeImage : model.Image {Repo : "quay.io/coreos/hyperkube" , Tag : k8sVer , RktPullDocker : false },
118
- AWSCliImage : model.Image {Repo : "quay.io/coreos/awscli" , Tag : "master" , RktPullDocker : false },
119
- CalicoNodeImage : model.Image {Repo : "quay.io/calico/node" , Tag : "v1.2.1" , RktPullDocker : false },
120
- CalicoCniImage : model.Image {Repo : "quay.io/calico/cni" , Tag : "v1.8.3" , RktPullDocker : false },
121
- CalicoPolicyControllerImage : model.Image {Repo : "quay.io/calico/kube-policy-controller" , Tag : "v0.6.0" , RktPullDocker : false },
122
- CalicoCtlImage : model.Image {Repo : "quay.io/calico/ctl" , Tag : "v1.2.1" , RktPullDocker : false },
123
- ClusterAutoscalerImage : model.Image {Repo : "gcr.io/google_containers/cluster-proportional-autoscaler-amd64" , Tag : "1.1.1" , RktPullDocker : false },
124
- KubeDnsImage : model.Image {Repo : "gcr.io/google_containers/k8s-dns-kube-dns-amd64" , Tag : "1.14.2" , RktPullDocker : false },
125
- KubeDnsMasqImage : model.Image {Repo : "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64" , Tag : "1.14.2" , RktPullDocker : false },
126
- KubeReschedulerImage : model.Image {Repo : "gcr.io/google-containers/rescheduler" , Tag : "v0.3.0" , RktPullDocker : false },
127
- DnsMasqMetricsImage : model.Image {Repo : "gcr.io/google_containers/k8s-dns-sidecar-amd64" , Tag : "1.14.2" , RktPullDocker : false },
128
- ExecHealthzImage : model.Image {Repo : "gcr.io/google_containers/exechealthz-amd64" , Tag : "1.2" , RktPullDocker : false },
129
- HeapsterImage : model.Image {Repo : "gcr.io/google_containers/heapster" , Tag : "v1.3.0" , RktPullDocker : false },
130
- AddonResizerImage : model.Image {Repo : "gcr.io/google_containers/addon-resizer" , Tag : "1.7" , RktPullDocker : false },
131
- KubeDashboardImage : model.Image {Repo : "gcr.io/google_containers/kubernetes-dashboard-amd64" , Tag : "v1.6.1" , RktPullDocker : false },
132
- PauseImage : model.Image {Repo : "gcr.io/google_containers/pause-amd64" , Tag : "3.0" , RktPullDocker : false },
133
- FlannelImage : model.Image {Repo : "quay.io/coreos/flannel" , Tag : "v0.7.1" , RktPullDocker : false },
134
- DexImage : model.Image {Repo : "quay.io/coreos/dex" , Tag : "v2.4.1" , RktPullDocker : false },
107
+ ClusterName : "kubernetes" ,
108
+ VPCCIDR : "10.0.0.0/16" ,
109
+ ReleaseChannel : "stable" ,
110
+ K8sVer : k8sVer ,
111
+ ContainerRuntime : "docker" ,
112
+ Subnets : []model.Subnet {},
113
+ EIPAllocationIDs : []string {},
114
+ MapPublicIPs : true ,
115
+ Experimental : experimental ,
116
+ ManageCertificates : true ,
117
+ HyperkubeImage : model.Image {Repo : "quay.io/coreos/hyperkube" , Tag : k8sVer , RktPullDocker : false },
118
+ AWSCliImage : model.Image {Repo : "quay.io/coreos/awscli" , Tag : "master" , RktPullDocker : false },
119
+ CalicoNodeImage : model.Image {Repo : "quay.io/calico/node" , Tag : "v1.2.1" , RktPullDocker : false },
120
+ CalicoCniImage : model.Image {Repo : "quay.io/calico/cni" , Tag : "v1.8.3" , RktPullDocker : false },
121
+ CalicoPolicyControllerImage : model.Image {Repo : "quay.io/calico/kube-policy-controller" , Tag : "v0.6.0" , RktPullDocker : false },
122
+ CalicoCtlImage : model.Image {Repo : "quay.io/calico/ctl" , Tag : "v1.2.1" , RktPullDocker : false },
123
+ ClusterAutoscalerImage : model.Image {Repo : "quay.io/kube-aws/cluster-autoscaler" , Tag : "b432362a70f925d94240fe0bb772bd05fb8ad8d6" , RktPullDocker : false },
124
+ ClusterProportionalAutoscalerImage : model.Image {Repo : "gcr.io/google_containers/cluster-proportional-autoscaler-amd64" , Tag : "1.1.1" , RktPullDocker : false },
125
+ KubeDnsImage : model.Image {Repo : "gcr.io/google_containers/k8s-dns-kube-dns-amd64" , Tag : "1.14.2" , RktPullDocker : false },
126
+ KubeDnsMasqImage : model.Image {Repo : "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64" , Tag : "1.14.2" , RktPullDocker : false },
127
+ KubeReschedulerImage : model.Image {Repo : "gcr.io/google-containers/rescheduler" , Tag : "v0.3.0" , RktPullDocker : false },
128
+ DnsMasqMetricsImage : model.Image {Repo : "gcr.io/google_containers/k8s-dns-sidecar-amd64" , Tag : "1.14.2" , RktPullDocker : false },
129
+ ExecHealthzImage : model.Image {Repo : "gcr.io/google_containers/exechealthz-amd64" , Tag : "1.2" , RktPullDocker : false },
130
+ HeapsterImage : model.Image {Repo : "gcr.io/google_containers/heapster" , Tag : "v1.3.0" , RktPullDocker : false },
131
+ AddonResizerImage : model.Image {Repo : "gcr.io/google_containers/addon-resizer" , Tag : "1.7" , RktPullDocker : false },
132
+ KubeDashboardImage : model.Image {Repo : "gcr.io/google_containers/kubernetes-dashboard-amd64" , Tag : "v1.6.1" , RktPullDocker : false },
133
+ PauseImage : model.Image {Repo : "gcr.io/google_containers/pause-amd64" , Tag : "3.0" , RktPullDocker : false },
134
+ FlannelImage : model.Image {Repo : "quay.io/coreos/flannel" , Tag : "v0.7.1" , RktPullDocker : false },
135
+ DexImage : model.Image {Repo : "quay.io/coreos/dex" , Tag : "v2.4.1" , RktPullDocker : false },
135
136
},
136
137
KubeClusterSettings : KubeClusterSettings {
137
138
DNSServiceIP : "10.3.0.10" ,
@@ -494,24 +495,25 @@ type DeploymentSettings struct {
494
495
WaitSignal WaitSignal `yaml:"waitSignal"`
495
496
496
497
// Images repository
497
- HyperkubeImage model.Image `yaml:"hyperkubeImage,omitempty"`
498
- AWSCliImage model.Image `yaml:"awsCliImage,omitempty"`
499
- CalicoNodeImage model.Image `yaml:"calicoNodeImage,omitempty"`
500
- CalicoCniImage model.Image `yaml:"calicoCniImage,omitempty"`
501
- CalicoCtlImage model.Image `yaml:"calicoCtlImage,omitempty"`
502
- CalicoPolicyControllerImage model.Image `yaml:"calicoPolicyControllerImage,omitempty"`
503
- ClusterAutoscalerImage model.Image `yaml:"clusterAutoscalerImage,omitempty"`
504
- KubeDnsImage model.Image `yaml:"kubeDnsImage,omitempty"`
505
- KubeDnsMasqImage model.Image `yaml:"kubeDnsMasqImage,omitempty"`
506
- KubeReschedulerImage model.Image `yaml:"kubeReschedulerImage,omitempty"`
507
- DnsMasqMetricsImage model.Image `yaml:"dnsMasqMetricsImage,omitempty"`
508
- ExecHealthzImage model.Image `yaml:"execHealthzImage,omitempty"`
509
- HeapsterImage model.Image `yaml:"heapsterImage,omitempty"`
510
- AddonResizerImage model.Image `yaml:"addonResizerImage,omitempty"`
511
- KubeDashboardImage model.Image `yaml:"kubeDashboardImage,omitempty"`
512
- PauseImage model.Image `yaml:"pauseImage,omitempty"`
513
- FlannelImage model.Image `yaml:"flannelImage,omitempty"`
514
- DexImage model.Image `yaml:"dexImage,omitempty"`
498
+ HyperkubeImage model.Image `yaml:"hyperkubeImage,omitempty"`
499
+ AWSCliImage model.Image `yaml:"awsCliImage,omitempty"`
500
+ CalicoNodeImage model.Image `yaml:"calicoNodeImage,omitempty"`
501
+ CalicoCniImage model.Image `yaml:"calicoCniImage,omitempty"`
502
+ CalicoCtlImage model.Image `yaml:"calicoCtlImage,omitempty"`
503
+ CalicoPolicyControllerImage model.Image `yaml:"calicoPolicyControllerImage,omitempty"`
504
+ ClusterAutoscalerImage model.Image `yaml:"clusterAutoscalerImage,omitempty"`
505
+ ClusterProportionalAutoscalerImage model.Image `yaml:"clusterProportionalAutoscalerImage,omitempty"`
506
+ KubeDnsImage model.Image `yaml:"kubeDnsImage,omitempty"`
507
+ KubeDnsMasqImage model.Image `yaml:"kubeDnsMasqImage,omitempty"`
508
+ KubeReschedulerImage model.Image `yaml:"kubeReschedulerImage,omitempty"`
509
+ DnsMasqMetricsImage model.Image `yaml:"dnsMasqMetricsImage,omitempty"`
510
+ ExecHealthzImage model.Image `yaml:"execHealthzImage,omitempty"`
511
+ HeapsterImage model.Image `yaml:"heapsterImage,omitempty"`
512
+ AddonResizerImage model.Image `yaml:"addonResizerImage,omitempty"`
513
+ KubeDashboardImage model.Image `yaml:"kubeDashboardImage,omitempty"`
514
+ PauseImage model.Image `yaml:"pauseImage,omitempty"`
515
+ FlannelImage model.Image `yaml:"flannelImage,omitempty"`
516
+ DexImage model.Image `yaml:"dexImage,omitempty"`
515
517
}
516
518
517
519
// Part of configuration which is specific to worker nodes
@@ -673,24 +675,26 @@ type Cluster struct {
673
675
}
674
676
675
677
type Experimental struct {
676
- Admission Admission `yaml:"admission"`
677
- AuditLog AuditLog `yaml:"auditLog"`
678
- Authentication Authentication `yaml:"authentication"`
679
- AwsEnvironment AwsEnvironment `yaml:"awsEnvironment"`
680
- AwsNodeLabels AwsNodeLabels `yaml:"awsNodeLabels"`
681
- ClusterAutoscalerSupport ClusterAutoscalerSupport `yaml:"clusterAutoscalerSupport"`
682
- TLSBootstrap TLSBootstrap `yaml:"tlsBootstrap"`
683
- EphemeralImageStorage EphemeralImageStorage `yaml:"ephemeralImageStorage"`
684
- Kube2IamSupport Kube2IamSupport `yaml:"kube2IamSupport,omitempty"`
685
- LoadBalancer LoadBalancer `yaml:"loadBalancer"`
686
- TargetGroup TargetGroup `yaml:"targetGroup"`
687
- NodeDrainer NodeDrainer `yaml:"nodeDrainer"`
688
- NodeLabels NodeLabels `yaml:"nodeLabels"`
689
- Plugins Plugins `yaml:"plugins"`
690
- Dex model.Dex `yaml:"dex"`
691
- DisableSecurityGroupIngress bool `yaml:"disableSecurityGroupIngress"`
692
- NodeMonitorGracePeriod string `yaml:"nodeMonitorGracePeriod"`
693
- Taints model.Taints `yaml:"taints"`
678
+ Admission Admission `yaml:"admission"`
679
+ AuditLog AuditLog `yaml:"auditLog"`
680
+ Authentication Authentication `yaml:"authentication"`
681
+ AwsEnvironment AwsEnvironment `yaml:"awsEnvironment"`
682
+ AwsNodeLabels AwsNodeLabels `yaml:"awsNodeLabels"`
683
+ // When cluster-autoscaler support is enabled, not only controller nodes but this node pool is also given
684
+ // a node label and IAM permissions to run cluster-autoscaler
685
+ ClusterAutoscalerSupport model.ClusterAutoscalerSupport `yaml:"clusterAutoscalerSupport"`
686
+ TLSBootstrap TLSBootstrap `yaml:"tlsBootstrap"`
687
+ EphemeralImageStorage EphemeralImageStorage `yaml:"ephemeralImageStorage"`
688
+ Kube2IamSupport Kube2IamSupport `yaml:"kube2IamSupport,omitempty"`
689
+ LoadBalancer LoadBalancer `yaml:"loadBalancer"`
690
+ TargetGroup TargetGroup `yaml:"targetGroup"`
691
+ NodeDrainer NodeDrainer `yaml:"nodeDrainer"`
692
+ NodeLabels model.NodeLabels `yaml:"nodeLabels"`
693
+ Plugins Plugins `yaml:"plugins"`
694
+ Dex model.Dex `yaml:"dex"`
695
+ DisableSecurityGroupIngress bool `yaml:"disableSecurityGroupIngress"`
696
+ NodeMonitorGracePeriod string `yaml:"nodeMonitorGracePeriod"`
697
+ Taints model.Taints `yaml:"taints"`
694
698
model.UnknownKeys `yaml:",inline"`
695
699
}
696
700
@@ -727,10 +731,6 @@ type AwsNodeLabels struct {
727
731
Enabled bool `yaml:"enabled"`
728
732
}
729
733
730
- type ClusterAutoscalerSupport struct {
731
- Enabled bool `yaml:"enabled"`
732
- }
733
-
734
734
type TLSBootstrap struct {
735
735
Enabled bool `yaml:"enabled"`
736
736
}
@@ -754,27 +754,6 @@ type NodeDrainer struct {
754
754
Enabled bool `yaml:"enabled"`
755
755
}
756
756
757
- type NodeLabels map [string ]string
758
-
759
- func (l NodeLabels ) Enabled () bool {
760
- return len (l ) > 0
761
- }
762
-
763
- // Returns key=value pairs separated by ',' to be passed to kubelet's `--node-labels` flag
764
- func (l NodeLabels ) String () string {
765
- labels := []string {}
766
- keys := []string {}
767
- for k , _ := range l {
768
- keys = append (keys , k )
769
- }
770
- sort .Strings (keys )
771
- for _ , k := range keys {
772
- v := l [k ]
773
- labels = append (labels , fmt .Sprintf ("%s=%s" , k , v ))
774
- }
775
- return strings .Join (labels , "," )
776
- }
777
-
778
757
type LoadBalancer struct {
779
758
Enabled bool `yaml:"enabled"`
780
759
Names []string `yaml:"names"`
@@ -1105,6 +1084,14 @@ func (c Cluster) NestedStackName() string {
1105
1084
return strings .Title (strings .Replace (c .StackName (), "-" , "" , - 1 ))
1106
1085
}
1107
1086
1087
+ func (c Cluster ) NodeLabels () model.NodeLabels {
1088
+ labels := c .Experimental .NodeLabels
1089
+ if c .Addons .ClusterAutoscaler .Enabled {
1090
+ labels ["kube-aws.coreos.com/cluster-autoscaler-supported" ] = "true"
1091
+ }
1092
+ return labels
1093
+ }
1094
+
1108
1095
// Etcdadm returns the content of the etcdadm script to be embedded into cloud-config-etcd
1109
1096
func (c * Config ) Etcdadm () (string , error ) {
1110
1097
return gzipcompressor .CompressData (Etcdadm )
0 commit comments