Azure devops 无法通过HELM重新部署kubernetes解决方案
我有一个工作的Azure DevOps管道,它使用HELM将我的映像部署到Kubernetes集群。当集群中没有资源时(第一次部署时),此管道将成功执行。在已经存在资源的后续部署中,HELM INSTALL命令会导致以下异常 服务“myservice lb”已存在 现在我了解到这是由于已经存在资源,但我的问题涉及如何配置图表,以便将更改部署到集群 以前我只运行KUBECTL APPLY,它足够智能,可以在有变化时更新pod和服务,如果没有变化则忽略。我假设HELM会有相同类型的功能,但我不知道如何实现 目前,我正在使用HELM安装管道任务,该任务指向我的解决方案中的图表。我很高兴发布生成的YAML,但我觉得它可能是需要在我的DevOps管道中运行的命令Azure devops 无法通过HELM重新部署kubernetes解决方案,azure-devops,kubernetes-helm,Azure Devops,Kubernetes Helm,我有一个工作的Azure DevOps管道,它使用HELM将我的映像部署到Kubernetes集群。当集群中没有资源时(第一次部署时),此管道将成功执行。在已经存在资源的后续部署中,HELM INSTALL命令会导致以下异常 服务“myservice lb”已存在 现在我了解到这是由于已经存在资源,但我的问题涉及如何配置图表,以便将更改部署到集群 以前我只运行KUBECTL APPLY,它足够智能,可以在有变化时更新pod和服务,如果没有变化则忽略。我假设HELM会有相同类型的功能,但我不知道如
相当确定您需要使用
helm-upgrade
来更新它。要使它在不存在的情况下工作,您可以添加--安装开关相当确定您需要使用头盔升级来更新它。要使它在不存在时工作,您可以添加--安装开关不确定是否存在这种情况,但这可能会有所帮助:
1-如果集群中安装了多个tiller(helm server),则必须使用第一次安装时使用的同一台进行升级。如果没有,tiller将无法在其缓存中找到包(因此未安装版本),但将在命名空间中找到资源(因此将启动一个错误)。如果头盔的缓存被破坏/擦除,它也会发生
2-helm的一个已知错误是,如果第一次部署失败,它无法在下一次尝试中正确部署
您可以检查是否有具有以下功能的早期版本:
helm列表
您可以选择要使用的舵柄:
helm列表——舵柄名称空间=
如果发现释放失败,则需要手动删除头盔释放:
helm delete——清除
不确定是否是这种情况,但这可能有助于:
1-如果集群中安装了多个tiller(helm server),则必须使用第一次安装时使用的同一台进行升级。如果没有,tiller将无法在其缓存中找到包(因此未安装版本),但将在命名空间中找到资源(因此将启动一个错误)。如果头盔的缓存被破坏/擦除,它也会发生
2-helm的一个已知错误是,如果第一次部署失败,它无法在下一次尝试中正确部署
您可以检查是否有具有以下功能的早期版本:
helm列表
您可以选择要使用的舵柄:
helm列表——舵柄名称空间=
如果发现释放失败,则需要手动删除头盔释放:
helm delete——清除
这是有道理的,但它仍然给了我同样的错误:[command]/opt/hostedtoolcache/helm/2.14.0/x64/linux-amd64/helm升级--安装--重新创建pods--强制--等待20190603.6/home/vsts/work/5/s/myimage/deployment/myapp错误:发布20190603.6失败:服务“myservice lb”已经存在发布“20190603.6”不存在。现在安装它##[错误]错误:发布20190603.6失败:服务“myservice lb”已经存在##[部分]完成:掌舵升级这真的很奇怪,对我来说它以幂等方式工作,你能共享yaml吗?这是有道理的,但它仍然给我相同的错误:[命令]/opt/hostedtoolcache/helm/2.14.0/x64/linux-amd64/helm升级--安装--重新创建吊舱--强制--等待20190603.6/home/vsts/work/5/s/myimage/deployment/myapp错误:版本20190603.6失败:服务“myservice lb”已存在版本“20190603.6”不存在。现在安装它##[错误]错误:发布20190603.6失败:服务“myservice lb”已经存在##[部分]完成:掌舵升级真奇怪,对我来说它以幂等方式工作,你能分享yaml吗?我想就是这样。我没有超过一个舵柄,但我有一个初始失败的版本。我清除了他们,重新部署。然后我成功地重新部署了图表。我想就是这样。我没有超过一个舵柄,但我有一个初始失败的版本。我清除了他们,重新部署。然后我成功地重新部署了图表。
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