使用 Helm 图表在 MutatingWebhookConfiguration 中设置 caBundle
·
回答问题
MutatingWebhookConfiguration
的caBundle
在这里定义为为:
caBundle
是一个 PEM 编码的 CA 包,将用于验证 webhook 的服务器证书。如果未指定,则使用 apiserver 上的系统信任根。
我正在使用此命令获取 PEM 编码的 CA 包。
kubectl config view --raw --minify --flatten \
-o jsonpath='{.clusters[].cluster.certificate-authority-data}'
结果值保存在一个变量中,该变量在sed
命令中用于替换“模板”YAML 中的CA_BUNDLE
字符串,如下所示。
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingWebhookConfiguration
metadata:
name: WEBHOOK_APP
labels:
app: WEBHOOK_APP
webhooks:
- name: com.demo.NAMESPACE.WEBHOOK_APP
sideEffects: None
admissionReviewVersions: ["v1", "v1beta1"]
matchPolicy: Equivalent
failurePolicy: Fail
clientConfig:
caBundle: CA_BUNDLE
service:
name: WEBHOOK_APP
namespace: NAMESPACE
path: "/mutate"
rules:
- operations: [ "CREATE", "UPDATE" ]
apiGroups: [""]
apiVersions: ["v1"]
resources: ["pods"]
scope: "*"
Helm图表中传递CA_BUNDLE
的方式是什么?
Answers
由于安全原因,无法直接从 helm 图表中的 env 变量读取变量,并且此功能未作为本文档中的状态实现。
在掌舵图中,您始终可以创建一个变量,例如values.yaml
文件中的myCAbundleVariable
将保存您的 PEM 编码 CA,然后在图表中使用此变量中的值,如下所示:
webhooks:
- ...
clientConfig:
caBundle: {{ .myCAbundleVariable }}
如果您想在运行 helm 命令时传递值“在运行时”,您可以使用--set
参数。
所以你的 helm 命令看起来像这样:
helm install ... --set myCAbundleVariable=$(kubectl config view --raw --minify --flatten \
-o jsonpath='{.clusters[].cluster.certificate-authority-data}')`
让我知道它是否有帮助。
更多推荐
所有评论(0)