mirror of
				https://github.com/kata-containers/kata-containers.git
				synced 2025-10-31 17:37:20 +00:00 
			
		
		
		
	kata-deploy: Add Helm Chart
For easier handling of kata-deploy we can leverage a Helm chart to get rid of all the base and overlays for the various components Signed-off-by: Zvonko Kaiser <zkaiser@nvidia.com>
This commit is contained in:
		
				
					committed by
					
						 Fabiano Fidêncio
						Fabiano Fidêncio
					
				
			
			
				
	
			
			
			
						parent
						
							43dca8deb4
						
					
				
				
					commit
					94b3348d3c
				
			| @@ -191,12 +191,8 @@ function deploy_kata() { | |||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	if [ "${KATA_HOST_OS}" = "cbl-mariner" ]; then | 	if [ "${KATA_HOST_OS}" = "cbl-mariner" ]; then | ||||||
| 		yq -i \ | 		ALLOWED_HYPERVISOR_ANNOTATIONS="initrd kernel default_vcpus" | ||||||
| 		  '.spec.template.spec.containers[0].env[6].value = "initrd kernel default_vcpus"' \ | 		HOST_OS=${KATA_HOST_OS} | ||||||
| 		  "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" |  | ||||||
| 		yq -i \ |  | ||||||
| 		  ".spec.template.spec.containers[0].env += [{\"name\": \"HOST_OS\", \"value\": \"${KATA_HOST_OS}\"}]" \ |  | ||||||
| 		  "${tools_dir}/packaging/kata-deploy/kata-deploy/base/kata-deploy.yaml" |  | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	if [ "${KATA_HYPERVISOR}" = "qemu" ]; then | 	if [ "${KATA_HYPERVISOR}" = "qemu" ]; then | ||||||
|   | |||||||
							
								
								
									
										33
									
								
								tools/packaging/kata-deploy/helm-chart/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								tools/packaging/kata-deploy/helm-chart/Makefile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | # Copyright (c) 2024 NVIDIA Corporation | ||||||
|  | # | ||||||
|  | # SPDX-License-Identifier: Apache-2.0 | ||||||
|  | # | ||||||
|  |  | ||||||
|  | VERSION_FILE := ../../../../VERSION | ||||||
|  |  | ||||||
|  | release: | ||||||
|  | 	sed -i 's/appVersion: .*/appVersion: $(shell cat $(VERSION_FILE))/g' kata-deploy/Chart.yaml | ||||||
|  | all: package | ||||||
|  |  | ||||||
|  | package: helm release | ||||||
|  | 	$(HELM) package ./kata-deploy | ||||||
|  |  | ||||||
|  | .PHONY: clean | ||||||
|  |  | ||||||
|  | clean: | ||||||
|  | 	rm kata-deploy-*.tgz | ||||||
|  | 	 | ||||||
|  | # go-get-tool will 'go get' any package $2 and install it to $1. | ||||||
|  | PROJECT_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) | ||||||
|  | define go-get-tool | ||||||
|  | @[ -f $(PROJECT_DIR)/bin/$(1) ] || command -v $(1) >/dev/null 2>&1 || { \ | ||||||
|  | set -e ;\ | ||||||
|  | echo "Downloading $(2)" ;\ | ||||||
|  | GOBIN=$(PROJECT_DIR)/bin go install $(2) ;\ | ||||||
|  | rm -rf $$TMP_DIR ;\ | ||||||
|  | } | ||||||
|  | endef | ||||||
|  |  | ||||||
|  | HELM = $(shell pwd)/bin/helm | ||||||
|  | helm: ## Download helm locally if necessary. | ||||||
|  | 	$(call go-get-tool,$(HELM),helm.sh/helm/v3/cmd/helm@latest) | ||||||
| @@ -0,0 +1,28 @@ | |||||||
|  | # Copyright (c) 2024 NVIDIA Corporation | ||||||
|  | # | ||||||
|  | # SPDX-License-Identifier: Apache-2.0 | ||||||
|  | # | ||||||
|  | # Patterns to ignore when building packages. | ||||||
|  | # This supports shell glob matching, relative path matching, and | ||||||
|  | # negation (prefixed with !). Only one pattern per line. | ||||||
|  | .DS_Store | ||||||
|  | # Common VCS dirs | ||||||
|  | .git/ | ||||||
|  | .gitignore | ||||||
|  | .bzr/ | ||||||
|  | .bzrignore | ||||||
|  | .hg/ | ||||||
|  | .hgignore | ||||||
|  | .svn/ | ||||||
|  | # Common backup files | ||||||
|  | *.swp | ||||||
|  | *.bak | ||||||
|  | *.tmp | ||||||
|  | *.orig | ||||||
|  | *~ | ||||||
|  | # Various IDEs | ||||||
|  | .project | ||||||
|  | .idea/ | ||||||
|  | *.tmproj | ||||||
|  | .vscode/ | ||||||
|  |  | ||||||
| @@ -0,0 +1,24 @@ | |||||||
|  | apiVersion: v2 | ||||||
|  | name: kata-deploy | ||||||
|  | description: A Helm chart for deploying Kata Containers | ||||||
|  |  | ||||||
|  | # A chart can be either an 'application' or a 'library' chart. | ||||||
|  | # | ||||||
|  | # Application charts are a collection of templates that can be packaged into versioned archives | ||||||
|  | # to be deployed. | ||||||
|  | # | ||||||
|  | # Library charts provide useful utilities or functions for the chart developer. They're included as | ||||||
|  | # a dependency of application charts to inject those utilities and functions into the rendering | ||||||
|  | # pipeline. Library charts do not define any templates and therefore cannot be deployed. | ||||||
|  | type: application | ||||||
|  |  | ||||||
|  | # This is the chart version. This version number should be incremented each time you make changes | ||||||
|  | # to the chart and its templates, including the app version. | ||||||
|  | # Versions are expected to follow Semantic Versioning (https://semver.org/) | ||||||
|  | version: "3.6.0" | ||||||
|  |  | ||||||
|  | # This is the version number of the application being deployed. This version number should be | ||||||
|  | # incremented each time you make changes to the application. Versions are not expected to | ||||||
|  | # follow Semantic Versioning. They should reflect the version the application is using. | ||||||
|  | # It is recommended to use it with quotes. | ||||||
|  | appVersion: 3.6.0 | ||||||
| @@ -0,0 +1,20 @@ | |||||||
|  | # Copyright (c) 2024 NVIDIA Corporation | ||||||
|  | # | ||||||
|  | # SPDX-License-Identifier: Apache-2.0 | ||||||
|  | # | ||||||
|  |  | ||||||
|  | {{/* | ||||||
|  | Set the correct containerd conf path depending on the k8s distribution | ||||||
|  | */}} | ||||||
|  | {{- define "containerdConfPath" -}} | ||||||
|  | {{- if eq .k8sDistribution "k8s" -}} | ||||||
|  | /etc/containerd/ | ||||||
|  | {{- else if eq .k8sDistribution "rke2" -}} | ||||||
|  | /var/lib/rancher/rke2/agent/etc/containerd/ | ||||||
|  | {{- else if eq .k8sDistribution "k3s" -}} | ||||||
|  |  /var/lib/rancher/k3s/agent/etc/containerd/ | ||||||
|  | {{- else if eq .k8sDistribution "k0s" -}} | ||||||
|  | /etc/k0s/containerd.d/ | ||||||
|  | {{- end -}} | ||||||
|  | {{- end -}} | ||||||
|  |  | ||||||
| @@ -0,0 +1,92 @@ | |||||||
|  | apiVersion: apps/v1 | ||||||
|  | kind: DaemonSet | ||||||
|  | metadata: | ||||||
|  |   name: {{ .Chart.Name }} | ||||||
|  |   namespace: {{ .Release.Namespace }} | ||||||
|  | spec: | ||||||
|  |   selector: | ||||||
|  |     matchLabels: | ||||||
|  |       name: {{ .Chart.Name }} | ||||||
|  |   template: | ||||||
|  |     metadata: | ||||||
|  |       labels: | ||||||
|  |         name: {{ .Chart.Name }} | ||||||
|  |     spec: | ||||||
|  | {{- with .Values.imagePullSecrets }} | ||||||
|  |       imagePullSecrets: | ||||||
|  | {{- toYaml . | nindent 6 }} | ||||||
|  | {{- end }} | ||||||
|  |       serviceAccountName: {{ .Chart.Name }}-sa | ||||||
|  |       hostPID: true | ||||||
|  |       containers: | ||||||
|  |       - name: kube-kata | ||||||
|  |         image: {{ .Values.image.reference }}:{{ default .Chart.AppVersion .Values.image.tag }} | ||||||
|  |         imagePullPolicy: {{ .Values.imagePullPolicy }} | ||||||
|  |         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 | ||||||
|  |         - name: DEBUG | ||||||
|  |           value: {{ .Values.env.debug | quote }} | ||||||
|  |         - name: SHIMS | ||||||
|  |           value: {{ .Values.env.shims | quote }} | ||||||
|  |         - name: DEFAULT_SHIM | ||||||
|  |           value: {{ .Values.env.defaultShim | quote }} | ||||||
|  |         - name: CREATE_RUNTIMECLASSES | ||||||
|  |           value: {{ .Values.env.createRuntimeClasses | quote }} | ||||||
|  |         - name: CREATE_DEFAULT_RUNTIMECLASS | ||||||
|  |           value: {{ .Values.env.createDefaultRuntimeClass | quote }} | ||||||
|  |         - name: ALLOWED_HYPERVISOR_ANNOTATIONS | ||||||
|  |           value: {{ .Values.env.allowedHypervisorAnnotations | quote }} | ||||||
|  |         - name: SNAPSHOTTER_HANDLER_MAPPING | ||||||
|  |           value: {{ .Values.env.snapshotterHandlerMapping | quote }} | ||||||
|  |         - name: AGENT_HTTPS_PROXY | ||||||
|  |           value: {{ .Values.env.agentHttpsProxy | quote }} | ||||||
|  |         - name: AGENT_NO_PROXY | ||||||
|  |           value: {{ .Values.env.agentNoProxy | quote }} | ||||||
|  |         - name: PULL_TYPE_MAPPING | ||||||
|  |           value: {{ .Values.env.pullTypeMapping | quote }} | ||||||
|  | {{- with .Values.env.hostOS }} | ||||||
|  |         - name: HOST_OS | ||||||
|  |           value: {{ . | quote }} | ||||||
|  | {{- end }} | ||||||
|  |         securityContext: | ||||||
|  |           privileged: true | ||||||
|  |         volumeMounts: | ||||||
|  |         - name: crio-conf | ||||||
|  |           mountPath: /etc/crio/ | ||||||
|  |         - name: containerd-conf | ||||||
|  |           mountPath: /etc/containerd/ | ||||||
|  |         - name: kata-artifacts | ||||||
|  |           mountPath: /opt/kata/ | ||||||
|  |         - name: local-bin | ||||||
|  |           mountPath: /usr/local/bin/ | ||||||
|  |         - name: host | ||||||
|  |           mountPath: /host/ | ||||||
|  |       volumes: | ||||||
|  |       - name: crio-conf | ||||||
|  |         hostPath: | ||||||
|  |           path: /etc/crio/ | ||||||
|  |       - name: containerd-conf | ||||||
|  |         hostPath: | ||||||
|  |           path: '{{- template "containerdConfPath" .Values }}' | ||||||
|  |       - name: kata-artifacts | ||||||
|  |         hostPath: | ||||||
|  |           path: /opt/kata/ | ||||||
|  |           type: DirectoryOrCreate | ||||||
|  |       - name: local-bin | ||||||
|  |         hostPath: | ||||||
|  |           path: /usr/local/bin/ | ||||||
|  |       - name: host | ||||||
|  |         hostPath: | ||||||
|  |           path: / | ||||||
|  |   updateStrategy: | ||||||
|  |     rollingUpdate: | ||||||
|  |       maxUnavailable: 1 | ||||||
|  |     type: RollingUpdate | ||||||
| @@ -0,0 +1,31 @@ | |||||||
|  | --- | ||||||
|  | apiVersion: v1 | ||||||
|  | kind: ServiceAccount | ||||||
|  | metadata: | ||||||
|  |   name: {{ .Chart.Name }}-sa | ||||||
|  |   namespace: {{ .Release.Namespace }} | ||||||
|  | --- | ||||||
|  | kind: ClusterRole | ||||||
|  | apiVersion: rbac.authorization.k8s.io/v1 | ||||||
|  | metadata: | ||||||
|  |   name: {{ .Chart.Name }}-role | ||||||
|  | rules: | ||||||
|  | - apiGroups: [""] | ||||||
|  |   resources: ["nodes"] | ||||||
|  |   verbs: ["get", "patch"] | ||||||
|  | - apiGroups: ["node.k8s.io"] | ||||||
|  |   resources: ["runtimeclasses"] | ||||||
|  |   verbs: ["create", "delete", "get", "list", "patch", "update", "watch"] | ||||||
|  | --- | ||||||
|  | kind: ClusterRoleBinding | ||||||
|  | apiVersion: rbac.authorization.k8s.io/v1 | ||||||
|  | metadata: | ||||||
|  |   name: {{ .Chart.Name }}-rb | ||||||
|  | roleRef: | ||||||
|  |   apiGroup: rbac.authorization.k8s.io | ||||||
|  |   kind: ClusterRole | ||||||
|  |   name: {{ .Chart.Name }}-role | ||||||
|  | subjects: | ||||||
|  | - kind: ServiceAccount | ||||||
|  |   name: {{ .Chart.Name }}-sa | ||||||
|  |   namespace: {{ .Release.Namespace }} | ||||||
| @@ -0,0 +1,19 @@ | |||||||
|  | imagePullPolicy: Always | ||||||
|  | imagePullSecrets: [] | ||||||
|  | image: | ||||||
|  |   reference: quay.io/kata-containers/kata-deploy | ||||||
|  |   tag: "" | ||||||
|  | # k8s-dist can be k8s, k3s, rke2, k0s | ||||||
|  | k8sDistribution: "k8s" | ||||||
|  | env: | ||||||
|  |   debug: "false" | ||||||
|  |   shims: "clh cloud-hypervisor dragonball fc qemu qemu-coco-dev qemu-runtime-rs qemu-sev qemu-snp qemu-tdx stratovirt qemu-nvidia-gpu qemu-nvidia-gpu-snp qemu-nvidia-gpu-tdx" | ||||||
|  |   defaultShim: "qemu" | ||||||
|  |   createRuntimeClasses: "false" | ||||||
|  |   createDefaultRuntimeClass: "false" | ||||||
|  |   allowedHypervisorAnnotations: "" | ||||||
|  |   snapshotterHandlerMapping: "" | ||||||
|  |   agentHttpsProxy: "" | ||||||
|  |   agentNoProxy: "" | ||||||
|  |   pullTypeMapping: "" | ||||||
|  |   hostOS: "" | ||||||
		Reference in New Issue
	
	Block a user