cert-manager adalah sistem manajemen siklus hidup sertifikat yang mengotomatiskan permintaan dan penerapan sertifikat. Anda dapat menggunakan cert-manager untuk menerbitkan sertifikat bagi gerbang ASM, sehingga mengamankan layanan yang diakses melalui gerbang tersebut dengan HTTPS dan memastikan data dienkripsi selama transmisi. Topik ini menjelaskan cara menggunakan cert-manager untuk mengelola sertifikat gerbang.
Informasi latar belakang
cert-manager dapat menerbitkan sertifikat tanda tangan sendiri (self-signed certificate) dan sertifikat divalidasi DNS (DNS-validated certificate), yang memungkinkan akses ke layanan melalui gerbang ASM menggunakan HTTPS. Perbedaan antara kedua jenis sertifikat tersebut adalah sebagai berikut:
-
Sertifikat tanda tangan sendiri menyediakan enkripsi tetapi tidak menyediakan verifikasi identitas. Sertifikat ini dapat digunakan untuk mengakses gerbang ASM melalui HTTPS dari alat baris perintah (command-line tools). Namun, browser web tidak mempercayai sertifikat tanda tangan sendiri dan akan menampilkan peringatan keamanan, sehingga mencegah akses melalui browser.
-
Sertifikat divalidasi DNS diterbitkan oleh Otoritas Sertifikat (Certificate Authority/CA) tepercaya dan menyediakan enkripsi sekaligus verifikasi identitas. Sertifikat ini menawarkan keamanan lebih tinggi dibandingkan sertifikat tanda tangan sendiri serta dipercaya oleh browser web. Anda dapat menggunakannya untuk mengakses gerbang ASM melalui HTTPS baik dari alat baris perintah maupun browser web.
Jika Anda mengalami error saat menggunakan cert-manager di kluster bidang data (data plane) ASM, bergabunglah dengan grup DingTalk (ID: 30421250) untuk mendapatkan bantuan.
Prasyarat
Instal cert-manager
-
Instal Helm di mesin lokal Anda. Untuk informasi selengkapnya, lihat Helm.
-
Hubungkan ke kluster Anda menggunakan kubectl. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
-
Jalankan perintah berikut untuk membuat namespace cert-manager:
kubectl create namespace cert-manager -
Jalankan perintah berikut untuk menambahkan repositori chart cert-manager:
helm repo add jetstack https://charts.jetstack.io -
Jalankan perintah berikut untuk memperbarui repositori chart cert-manager:
helm repo update -
Jalankan perintah berikut untuk menginstal cert-manager.
CatatanVersi cert-manager harus kompatibel dengan versi Kubernetes Anda. Untuk informasi tentang kompatibilitas versi, lihat Supported Releases.
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager \ --version v1.14 \ --set installCRDs=true
Terbitkan sertifikat tanda tangan sendiri
Langkah 1: Hasilkan sertifikat tanda tangan sendiri
-
Buat file bernama issuer.yaml dengan konten berikut.
-
Jalankan perintah berikut untuk membuat CA tanda tangan sendiri guna menerbitkan sertifikat workload:
kubectl apply -f issuer.yaml -n istio-system -
Jalankan perintah berikut untuk memverifikasi bahwa Secret sertifikat telah dibuat:
kubectl get secret -n istio-systemOutput yang diharapkan:
NAME TYPE DATA AGE istio-ingressgateway-certs kubernetes.io/tls 3 68m
Langkah 2: Verifikasi akses melalui HTTPS
-
Terapkan aplikasi httpbin. Untuk informasi selengkapnya, lihat Terapkan aplikasi httpbin.
-
Modifikasi Gateway untuk aplikasi httpbin.
Anda dapat melakukan modifikasi ini dari baris perintah menggunakan file kubeconfig untuk instans ASM Anda, atau melalui Konsol ASM dengan mengubah YAML pada halaman Gateway. Untuk informasi selengkapnya, lihat Kelola aturan Gateway.
Contoh YAML berikut menambahkan pendengar HTTPS pada Port 443 yang menggunakan sertifikat yang dibuat oleh cert-manager.
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: httpbin namespace: default spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: test number: 80 protocol: HTTP - hosts: - '*' port: name: https number: 443 protocol: HTTPS tls: credentialName: istio-ingressgateway-certs mode: SIMPLE -
Jalankan perintah berikut untuk mendapatkan alamat IP gerbang masuk:
kubectl get svc -n istio-system -l istio=ingressgateway -
Jalankan perintah berikut untuk mengakses aplikasi httpbin melalui HTTPS:
curl -k --resolve istio-ingressgateway-certs:443:${ASM_GATEWAY_IP} https://istio-ingressgateway-certs/status/418 -IJika permintaan berhasil, kode status 418 akan dikembalikan. Domain untuk mengakses gerbang adalah
istio-ingressgateway-certs, yang sesuai dengancommonNameyang ditetapkan dalam resource Certificate.