【问题标题】:Helm Upgrade with different SubChart使用不同的 SubChart 进行 Helm 升级
【发布时间】:2021-12-13 20:47:33
【问题描述】:

我们有一个带有子图依赖的舵图。现在,在最新版本中,决定使用不同的子图表(相同的组件),但来自不同的“供应商”(如 Bitnami)。

问题是当我们在集群上运行 helm upgrade 时,安装成功但旧的 subchart 组件并没有自动删除,我们必须“手动”运行kubectl delete

这会产生很多 Ops 问题,因为它不适合我们的 GitOps 方法。

在进行 helm 升级时,有没有办法自动删除所有以前的子图表组件?

这似乎是一种正常的情况,尤其是在今天,很多图表由不同的公司(如 Bitnami、Quay ecc)托管,而没有遇到锁定。

【问题讨论】:

标签: kubernetes kubernetes-helm helm3


【解决方案1】:

您可以使用Helm Conditions 轻松指定应安装哪些依赖项。

我创建了一个示例来说明它是如何工作的。

我在Chart.yaml 中声明了两个依赖项,并且我在values.yaml 文件中定义了只应安装redis

$ cat test-chart/Chart.yaml                                                                                                                    
...
dependencies:
- name: redis
  version: "15.x.x"
  repository: "https://charts.bitnami.com/bitnami"
  condition: redis.enabled
- name: memcached
  version: "5.x.x"
  repository: "https://charts.bitnami.com/bitnami"
  condition: memcached.enabled

$ cat test-chart/values.yaml
...
redis:
  enabled: true
memcached:
  enabled: false

让我们安装这个图表来确保只安装了redis

$ helm install chart-1 test-chart
NAME: chart-1
LAST DEPLOYED: Wed Nov 10 11:18:44 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

$ kubectl get pods
NAME                       READY   STATUS    RESTARTS   AGE
chart-1-redis-master-0     1/1     Running   0          107s
chart-1-redis-replicas-0   1/1     Running   0          107s
chart-1-redis-replicas-1   1/1     Running   0          66s
chart-1-redis-replicas-2   1/1     Running   0          32s

从上面的输出可以看出,memcached 没有按预期安装。

现在假设我们要安装memcached 而不是redis。我们需要做的就是更改values.yaml 文件中的memcached.enabledredis.enabled 并升级版本:

$ cat test-chart/values.yaml
...
redis:
  enabled: false
memcached:
  enabled: true

$ helm upgrade chart-1 test-chart
Release "chart-1" has been upgraded. Happy Helming!
NAME: chart-1
LAST DEPLOYED: Wed Nov 10 11:21:49 2021
NAMESPACE: default
STATUS: deployed
REVISION: 2
TEST SUITE: None

$ kubectl get pods
NAME                                 READY   STATUS    RESTARTS   AGE
chart-1-memcached-86847c8c4f-nt5wv   1/1     Running   0          21s

一切正常,redis 已卸载,memcached 已安装。

【讨论】:

  • 嗨,我们实际上发现我们的问题是我们的 helm 是通过 /charts 文件夹推送到 Helm Repository 的,并且它包含两个版本的 Nginx(bitnami 和 k8s.gcr.io)。删除它并开始工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-11
  • 2021-06-16
  • 2021-02-25
  • 2021-01-15
  • 2018-03-02
  • 2018-09-23
相关资源
最近更新 更多