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
keren mas
oke makasih
mas req boleh
rreq apa ?