Add Kata to e2etest site 89/4489/3
authorTodd Malsbary <todd.malsbary@intel.com>
Mon, 1 Nov 2021 17:52:18 +0000 (10:52 -0700)
committerTodd Malsbary <todd.malsbary@intel.com>
Sat, 20 Nov 2021 00:36:02 +0000 (16:36 -0800)
Signed-off-by: Todd Malsbary <todd.malsbary@intel.com>
Change-Id: I6570d0d264fa05b24722c122c943048674a5c6cd

.gitignore
deploy/kata/base/kata-deploy.yaml [new file with mode: 0644]
deploy/kata/base/kata-rbac.yaml [new file with mode: 0644]
deploy/kata/base/kata-runtimeClasses.yaml [new file with mode: 0644]
deploy/kata/base/kustomization.yaml [new file with mode: 0644]
deploy/kata/kata.sh [new file with mode: 0755]
deploy/site/vm/e2etest/kata-kustomization.yaml [new file with mode: 0644]

index 867fce4..33f3583 100644 (file)
@@ -8,3 +8,4 @@ env/metal3/logs/
 deploy/clusters/addons/
 build/
 .vagrant/
+deploy/kata/logs/
diff --git a/deploy/kata/base/kata-deploy.yaml b/deploy/kata/base/kata-deploy.yaml
new file mode 100644 (file)
index 0000000..67f7a83
--- /dev/null
@@ -0,0 +1,69 @@
+---
+apiVersion: apps/v1
+kind: DaemonSet
+metadata:
+  name: kata-deploy
+  namespace: kube-system
+spec:
+  selector:
+      matchLabels:
+        name: kata-deploy
+  template:
+    metadata:
+        labels:
+          name: kata-deploy
+    spec:
+      serviceAccountName: kata-label-node
+      containers:
+      - name: kube-kata
+        image: katadocker/kata-deploy:2.1.0-rc0
+        imagePullPolicy: Always
+        lifecycle:
+          preStop:
+            exec:
+              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:
+            fieldRef:
+              fieldPath: spec.nodeName
+        securityContext:
+          privileged: false
+        volumeMounts:
+        - name: crio-conf
+          mountPath: /etc/crio/
+        - name: containerd-conf
+          mountPath: /etc/containerd/
+        - name: kata-artifacts
+          mountPath: /opt/kata/
+        - name: dbus
+          mountPath: /var/run/dbus
+        - name: systemd
+          mountPath: /run/systemd
+        - name: local-bin
+          mountPath: /usr/local/bin/
+      volumes:
+        - name: crio-conf
+          hostPath:
+            path: /etc/crio/
+        - name: containerd-conf
+          hostPath:
+            path: /etc/containerd/
+        - name: kata-artifacts
+          hostPath:
+            path: /opt/kata/
+            type: DirectoryOrCreate
+        - name: dbus
+          hostPath:
+            path: /var/run/dbus
+        - name: systemd
+          hostPath:
+            path: /run/systemd
+        - name: local-bin
+          hostPath:
+            path: /usr/local/bin/
+  updateStrategy:
+    rollingUpdate:
+      maxUnavailable: 1
+    type: RollingUpdate
diff --git a/deploy/kata/base/kata-rbac.yaml b/deploy/kata/base/kata-rbac.yaml
new file mode 100644 (file)
index 0000000..408b5be
--- /dev/null
@@ -0,0 +1,29 @@
+---
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: kata-label-node
+  namespace: kube-system
+---
+kind: ClusterRole
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: node-labeler
+rules:
+- apiGroups: [""]
+  resources: ["nodes"]
+  verbs: ["get", "patch"]
+---
+kind: ClusterRoleBinding
+apiVersion: rbac.authorization.k8s.io/v1
+metadata:
+  name: kata-label-node-rb
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: node-labeler
+subjects:
+- kind: ServiceAccount
+  name: kata-label-node
+  namespace: kube-system
+
diff --git a/deploy/kata/base/kata-runtimeClasses.yaml b/deploy/kata/base/kata-runtimeClasses.yaml
new file mode 100644 (file)
index 0000000..fd8bc85
--- /dev/null
@@ -0,0 +1,52 @@
+---
+kind: RuntimeClass
+apiVersion: node.k8s.io/v1beta1
+metadata:
+    name: kata-qemu-virtiofs
+handler: kata-qemu-virtiofs
+overhead:
+    podFixed:
+        memory: "160Mi"
+        cpu: "250m"
+scheduling:
+  nodeSelector:
+    katacontainers.io/kata-runtime: "true"
+---
+kind: RuntimeClass
+apiVersion: node.k8s.io/v1beta1
+metadata:
+    name: kata-qemu
+handler: kata-qemu
+overhead:
+    podFixed:
+        memory: "160Mi"
+        cpu: "250m"
+scheduling:
+  nodeSelector:
+    katacontainers.io/kata-runtime: "true"
+---
+kind: RuntimeClass
+apiVersion: node.k8s.io/v1beta1
+metadata:
+    name: kata-clh
+handler: kata-clh
+overhead:
+    podFixed:
+        memory: "130Mi"
+        cpu: "250m"
+scheduling:
+  nodeSelector:
+    katacontainers.io/kata-runtime: "true"
+---
+kind: RuntimeClass
+apiVersion: node.k8s.io/v1beta1
+metadata:
+    name: kata-fc
+handler: kata-fc
+overhead:
+    podFixed:
+        memory: "130Mi"
+        cpu: "250m"
+scheduling:
+  nodeSelector:
+    katacontainers.io/kata-runtime: "true"
diff --git a/deploy/kata/base/kustomization.yaml b/deploy/kata/base/kustomization.yaml
new file mode 100644 (file)
index 0000000..8aa9b02
--- /dev/null
@@ -0,0 +1,6 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- kata-deploy.yaml
+- kata-rbac.yaml
+- kata-runtimeClasses.yaml
diff --git a/deploy/kata/kata.sh b/deploy/kata/kata.sh
new file mode 100755 (executable)
index 0000000..f0d1b3c
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+set -eux -o pipefail
+
+SCRIPTDIR="$(readlink -f $(dirname ${BASH_SOURCE[0]}))"
+LIBDIR="$(dirname $(dirname ${SCRIPTDIR}))/env/lib"
+
+source $LIBDIR/logging.sh
+source $LIBDIR/common.sh
+
+KATA_VERSION="2.1.0-rc0"
+KATA_WEBHOOK_VERSION="2.1.0-rc0"
+
+KATA_DEPLOY_URL="https://raw.githubusercontent.com/kata-containers/kata-containers/${KATA_VERSION}/tools/packaging/kata-deploy"
+KATA_WEBHOOK_URL="https://raw.githubusercontent.com/kata-containers/tests/${KATA_WEBHOOK_VERSION}/kata-webhook"
+KATA_WEBHOOK_DIR="/opt/src/kata_webhook"
+KATA_WEBHOOK_RUNTIMECLASS="kata-clh"
+
+# This may be used to update the in-place Kata YAML files from the
+# upstream project.
+function build_source {
+    mkdir -p ${SCRIPTDIR}/base
+    curl -sL ${KATA_DEPLOY_URL}/kata-rbac/base/kata-rbac.yaml -o ${SCRIPTDIR}/base/kata-rbac.yaml
+    curl -sL ${KATA_DEPLOY_URL}/kata-deploy/base/kata-deploy.yaml -o ${SCRIPTDIR}/base/kata-deploy.yaml
+    curl -sL ${KATA_DEPLOY_URL}/runtimeclasses/kata-runtimeClasses.yaml -o ${SCRIPTDIR}/base/kata-runtimeClasses.yaml
+    pushd ${SCRIPTDIR}/base && kustomize create --autodetect && popd
+}
+
+case $1 in
+    "build-source") build_source ;;
+    *) cat <<EOF
+Usage: $(basename $0) COMMAND
+
+Commands:
+  build-source  - Rebuild the in-tree Kata YAML files
+EOF
+       ;;
+esac
diff --git a/deploy/site/vm/e2etest/kata-kustomization.yaml b/deploy/site/vm/e2etest/kata-kustomization.yaml
new file mode 100644 (file)
index 0000000..d7e82c2
--- /dev/null
@@ -0,0 +1,13 @@
+---
+apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
+kind: Kustomization
+metadata:
+  name: kata
+  namespace: flux-system
+spec:
+  interval: 10m0s
+  path: ./deploy/kata/base
+  prune: true
+  sourceRef:
+    kind: GitRepository
+    name: icn