Обновление kubernetes развертывания создаст новый модуль - PullRequest
0 голосов
/ 24 марта 2020

У меня есть существующее развертывание kubernetes, которое работает нормально. Теперь я хочу отредактировать его с помощью некоторых новых переменных среды, которые я буду использовать в модуле. Редактирование развертывания удалит и создаст новый модуль или обновит существующий модуль. Мое требование - я хочу создавать новый модуль каждый раз, когда я редактирую / обновляю развертывание.

Ответы [ 2 ]

1 голос
/ 24 марта 2020

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 или даже удалите его. Все изменения необходимо удалить и создать заново, чтобы изменения вступили в силу.

0 голосов
/ 24 марта 2020

Если вы хотите создать новый модуль, вам нужно создать новое развертывание для этого. По своему дизайну развертывания управляют репликами принадлежащих им модулей.

...