This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
универсальный_helm-чарт [2026/01/26 09:51] val [Шаг 3. Последовательно изучаем синтаксис Helm, решая возникающие задачи] |
универсальный_helm-чарт [2026/03/16 11:38] (current) val |
||
|---|---|---|---|
| Line 23: | Line 23: | ||
| ===== Запись вебинара ===== | ===== Запись вебинара ===== | ||
| + | * Ютуб: [[https://youtu.be/8BbRGP2t7_Q]] | ||
| + | * Рутуб: [[https://rutube.ru/video/private/963e0e91656ec459a4377456b350bd8c/]] | ||
| + | * Вк: [[https://vkvideo.ru/video-2190892_456239497]] | ||
| * Тэги: Kubernetes, Helm, ArgoCD | * Тэги: Kubernetes, Helm, ArgoCD | ||
| Line 72: | Line 75: | ||
| <code> | <code> | ||
| ... | ... | ||
| - | kube1:~/webd-k8s# curl http://pywebd.corpX.un | + | server# curl http://pywebd.corpX.un |
| </code> | </code> | ||
| * Добавляем tls, общий env.yaml, комментарии, tpl, [], quote | * Добавляем tls, общий env.yaml, комментарии, tpl, [], quote | ||
| Line 83: | Line 86: | ||
| </code> | </code> | ||
| * Добавляем Сertificate через [[Система Kubernetes#cert-manager]], все похоже на Ingress | * Добавляем Сertificate через [[Система Kubernetes#cert-manager]], все похоже на Ingress | ||
| - | * Меняем запись А в DNS для приложения pywebd:ver1.1, функции eq, and ([[Система Kubernetes#Service]] targetPort, loadBalancerIP) тестируем без Ingress и Сertificate | + | <code> |
| + | ... | ||
| + | kube1:~/webd-k8s# curl https://pywebd.corpX.un | ||
| + | </code> | ||
| + | * Меняем запись А на свободный IP [[Система Kubernetes#MetalLB]] в DNS для приложения pywebd, используем ver1.1, функции eq, and ([[Система Kubernetes#Service]] loadBalancerIP) тестируем без Ingress и Сertificate | ||
| + | <code> | ||
| + | ... | ||
| + | kube1:~/webd-k8s# curl http://pywebd.corpX.un | ||
| + | </code> | ||
| * Функции toYaml, nindent, оператор with (env, volumes, volumeMounts в [[Система Kubernetes#Deployment]] и [[Система Kubernetes#ConfigMap, Secret]] для pywebd:ver1.2) | * Функции toYaml, nindent, оператор with (env, volumes, volumeMounts в [[Система Kubernetes#Deployment]] и [[Система Kubernetes#ConfigMap, Secret]] для pywebd:ver1.2) | ||
| + | <code> | ||
| + | ... | ||
| + | kube1:~/webd-k8s# curl https://pywebd.corpX.un | ||
| + | </code> | ||
| ==== Итоговый чарт ==== | ==== Итоговый чарт ==== | ||
| Line 107: | Line 121: | ||
| # PYWEBD_DOC_ROOT: /var/www/ | # PYWEBD_DOC_ROOT: /var/www/ | ||
| # PYWEBD_PORT: 4443 | # PYWEBD_PORT: 4443 | ||
| - | # APWEBD_HOSTNAME: "apwebd.corpX.un" | ||
| - | # KEYCLOAK_HOSTNAME: "keycloak.corpX.un" | ||
| - | # REALM_NAME: "corpX" | ||
| service: | service: | ||
| Line 267: | Line 278: | ||
| name: {{ .Values.certificate.issuerRef_name }} | name: {{ .Values.certificate.issuerRef_name }} | ||
| kind: {{ .Values.certificate.issuerRef_kind }} | kind: {{ .Values.certificate.issuerRef_kind }} | ||
| + | privateKey: | ||
| + | rotationPolicy: Always | ||
| {{- end }} | {{- end }} | ||
| </code> | </code> | ||
| Line 273: | Line 286: | ||
| <code> | <code> | ||
| - | kube1:~/webd-k8s# cp uni-webd-chart/values.yaml apps/gowebd/values.yaml | + | kube1:~/webd-k8s# ###cp uni-webd-chart/values.yaml apps/gowebd/values.yaml |
| - | kube1:~/webd-k8s# cp uni-webd-chart/values.yaml apps/pywebd/values.yaml | + | kube1:~/webd-k8s# ###cp uni-webd-chart/values.yaml apps/pywebd/values.yaml |
| kube1:~/webd-k8s# vim uni-webd-chart/values.yaml | kube1:~/webd-k8s# vim uni-webd-chart/values.yaml | ||
| Line 316: | Line 329: | ||
| env: | env: | ||
| - | PYWEBD_DOC_ROOT: /var/www2/ | + | PYWEBD_DOC_ROOT: /var/www/ |
| PYWEBD_PORT: 4443 | PYWEBD_PORT: 4443 | ||
| Line 343: | Line 356: | ||
| mountPath: /etc/pywebd/pywebd.key | mountPath: /etc/pywebd/pywebd.key | ||
| </code><code> | </code><code> | ||
| + | kube1:~/webd-k8s# helm template my-pywebd uni-webd-chart/ -f apps/pywebd/values.yaml -f env.yaml | ||
| + | |||
| + | kube1:~/webd-k8s# helm upgrade -i my-pywebd uni-webd-chart/ -f env.yaml -f apps/pywebd/values.yaml -n my-ns --create-namespace | ||
| + | </code> | ||
| + | |||
| + | Развернем через ArgoCD | ||
| + | |||
| + | <code> | ||
| kube1:~/webd-k8s# cat apps/apwebd/values.yaml | kube1:~/webd-k8s# cat apps/apwebd/values.yaml | ||
| </code><code> | </code><code> | ||
| Line 378: | Line 399: | ||
| * [[Контроллер ArgoCD#Управление приложениями через kubectl]] | * [[Контроллер ArgoCD#Управление приложениями через kubectl]] | ||
| + | * Увеличиваем версию gowebd | ||
| ==== Множество приложений ==== | ==== Множество приложений ==== | ||
| * [[Контроллер ArgoCD#Развертывание множества приложений через ApplicationSet]] | * [[Контроллер ArgoCD#Развертывание множества приложений через ApplicationSet]] | ||
| - | * Увеличиваем версию gowebd | ||
| * Добавляем apwebd | * Добавляем apwebd | ||
| + | |||
| + | ===== Добавляем lifecycle.postStart и Gateway API ===== | ||
| + | |||
| + | <code> | ||
| + | kube1:~/webd-k8s# cat apps/htwebd/values.yaml | ||
| + | </code><code> | ||
| + | hostname: htwebd | ||
| + | |||
| + | replicaCount: 2 | ||
| + | image: | ||
| + | repository: httpd | ||
| + | |||
| + | lifecycle: | ||
| + | postStart: | ||
| + | - /bin/sh | ||
| + | - -c | ||
| + | - cd /usr/local/apache2/htdocs/ && echo \"<h1>Hello from htwebd on $(hostname) ver1.1</h1>\" > index.html | ||
| + | </code><code> | ||
| + | kube1:~/webd-k8s# cat uni-webd-chart/templates/my-webd-deployment.yaml | ||
| + | </code><code> | ||
| + | ... | ||
| + | image: ... | ||
| + | {{- with .Values.lifecycle.postStart }} | ||
| + | lifecycle: | ||
| + | postStart: | ||
| + | exec: | ||
| + | command: | ||
| + | {{- range . }} | ||
| + | - "{{ . }}" | ||
| + | {{- end }} | ||
| + | {{- end }} | ||
| + | ... | ||
| + | </code><code> | ||
| + | kube1:~/webd-k8s# cp -v my-httproute.yaml uni-webd-chart/templates/ | ||
| + | kube1:~/webd-k8s# cp -v my-gateway.yaml uni-webd-chart/templates/ | ||
| + | |||
| + | kube1:~/webd-k8s# cat uni-webd-chart/values.yaml | ||
| + | </code><code> | ||
| + | ... | ||
| + | gateway: | ||
| + | enabled: false | ||
| + | className: traefik | ||
| + | httpPort: 8000 | ||
| + | httpsPort: 8443 | ||
| + | hostTemplate: "{{ .Values.hostname }}.{{ .Values.domain }}" | ||
| + | # secretName: webd-tls | ||
| + | ... | ||
| + | </code><code> | ||
| + | kube1:~/webd-k8s# cat apps/htwebd/values.yaml | ||
| + | </code><code> | ||
| + | ... | ||
| + | gateway: | ||
| + | enabled: true | ||
| + | secretName: htwebd-tls | ||
| + | |||
| + | certificate: | ||
| + | enabled: true | ||
| + | secretName: htwebd-tls | ||
| + | </code><code> | ||
| + | kube1:~/webd-k8s# cat uni-webd-chart/templates/my-gateway.yaml | ||
| + | </code><code> | ||
| + | {{- if .Values.gateway.enabled -}} | ||
| + | apiVersion: gateway.networking.k8s.io/v1 | ||
| + | kind: Gateway | ||
| + | metadata: | ||
| + | name: {{ .Release.Name }}-gateway | ||
| + | spec: | ||
| + | gatewayClassName: {{ .Values.gateway.className }} | ||
| + | listeners: | ||
| + | - name: http | ||
| + | port: {{ .Values.gateway.httpPort }} | ||
| + | protocol: HTTP | ||
| + | - name: https | ||
| + | hostname: {{ tpl .Values.gateway.hostTemplate $ }} | ||
| + | protocol: HTTPS | ||
| + | port: {{ .Values.gateway.httpsPort }} | ||
| + | tls: | ||
| + | mode: Terminate | ||
| + | certificateRefs: | ||
| + | - kind: Secret | ||
| + | name: {{ .Values.gateway.secretName }} | ||
| + | {{- end }} | ||
| + | </code><code> | ||
| + | kube1:~/webd-k8s# cat uni-webd-chart/templates/my-httproute.yaml | ||
| + | </code><code> | ||
| + | {{- if .Values.gateway.enabled -}} | ||
| + | apiVersion: gateway.networking.k8s.io/v1 | ||
| + | kind: HTTPRoute | ||
| + | metadata: | ||
| + | name: {{ .Release.Name }}-httproute | ||
| + | spec: | ||
| + | hostnames: | ||
| + | - {{ tpl .Values.gateway.hostTemplate $ }} | ||
| + | parentRefs: | ||
| + | - name: {{ .Release.Name }}-gateway | ||
| + | rules: | ||
| + | - matches: | ||
| + | - path: | ||
| + | type: Exact | ||
| + | value: / | ||
| + | backendRefs: | ||
| + | - name: {{ .Release.Name }}-svc | ||
| + | port: {{ .Values.service.port }} | ||
| + | {{- end }} | ||
| + | </code><code> | ||
| + | kube1:~/webd-k8s# helm upgrade -i my-htwebd uni-webd-chart/ -f env.yaml -f apps/htwebd/values.yaml -n my-ns --create-namespace | ||
| + | </code> | ||
| ===== Подготовка к вебинару ===== | ===== Подготовка к вебинару ===== | ||