GPU-Live/network-operator/templates/admission_controller.yaml

130 lines
3.9 KiB
YAML

---
{{- if .Values.operator.admissionController.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}-webhook-service
namespace: {{ .Release.Namespace }}
spec:
ports:
- port: 443
protocol: TCP
targetPort: 9443
selector:
control-plane: {{ .Release.Name }}-controller
{{- end }}
---
{{- if and .Values.operator.admissionController.enabled .Values.operator.admissionController.useCertManager }}
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
labels:
app.kubernetes.io/component: certificate
app.kubernetes.io/created-by: {{ .Release.Name }}
app.kubernetes.io/instance: serving-cert
app.kubernetes.io/name: certificate
app.kubernetes.io/part-of: {{ .Release.Name }}
name: {{ .Release.Name }}-serving-cert
namespace: {{ .Release.Namespace }}
spec:
dnsNames:
- {{ .Release.Name }}-webhook-service.{{ .Release.Namespace }}.svc
- {{ .Release.Name }}-webhook-service.{{ .Release.Namespace }}.svc.cluster.local
issuerRef:
kind: Issuer
name: {{ .Release.Name }}-selfsigned-issuer
secretName: webhook-server-cert
{{- end }}
---
{{- if and .Values.operator.admissionController.enabled .Values.operator.admissionController.useCertManager }}
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
labels:
app.kubernetes.io/component: certificate
app.kubernetes.io/created-by: {{ .Release.Name }}
app.kubernetes.io/instance: serving-cert
app.kubernetes.io/name: certificate
app.kubernetes.io/part-of: {{ .Release.Name }}
name: {{ .Release.Name }}-selfsigned-issuer
namespace: {{ .Release.Namespace }}
spec:
selfSigned: {}
{{- end }}
---
{{- if .Values.operator.admissionController.enabled }}
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
{{- if .Values.operator.admissionController.useCertManager }}
annotations:
cert-manager.io/inject-ca-from: {{ .Release.Namespace }}/{{ .Release.Name }}-serving-cert
{{- end }}
labels:
app.kubernetes.io/component: webhook
app.kubernetes.io/created-by: {{ .Release.Name }}
app.kubernetes.io/instance: validating-webhook-configuration
app.kubernetes.io/name: validatingwebhookconfiguration
app.kubernetes.io/part-of: {{ .Release.Name }}
name: {{ .Release.Name }}-validating-webhook-configuration
webhooks:
- admissionReviewVersions:
- v1
clientConfig:
service:
name: {{ .Release.Name }}-webhook-service
namespace: {{ .Release.Namespace }}
path: /validate-mellanox-com-v1alpha1-hostdevicenetwork
{{- if not .Values.operator.admissionController.useCertManager }}
caBundle: {{ .Values.operator.admissionController.certificate.caCrt | b64enc | quote }}
{{- end }}
failurePolicy: Fail
name: vhostdevicenetwork.kb.io
rules:
- apiGroups:
- mellanox.com
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- hostdevicenetworks
sideEffects: None
- admissionReviewVersions:
- v1
clientConfig:
service:
name: {{ .Release.Name }}-webhook-service
namespace: {{ .Release.Namespace }}
path: /validate-mellanox-com-v1alpha1-nicclusterpolicy
{{- if not .Values.operator.admissionController.useCertManager }}
caBundle: {{ .Values.operator.admissionController.certificate.caCrt | b64enc | quote }}
{{- end }}
failurePolicy: Fail
name: vnicclusterpolicy.kb.io
rules:
- apiGroups:
- mellanox.com
apiVersions:
- v1alpha1
operations:
- CREATE
- UPDATE
resources:
- nicclusterpolicies
sideEffects: None
{{- end }}
---
{{- if and .Values.operator.admissionController.enabled (not .Values.operator.admissionController.useCertManager) }}
apiVersion: v1
kind: Secret
metadata:
name: webhook-server-cert
namespace: {{ .Release.Namespace }}
type: Opaque
data:
tls.crt: {{ .Values.operator.admissionController.certificate.tlsCrt | b64enc | quote }}
tls.key: {{ .Values.operator.admissionController.certificate.tlsKey | b64enc | quote }}
{{- end }}