Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Helm introduction

Helm introduction

Herunterladen, um offline zu lesen

Applikationen nach Kubernetes zu 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 Paket-Manager 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 zu 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 Paket-Manager 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.

Weitere Verwandte Inhalte

Weitere von Marc Müller

Ähnliche Bücher

Kostenlos mit einer 30-tägigen Testversion von Scribd

Alle anzeigen

Ähnliche Hörbücher

Kostenlos mit einer 30-tägigen Testversion von Scribd

Alle anzeigen

Helm introduction

  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. ▪ → → ▪ ▪ ▪ ▪ ▪

×