Я работаю над развертыванием образа докера в 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»?
До сих пор я не нашелспособ выполнить откат автоматически.Мысли будут оценены.