使用Helm图表在MutatingWebhookConfiguration中设置caBundle

问题描述 投票:0回答:1

caBundleMutatingWebhookConfiguration定义为: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的方式是什么?

kubernetes installation yaml kubernetes-helm ca
1个回答
0
投票

由于安全原因,无法从掌舵图中的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}')`

让我知道是否有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.