OpenShift: уведомлять каждый модуль кластера о завершении развертывания. - PullRequest
0 голосов
/ 21 января 2019

У меня есть сервис в OpenShift.Сервис состоит из нескольких пакетов.Каждый контейнер содержит два контейнера.Стратегия развертывания - «скользящее обновление».Мне нужно создать конкретный контейнер для каждого модуля, чтобы знать, когда текущее развертывание будет завершено для всего кластера.

Является ли запись файла (от перехвата после развертывания) в общий постоянный том самым простым и правильным способом?

1 Ответ

0 голосов
/ 22 января 2019

Более надежный подход заключается в проверке количества доступных реплик через API OpenShift.

TOKEN="$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)"

curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt "https://openshift.default.svc.cluster.local/apis/extensions/v1beta1/namespaces/$YOUR_NAMESPACE/deployments/$YOUR_DEPLOYMENT" -H "Authorization: Bearer $TOKEN" | jq -r ".status.availableReplicas"

EDIT:

API также возвращает желаемое количество реплик как .status.replicas. Таким образом, вы можете сравнить желаемое количество реплик с доступным количеством реплик, чтобы определить, завершено ли развертывание.

  "status": {
    "replicas": 2,
    "updatedReplicas": 1,
    "readyReplicas": 1,
    "availableReplicas": 1
  }
...