mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-29 20:24:31 +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:
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: ""
|
Loading…
Reference in New Issue
Block a user