Helm 使用不同的 SubChart 升级

问题描述 投票:0回答:1

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

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

kubectl delete

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

有一种方法可以在进行 helm 升级时自动删除所有以前的子图组件吗?

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

kubernetes kubernetes-helm
1个回答
0
投票

您可以使用 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
。我们需要做的就是更改
memcached.enabled
文件中的
redis.enabled
values.yaml
并升级版本:

$ 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
已安装。

© www.soinside.com 2019 - 2024. All rights reserved.