Skip to content
This repository was archived by the owner on Jul 30, 2021. It is now read-only.

Commit 6204a98

Browse files
authored
Extract all image versions from templates. (#494)
I just specified the values in a constant for now, but we can do something more sophisticated if we want.
1 parent 0a9b736 commit 6204a98

File tree

5 files changed

+61
-27
lines changed

5 files changed

+61
-27
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
_output
2+
_pluton_temp
23
vendor-v[0-9].[0-9].[0-9]/
34

45
hack/*/.vagrant/

cmd/bootkube/render.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,19 @@ var (
5252
cloudProvider string
5353
selfHostedEtcd bool
5454
}
55+
56+
imageVersions = asset.ImageVersions{
57+
Busybox: "busybox",
58+
Etcd: "quay.io/coreos/etcd:v3.1.6",
59+
EtcdOperator: "quay.io/coreos/etcd-operator:v0.2.6",
60+
Flannel: "quay.io/coreos/flannel:v0.7.1-amd64",
61+
Hyperkube: "quay.io/coreos/hyperkube:v1.6.2_coreos.0",
62+
Kenc: "quay.io/coreos/kenc:48b6feceeee56c657ea9263f47b6ea091e8d3035",
63+
KubeDNS: "gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1",
64+
KubeDNSMasq: "gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1",
65+
KubeDNSSidecar: "gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1",
66+
PodCheckpointer: "quay.io/coreos/pod-checkpointer:2cad4cac4186611a79de1969e3ea4924f02f459e",
67+
}
5568
)
5669

5770
func init() {
@@ -230,6 +243,7 @@ func flagsToAssetConfig() (c *asset.Config, err error) {
230243
SelfHostKubelet: renderOpts.selfHostKubelet,
231244
CloudProvider: renderOpts.cloudProvider,
232245
SelfHostedEtcd: renderOpts.selfHostedEtcd,
246+
Images: imageVersions,
233247
}, nil
234248
}
235249

pkg/asset/asset.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,21 @@ type Config struct {
7979
SelfHostedEtcd bool
8080
CloudProvider string
8181
BootstrapSecretsSubdir string
82+
Images ImageVersions
83+
}
84+
85+
// ImageVersions holds all the images (and their versions) that are rendered into the templates.
86+
type ImageVersions struct {
87+
Busybox string
88+
Etcd string
89+
EtcdOperator string
90+
Flannel string
91+
Hyperkube string
92+
Kenc string
93+
KubeDNS string
94+
KubeDNSMasq string
95+
KubeDNSSidecar string
96+
PodCheckpointer string
8297
}
8398

8499
// NewDefaultAssets returns a list of default assets, optionally
@@ -87,7 +102,7 @@ type Config struct {
87102
func NewDefaultAssets(conf Config) (Assets, error) {
88103
conf.BootstrapSecretsSubdir = path.Base(BootstrapSecretsDir)
89104

90-
as := newStaticAssets()
105+
as := newStaticAssets(conf.Images)
91106
as = append(as, newDynamicAssets(conf)...)
92107

93108
// Add kube-apiserver service IP

pkg/asset/internal/templates.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ spec:
5151
spec:
5252
containers:
5353
- name: kubelet
54-
image: quay.io/coreos/hyperkube:v1.6.2_coreos.0
54+
image: {{ .Images.Hyperkube }}
5555
command:
5656
- ./hyperkube
5757
- kubelet
@@ -152,7 +152,7 @@ spec:
152152
spec:
153153
containers:
154154
- name: kube-apiserver
155-
image: quay.io/coreos/hyperkube:v1.6.2_coreos.0
155+
image: {{ .Images.Hyperkube }}
156156
command:
157157
- /usr/bin/flock
158158
- --exclusive
@@ -228,7 +228,7 @@ metadata:
228228
spec:
229229
containers:
230230
- name: kube-apiserver
231-
image: quay.io/coreos/hyperkube:v1.6.2_coreos.0
231+
image: {{ .Images.Hyperkube }}
232232
command:
233233
- /usr/bin/flock
234234
- --exclusive
@@ -305,7 +305,7 @@ spec:
305305
checkpointer.alpha.coreos.com/checkpoint: "true"
306306
spec:
307307
containers:
308-
- image: quay.io/coreos/kenc:48b6feceeee56c657ea9263f47b6ea091e8d3035
308+
- image: {{ .Images.Kenc }}
309309
name: kube-etcd-network-checkpointer
310310
securityContext:
311311
privileged: true
@@ -356,7 +356,7 @@ spec:
356356
spec:
357357
containers:
358358
- name: checkpoint
359-
image: quay.io/coreos/pod-checkpointer:2cad4cac4186611a79de1969e3ea4924f02f459e
359+
image: {{ .Images.PodCheckpointer }}
360360
command:
361361
- /checkpoint
362362
- --v=4
@@ -432,7 +432,7 @@ spec:
432432
topologyKey: kubernetes.io/hostname
433433
containers:
434434
- name: kube-controller-manager
435-
image: quay.io/coreos/hyperkube:v1.6.2_coreos.0
435+
image: {{ .Images.Hyperkube }}
436436
command:
437437
- ./hyperkube
438438
- controller-manager
@@ -482,7 +482,7 @@ metadata:
482482
spec:
483483
containers:
484484
- name: kube-controller-manager
485-
image: quay.io/coreos/hyperkube:v1.6.2_coreos.0
485+
image: {{ .Images.Hyperkube }}
486486
command:
487487
- ./hyperkube
488488
- controller-manager
@@ -558,7 +558,7 @@ spec:
558558
topologyKey: kubernetes.io/hostname
559559
containers:
560560
- name: kube-scheduler
561-
image: quay.io/coreos/hyperkube:v1.6.2_coreos.0
561+
image: {{ .Images.Hyperkube }}
562562
command:
563563
- ./hyperkube
564564
- scheduler
@@ -587,7 +587,7 @@ metadata:
587587
spec:
588588
containers:
589589
- name: kube-scheduler
590-
image: quay.io/coreos/hyperkube:v1.6.2_coreos.0
590+
image: {{ .Images.Hyperkube }}
591591
command:
592592
- ./hyperkube
593593
- scheduler
@@ -634,7 +634,7 @@ spec:
634634
spec:
635635
containers:
636636
- name: kube-proxy
637-
image: quay.io/coreos/hyperkube:v1.6.2_coreos.0
637+
image: {{ .Images.Hyperkube }}
638638
command:
639639
- /hyperkube
640640
- proxy
@@ -700,7 +700,7 @@ spec:
700700
spec:
701701
containers:
702702
- name: kubedns
703-
image: gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.1
703+
image: {{ .Images.KubeDNS }}
704704
resources:
705705
# TODO: Set memory limits when we've profiled the container for large
706706
# clusters, then set request = limit to keep this container in
@@ -751,7 +751,7 @@ spec:
751751
- name: kube-dns-config
752752
mountPath: /kube-dns-config
753753
- name: dnsmasq
754-
image: gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.1
754+
image: {{ .Images.KubeDNSMasq }}
755755
livenessProbe:
756756
httpGet:
757757
path: /healthcheck/dnsmasq
@@ -789,7 +789,7 @@ spec:
789789
- name: kube-dns-config
790790
mountPath: /etc/k8s/dns/dnsmasq-nanny
791791
- name: sidecar
792-
image: gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.1
792+
image: {{ .Images.KubeDNSSidecar }}
793793
livenessProbe:
794794
httpGet:
795795
path: /metrics
@@ -865,7 +865,7 @@ spec:
865865
spec:
866866
containers:
867867
- name: etcd-operator
868-
image: quay.io/coreos/etcd-operator:v0.2.6
868+
image: {{ .Images.EtcdOperator }}
869869
env:
870870
- name: MY_POD_NAMESPACE
871871
valueFrom:
@@ -907,7 +907,7 @@ metadata:
907907
spec:
908908
containers:
909909
- name: etcd
910-
image: quay.io/coreos/etcd:v3.1.6
910+
image: {{ .Images.Etcd }}
911911
command:
912912
- /usr/local/bin/etcd
913913
- --name=boot-etcd
@@ -971,7 +971,7 @@ spec:
971971
spec:
972972
containers:
973973
- name: kube-flannel
974-
image: quay.io/coreos/flannel:v0.7.1-amd64
974+
image: {{ .Images.Flannel }}
975975
command: [ "/opt/bin/flanneld", "--ip-masq", "--kube-subnet-mgr", "--iface=$(POD_IP)"]
976976
securityContext:
977977
privileged: true
@@ -996,7 +996,7 @@ spec:
996996
- name: flannel-cfg
997997
mountPath: /etc/kube-flannel/
998998
- name: install-cni
999-
image: busybox
999+
image: {{ .Images.Busybox }}
10001000
command: [ "/bin/sh", "-c", "set -e -x; TMP=/etc/cni/net.d/.tmp-flannel-cfg; cp /etc/kube-flannel/cni-conf.json ${TMP}; mv ${TMP} /etc/cni/net.d/10-flannel.conf; while :; do sleep 3600; done" ]
10011001
volumeMounts:
10021002
- name: cni

pkg/asset/k8s.go

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,20 @@ const (
1717
secretCMName = "kube-controller-manager"
1818
)
1919

20-
func newStaticAssets() Assets {
21-
var noData interface{}
20+
type staticConfig struct {
21+
Images ImageVersions
22+
}
23+
24+
func newStaticAssets(imageVersions ImageVersions) Assets {
25+
conf := staticConfig{Images: imageVersions}
2226
assets := Assets{
23-
mustCreateAssetFromTemplate(AssetPathScheduler, internal.SchedulerTemplate, noData),
24-
mustCreateAssetFromTemplate(AssetPathSchedulerDisruption, internal.SchedulerDisruptionTemplate, noData),
25-
mustCreateAssetFromTemplate(AssetPathControllerManagerDisruption, internal.ControllerManagerDisruptionTemplate, noData),
26-
mustCreateAssetFromTemplate(AssetPathKubeDNSDeployment, internal.DNSDeploymentTemplate, noData),
27-
mustCreateAssetFromTemplate(AssetPathCheckpointer, internal.CheckpointerTemplate, noData),
28-
mustCreateAssetFromTemplate(AssetPathKubeFlannel, internal.KubeFlannelTemplate, noData),
29-
mustCreateAssetFromTemplate(AssetPathKubeSystemSARoleBinding, internal.KubeSystemSARoleBindingTemplate, noData),
27+
mustCreateAssetFromTemplate(AssetPathScheduler, internal.SchedulerTemplate, conf),
28+
mustCreateAssetFromTemplate(AssetPathSchedulerDisruption, internal.SchedulerDisruptionTemplate, conf),
29+
mustCreateAssetFromTemplate(AssetPathControllerManagerDisruption, internal.ControllerManagerDisruptionTemplate, conf),
30+
mustCreateAssetFromTemplate(AssetPathKubeDNSDeployment, internal.DNSDeploymentTemplate, conf),
31+
mustCreateAssetFromTemplate(AssetPathCheckpointer, internal.CheckpointerTemplate, conf),
32+
mustCreateAssetFromTemplate(AssetPathKubeFlannel, internal.KubeFlannelTemplate, conf),
33+
mustCreateAssetFromTemplate(AssetPathKubeSystemSARoleBinding, internal.KubeSystemSARoleBindingTemplate, conf),
3034
}
3135
return assets
3236
}

0 commit comments

Comments
 (0)