Валидация конфигураций веб-ссылок cBundle из секрета Azure, смонтированного в kubernetes - PullRequest
0 голосов
/ 13 апреля 2020

Я развертываю OPA на кластере AKS, используя официальный рулевой график. Чтобы получить сертификат и ключ, я добавил aad-pod-identity, а также keyvault flexvol для извлечения секрета из Azure KV в том Kubernetes в качестве секрета. Я могу использовать сертификат и ключ отдельно, но не могу сослаться на смонтированный сертификат в разделе «Проверка веб-конфигурации» >> caBundle. Я довольно новичок в kubernetes, поэтому мне нужна помощь, как я могу ссылаться на секрет тома в caBundle, чтобы он считывал значение Dynami c, а не на то, чтобы я выдал сертификат в виде строки, закодированной в base64. Прочитал про CAInjector, но нужно знать более чистый способ. Было бы полезно, если бы кто-то мог помочь мне в реализации примера. deploy.yaml

            - "--config-file=/config/config.yaml"
{{- end }}
            - "--tls-cert-file=/certs/tls-crt"
            - "--tls-private-key-file=/certs/tls-key"
            - "--addr=0.0.0.0:{{ .Values.port }}"
            - "--log-level={{ .Values.logLevel }}"
            - "--log-format={{ .Values.logFormat }}"
{{- if .Values.authz.enabled }}
            - "--authentication=token"
            - "--authorization=basic"
            - "--ignore=.*"
---
   volumes:
        - name: certs
          flexVolume:
            driver: "azure/kv"
            options:
              usepodidentity: "true"
              keyvaultname: {{ .Values.azure.stratusKeyVault }}
              keyvaultobjectnames: tls-crt;tls-key
              keyvaultobjecttypes: secret;secret
              tenantid: {{ .Values.azure.tenantId }}

webhookconfiguration.yaml

apiVersion: admissionregistration.k8s.io/v1beta1
metadata:
  name: {{ template "opa.fullname" . }}
  annotations:
{{- if .Values.certManager.enabled }}
    certmanager.k8s.io/inject-ca-from: {{ printf "%s/%s" .Release.Namespace (include "opa.rootCACertificate" .) | quote }}
{{- end }}
  labels:
{{ include "opa.labels.standard" . | indent 4 }}
webhooks:
  - name: webhook.openpolicyagent.org
{{- with .Values.admissionControllerNamespaceSelector }}
    namespaceSelector:
{{ toYaml . | indent 6 }}
{{ end }}
    failurePolicy: {{ .Values.admissionControllerFailurePolicy }}
    rules:
{{ toYaml .Values.admissionControllerRules | indent 6 }}
    clientConfig:
{{ if not .Values.certManager.enabled }}
{{ if .Values.generateAdmissionControllerCerts }}
      caBundle: {{ b64enc $ca.Cert }}
{{ else }}
      caBundle: ""
{{ end }}
{{ end }}
      service:
        name: {{ template "opa.fullname" . }}
        namespace: {{ .Release.Namespace }}
    sideEffects: {{ .Values.admissionControllerSideEffect }}
...