cert-manager adalah sistem manajemen siklus hidup sertifikat yang digunakan untuk menerbitkan dan menyebarkan sertifikat. Anda dapat menggunakan cert-manager untuk menerbitkan sertifikat bagi Service Mesh (ASM) gateway, memungkinkan akses layanan melalui HTTPS dengan gateway ASM. Hal ini menjamin keamanan transmisi data. Topik ini menjelaskan cara menggunakan cert-manager untuk mengelola sertifikat untuk gateway ASM.
Informasi latar belakang
cert-manager memungkinkan penerbitan Sertifikat Tanda Tangan Sendiri dan Sertifikat Sistem Nama Domain (DNS). Anda dapat memuat sertifikat pada gateway ASM dan menggunakannya untuk mengakses layanan melalui HTTPS. Berikut perbedaan antara kedua jenis sertifikat:
Sertifikat Tanda Tangan Sendiri: Hanya digunakan untuk enkripsi, tidak untuk otentikasi. Gateway ASM dengan sertifikat tanda tangan sendiri dapat diakses melalui HTTPS di alat baris perintah, tetapi tidak dipercaya oleh browser web. Browser akan menandai koneksi HTTPS tersebut sebagai berisiko potensial, sehingga tidak dapat digunakan untuk akses melalui browser.
Sertifikat DNS: Diterbitkan oleh Otoritas Sertifikat (CA), dapat digunakan untuk enkripsi dan otentikasi. Sertifikat DNS lebih aman dibandingkan dengan sertifikat tanda tangan sendiri serta dipercaya oleh browser web. Gateway ASM dengan sertifikat DNS dapat diakses melalui HTTPS baik di alat baris perintah maupun di browser web.
Jika terjadi kesalahan saat menggunakan cert-manager di kluster pada bidang data, Anda dapat bergabung dengan Grup DingTalk 30421250 untuk berkonsultasi.
Prasyarat
Instal cert-manager di kluster Anda
Instal Helm di komputer Anda. Untuk informasi lebih lanjut, lihat Helm.
Gunakan kubectl untuk terhubung ke kluster Anda. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig dari kluster dan gunakan kubectl untuk terhubung ke kluster.
Jalankan perintah berikut untuk membuat namespace bernama cert-manager:
kubectl create namespace cert-managerJalankan perintah berikut untuk menambahkan chart cert-manager:
helm repo add jetstack https://charts.jetstack.ioJalankan perintah berikut untuk mendapatkan informasi terbaru tentang chart cert-manager:
helm repo updateJalankan perintah berikut untuk menginstal cert-manager:
CatatanVersi cert-manager harus kompatibel dengan versi Kubernetes. Untuk informasi lebih lanjut tentang pemetaan antara versi cert-manager dan versi Kubernetes, lihat Supported Releases.
helm install \ cert-manager jetstack/cert-manager \ --namespace cert-manager \ --version v1.14 \ --set installCRDs=true
Gunakan cert-manager untuk menerbitkan sertifikat tanda tangan sendiri
Langkah 1: Buat sertifikat tanda tangan sendiri di kluster Anda
Buat file issuer.yaml dengan konten berikut:
Jalankan perintah berikut untuk membuat CA tanda tangan sendiri dan menerbitkan sertifikat untuk beban kerja:
kubectl apply -f issuer.yaml -n istio-systemJalankan perintah berikut untuk melihat sertifikat:
kubectl get secret -n istio-systemKeluaran yang diharapkan:
NAME TYPE DATA AGE istio-ingressgateway-certs kubernetes.io/tls 3 68m
Langkah 2: Verifikasi bahwa Anda dapat mengakses layanan melalui HTTPS
Terapkan aplikasi HTTPBin. Untuk informasi lebih lanjut, lihat Terapkan aplikasi httpbin.
Modifikasi gateway Istio untuk aplikasi HTTPBin.
Anda dapat menggunakan file kubeconfig dari instance ASM dan menjalankan perintah, atau masuk ke konsol ASM dan modifikasi file YAML di halaman Gateway. Untuk informasi lebih lanjut, lihat Kelola gateway Istio.
Blok kode berikut menunjukkan file YAML yang telah dimodifikasi. Pendengar HTTPS ditambahkan ke port 443 dan sertifikat yang dibuat oleh cert-manager digunakan.
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: SIMPLEJalankan perintah berikut untuk mendapatkan alamat IP dari gateway ingress di kluster:
kubectl get svc -n istio-system -l istio=ingressgatewayJalankan perintah berikut untuk mengakses aplikasi HTTPBin melalui HTTPS:
curl -k --resolve istio-ingressgateway-certs:443:${Alamat IP dari gateway ingress} https://istio-ingressgateway-certs/status/418 -ISetelah akses berhasil, kode status 418 dikembalikan. Nama domain yang digunakan untuk mengakses gateway ingress adalah
istio-ingressgateway-certs. Ini karenacommonNamedisetel keistio-ingressgateway-certssaat Anda membuat sertifikat.