Kubernetes Advanced
Deploying cert-manager and creating a cluster certificate issuer
In this section, we will deploy cert-manager using helm.
-
Add cert-manager helm repo and run helm repo update
helm repo add jetstack https://charts.jetstack.io helm repo update
-
Install cert-manager using helm
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --set crds.enabled=true NAME: cert-manager LAST DEPLOYED: Wed Apr 24 01:27:17 2024 NAMESPACE: cert-manager STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: cert-manager v1.14.4 has been deployed successfully! In order to begin issuing certificates, you will need to set up a ClusterIssuer or Issuer resource (for example, by creating a 'letsencrypt-staging' issuer). More information on the different types of issuers and how to configure them can be found in our documentation: https://cert-manager.io/docs/configuration/ For information on how to configure cert-manager to automatically provision Certificates for Ingress resources, take a look at the `ingress-shim` documentation: https://cert-manager.io/docs/usage/ingress/
-
Verify whether cert-manager ingress controller is successfully deployed by checking if cert-manager namespace is created and all the relevant pods and services are running.
kubectl get ns NAME STATUS AGE cert-manager Active 7m45s default Active 3d14h ingress-nginx Active 4m29s kube-node-lease Active 3d14h kube-public Active 3d14h kube-system Active 3d14h
kubectl get all -n cert-manager NAME READY STATUS RESTARTS AGE pod/cert-manager-5f8646db6b-fphnb 1/1 Running 0 5m33s pod/cert-manager-cainjector-5cf5f57dd7-btlkj 1/1 Running 0 5m33s pod/cert-manager-webhook-687b7f8b97-hslpj 1/1 Running 0 5m33s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/cert-manager ClusterIP 10.254.23.21 <none> 9402/TCP 5m33s service/cert-manager-webhook ClusterIP 10.254.176.88 <none> 443/TCP 5m33s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cert-manager 1/1 1 1 5m33s deployment.apps/cert-manager-cainjector 1/1 1 1 5m33s deployment.apps/cert-manager-webhook 1/1 1 1 5m33s NAME DESIRED CURRENT READY AGE replicaset.apps/cert-manager-5f8646db6b 1 1 1 5m33s replicaset.apps/cert-manager-cainjector-5cf5f57dd7 1 1 1 5m33s replicaset.apps/cert-manager-webhook-687b7f8b97 1 1 1 5m33s
-
In this tutorial, we’re using Let’s Encrypt as certificate authority, which provides free TLS certificates. Let’s create clusterissuer.yaml using Let’s Encrypt staging environment.
apiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-staging namespace: cert-manager spec: acme: server: https://acme-staging-v02.api.letsencrypt.org/directory email: <your project bot email address> privateKeySecretRef: name: letsencrypt-staging solvers: - http01: ingress: class: nginx
-
Run the kubectl command below to create a cluster certificate issuer.
kubectl create -f clusterissuer.yaml clusterissuer.cert-manager.io/letsencrypt-staging created
More information
For more information, refer to:
Tutorial Complete!
You have completed this tutorial. Continue with the other tutorials in the Series or return to the tutorials home page.
Return Home