【问题标题】:Helm upgrade doesn't pull new containerHelm 升级不会拉新容器
【发布时间】:2018-03-02 09:19:13
【问题描述】:

我构建了一个简单的 NodeJS API,将 Docker 镜像推送到一个仓库,并使用 Helm install 将其部署到我的 k8s(运行良好)。

pullPolicy 是Always

现在我想更新源代码并部署我的应用程序的更新版本。我在所有文件中调整了版本,构建并推送了新的 Docker 映像并尝试了helm upgrade,但似乎什么也没发生。 使用helm list,我可以看到已部署修订版,但未部署对源代码的更改。 watch kubectl get pods 还表明,kubectl --apply... 没有按照您期望的方式创建新的 pod

我做错了什么?

【问题讨论】:

标签: kubernetes continuous-integration devops kubernetes-helm


【解决方案1】:

Helm 仅在需要推出更改时才会推出对 Kubernetes 对象的更改。如果您使用:latest,则无需对部署文件进行任何更改,因此没有 Pod 将滚动更新。要继续使用latest,您需要添加一些内容(即带有 sha / 版本的标签),这些内容会更改并导致部署由 helm 更新。另外请记住,您通常也需要ImagePullPolicy: Always

【讨论】:

    【解决方案2】:

    我在 .gitlab.yaml 的部署脚本中解决了这个问题,您可以在任何部署脚本中执行类似操作。

    export SAME_SHA=$(helm get values service-name | grep SHA | wc -l)
    
    if [ SAME_SHA -eq 1] then helm uninstall service-name; fi
    
    helm upgrade --install service-name -f service-values.yml .
    

    这可能不是生产的最佳方法,因为您最终可能会卸载实时服务,但对我来说,生产 sha 永远不会相同,所以这是可行的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 2021-06-16
      • 2023-03-08
      • 2021-01-15
      • 1970-01-01
      • 2020-02-24
      • 2020-12-15
      相关资源
      最近更新 更多