Introduction
Dalam ekosistem Kubernetes, memastikan aplikasi kita dapat diakses melalui HTTPS adalah salah satu langkah penting untuk meningkatkan keamanan. Salah satu cara yang paling populer dan mudah untuk mengelola sertifikat SSL/TLS adalah menggunakan Cert-Manager.
Dengan Cert-Manager, Kubernetes dapat mengelola sertifikat dari berbagai issuer, termasuk Let’s Encrypt, secara otomatis — mulai dari pembuatan, validasi, hingga perpanjangan sertifikat tanpa campur tangan manual.
Dalam artikel ini, kita akan membahas flow proses, prasyarat, serta panduan lengkap step-by-step untuk menginstal Cert-Manager dan mengaktifkan Let’s Encrypt pada cluster Kubernetes kita.
Flow
Arhchitecture Overview

Prerequisites:
- Domain aktif mengarah ke LoadBalancer Ingress
kubectlterhubung ke cluster- Helm install
- Akses DNS untuk membuat A record ke IP Ingress
Step by Step Implementation
Step 1: Install Cert-manager
Cert-Manager direkomendasikan di-install menggunakan Helm.
helm repo add jetstack https://charts.jetstack.io helm repo update
helm install cert-manager jetstack/cert-manager \ --namespace cert-manager --create-namespace \ --version v1.12.0 \ --set installCRDs=true
Verify cert-manager
kubectl get pods -n cert-manager

Step 2: Create ClusterIssuer (Let’s Encrypt)
# cluster-issuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: admin@igunawan.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
Apply file : kubectl apply -f cluster-issuer.yaml
Step 3: Install NGINX Ingress Controller (Jika belum ada)
Add helm
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx helm repo update
helm install ingress-nginx ingress-nginx/ingress-nginx \ --namespace ingress-nginx --create-namespace
Step 4: Create Ingress Resource Dengan TLS
Contoh untuk domain igunawan.com
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: api-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: "letsencrypt-prod"
spec:
tls:
- hosts:
- igunawan.com
secretName: api-tls
rules:
- host: igunawan.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: api-service
port:
number: 80
Apply:
kubectl apply -f ingress.yaml
Step 5: Verify TLS



Admin website igunawan.com, System Administrator, DevOps Engineer
