Я хочу использовать развертывание Kubernetes и эталонные образы контейнеров с семантические имена тегов. Например. application:latest
, application:testing
, application:production
.
Настройка этого проста, и с imagePullPolicy: Always
в моей спецификации контейнера я также могу быстро выпускать новые версии с чем-то вроде этого:
$ REPLICAS=$(kubectl get deployment application --template="{{.spec.replicas}}")
$ kubectl scale --replicas=0 deployment application
deployment "application" scaled
$ kubectl scale --replicas=$REPLICAS deployment application
deployment "application" scaled
Недостаток в том, что все поды убиваются до того, как будут готовы новые. Поэтому я стремлюсь к постоянным обновлениям.
Одним из решений было бы отказаться от имен семантических тегов и использовать sth. как application:v123
. Но я хотел бы, чтобы мои сценарии были простыми и сохраняли семантические имена. Есть ли способ сделать это?
...
Изменить/обновить... вот как будет выглядеть моя конфигурация deployment.yaml
:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: application
spec:
containers:
- name: application
image: application:latest
imagePullPolicy: Always
В основном он будет оставаться неизменным все время, но связанное изображение контейнера будет обновляться в фоновом режиме.
...
Ваше здоровье