【发布时间】:2021-10-31 01:09:44
【问题描述】:
有没有办法测试模板是否适用于所有可能的值?
(注意:这与 helm test 不同,后者用于通过作业中运行的任意代码来测试部署的图表)。
我想要实现的是迭代一组值并检查每个值生成的 K8s 资源。
假设我们要测试我们的图表是否正确编写:
图表:
值.yaml
app:
port: 8081
pod2:
enabled: true
AppPod.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: AppPod
labels:
app: nginx
spec:
...
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: {{ $.Values.app.port| default 8080 }}
Pod2.yaml
{{- if $.Values.pod2.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: Pod2
labels:
app: nginx2
spec:
...
{{- end}}
我们要运行以下测试:
- 使用默认 Values.yaml -> 断言 port=8081 并创建 Pod2
- 缺少 app.port -> 断言端口=8080
- 使用 pod2.enabled 为 false -> 未创建断言 Pod2
- 缺少 pod2 -> 测试将失败,因为密钥 'pod2' 是强制性的
所以基本上是为了测试模板逻辑。
我现在在做什么:
每当我修改图表中的某些内容时,我只需为不同的 Values.yaml 运行 helm template 并手动检查结果。手动执行此操作容易出错,并且图表包含的模板越多,就越耗时。
是否有任何内置的 helm 功能或单独的框架?
【问题讨论】:
-
嗨@beatrice,Eugene 的回答能回答你的问题吗?
标签: testing kubernetes automated-tests kubernetes-helm