@@ -32,29 +32,42 @@ source /etc/kubeone/proxy-env
3232{{ template "sysctl-k8s" . }}
3333{{ template "journald-config" }}
3434
35+ {{- with .KUBERNETES_CNI_VERSION }}
3536sudo mkdir -p /opt/bin /opt/cni/bin /etc/kubernetes/pki /etc/kubernetes/manifests
36- curl -L "https://github.com/containernetworking/plugins/releases/download/v{{ .KUBERNETES_CNI_VERSION }}/cni-plugins-linux-${HOST_ARCH}-v{{ .KUBERNETES_CNI_VERSION }}.tgz" |
37+ curl -L "https://github.com/containernetworking/plugins/releases/download/v{{ . }}/cni-plugins-linux-${HOST_ARCH}-v{{ . }}.tgz" |
3738 sudo tar -C /opt/cni/bin -xz
38-
39- RELEASE="v{{ .KUBERNETES_VERSION }}"
40- CRI_TOOLS_RELEASE="v{{ .CRITOOLS_VERSION }}"
41-
39+ {{- end }}
40+ {{- with .CRITOOLS_VERSION }}
41+ CRI_TOOLS_RELEASE="v{{ . }}"
4242curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRI_TOOLS_RELEASE}/crictl-${CRI_TOOLS_RELEASE}-linux-${HOST_ARCH}.tar.gz |
4343 sudo tar -C /opt/bin -xz
44+ {{- end }}
4445
45- {{ if .INSTALL_CONTAINERD }}
46+ {{- if .INSTALL_CONTAINERD }}
4647{{ template "flatcar-containerd" . }}
47- {{ end }}
48+ {{- end }}
49+ binaries=()
50+ {{- with .KUBELET }}
51+ binaries+=('kubelet')
52+ {{- end }}
53+ {{- with .KUBECTL }}
54+ binaries+=('kubectl')
55+ {{- end }}
56+ {{- with .KUBEADM }}
57+ binaries+=('kubeadm')
58+ {{- end }}
4859
49- cd /opt/bin
50- k8s_rel_baseurl=https://dl.k8s.io
51- for binary in kubeadm kubelet kubectl; do
52- curl -L --output /tmp/$binary \
53- $k8s_rel_baseurl/${RELEASE}/bin/linux/${HOST_ARCH}/$binary
54- sudo install --owner=0 --group=0 --mode=0755 /tmp/$binary /opt/bin/$binary
55- rm /tmp/$binary
60+ RELEASE="v{{ .KUBERNETES_VERSION }}"
61+ for binary in "${binaries[@]}" ; do
62+ curl \
63+ --location \
64+ --output "/tmp/${binary}" \
65+ "https://dl.k8s.io/release/${RELEASE}/bin/linux/${HOST_ARCH}/${binary}"
66+ sudo install --owner=0 --group=0 --mode=0755 "/tmp/${binary}" "/opt/bin/${binary}"
67+ rm "/tmp/${binary}"
5668done
5769
70+ {{- with .KUBELET }}
5871cat <<EOF | sudo tee /etc/systemd/system/kubelet.service
5972[Unit]
6073Description=kubelet: The Kubernetes Node Agent
88101
89102sudo systemctl daemon-reload
90103sudo systemctl enable --now kubelet
104+ {{- end }}
105+
106+ {{- if or .FORCE .KUBELET }}
107+ sudo systemctl restart kubelet
108+ {{- end }}
91109`
92110
93111 removeBinariesFlatcarScriptTemplate = `
@@ -99,95 +117,25 @@ sudo rm -rf /opt/cni /opt/bin/kubeadm /opt/bin/kubectl /opt/bin/kubelet
99117sudo rm -f /etc/systemd/system/kubelet.service /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
100118# Reload systemd
101119sudo systemctl daemon-reload
102- `
103-
104- upgradeKubeadmAndCNIFlatcarScriptTemplate = `
105- {{ template "detect-host-cpu-architecture" }}
106-
107- {{- if .INSTALL_CONTAINERD -}}
108- {{ template "flatcar-containerd" . }}
109- {{ end }}
110-
111- source /etc/kubeone/proxy-env
112-
113- sudo mkdir -p /opt/cni/bin
114- curl -L "https://github.com/containernetworking/plugins/releases/download/v{{ .KUBERNETES_CNI_VERSION }}/cni-plugins-linux-${HOST_ARCH}-v{{ .KUBERNETES_CNI_VERSION }}.tgz" |
115- sudo tar -C /opt/cni/bin -xz
116-
117- RELEASE="v{{ .KUBERNETES_VERSION }}"
118-
119- sudo mkdir -p /var/tmp/kube-binaries
120- cd /var/tmp/kube-binaries
121- sudo curl -L --remote-name-all \
122- https://dl.k8s.io/${RELEASE}/bin/linux/${HOST_ARCH}/kubeadm
123-
124- sudo mkdir -p /opt/bin
125- cd /opt/bin
126- sudo mv /var/tmp/kube-binaries/kubeadm .
127- sudo chmod +x kubeadm
128- `
129-
130- upgradeKubeletAndKubectlFlatcarScriptTemplate = `
131- source /etc/kubeone/proxy-env
132-
133- {{ template "detect-host-cpu-architecture" }}
134-
135- {{- if .INSTALL_CONTAINERD -}}
136- {{ template "flatcar-containerd" . }}
137- {{ end }}
138-
139- RELEASE="v{{ .KUBERNETES_VERSION }}"
140- sudo mkdir -p /var/tmp/kube-binaries
141- cd /var/tmp/kube-binaries
142- sudo curl -L --remote-name-all \
143- https://dl.k8s.io/${RELEASE}/bin/linux/${HOST_ARCH}/{kubelet,kubectl}
144- sudo mkdir -p /opt/bin
145- cd /opt/bin
146- sudo systemctl stop kubelet
147- sudo mv /var/tmp/kube-binaries/{kubelet,kubectl} .
148- sudo chmod +x {kubelet,kubectl}
149-
150- cat <<EOF | sudo tee /etc/systemd/system/kubelet.service
151- [Unit]
152- Description=kubelet: The Kubernetes Node Agent
153- Documentation=https://kubernetes.io/docs/home/
154- Wants=network-online.target
155- After=network-online.target
156-
157- [Service]
158- ExecStart=/opt/bin/kubelet
159- Restart=always
160- StartLimitInterval=0
161- RestartSec=10
162-
163- [Install]
164- WantedBy=multi-user.target
165- EOF
166-
167- sudo mkdir -p /etc/systemd/system/kubelet.service.d
168- cat <<EOF | sudo tee /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
169- [Service]
170- Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf"
171- Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml"
172- # This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically
173- EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env
174- # This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use
175- # the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file.
176- EnvironmentFile=-/etc/default/kubelet
177- ExecStart=
178- ExecStart=/opt/bin/kubelet \$KUBELET_KUBECONFIG_ARGS \$KUBELET_CONFIG_ARGS \$KUBELET_KUBEADM_ARGS \$KUBELET_EXTRA_ARGS
179- EOF
180-
181- sudo systemctl daemon-reload
182- sudo systemctl start kubelet
183120`
184121)
185122
186- func KubeadmFlatcar (cluster * kubeoneapi.KubeOneCluster ) (string , error ) {
123+ func FlatcarScript (cluster * kubeoneapi.KubeOneCluster , params Params ) (string , error ) {
124+ proxy := cluster .Proxy .HTTPS
125+ if proxy == "" {
126+ proxy = cluster .Proxy .HTTP
127+ }
128+
187129 data := Data {
130+ "UPGRADE" : params .Upgrade ,
131+ "KUBELET" : params .Kubelet ,
132+ "KUBECTL" : params .Kubectl ,
133+ "KUBEADM" : params .Kubeadm ,
134+ "FORCE" : params .Force ,
188135 "KUBERNETES_VERSION" : cluster .Versions .Kubernetes ,
189136 "KUBERNETES_CNI_VERSION" : defaultKubernetesCNIVersion ,
190137 "CRITOOLS_VERSION" : criToolsVersion (cluster ),
138+ "PROXY" : proxy ,
191139 "INSTALL_CONTAINERD" : cluster .ContainerRuntime .Containerd ,
192140 "IPV6_ENABLED" : cluster .ClusterNetwork .HasIPv6 (),
193141 }
@@ -207,37 +155,6 @@ func RemoveBinariesFlatcar() (string, error) {
207155 return result , fail .Runtime (err , "rendering removeBinariesFlatcarScriptTemplate script" )
208156}
209157
210- func UpgradeKubeadmAndCNIFlatcar (cluster * kubeoneapi.KubeOneCluster ) (string , error ) {
211- data := Data {
212- "KUBERNETES_VERSION" : cluster .Versions .Kubernetes ,
213- "KUBERNETES_CNI_VERSION" : defaultKubernetesCNIVersion ,
214- "INSTALL_CONTAINERD" : cluster .ContainerRuntime .Containerd ,
215- }
216-
217- if err := containerruntime .UpdateDataMap (cluster , data ); err != nil {
218- return "" , err
219- }
220-
221- result , err := Render (upgradeKubeadmAndCNIFlatcarScriptTemplate , data )
222-
223- return result , fail .Runtime (err , "rendering upgradeKubeadmAndCNIFlatcarScriptTemplate script" )
224- }
225-
226- func UpgradeKubernetesBinariesFlatcar (cluster * kubeoneapi.KubeOneCluster ) (string , error ) {
227- data := Data {
228- "KUBERNETES_VERSION" : cluster .Versions .Kubernetes ,
229- "INSTALL_CONTAINERD" : cluster .ContainerRuntime .Containerd ,
230- }
231-
232- if err := containerruntime .UpdateDataMap (cluster , data ); err != nil {
233- return "" , err
234- }
235-
236- result , err := Render (upgradeKubeletAndKubectlFlatcarScriptTemplate , data )
237-
238- return result , fail .Runtime (err , "rendering upgradeKubeletAndKubectlFlatcarScriptTemplate script" )
239- }
240-
241158const defaultKubernetesCNIVersion = "1.3.0"
242159
243160func criToolsVersion (cluster * kubeoneapi.KubeOneCluster ) string {
0 commit comments