我有一个工作的Azure DevOps管道,它使用HELM将我的镜像部署到Kubernetes集群。当集群中没有资源时(第一次部署时),此管道将成功执行。在资源已经存在的后续部署中,HELM INSTALL命令会导致以下异常。
服务"myservice-lb“已存在
现在我知道这是由于资源已经存在,但我的问题涉及如何配置图表,以便可以将更改部署到集群。
以前,我只会运行KUBECTL APPLY,它足够智能,可以在发生变化时更新pod和服务,如果没有变化则忽略。我认为HELM应该具有相同类型的功能,但我不知道如何实现这一点。
目前,我正在使用HELM INSTALL pipeline任务,它指向我的解决方案中的图表。我很高兴发布生成的YAML,但我觉得这可能是一个需要在我的DevOps管道中运行的命令。
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
发布于 2019-06-04 16:28:16
不确定是否是这种情况,但这可能会有所帮助:
1-如果您的集群中安装了多个tiller (helm服务器),则必须使用与第一次安装相同的服务器进行升级。如果舵机的缓存被销毁/擦除,也会发生这种情况
2-这是helm的一个已知错误,如果第一次部署失败,它将无法在下一次尝试中正确部署它
您可以使用以下命令检查是否有以前的版本:
helm list
您可以选择要使用的分耕器:
helm list --tiller-namespace=<namespace>
如果你发现一个失败的版本,你需要手动删除helm的版本:
helm delete --purge <release-name>
发布于 2019-06-04 02:31:41
可以肯定的是,你需要使用helm upgrade
来更新它。如果它不存在,要使其工作,您可以添加--install
开关
https://stackoverflow.com/questions/56432657
复制相似问题