@@ -132,6 +132,7 @@ write_files:
132132 echo "Installing binaries from ${BINARIES_DIR}"
133133 mkdir -p /opt/cni/bin
134134 tar -f "${BINARIES_DIR}/cni/cni-plugins-"*64.tgz -C /opt/cni/bin -xz
135+ chown -R root:root /opt/cni/bin/
135136
136137 mkdir -p /opt/bin
137138 tar -f "${BINARIES_DIR}/cri-tools/crictl-linux-"*64.tar.gz -C /opt/bin -xz
@@ -201,6 +202,7 @@ write_files:
201202 echo "Warning: ${BINARIES_DIR} not found. Will get binaries and docker images from Internet."
202203 mkdir -p /opt/cni/bin
203204 curl -L "https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-amd64-${CNI_VERSION}.tgz" | tar -C /opt/cni/bin -xz
205+ chown -R root:root /opt/cni/bin/
204206
205207 mkdir -p /opt/bin
206208 curl -L "https://github.com/kubernetes-incubator/cri-tools/releases/download/${CRICTL_VERSION}/crictl-${CRICTL_VERSION}-linux-amd64.tar.gz" | tar -C /opt/bin -xz
@@ -264,6 +266,51 @@ write_files:
264266 bindPort: {{ k8s.api_server_port }}
265267 certificateKey: {{ k8s_control.certificate_key }}
266268
269+ - path : /opt/bin/cks-config.py
270+ permissions : ' 0700'
271+ owner : root:root
272+ content : |
273+ #!/usr/bin/env python3
274+ import os
275+ import subprocess
276+ import sys
277+ import yaml
278+
279+ CKS_CONFIG = "#cks-config"
280+ KUBECTL_APPLY = "/opt/bin/kubectl apply -f"
281+
282+ def main(argv):
283+ if len(argv) < 1:
284+ print("YAML file is required")
285+ sys.exit(1)
286+ yaml_file=argv[0]
287+ if not os.path.exists(yaml_file):
288+ print("YAML file does not exist")
289+ sys.exit(1)
290+ with open(yaml_file) as f:
291+ head_line = f.readline().strip('\n')
292+ if head_line != CKS_CONFIG:
293+ command = "%s %s" % (KUBECTL_APPLY, yaml_file)
294+ run_command(command)
295+ sys.exit(0)
296+
297+ print("Applying CKS config file")
298+ content = yaml.safe_load(open(yaml_file))
299+ commands = content["commands"]
300+ if commands:
301+ for command in commands:
302+ run_command(command)
303+
304+ def run_command(command):
305+ try:
306+ print("Executing command: %s" % command)
307+ subprocess.check_output(command, shell=True, timeout=600)
308+ except subprocess.CalledProcessError as e:
309+ print("Error: %s " % e)
310+ sys.exit(1)
311+
312+ if __name__ == "__main__":
313+ main(sys.argv[1:])
267314
268315 - path : /opt/bin/deploy-kube-system
269316 permissions : ' 0700'
@@ -324,9 +371,9 @@ write_files:
324371 ### Network, dashboard configs available offline ###
325372 echo "Offline configs are available!"
326373 if [[ ${EXTERNAL_CNI_PLUGIN} == false ]]; then
327- /opt/bin/kubectl apply -f ${K8S_CONFIG_SCRIPTS_COPY_DIR}/network.yaml
374+ /opt/bin/cks-config.py ${K8S_CONFIG_SCRIPTS_COPY_DIR}/network.yaml
328375 fi
329- /opt/bin/kubectl apply -f ${K8S_CONFIG_SCRIPTS_COPY_DIR}/dashboard.yaml
376+ /opt/bin/cks-config.py ${K8S_CONFIG_SCRIPTS_COPY_DIR}/dashboard.yaml
330377 rm -rf "${K8S_CONFIG_SCRIPTS_COPY_DIR}"
331378 else
332379 /opt/bin/kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(/opt/bin/kubectl version | base64 | tr -d '\n')"
@@ -374,6 +421,13 @@ write_files:
374421 Restart=on-failure
375422 ExecStart=/opt/bin/deploy-kube-system
376423
424+ - path : /etc/crictl.yaml
425+ permissions : ' 0700'
426+ owner : root:root
427+ content : |
428+ runtime-endpoint: unix:///var/run/containerd/containerd.sock
429+ image-endpoint: unix:///var/run/containerd/containerd.sock
430+
377431runcmd :
378432 - chown -R cloud:cloud /home/cloud/.ssh
379433 - containerd config default > /etc/containerd/config.toml
0 commit comments