{{- /* Root CA for Contour mTLS. Supports two modes: 1. "external" (default) — Root CA secret is pre-created (e.g., via ESO from Vault) 2. "generate" — cert-manager creates a self-signed Root CA (for dev/testing) Chain: Root CA → Leaf Certs (contourcert, envoycert) */}} {{- if .Values.useCertManager }} {{- if eq .Values.certManager.rootCA.mode "generate" }} ## Self-Signed Issuer (only used to bootstrap Root CA in "generate" mode) apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: {{ printf "%s-selfsigned" (include "common.names.fullname" .) }} namespace: {{ include "common.names.namespace" . | quote }} labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} spec: selfSigned: {} --- ## Root CA Certificate (self-signed, long-lived) apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: {{ printf "%s-root-ca" (include "common.names.fullname" .) }} namespace: {{ include "common.names.namespace" . | quote }} labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} spec: secretName: {{ .Values.certManager.rootCA.secretName }} commonName: "Contour Root CA" duration: {{ .Values.certManager.rootCA.duration }} isCA: true usages: - cert sign - crl sign privateKey: algorithm: RSA size: 4096 issuerRef: name: {{ printf "%s-selfsigned" (include "common.names.fullname" .) }} kind: Issuer {{- end }} --- ## Root CA Issuer (signs leaf certs directly) apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: {{ printf "%s-root-ca-issuer" (include "common.names.fullname" .) }} namespace: {{ include "common.names.namespace" . | quote }} labels: {{- include "common.labels.standard" ( dict "customLabels" .Values.commonLabels "context" $ ) | nindent 4 }} spec: ca: secretName: {{ .Values.certManager.rootCA.secretName }} {{- end }}