diff --git a/debian/Dockerfile b/debian/Dockerfile index d54d7f9edf0..b8360870839 100644 --- a/debian/Dockerfile +++ b/debian/Dockerfile @@ -12,6 +12,7 @@ RUN export DEBIAN_FRONTEND=noninteractive \ && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* ADD . /src +ADD vendor /go/src WORKDIR /src diff --git a/debian/build.go b/debian/build.go index 9afed898eb4..8843568b812 100644 --- a/debian/build.go +++ b/debian/build.go @@ -12,6 +12,8 @@ import ( "strings" "text/template" "time" + + "github.com/blang/semver" ) type ChannelType string @@ -41,6 +43,7 @@ type version struct { Channel ChannelType GetVersion func() (string, error) GetDownloadLinkBase func(v version) (string, error) + KubeadmKubeletConfigFile string } type cfg struct { @@ -268,6 +271,26 @@ func getReleaseDownloadLinkBase(v version) (string, error) { return fmt.Sprintf("https://dl.k8s.io/v%s", v.Version), nil } +// The version of this file to use changed in 1.8, so use the target build +// version to figure out which copy of it to include in the deb. +func getKubeadmKubeletConfigFile(v version) (string, error) { + sv, err := semver.Make(v.Version) + if err != nil { + return "", err + } + + v180, err := semver.Make("1.8.0-alpha.0") + if err != nil { + return "", err + } + + if sv.GTE(v180) { + return "post-1.8/10-kubeadm.conf", nil + } else { + return "pre-1.8/10-kubeadm.conf", nil + } +} + func main() { flag.Parse() @@ -437,6 +460,12 @@ func main() { c.DebArch = c.Arch } + var err error + c.KubeadmKubeletConfigFile, err = getKubeadmKubeletConfigFile(v) + if err != nil { + log.Fatalf("error getting kubeadm config: %v", err) + } + return c.run() }); err != nil { log.Fatalf("err: %v", err) diff --git a/debian/build_test.go b/debian/build_test.go new file mode 100644 index 00000000000..4713ec4be6b --- /dev/null +++ b/debian/build_test.go @@ -0,0 +1,71 @@ +package main + +import ( + "testing" +) + +func TestGetKubeadmConfig(t *testing.T) { + testcases := []struct { + version string + expectConfig string + expectErr bool + }{ + { + "1.6.10", + "pre-1.8/10-kubeadm.conf", + false, + }, + { + "1.7.10", + "pre-1.8/10-kubeadm.conf", + false, + }, + { + "1.7.0-beta.5", + "pre-1.8/10-kubeadm.conf", + false, + }, + { + "1.8.0", + "post-1.8/10-kubeadm.conf", + false, + }, + { + "1.8.0-alpha.0", + "post-1.8/10-kubeadm.conf", + false, + }, + { + "1.8.0-beta.2", + "post-1.8/10-kubeadm.conf", + false, + }, + { + "1.9.0", + "post-1.8/10-kubeadm.conf", + false, + }, + { + "not-a-real-version", + "", + true, + }, + } + + for _, tc := range testcases { + v := version{ + Version: tc.version, + } + kubeadmConfig, err := getKubeadmConfig(v) + + if err != nil { + if !tc.expectErr { + t.Errorf("getKubeadmConfig(%s) returned unwanted error: %v", tc.version, err) + } + } else { + if kubeadmConfig != tc.expectConfig { + t.Errorf("getKubeadmConfig(%s) got %q, wanted %q", tc.version, kubeadmConfig, tc.expectConfig) + } + } + } +} diff --git a/debian/xenial/kubeadm/channel/nightly/etc/systemd/system/kubelet.service.d/10-kubeadm.conf b/debian/xenial/kubeadm/channel/nightly/etc/systemd/system/kubelet.service.d/10-kubeadm.conf deleted file mode 120000 index 3b10d659de7..00000000000 --- a/debian/xenial/kubeadm/channel/nightly/etc/systemd/system/kubelet.service.d/10-kubeadm.conf +++ /dev/null @@ -1 +0,0 @@ -../../../../../stable/etc/systemd/system/kubelet.service.d/10-kubeadm.conf \ No newline at end of file diff --git a/debian/xenial/kubeadm/channel/nightly/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf b/debian/xenial/kubeadm/channel/nightly/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf new file mode 120000 index 00000000000..21aa672ba29 --- /dev/null +++ b/debian/xenial/kubeadm/channel/nightly/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf @@ -0,0 +1 @@ +../../../../../../stable/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf \ No newline at end of file diff --git a/debian/xenial/kubeadm/channel/nightly/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf b/debian/xenial/kubeadm/channel/nightly/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf new file mode 120000 index 00000000000..8bf2c840060 --- /dev/null +++ b/debian/xenial/kubeadm/channel/nightly/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf @@ -0,0 +1 @@ +../../../../../../stable/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf \ No newline at end of file diff --git a/debian/xenial/kubeadm/channel/stable/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf b/debian/xenial/kubeadm/channel/stable/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf new file mode 100644 index 00000000000..f149e16cdfd --- /dev/null +++ b/debian/xenial/kubeadm/channel/stable/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf @@ -0,0 +1,10 @@ +[Service] +Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" +Environment="KUBELET_SYSTEM_PODS_ARGS=--pod-manifest-path=/etc/kubernetes/manifests --allow-privileged=true" +Environment="KUBELET_NETWORK_ARGS=--network-plugin=cni --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/cni/bin" +Environment="KUBELET_DNS_ARGS=--cluster-dns=10.96.0.10 --cluster-domain=cluster.local" +Environment="KUBELET_AUTHZ_ARGS=--authorization-mode=Webhook --client-ca-file=/etc/kubernetes/pki/ca.crt" +Environment="KUBELET_CADVISOR_ARGS=--cadvisor-port=0" +Environment="KUBELET_CERTIFICATE_ARGS=--rotate-certificates=true" +ExecStart= +ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_SYSTEM_PODS_ARGS $KUBELET_NETWORK_ARGS $KUBELET_DNS_ARGS $KUBELET_AUTHZ_ARGS $KUBELET_CADVISOR_ARGS $KUBELET_CERTIFICATE_ARGS $KUBELET_EXTRA_ARGS diff --git a/debian/xenial/kubeadm/channel/stable/etc/systemd/system/kubelet.service.d/10-kubeadm.conf b/debian/xenial/kubeadm/channel/stable/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf similarity index 100% rename from debian/xenial/kubeadm/channel/stable/etc/systemd/system/kubelet.service.d/10-kubeadm.conf rename to debian/xenial/kubeadm/channel/stable/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf diff --git a/debian/xenial/kubeadm/channel/unstable/etc/systemd/system/kubelet.service.d/10-kubeadm.conf b/debian/xenial/kubeadm/channel/unstable/etc/systemd/system/kubelet.service.d/10-kubeadm.conf deleted file mode 120000 index 3b10d659de7..00000000000 --- a/debian/xenial/kubeadm/channel/unstable/etc/systemd/system/kubelet.service.d/10-kubeadm.conf +++ /dev/null @@ -1 +0,0 @@ -../../../../../stable/etc/systemd/system/kubelet.service.d/10-kubeadm.conf \ No newline at end of file diff --git a/debian/xenial/kubeadm/channel/unstable/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf b/debian/xenial/kubeadm/channel/unstable/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf new file mode 120000 index 00000000000..21aa672ba29 --- /dev/null +++ b/debian/xenial/kubeadm/channel/unstable/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf @@ -0,0 +1 @@ +../../../../../../stable/etc/systemd/system/kubelet.service.d/post-1.8/10-kubeadm.conf \ No newline at end of file diff --git a/debian/xenial/kubeadm/channel/unstable/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf b/debian/xenial/kubeadm/channel/unstable/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf new file mode 120000 index 00000000000..8bf2c840060 --- /dev/null +++ b/debian/xenial/kubeadm/channel/unstable/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf @@ -0,0 +1 @@ +../../../../../../stable/etc/systemd/system/kubelet.service.d/pre-1.8/10-kubeadm.conf \ No newline at end of file diff --git a/debian/xenial/kubeadm/debian/kubeadm.install b/debian/xenial/kubeadm/debian/kubeadm.install index 2211234e7e9..3356ff6ef6e 100644 --- a/debian/xenial/kubeadm/debian/kubeadm.install +++ b/debian/xenial/kubeadm/debian/kubeadm.install @@ -1,2 +1,2 @@ usr/bin/kubeadm usr/bin/ -channel/{{ .Channel }}/etc/systemd/system/kubelet.service.d/10-kubeadm.conf etc/systemd/system/kubelet.service.d/ +channel/{{ .Channel }}/etc/systemd/system/kubelet.service.d/{{ .KubeadmKubeletConfigFile }} etc/systemd/system/kubelet.service.d/