Как автоматически откатить развертывание до предыдущей ревизии, когда развертывание перешло «progressDeadlineSeconds»? - PullRequest
0 голосов
/ 24 мая 2019

Я работаю над развертыванием образа докера в kubernetes.При первом развертывании контейнера я использовал:

kubectl apply -f <deployment_file>.yaml

, и контейнер был успешно развернут в модуле.

Кроме того, файл deploy_file выглядит примерно так:

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: publisher
spec:
  replicas: 2
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
  minReadySeconds: 300
  progressDeadlineSeconds: 900
  template:
    metadata:
      labels:
        app: publisher
    spec:
      containers:
      - name: publisher
        image: 123dev.azurecr.io/publisher:{{ci-build-number}}
        env:
          - name: ENVIRONMENT
            value: "dev"
        ports:
        - containerPort: 8080

Я определил атрибут 'progressDeadlineSeconds' в файле yaml выше.

Чтобы отслеживать развертывание, я использовал:

kubectl rollout status deployment.v1beta1.apps/publisher

Теперь, если я хочу обновитьконтейнер с новым образом, я могу снова использовать команду

kubectl apply -f <deployment_file>.yaml

, чтобы применить обновление.

Но что, если применение обновления завершается неудачно по какой-то причине (скажем, изображение докераповрежден), есть ли способ автоматически вызвать откат к предыдущей ревизии, когда - состояние pods не установлено на «выполняется» ИЛИ время выполнения пересекает «pregressDeadlineSeconds»?

До сих пор я не нашелспособ выполнить откат автоматически.Мысли будут оценены.

1 Ответ

0 голосов
/ 24 мая 2019

выполните следующие шаги.

1. append the --record param to deployment, as shown below
kubectl apply -f <deployment_file>.yaml --record

2. kubectl rollout history deploy <deployment-name> to check deployment history. for example,
kubectl rollout history deploy mynginx
deployments "mynginx"
REVISION  CHANGE-CAUSE
3         kubectl set image deploy mynginx mynginx=nginx:1.12.2
4         kubectl set image deploy mynginx mynginx=nginx:1.13.8


3. you can rollback to previous version using revision, say to revision 3
kubectl rollout undo deploy mynginx --to-revision=3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...