bg-tutorials

Cara Memasang Sertifikat SSL ACME di Kubernetes

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.

Instal ACME SSL di Kubernetes

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+)
  • kubectl telah 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

Ditulis oleh

Penulis konten berpengalaman yang berspesialisasi dalam Sertifikat SSL. Mengubah topik keamanan siber yang rumit menjadi konten yang jelas dan menarik. Berkontribusi untuk meningkatkan keamanan digital melalui narasi yang berdampak.