Сериализация создания модулей в манифесте развертывания с помощью диаграмм Helm - PullRequest
0 голосов
/ 27 мая 2020

Итак, у меня есть диаграмма управления, которая развертывает модуль, поэтому следующая задача - создать еще один модуль после запуска первого модуля.

Итак, я создал простой pod.yaml в chart / templates, который создает простой pod-b, поэтому следующим шагом будет создание pod-b только после того, как pod-a запущен.

Так было только на хуках руля, но не думаю, что они заботятся о статусе pod. * Другая идея - использовать контейнер инициализации, как показано ниже, но не знаете, как написать команду для поиска запущенного модуля?

spec:
  containers:
  - name: myapp-container
    image: busybox
    command: ['sh', '-c', 'echo The app is running! && sleep 3600']
  initContainers:
  - name: init-myservice
    image: busybox
    command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']

Другая идея - простой сценарий для проверки статуса модуля, например:

y=`kubectl get po -l app=am -o 'jsonpath={.items[0].status.phase}'`
   while [ $i -le 5 ]
   do
    if [[ "$y" == "Running" ]]; then
      break
    fi
    sleep 5
   done

Любой совет был бы замечательным.

1 Ответ

2 голосов
/ 27 мая 2020

Если вы хотите, чтобы ваши post-install/post-upgrade хуки диаграммы работали, вы должны добавить зонды готовности в свой первый модуль и использовать - wait flag.

helm upgrade --install -n test --wait mychart .

под.ямл

apiVersion: v1
kind: Pod
metadata:
  name: readiness-exec
  labels:
    test: readiness
spec:
  containers:
  - name: readiness
    image: k8s.gcr.io/busybox
    args:
    - /bin/sh
    - -c
    - sleep 30; touch /tmp/healthy; sleep 600
    readinessProbe:
      exec:
        command:
        - cat
        - /tmp/healthy
      initialDelaySeconds: 10
      periodSeconds: 5
      failureThreshold: 10

хук.ямл

apiVersion: batch/v1
kind: Job
metadata:
  name: "post-deploy"
  annotations:
    "helm.sh/hook": post-upgrade,post-install
    "helm.sh/hook-delete-policy": before-hook-creation
spec:
  backoffLimit: 1
  template:
    metadata:
      name: "post-deploy"
    spec:
      restartPolicy: Never
      containers:
        - name: post-deploy
          image: k8s.gcr.io/busybox
          args:
          - /bin/sh
          - -c
          - echo "executed only after previous pod is ready"
...