diff --git a/kata-deploy/Dockerfile b/kata-deploy/Dockerfile index bc1e046c26..940407a432 100644 --- a/kata-deploy/Dockerfile +++ b/kata-deploy/Dockerfile @@ -1,9 +1,9 @@ FROM centos/systemd -ARG KATA_VER=1.4.0 +ARG KATA_VER ARG ARCH=x86_64 +ARG KUBE_ARCH=amd64 ARG KATA_URL=https://github.com/kata-containers/runtime/releases/download/${KATA_VER} ARG KATA_FILE=kata-static-${KATA_VER}-${ARCH}.tar.xz -ARG KUBECTL_VER=v1.10.2 RUN \ curl -sOL ${KATA_URL}/${KATA_FILE} && \ @@ -12,7 +12,7 @@ tar xvf ${KATA_FILE} -C /opt/kata-artifacts/ && \ rm ${KATA_FILE} RUN \ -curl -s -o /bin/kubectl https://storage.googleapis.com/kubernetes-release/release/${KUBECTL_VER}/bin/linux/amd64/kubectl && \ +curl -Lso /bin/kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/${KUBE_ARCH}/kubectl && \ chmod +x /bin/kubectl COPY scripts /opt/kata-artifacts/scripts diff --git a/kata-deploy/kata-cleanup.yaml b/kata-deploy/kata-cleanup.yaml index 92b75d9efe..7f7308424b 100644 --- a/kata-deploy/kata-cleanup.yaml +++ b/kata-deploy/kata-cleanup.yaml @@ -20,14 +20,7 @@ spec: - name: kube-kata-cleanup image: katadocker/kata-deploy imagePullPolicy: Always - command: [ "sh", "-c" ] - args: - - kubectl label node $NODE_NAME kata-containers.io/container-runtime- kata-containers.io/kata-runtime-; - systemctl daemon-reload; - systemctl restart containerd; - systemctl restart crio; - systemctl restart kubelet; - sleep infinity; + command: [ "bash", "-c", "/opt/kata-artifacts/scripts/kata-deploy.sh", "reset" ] env: - name: NODE_NAME valueFrom: diff --git a/kata-deploy/kata-deploy.yaml b/kata-deploy/kata-deploy.yaml index f618784fe4..a30c93a5e6 100644 --- a/kata-deploy/kata-deploy.yaml +++ b/kata-deploy/kata-deploy.yaml @@ -2,71 +2,27 @@ apiVersion: apps/v1 kind: DaemonSet metadata: - name: kubelet-runtime-labeler + name: kata-deploy namespace: kube-system spec: selector: matchLabels: - name: kubelet-runtime-labeler + name: kata-deploy template: metadata: labels: - name: kubelet-runtime-labeler + name: kata-deploy spec: serviceAccountName: kata-label-node containers: - - name: kubelet-runtime-labeler-pod - image: katadocker/kata-deploy - imagePullPolicy: Always - command: [ "sh", "-c" ] - args: - - printenv NODE_NAME; - kubectl get node $NODE_NAME --show-labels; - kubectl label node $NODE_NAME kata-containers.io/container-runtime=$(kubectl describe node $NODE_NAME | awk -F'[:]' '/Container Runtime Version/ {print $2}' | tr -d ' '); - kubectl get node $NODE_NAME --show-labels; - sleep infinity; - env: - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - securityContext: - privileged: false - updateStrategy: - rollingUpdate: - maxUnavailable: 1 - type: RollingUpdate ---- -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: kubelet-cri-o-kata - namespace: kube-system -spec: - selector: - matchLabels: - name: kubelet-cri-o-kata - template: - metadata: - labels: - name: kubelet-cri-o-kata - spec: - serviceAccountName: kata-label-node - nodeSelector: - kata-containers.io/container-runtime: cri-o - containers: - name: kube-kata image: katadocker/kata-deploy imagePullPolicy: Always lifecycle: preStop: exec: - command: ["sh", "-c", "/opt/kata-artifacts/scripts/remove-kata-crio.sh && kubectl label node $NODE_NAME --overwrite kata-containers.io/kata-runtime=cleanup"] - command: [ "sh", "-ce" ] - args: - - /opt/kata-artifacts/scripts/install-kata-crio.sh && kubectl label node $NODE_NAME kata-containers.io/kata-runtime=true; - kubectl get node $NODE_NAME --show-labels; - sleep infinity; + command: ["bash", "-c", "/opt/kata-artifacts/scripts/kata-deploy.sh", "cleanup"] + command: [ "bash", "-c", "/opt/kata-artifacts/scripts/kata-deploy.sh", "install" ] env: - name: NODE_NAME valueFrom: @@ -77,6 +33,8 @@ spec: volumeMounts: - name: crio-conf mountPath: /etc/crio/ + - name: containerd-conf + mountPath: /etc/containerd/ - name: kata-artifacts mountPath: /opt/kata/ - name: dbus @@ -87,6 +45,9 @@ spec: - name: crio-conf hostPath: path: /etc/crio/ + - name: containerd-conf + hostPath: + path: /etc/containerd/ - name: kata-artifacts hostPath: path: /opt/kata/ @@ -101,69 +62,3 @@ spec: rollingUpdate: maxUnavailable: 1 type: RollingUpdate ---- -apiVersion: apps/v1 -kind: DaemonSet -metadata: - name: kubelet-cri-containerd-kata - namespace: kube-system -spec: - selector: - matchLabels: - name: kubelet-cri-containerd-kata - template: - metadata: - labels: - name: kubelet-cri-containerd-kata - spec: - serviceAccountName: kata-label-node - nodeSelector: - kata-containers.io/container-runtime: containerd - containers: - - name: kube-kata - image: katadocker/kata-deploy - imagePullPolicy: Always - lifecycle: - preStop: - exec: - command: ["sh", "-c", "/opt/kata-artifacts/scripts/remove-kata-containerd.sh && kubectl label node $NODE_NAME --overwrite kata-containers.io/kata-runtime=cleanup"] - command: [ "sh", "-c" ] - args: - - /opt/kata-artifacts/scripts/install-kata-containerd.sh && kubectl label node $NODE_NAME kata-containers.io/kata-runtime=true; - kubectl get node $NODE_NAME --show-labels; - sleep infinity; - env: - - name: NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - securityContext: - privileged: false - volumeMounts: - - name: containerd-conf - mountPath: /etc/containerd/ - - name: kata-artifacts - mountPath: /opt/kata/ - - name: dbus - mountPath: /var/run/dbus - - name: systemd - mountPath: /run/systemd - volumes: - - name: containerd-conf - hostPath: - path: /etc/containerd/ - type: DirectoryOrCreate - - name: kata-artifacts - hostPath: - path: /opt/kata/ - type: DirectoryOrCreate - - name: dbus - hostPath: - path: /var/run/dbus - - name: systemd - hostPath: - path: /run/systemd - updateStrategy: - rollingUpdate: - maxUnavailable: 1 - type: RollingUpdate diff --git a/kata-deploy/scripts/install-kata-containerd.sh b/kata-deploy/scripts/install-kata-containerd.sh deleted file mode 100755 index 085b83971b..0000000000 --- a/kata-deploy/scripts/install-kata-containerd.sh +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/sh - -echo "copying kata artifacts onto host" -cp -R /opt/kata-artifacts/opt/kata/* /opt/kata/ -chmod +x /opt/kata/bin/* - -# Configure containerd to use Kata: -echo "create containerd configuration for Kata" -mkdir -p /etc/containerd/ - -if [ -f /etc/containerd/config.toml ]; then - cp /etc/containerd/config.toml /etc/containerd/config.toml.bak -fi - -cat <&2 + exit 1 +} + +function print_usage() { + echo "Usage: $0 [install/cleanup/reset]" +} + +function get_container_runtime() { + local runtime=$(kubectl describe node $NODE_NAME) + if [ "$?" -ne 0 ]; then + die "invalid node name" + fi + echo "$runtime" | awk -F'[:]' '/Container Runtime Version/ {print $2}' | tr -d ' ' +} + +function install_artifacts() { + echo "copying kata artifacts onto host" + cp -a /opt/kata-artifacts/opt/kata/* /opt/kata/ + chmod +x /opt/kata/bin/* +} + +function configure_cri_runtime() { + case $1 in + crio) + configure_crio + ;; + containerd) + configure_containerd + ;; + esac + systemctl daemon-reload + systemctl restart $1 +} + +function configure_crio() { + # Configure crio to use Kata: + echo "Add Kata Containers as a supported runtime for CRIO:" + + # backup the CRIO.conf only if a backup doesn't already exist (don't override original) + cp -n "$crio_conf_file" "$crio_conf_file_backup" + + cat <