Pelajari cara mengonfigurasi penayangan Knative untuk menggunakan sertifikat SSL/TLS Anda sendiri.
Atau, Anda dapat menggunakan fitur sertifikat TLS terkelola, yang secara otomatis membuat dan memperpanjang sertifikat TLS melalui Let's Encrypt
Untuk menggunakan sertifikat Anda sendiri, Anda menyimpan sertifikat TLS di Secret Kubernetes, lalu mengonfigurasi gateway masuk Cloud Service Mesh untuk menggunakan secret tersebut.
Sebelum memulai
- Petunjuk ini mengasumsikan bahwa Anda telah mendapatkan sertifikat TLS.
- Anda harus mengonfigurasi domain kustom. Untuk mengetahui detailnya, lihat Memetakan domain kustom.
- Anda harus mengonfigurasi setiap layanan penayangan Knative yang menggunakan gateway masuk untuk menayangkan traffic eksternal. Jika layanan yang ditampilkan ke eksternal ini tidak
dikonfigurasi untuk menggunakan sertifikat TLS Anda, layanan tidak akan dapat
memverifikasi koneksi HTTPS dan oleh karena itu, tidak akan pernah mencapai status
ready
.
Menyimpan sertifikat TLS di Secret Kubernetes
Untuk menyimpan sertifikat ke dalam Secret:
Buka terminal dan buka direktori tempat sertifikat TLS Anda berada.
Gunakan perintah berikut untuk membuat secret yang menyimpan sertifikat Anda:
kubectl create --namespace INGRESS_NAMESPACE secret tls SECRET_NAME \ --key PRIVATE_KEY.pem \ --cert FULL_CHAIN.pem
Ganti:
- INGRESS_NAMESPACE dengan namespace layanan
ingres Anda,
istio-ingressgateway
. Tentukan namespaceistio-system
jika Anda menginstal Cloud Service Mesh menggunakan konfigurasi default. - SECRET_NAME dengan nama yang ingin Anda gunakan untuk Secret Kubernetes.
- PRIVATE_KEY.pem dengan nama file yang menyimpan kunci pribadi sertifikat Anda.
- FULL_CHAIN.pem dengan nama file yang menyimpan sertifikat publik Anda.
- INGRESS_NAMESPACE dengan namespace layanan
ingres Anda,
Sekarang Anda dapat mengonfigurasi gateway masuk untuk menggunakan secret yang baru saja Anda buat untuk sertifikat TLS.
Mengonfigurasi gateway traffic masuk untuk menggunakan sertifikat Anda
Ubah gateway masuk Cloud Service Mesh untuk menggunakan secret yang Anda buat untuk sertifikat TLS:
Buka YAML gateway ingress dalam mode edit dengan menjalankan perintah berikut:
kubectl edit gateway knative-ingress-gateway --namespace knative-serving
Contoh konfigurasi gateway masuk default:
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: http number: 80 protocol: HTTP
Konfigurasikan gateway masuk untuk menggunakan secret Anda dengan menambahkan atribut
hosts
,port
, dantls
ke YAML yang ada.Untuk mengonfigurasi semua layanan agar menggunakan secret yang sama: Tambahkan kode berikut ke konfigurasi YAML Anda dan tentukan
"*"
sebagai nilai atributhosts
:... # other skipped configuration ... - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Ganti SECRET_NAME dengan nama secret yang Anda buat.
Untuk mengonfigurasi setiap layanan satu per satu: Tambahkan kode berikut ke konfigurasi YAML dan tentukan nilai untuk atribut
hosts
menggunakan nama dan namespace layanan:Untuk setiap layanan, Anda menentukan nilai untuk atribut
hosts
,port
, dantls
:... # other skipped configuration ... - hosts: - SERVICE_NAME.SERVICE_NAMESPACE.CUSTOM_DOMAIN port: number: 443 name: https-SERVICE_NAME protocol: HTTPS tls: mode: SIMPLE credentialName: SECRET_NAME
Ganti:
- SERVICE_NAME dengan nama layanan penayangan Knative. Setiap layanan yang menggunakan gateway masuk untuk menyalurkan traffic eksternal harus dikonfigurasi satu per satu.
- SERVICE_NAMESPACE dengan nama namespace tempat layanan berjalan.
- CUSTOM_DOMAIN dengan domain kustom yang Anda konfigurasikan untuk digunakan layanan.
- SECRET_NAME dengan nama secret yang ingin Anda gunakan layanan. Jika Anda membuat beberapa secret untuk kumpulan sertifikat TLS yang berbeda, Anda dapat menentukan secret yang digunakan setiap layanan.
Simpan perubahan Anda.
Sekarang Anda dapat menggunakan protokol HTTPS untuk mengakses layanan penayangan Knative yang di-deploy.
Contoh
- Mengonfigurasi semua layanan:
Contoh ini menunjukkan cara mengonfigurasi semua layanan untuk menggunakan secret
TLSsecret
:apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret
- Konfigurasikan setiap layanan:
Contoh ini menunjukkan cara mengonfigurasi ketiga layanan yang menyalurkan traffic internet secara terpisah:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: ... # other skipped configuration ... spec: selector: istio: ingressgateway servers: - hosts: - "*" port: name: http number: 80 protocol: HTTP - hosts: - prodservice.prodnamespace.my-custom-domain.com port: number: 443 name: https-prodservice protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret - hosts: - experiment.namespace.my-custom-domain.com port: number: 443 name: https-experiment protocol: HTTPS tls: mode: SIMPLE credentialName: TLSsecret - hosts: - fallbackservice.anothernamespace.my-custom-domain.com port: number: 443 name: https-fallbackservice protocol: HTTPS tls: mode: SIMPLE credentialName: anotherTLSsecret