您可以使用Helm 条件轻松指定应安装哪些依赖项。
我创建了一个示例来说明它是如何工作的。
我在文件中声明了两个依赖项,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
已安装。