Skip to content

Commit 6d20752

Browse files
aryangorwadevisheshtanksale
authored andcommitted
Configured cert-manager/secret signing modes
Signed-off-by: Aryan <gorwadearyan@gmail.com>
1 parent 656576e commit 6d20752

File tree

3 files changed

+42
-7
lines changed

3 files changed

+42
-7
lines changed

deployments/helm/k8s-nim-operator/templates/admission-controller.yaml

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ spec:
1919
app.kubernetes.io/instance: {{ .Release.Name }}
2020
{{- end }}
2121
---
22-
{{- if .Values.operator.admissionController.enabled }}
22+
{{ if and .Values.operator.admissionController.enabled (eq .Values.operator.admissionController.tls.mode "cert-manager") }}
23+
{{ $issuerType := default "selfsigned" .Values.operator.admissionController.tls.certManager.issuerType -}}
24+
{{ $issuerName := .Values.operator.admissionController.tls.certManager.issuerName -}}
2325
apiVersion: cert-manager.io/v1
2426
kind: Certificate
2527
metadata:
@@ -32,13 +34,16 @@ spec:
3234
dnsNames:
3335
- {{ include "k8s-nim-operator.fullname" . }}-webhook-service.{{ .Release.Namespace }}.svc
3436
- {{ include "k8s-nim-operator.fullname" . }}-webhook-service.{{ .Release.Namespace }}.svc.cluster.local
37+
{{- range .Values.operator.admissionController.tls.certManager.dnsNames }}
38+
- {{ . }}
39+
{{- end }}
3540
issuerRef:
36-
kind: Issuer
37-
name: {{ include "k8s-nim-operator.fullname" . }}-selfsigned-issuer
41+
kind: {{- if eq (lower $issuerType) "clusterissuer" }} ClusterIssuer {{- else }} Issuer {{- end }}
42+
name: {{- if eq (lower $issuerType) "selfsigned" }} {{ include "k8s-nim-operator.fullname" . }}-selfsigned-issuer {{- else }} {{ required "operator.admissionController.tls.certManager.issuerName is required when issuerType is 'issuer' or 'clusterissuer'" $issuerName }} {{- end }}
3843
secretName: {{ include "k8s-nim-operator.fullname" . }}-webhook-server-cert
3944
{{- end }}
4045
---
41-
{{- if .Values.operator.admissionController.enabled }}
46+
{{ if and .Values.operator.admissionController.enabled (eq .Values.operator.admissionController.tls.mode "cert-manager") (eq (lower (default "selfsigned" .Values.operator.admissionController.tls.certManager.issuerType)) "selfsigned") }}
4247
apiVersion: cert-manager.io/v1
4348
kind: Issuer
4449
metadata:
@@ -56,8 +61,10 @@ apiVersion: admissionregistration.k8s.io/v1
5661
kind: ValidatingWebhookConfiguration
5762
metadata:
5863
name: {{ include "k8s-nim-operator.fullname" . }}-validating-webhook-configuration
64+
{{- if eq .Values.operator.admissionController.tls.mode "cert-manager" }}
5965
annotations:
6066
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ include "k8s-nim-operator.fullname" . }}-serving-cert
67+
{{- end }}
6168
labels:
6269
app.kubernetes.io/name: k8s-nim-operator
6370
app.kubernetes.io/managed-by: helm
@@ -69,6 +76,9 @@ webhooks:
6976
name: {{ include "k8s-nim-operator.fullname" . }}-webhook-service
7077
namespace: {{ .Release.Namespace }}
7178
path: /validate-apps-nvidia-com-v1alpha1-nimcache
79+
{{- if and (eq .Values.operator.admissionController.tls.mode "secret") (.Values.operator.admissionController.tls.secret.caBundle) }}
80+
caBundle: {{ .Values.operator.admissionController.tls.secret.caBundle }}
81+
{{- end }}
7282
failurePolicy: Fail
7383
rules:
7484
- apiGroups: ["apps.nvidia.com"]
@@ -83,6 +93,9 @@ webhooks:
8393
name: {{ include "k8s-nim-operator.fullname" . }}-webhook-service
8494
namespace: {{ .Release.Namespace }}
8595
path: /validate-apps-nvidia-com-v1alpha1-nimservice
96+
{{- if and (eq .Values.operator.admissionController.tls.mode "secret") (.Values.operator.admissionController.tls.secret.caBundle) }}
97+
caBundle: {{ .Values.operator.admissionController.tls.secret.caBundle }}
98+
{{- end }}
8699
failurePolicy: Fail
87100
rules:
88101
- apiGroups: ["apps.nvidia.com"]

deployments/helm/k8s-nim-operator/templates/deployment.yaml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,11 @@ spec:
7979
volumes:
8080
- name: cert
8181
secret:
82+
{{- if eq .Values.operator.admissionController.tls.mode "cert-manager" }}
8283
secretName: {{ include "k8s-nim-operator.fullname" . }}-webhook-server-cert
84+
{{- else }}
85+
secretName: {{ required "operator.admissionController.tls.secret.name is required when tls.mode is 'secret'" .Values.operator.admissionController.tls.secret.name }}
86+
{{- end }}
8387
defaultMode: 420
8488
{{- end }}
8589
{{- with .Values.operator.nodeSelector }}
@@ -93,4 +97,4 @@ spec:
9397
{{- with .Values.operator.tolerations }}
9498
tolerations:
9599
{{- toYaml . | nindent 8 }}
96-
{{- end }}
100+
{{- end }}

deployments/helm/k8s-nim-operator/values.yaml

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,26 @@ operator:
5656
admissionController:
5757
# Enable the admission controller.
5858
# Note: cert-manager must be installed beforehand, as it is required to generate the TLS certificates.
59-
enabled: false
60-
59+
enabled: true # TLS certificate configuration
60+
tls:
61+
# Certificate management mode: "cert-manager" or "secret"
62+
# - "cert-manager": Use cert-manager to automatically generate and manage certificates
63+
# - "secret": Use a user-provided secret containing tls.crt and tls.key
64+
mode: "cert-manager"
65+
certManager:
66+
# Issuer type: "selfsigned", "clusterissuer", or "issuer"
67+
issuerType: "selfsigned"
68+
# Issuer name (required when issuerType is "clusterissuer" or "issuer")
69+
issuerName: ""
70+
# Additional DNS names for the certificate
71+
dnsNames: []
72+
secret:
73+
# Name of the secret containing tls.crt and tls.key
74+
name: ""
75+
# Base64-encoded CA certificate bundle for validating the webhook's TLS certificate (base64 encoded)
76+
# Required when using secret mode.
77+
# Note: Only include intermediate CA certificates, not root CA certificates
78+
caBundle:
6179
metricsService:
6280
ports:
6381
- name: metrics

0 commit comments

Comments
 (0)