caBundle
的MutatingWebhookConfiguration
定义为:here:
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
的方式是什么?
由于安全原因,无法从掌舵图中的env变量直接读取变量,并且此功能未在this document中作为状态实现。
在头盔图表中,您始终可以创建变量,例如myCAbundleVariable
文件中的values.yaml
将保存您的PEM编码的CA,然后使用图表中此变量的值,如下所示:
webhooks:
- ...
clientConfig:
caBundle: {{ .myCAbundleVariable }}
如果在运行helm命令时要在运行时传递值',可以使用--set
参数。
所以您的舵命令将如下所示:
helm install ... --set myCAbundleVariable=$(kubectl config view --raw --minify --flatten \
-o jsonpath='{.clusters[].cluster.certificate-authority-data}')`
让我知道是否有帮助。