Memasang sertifikat SSL ACME di Kubernetes sekarang menjadi proses yang terstandardisasi dan fleksibel berkat perkakas yang matang seperti cert-manager dan dukungan luas dari CA komersial. Baik Anda menjalankan beban kerja produksi di belakang NGINX Ingress, Traefik, atau gateway lain, Anda dapat mengotomatiskan HTTPS yang aman dengan kontrol penuh.

Panduan ini akan menunjukkan kepada Anda cara menginstal sertifikat SSL ACME di Kubernetes menggunakan cert-manager. Kami akan membahas instalasi, menyiapkan penerbit dengan Pengikatan Akun Eksternal (External Account Binding/EAB), dan menerbitkan sertifikat untuk melindungi layanan masuk Anda.
Apa yang Anda Butuhkan
Sebelum menyelam, pastikan:
- Anda memiliki klaster Kubernetes yang berfungsi (disarankan v1.23+)
kubectltelah dikonfigurasi dan berfungsi- Anda memiliki akses ke pengontrol masuk Anda (misalnya, NGINX, Traefik)
- Domain Anda mengarah ke IP publik pengontrol masuk Anda
- Anda memiliki kredensial EAB dari CA yang kompatibel dengan ACME:
- URL Direktori ACME (mis. https://acme.example.com/v2/DV)
- Pengenal Kunci EAB (KID)
- Kunci HMAC EAB
Catatan: https://acme.example.com/v2/DV digunakan di seluruh panduan ini sebagai URL direktori ACME penampung. Ganti dengan titik akhir yang sebenarnya dari otoritas sertifikat Anda.
Langkah 1 – Instal cert-manager
cert-manager adalah klien ACME asli Kubernetes yang paling banyak digunakan. Klien ini berjalan sebagai pengontrol yang mengelola penerbitan dan pembaruan sertifikat.
Instal melalui Helm (lebih disukai untuk produksi):
kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v1.14.4 \
--set installCRDs=true
Tunggu beberapa detik dan pastikan semua pod berjalan:
kubectl get pods -n cert-manager
Anda akan melihat tiga pod: cert-manager, cert-manager-webhook, dan cert-manager-cainjector.
Langkah 2 – Buat Rahasia Kubernetes untuk Kredensial EAB
Buat rahasia Kubernetes untuk menyimpan kunci EAB Anda dengan aman:
kubectl create secret generic acme-eab-secret \
--namespace cert-manager \
--from-literal=eab-kid="YOUR_EAB_KID" \
--from-literal=eab-hmac-key="YOUR_EAB_HMAC_KEY"
Ganti dengan kredensial Anda yang sebenarnya. Hindari menyalin-tempel spasi.
Langkah 3 – Tentukan ClusterIssuer atau Penerbit
Sekarang, buat sumber daya ClusterIssuer (untuk semua ruang nama) atau Penerbit (ruang nama tunggal) yang menghubungkan pengelola sertifikat ke CA ACME Anda menggunakan kredensial EAB.
Berikut adalah contoh ClusterIssuer YAML:
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: acme-issuer
spec:
acme:
server: https://your.acme-server.com/v2/DV
email: [email protected]
privateKeySecretRef:
name: acme-private-key
externalAccountBinding:
keyID: YOUR_EAB_KID
keySecretRef:
name: acme-eab-secret
key: eab-hmac-key
solvers:
- http01:
ingress:
class: nginx
Terapkan:
kubectl apply -f clusterissuer.yaml
Ganti ingress.class: nginx dengan traefik, nginx-internal, atau apa pun kelas ingress Anda. Anda dapat menemukannya di dokumentasi pengontrol masuk Anda.
Langkah 4 – Membuat Sumber Daya Sertifikat
Setelah ClusterIssuer Anda siap, buat sumber daya Sertifikat yang memberi tahu pengelola sertifikat domain mana yang akan diamankan. Berikut ini sebuah contoh:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: my-ssl-cert
namespace: default
spec:
secretName: my-ssl-cert-tls
issuerRef:
name: acme-issuer
kind: ClusterIssuer
commonName: yourdomain.com
dnsNames:
- yourdomain.com
- www.yourdomain.com
Terapkan:
kubectl apply -f certificate.yaml
cert-manager akan menggunakan penerbit, menyelesaikan tantangan melalui ingress, dan menyimpan sertifikat yang diterbitkan sebagai rahasia TLS Kubernetes.
Langkah 5 – Rujuk Sertifikat di Ingress Anda
Perbarui aturan akses masuk Anda untuk menggunakan sertifikat yang dihasilkan:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
namespace: default
annotations:
cert-manager.io/cluster-issuer: acme-issuer
spec:
tls:
- hosts:
- yourdomain.com
- www.yourdomain.com
secretName: my-ssl-cert-tls
rules:
- host: yourdomain.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: your-service
port:
number: 80
Terapkan:
kubectl apply -f ingress.yaml
Setelah cert-manager mendeteksi anotasi, ia akan mulai menyelesaikan tantangan ACME dan menerbitkan sertifikat Anda.
Langkah 6 – Verifikasi Sertifikat dan Perpanjangan Otomatis
Untuk memverifikasi bahwa semuanya bekerja dengan baik:
kubectl menjelaskan sertifikat my-ssl-cert
Cari Sertifikat yang berhasil diterbitkan.
Untuk memeriksa pengaturan pembaruan, jalankan:
kubectl get certificaterequests
cert-manager menangani pembaruan secara otomatis ~30 hari sebelum masa berlaku habis. Anda dapat melakukan simulasi perpanjangan seperti ini:
kubectl cert-manager renew my-ssl-cert
Pertanyaan Umum
Menyiapkan SSL ACME di Kubernetes dapat terasa agak abstrak, terutama ketika menangani pengontrol akses masuk, Rahasia, dan catatan DNS. Di bawah ini, kami menjawab beberapa pertanyaan umum yang dihadapi pengembang ketika menginstal sertifikat ACME di lingkungan Kubernetes, baik Anda menggunakan cert-manager atau penyiapan alternatif.
Dapatkah saya menggunakan DNS-01 sebagai pengganti HTTP-01?
Ya, cert-manager mendukung validasi DNS dengan penyedia seperti Cloudflare, AWS, dan Google Cloud DNS. Gunakan jika Anda tidak mengekspos port 80.
Apakah manajer sertifikasi sudah siap produksi?
Tentu saja. SSL ini mendukung cluster Kubernetes besar di seluruh perusahaan dan cloud publik.
Dapatkah saya menggunakan sertifikat wildcard dengan ACME di Kubernetes?
Ya, tetapi sertifikat wildcard memerlukan validasi DNS-01, yang melibatkan pembaruan catatan DNS, bukan menggunakan tantangan HTTP. Konfirmasikan bahwa penyedia DNS Anda mendukung otomatisasi (melalui API), dan konfigurasikan solver dns01 yang sesuai dalam pengaturan manajer sertifikat Anda.
Kata Penutup
Anda sekarang tahu cara menginstal sertifikat SSL ACME di Kubernetes menggunakan cert-manager dan otoritas sertifikat yang kompatibel dengan ACME. Penyiapan ini sepenuhnya otomatis dan dapat diskalakan untuk lingkungan Kubernetes modern. Anda mendapatkan HTTPS yang aman, perpanjangan otomatis, dan integrasi yang mulus dengan Ingress, semuanya tanpa meninggalkan cluster Anda.
Hemat 10% untuk Sertifikat SSL saat memesan hari ini!
Penerbitan cepat, enkripsi kuat, kepercayaan peramban 99,99%, dukungan khusus, dan jaminan uang kembali 25 hari. Kode kupon: SAVE10
