回答问题

MutatingWebhookConfigurationcaBundle在这里定义为为:

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}')`

让我知道它是否有帮助。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐