Невозможно повторно развернуть решение kubernetes через HELM - PullRequest
0 голосов
/ 03 июня 2019

У меня есть рабочий конвейер Azure DevOps, который использует HELM для развертывания моих образов в кластере Kubernetes.Этот конвейер успешно выполняется, когда в кластере нет ресурсов (при первом развертывании).При последующих развертываниях, где ресурсы уже существуют, команда HELM INSTALL приводит к следующему исключению:

services "myservice-lb" уже существует

Теперь я понимаю, что этоЭто связано с тем, что ресурс уже существует, но мой вопрос касается того, как настроить диаграмму таким образом, чтобы изменения могли быть развернуты в кластере.

Ранее я просто запускал KUBECTL APPLY, который достаточно умен, чтобы обновлять пакет и сервис, если есть изменения, и игнорировать, если нет ничего другого.Я предполагаю, что HELM будет иметь такой же тип функциональности, но я не вижу, как это будет достигнуто.

В настоящее время я использую конвейерную задачу HELM INSTALL, которая указывает на график в моем решении.Я рад опубликовать сгенерированный YAML, но мне кажется, что это, вероятно, команда, которую нужно выполнить в моем конвейере DevOps.

enter image description here

enter image description here

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
  labels:
    name: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      terminationGracePeriodSeconds: 30
      containers:
      - name: myapp
        image: mycontainers.azurecr.io/myapp:latest
        imagePullPolicy: "Always"
        args: ["-w", "-e"]
        ports:
        - containerPort: 5000
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 250m
      imagePullSecrets:
      - name: acr-auth     

---
apiVersion: v1
kind: Service
metadata:
  name: myservice-lb
spec:
  type: LoadBalancer
  ports:
  - protocol: TCP
    port: 80
    targetPort: 5000
  selector:
    app: myapp

Ответы [ 2 ]

3 голосов
/ 03 июня 2019

Совершенно уверен, что вам нужно будет использовать helm upgrade для его обновления.Чтобы заставить его работать, если он не существует, вы можете добавить --install switch

0 голосов
/ 04 июня 2019

Не уверен, что это так, но, возможно, это поможет:

1 - Если в вашем кластере установлено более одного румпеля (сервера управления), обновление должно быть выполнено с тем же, который использовался для его установки в первый раз. Если нет, то фермер не найдет пакет в своем кеше (поэтому релиз не установлен), но найдет ресурс в пространстве имен (поэтому появится ошибка). Это также произойдет, если кэш руля уничтожен / стерт

2 - Это известная ошибка для helm, что в случае неудачного первого развертывания он не может правильно развернуть его для следующих попыток

Вы можете проверить, существует ли предыдущий выпуск с помощью:

helm list

Вы можете выбрать культиватор для работы:

helm list --tiller-namespace=<namespace>

И если вы обнаружите сбойный релиз, вам нужно будет удалить релиз руля вручную:

helm delete --purge <release-name>
...