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 | ||||
|  | ||||
| 	if [ "${KATA_HOST_OS}" = "cbl-mariner" ]; then | ||||
| 		yq -i \ | ||||
| 		  '.spec.template.spec.containers[0].env[6].value = "initrd kernel default_vcpus"' \ | ||||
| 		  "${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" | ||||
| 		ALLOWED_HYPERVISOR_ANNOTATIONS="initrd kernel default_vcpus" | ||||
| 		HOST_OS=${KATA_HOST_OS} | ||||
| 	fi | ||||
|  | ||||
| 	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