[英]Helm Upgrade with different SubChart
我们有一个带有子图依赖关系的舵图,现在在最新版本中决定使用不同的子图(相同的组件)但来自不同的“供应商”(如 Bitnami)。
问题是当我们在集群上运行 helm upgrade 时,安装成功,但是旧的 subchart 组件并没有被自动删除,我们必须“手动”运行 kubectl delete。
这会产生很多 Ops 问题,因为它不适合我们的 GitOps 方法。
有没有办法在进行 helm 升级时自动删除所有以前的子图组件?
这似乎是一种正常的情况,尤其是今天,许多图表由不同的公司(如 Bitnami、Quay ecc)托管,而不会遇到锁定。
您可以使用Helm 条件轻松指定应安装哪些依赖项。
我创建了一个示例来说明它是如何工作的。
我在Chart.yaml
声明了两个依赖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.enabled
和redis.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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.