Onboard a Cluster with Custom Kubernetes Certificates in NCH

Guide to configure Kyverno in NCH with custom Kubernetes certificates signed by your internal CA.

Custom Kyverno Configuration for Custom Kubernetes Certificates

This guide walks you through onboarding a cluster in NCH with Kyverno configured to use custom Kubernetes certificates, particularly those signed by your internal Certificate Authority (CA).

1. Generate or Use CA-Signed Certificates

If using your organization’s internal CA, generate/provide certs for kyverno-svc.kyverno.svc and kyverno-cleanup-controller.kyverno.svc. Must be CA-signed, not self-signed.

Wildcard Certificates

For wildcard certs (e.g., *.rancher.test or *.test.aws), SANs must include kyverno-svc.kyverno.svc and kyverno-cleanup-controller.kyverno.svc.

2. Verify Subject Alternative Names (SANs)

Ensure certs include these SANs before creating secrets:

For kyverno-svc:

  • kyverno-svc
  • kyverno-svc.kyverno
  • kyverno-svc.kyverno.svc

For kyverno-cleanup-controller:

  • kyverno-cleanup-controller
  • kyverno-cleanup-controller.kyverno
  • kyverno-cleanup-controller.kyverno.svc

Inspect SANs with Step CLI: step certificate inspect your-admission-cert.crt --short

3. Create Kubernetes Secrets for Kyverno

Create secrets in the kyverno namespace (replace <namespace>).

Admission Controller Secrets

kubectl create secret tls kyverno-svc.kyverno.svc.kyverno-tls-pair --cert=your-admission-cert.crt --key=your-admission-key.key -n <namespace>
kubectl create secret generic kyverno-svc.kyverno.svc.kyverno-tls-ca --from-file=rootCA.crt=your-ca.crt -n <namespace> 

Cleanup Controller Secrets


kubectl create secret tls kyverno-cleanup-controller.kyverno.svc.kyverno-tls-pair --cert=your-cleanup-cert.crt --key=your-cleanup-key.key -n <namespace>
kubectl create secret generic kyverno-cleanup-controller.kyverno.svc.kyverno-tls-ca --from-file=rootCA.crt=your-ca.crt -n <namespace> 

Important: Do not rename these secrets.

Nirmata Enterprise for Kyverno (N4K) and Operator Installation Guide

Version Details: N4K: v1.13.4-n4k.nirmata.2 | N4K Helm Chart: v3.3.9 | Kyverno Operator Helm Chart: v0.5.8

1. Overview

Install N4K and the Kyverno Operator using Helm. This guide also provides a complete container image list for deployments in air-gapped or private registry environments.

2. Install N4K (Kyverno)

helm repo add nirmata https://nirmata.github.io/kyverno-charts/
helm repo update nirmata
helm install kyverno nirmata/kyverno -n kyverno --create-namespace --set features.policyExceptions.namespace="kyverno" --set features.policyExceptions.enabled=true --set admissionController.replicas=3 --version 3.3.9

3. Install Kyverno Operator


helm install kyverno-operator nirmata/nirmata-kyverno-operator -n nirmata-system --create-namespace --devel --set enablePolicyset=true --version v0.5.8 --set "policies.policySets=[]" 

4. Uninstall & Cleanup


helm uninstall kyverno -n kyverno
helm uninstall kyverno-operator -n nirmata-system
kubectl delete ns kyverno
kubectl delete ns nirmata-system

Remove any persistent CRDs or leftover Kyverno resources if needed.

5. Container Image List (For Private Registry Usage)

Ensure these images are in your private registry:

N4K Images:

 reg.nirmata.io/nirmata/kyverno:v1.13.4-n4k.nirmata.2
 reg.nirmata.io/nirmata/kyvernopre:v1.13.4-n4k.nirmata.2
 reg.nirmata.io/nirmata/background-controller:v1.13.4-n4k.nirmata.2
 reg.nirmata.io/nirmata/cleanup-controller:v1.13.4-n4k.nirmata.2
 reg.nirmata.io/nirmata/reports-controller:v1.13.4-n4k.nirmata.2

Kyverno Operator Images:

ghcr.io/nirmata/nirmata-kyverno-operator:v0.4.5

Nirmata Kube-controller Images:

ghcr.io/nirmata/nirmata-kube-controller:v3.10.5   ghcr.io/nirmata/opentelemetry-collector:0.92.0

✅ Tip: Ensure all required images are in the private registry for air-gapped environments.