Tutorial Lengkap: Membuat Cloudflare API Token & Menggunakannya di Kubernetes dengan cert-manager

Buat kamu yang baru belajar Kubernetes dan ingin mengamankan domain dengan Let’s Encrypt SSL melalui Cloudflare DNS, ikuti panduan step by step ini. Dijamin gampang dipahami, bahkan untuk pemula! 😉
🔑 1. Membuat Cloudflare API Token
- Masuk ke dashboard Cloudflare → https://dash.cloudflare.com
- Pilih menu My Profile → API Tokens
- Klik Create Token
- Pilih template Edit zone DNS → Use template
- Atur permission:
- Zone → DNS → Edit ✅
- Atur zone (domain) yang boleh diakses, contoh:
masdika.biz.id
- Klik Continue to Summary → Create Token
- Salin token yang muncul → simpan aman (misalnya
9Lxxr8Gq4Zts...
)

👉 Token ini yang nanti akan dipakai di Kubernetes sebagai Secret.
📦 2. Deploy cert-manager di Kubernetes
Pastikan cluster Kubernetes sudah jalan. Deploy cert-manager versi terbaru:
kubectl create namespace cert-manager
kubectl apply -n cert-manager -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
Tunggu sampai pod cert-manager Running:
kubectl get pods -n cert-manager
🗝 3. Membuat Secret untuk API Token Cloudflare
Buat file cloudflare-secret.yaml
:
apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-token-secret
namespace: cert-manager
stringData:
api-token: "ISI_API_TOKEN_CLOUDFLARE"
Apply ke cluster:
kubectl apply -f cloudflare-secret.yaml
🌍 4. Membuat ClusterIssuer untuk Let’s Encrypt
File: cluster-issuer.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: [email protected] # ganti dengan email kamu
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod-private-key
solvers:
- dns01:
cloudflare:
apiTokenSecretRef:
name: cloudflare-api-token-secret
key: api-token
Apply:
kubectl apply -f cluster-issuer.yaml
Cek status ClusterIssuer:
kubectl get clusterissuer letsencrypt-prod -o wide

Kalau READY=True
berarti sukses 🎉
🔒 5. Uji dengan Certificate
Contoh file certificate.yaml
:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: masdika-cert
namespace: default
spec:
secretName: masdika-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- masdika.biz.id
- www.masdika.biz.id
Apply:
kubectl apply -f certificate.yaml
Cek status certificate:
kubectl describe certificate masdika-cert -n default

Kalau berhasil, Secret masdika-tls
akan berisi SSL certificate yang bisa langsung dipakai di Ingress. 🔥
🎯 Kesimpulan
Dengan langkah di atas, kita sudah:
- Membuat API Token di Cloudflare
- Deploy cert-manager di Kubernetes
- Simpan token sebagai Secret
- Buat ClusterIssuer Let’s Encrypt
- Uji dengan membuat Certificate untuk domain
Sekarang domain kamu bisa otomatis dapet SSL gratis dari Let’s Encrypt, dan auto-renew setiap 90 hari. 😎👌
✨ Tips:
- Gunakan email aktif di ClusterIssuer biar dapat notifikasi kalau ada masalah.
- Pastikan Cloudflare token hanya punya akses DNS Edit agar lebih aman.
- Kalau mau staging (testing), bisa ganti
server
ke:https://acme-staging-v02.api.letsencrypt.org/directory
💬 Gimana, mau saya bikinin juga contoh Ingress yang langsung pakai Secret masdika-tls
biar SSL langsung aktif di Nginx Ingress Controller? Komen dibawah ya !!!!
Wihh thanks mas ehehe
okey
sanggar poll maz
Oke siap wkw
Jos emang