Successfully reported this slideshow.
Your SlideShare is downloading. ×

BASTA! 2022 - Einführung in Helm, der Paket-Manger für Kubernetes

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 54 Ad

BASTA! 2022 - Einführung in Helm, der Paket-Manger für Kubernetes

Download to read offline

Applikationen nach Kubernetes auszurollen kann komplex und aufwendig werden. Schon bei einer verhältnismäßig kleinen Applikation müssen mehrere Kubernetes-Ressourcen bereitgestellt werden. Hinzu kommt die Konfiguration von zielsystemabhängigen Einstellungen und Konfigurationen. Helm ist ein Paketmanager für Kubernetes, der es Entwicklern und Betreibern ermöglicht, Anwendungen und Dienste einfacher zu verpacken, zu konfigurieren und in Kubernetes-Clustern bereitzustellen. In dieser Session lernen Sie die Grundlagen von Helm und sehen in einer Livedemo, wie ein Helm Chart von Grund auf erstellt wird.

Applikationen nach Kubernetes auszurollen kann komplex und aufwendig werden. Schon bei einer verhältnismäßig kleinen Applikation müssen mehrere Kubernetes-Ressourcen bereitgestellt werden. Hinzu kommt die Konfiguration von zielsystemabhängigen Einstellungen und Konfigurationen. Helm ist ein Paketmanager für Kubernetes, der es Entwicklern und Betreibern ermöglicht, Anwendungen und Dienste einfacher zu verpacken, zu konfigurieren und in Kubernetes-Clustern bereitzustellen. In dieser Session lernen Sie die Grundlagen von Helm und sehen in einer Livedemo, wie ein Helm Chart von Grund auf erstellt wird.

Advertisement
Advertisement

More Related Content

More from Marc Müller (20)

Recently uploaded (20)

Advertisement

BASTA! 2022 - Einführung in Helm, der Paket-Manger für Kubernetes

  1. 1. ▪ ▪ ▪ ▪ ▪ ▪ ▪
  2. 2. Deployment Pod Service Pod Pod Ingress Secret Secret Secret ConfigMap HPA ReplicaSet dapr component Sidecar Pod
  3. 3. ▪ ▪ ▪ ▪ ▪
  4. 4. apiVersion: apps/v1 kind: Deployment metadata: name: helloworld-dev namespace: dev generation: 1 labels: app.kubernetes.io/instance: helloworld-dev app.kubernetes.io/name: helloworld app.kubernetes.io/version: 1.16.0 annotations: deployment.kubernetes.io/revision: '1' replicas: 2 spec: replicas: 2 selector: matchLabels: app.kubernetes.io/instance: helloworld-dev app.kubernetes.io/name: helloworld template: metadata: labels: app.kubernetes.io/instance: helloworld-dev app.kubernetes.io/name: helloworld spec: containers: - name: helloworld image: 4tecture/hello-world:v3.1 ports: - name: http containerPort: 80 protocol: TCP env: - name: DeploymentEnvironment value: Development - name: Message value: Hello dear audience! resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File imagePullPolicy: IfNotPresent securityContext: {} restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst serviceAccountName: helloworld-dev serviceAccount: helloworld-dev securityContext: {} schedulerName: default-scheduler strategy: type: RollingUpdate rollingUpdate: maxUnavailable: 25% maxSurge: 25% revisionHistoryLimit: 10 progressDeadlineSeconds: 600
  5. 5. apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: helloworld-dev namespace: dev generation: 1 labels: app.kubernetes.io/instance: helloworld-dev app.kubernetes.io/name: helloworld app.kubernetes.io/version: 1.16.0 annotations: cert-manager.io/issuer: letsencrypt spec: ingressClassName: nginx tls: - hosts: - helloworld.dev.aksdemo.4tecture.ch secretName: helloworld-dev-tls rules: - host: helloworld.dev.aksdemo.4tecture.ch http: paths: - path: / pathType: ImplementationSpecific backend: service: name: helloworld-dev port: number: 80
  6. 6. ▪ ▪ ▪ ▪ ▪ ▪
  7. 7. ▪ ▪ ▪ Source: https://helm.sh/
  8. 8. ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ Source: https://helm.sh/
  9. 9. ▪ ▪ ▪ ▪ ▪
  10. 10. Source: https://docs.helm.sh/developing_charts/#charts
  11. 11. Template Engine Release Values Chart Files Capabilities Template
  12. 12. ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪
  13. 13. ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪
  14. 14. ▪ ▪ ▪ ▪
  15. 15. ▪ ▪ ▪ apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: “My Sample" foo: {{ .Values.mySettings.foo }} bar: {{ .Values.mySettings.bar }}
  16. 16. apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: “My Sample" foo: {{ .Values.mySettings.foo | quote }} bar: {{ .Values.mySettings.bar | quote }}
  17. 17. apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-configmap data: myvalue: “My Sample" foo: {{ .Values.mySettings.foo | repeat 5 | quote }} # Output for Abc → “AbcAbcAbcAbc” bar: {{ .Values.mySettings.bar | upper | quote }}# Output for Abc → “ABC” s1: {{ .Values.mySettings.s1 | default “MyDefault” | quote }}# Output for <not set> → “MyDefault”
  18. 18. lookup <apiVersion> <kind> <namepace> <name> (lookup "v1" "Namespace" "" "mynamespace").metadata.annotations Behavior Lookup Function kubectl get pod mypod -n mynamespace lookup "v1" "Pod" "mynamespace" "mypod" kubectl get pods -n mynamespace lookup "v1" "Pod" "mynamespace" "" kubectl get pods --all-namespaces lookup "v1" "Pod" "" "" kubectl get namespace mynamespace lookup "v1" "Namespace" "" "mynamespace" kubectl get namespaces lookup "v1" "Namespace" "" ""
  19. 19. ▪ eq ne lt gt and or ▪
  20. 20. ▪ ▪ ▪
  21. 21. {{- $relName := .Release.Name }}
  22. 22. ▪ ▪ ▪ ▪ ▪
  23. 23. ▪ ▪ ▪
  24. 24. ▪ helm install <release name> <repo>/<chart> helm install foo stable/foo ▪ helm install <release name> <path to *.tgz> helm install foo foo-0.0.1.tgz ▪ helm install <release name> <path to chart> helm install foo path/to/foo ▪ helm install <release name> <url> helm install foo https://myurl.com/charts/foo-0.0.1.tgz
  25. 25. ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪
  26. 26. ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪
  27. 27. ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪
  28. 28. Azure DevOps CI Pipeline Azure DevOps CD Pipeline Container Registry Build App Test Build Container Repo Configuration Helm Upgrade AKS (Cluster) Helm Chart Package Push Cluster Pull container image Release Pull Helm chart
  29. 29. ▪ ▪
  30. 30. ▪ ▪ ▪ ▪ ▪
  31. 31. ▪ → → ▪ ▪ ▪ ▪ ▪

×