Kubernetes всегда собирается воссоздать ваши стручки на случай, если вы измените / создадите переменную env.
Давайте вместе проверим это, создав развертывание без какой-либо переменной env:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
Давайте проверим и запомним эти имена модулей, чтобы мы могли сравнить их позже:
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-deployment-56db997f77-9mpjx 1/1 Running 0 8s
nginx-deployment-56db997f77-mgdv9 1/1 Running 0 8s
nginx-deployment-56db997f77-zg96f 1/1 Running 0 8s
Теперь давайте отредактируем это развертывание и добавим одну переменную env, чтобы манифест выглядел следующим образом:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
env:
- name: STACK_GREETING
value: "Hello from the MARS"
ports:
- containerPort: 80
После того, как мы закончим sh издание, давайте проверим наши имена модулей и посмотрим, изменилось ли оно:
$ kubectl get pod
nginx-deployment-5b4b68cb55-9ll7p 1/1 Running 0 25s
nginx-deployment-5b4b68cb55-ds9kb 1/1 Running 0 23s
nginx-deployment-5b4b68cb55-wlqgz 1/1 Running 0 21s
Как видим, все имена модулей изменены. Давайте проверим, был ли применен наш env var:
$ kubectl exec -ti nginx-deployment-5b4b68cb55-9ll7p -- sh -c 'echo $STACK_GREETING'
Hello from the MARS
То же самое произойдет, если вы измените var или даже удалите его. Все изменения необходимо удалить и создать заново, чтобы изменения вступили в силу.