User Tools

Site Tools


универсальный_helm-чарт

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
универсальный_helm-чарт [2026/01/25 09:06]
val
универсальный_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 70: Line 73:
 </​code>​ </​code>​
   * Включение через enabled, цикл range (host в [[Система Kubernetes#​ingress example]]) и знак "​$"​ (.Release.Name)   * Включение через enabled, цикл range (host в [[Система Kubernetes#​ingress example]]) и знак "​$"​ (.Release.Name)
-  ​* Добавляем tls, общий env.yaml, ​[], tpl, quote+<​code>​ 
 +... 
 +server# curl http://​pywebd.corpX.un 
 +</​code>​ 
 +  ​* Добавляем tls, общий env.yaml, ​комментарии, tpl, [], quote 
 +<​code>​ 
 +kube1:​~/​webd-k8s#​ helm template -f env.yaml my-pywebd uni-webd-chart/​ #--debug 
 + 
 +kube1:​~/​webd-k8s#​ helm upgrade -i my-pywebd uni-webd-chart/​ -f env.yaml -n my-ns --create-namespace 
 + 
 +kube1:​~/​webd-k8s#​ curl https://​pywebd.corpX.un -kv 
 +</​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 96: 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 256: 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 262: 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 305: Line 329:
  
 env: env:
-  PYWEBD_DOC_ROOT:​ /var/www2/+  PYWEBD_DOC_ROOT:​ /var/www/
   PYWEBD_PORT:​ 4443   PYWEBD_PORT:​ 4443
  
Line 332: 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 367: 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>​
  
 ===== Подготовка к вебинару ===== ===== Подготовка к вебинару =====
универсальный_helm-чарт.1769321160.txt.gz · Last modified: 2026/01/25 09:06 by val