У меня есть рабочий конвейер Azure DevOps, который использует HELM для развертывания моих образов в кластере Kubernetes.Этот конвейер успешно выполняется, когда в кластере нет ресурсов (при первом развертывании).При последующих развертываниях, где ресурсы уже существуют, команда HELM INSTALL приводит к следующему исключению:
services "myservice-lb" уже существует
Теперь я понимаю, что этоЭто связано с тем, что ресурс уже существует, но мой вопрос касается того, как настроить диаграмму таким образом, чтобы изменения могли быть развернуты в кластере.
Ранее я просто запускал KUBECTL APPLY, который достаточно умен, чтобы обновлять пакет и сервис, если есть изменения, и игнорировать, если нет ничего другого.Я предполагаю, что HELM будет иметь такой же тип функциональности, но я не вижу, как это будет достигнуто.
В настоящее время я использую конвейерную задачу HELM INSTALL, которая указывает на график в моем решении.Я рад опубликовать сгенерированный YAML, но мне кажется, что это, вероятно, команда, которую нужно выполнить в моем конвейере DevOps.
![enter image description here](https://i.stack.imgur.com/FofeU.png)
![enter image description here](https://i.stack.imgur.com/ZXz2R.png)
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