Ingress gateway memungkinkan Anda mengonfigurasi layanan Google Remote Procedure Call (gRPC) yang didasarkan pada protokol mutual TLS (mTLS). Mekanisme keamanan ini memastikan bahwa hanya klien yang berwenang yang dapat mengakses layanan gRPC. Enkripsi ujung-ke-ujung dan otentikasi dua arah diterapkan selama proses transmisi data untuk melindungi informasi dari penyadapan, pemalsuan, dan akses tidak sah.
Prasyarat
Sebuah instance Service Mesh (ASM) edisi Enterprise telah dibuat. Untuk informasi lebih lanjut, lihat Buat instance ASM.
Sebuah klaster ACK dikelola telah dibuat. Untuk informasi lebih lanjut, lihat Buat klaster ACK dikelola.
Sebuah ingress gateway telah diterapkan. Untuk informasi lebih lanjut, lihat Buat ingress gateway.
Sebuah aplikasi telah diterapkan di klaster Container Service for Kubernetes (ACK) yang ditambahkan ke instance ASM Anda. Untuk informasi lebih lanjut, lihat Terapkan aplikasi di klaster ACK yang ditambahkan ke instance ASM.
Informasi latar belakang
Anda dapat mengarahkan trafik ke layanan gRPC dalam instance ASM menggunakan ingress gateway.Service Mesh Layanan gRPC dibangun di atas protokol HTTP/2. Ini memungkinkan Anda menggunakan protokol TLS atau mTLS untuk mengenkripsi data yang ditransmisikan guna memastikan keamanan data. Ingress gateway mendukung gRPC dengan TLS atau mTLS. Penghentian TLS dilakukan pada aliran data TCP terenkripsi saat melewati ingress gateway. Anda tidak perlu mengonfigurasi TLS untuk aplikasi dalam instance ASM.
Prosedur
Langkah 1: Terapkan aplikasi sampel
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang ingin Anda kelola dan klik namanya. Di panel sebelah kiri, pilih .
Di bagian atas halaman Deployments, pilih namespace dari daftar drop-down Namespace dan klik Create from YAML.
Di halaman Create, salin kode YAML berikut ke editor kode dan klik Create.
CatatanParameter
namedari bidangportsdalam konfigurasi layanan harus dimulai denganhttp2-ataugrpc-. Jika tidak, Istio tidak dapat mengidentifikasi protokol layanan.
Langkah 2: Buat ingress gateway
Dalam contoh ini, port default 443 digunakan untuk mengekspos layanan. Untuk informasi lebih lanjut, lihat Buat ingress gateway.
Langkah 3: Konfigurasikan gateway Istio dan layanan virtual
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
Di halaman Mesh Management, temukan instance ASM yang ingin Anda konfigurasikan, dan klik nama instansinya atau klik Manage di kolom Actions.
Buat gateway Istio.
Di halaman detail instance ASM, pilih di panel navigasi sebelah kiri.
Di halaman Gateway, klik Create from YAML.
Di halaman Create, pilih default dari daftar drop-down Namespace, salin kode YAML berikut ke editor kode, lalu klik Create.
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: gw-grpc-443 namespace: default spec: selector: istio: ingressgateway servers: - hosts: - '*' port: name: https number: 443 protocol: HTTPS tls: credentialName: example-credential mode: MUTUAL
Buat layanan virtual.
Di halaman detail instance ASM, pilih di panel navigasi sebelah kiri.
Di halaman VirtualService, klik Create from YAML.
Di halaman Create, pilih default dari daftar drop-down Namespace, salin kode YAML berikut ke editor kode, lalu klik Create.
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: grpc-vs spec: hosts: - "*" gateways: - gw-grpc-443 http: - match: - port: 443 route: - destination: host: istio-grpc-server
Langkah 4: Pasang sertifikat
Biasanya, klien gRPC memerlukan sertifikat Subject Alternative Name (SAN). Kami merekomendasikan agar Anda menggunakan sertifikat yang tercantum di grpc-go. Pasang sertifikat ke namespace istio-system klaster ACK karena ingress gateway memerlukan sertifikat tersebut.
Untuk instance ASM versi lebih awal dari 1.17
Jalankan perintah berikut untuk membuat rahasia di namespace istio-system:
kubectl create -n istio-system secret generic example-credential --from-file=tls.key=server_key.pem --from-file=tls.crt=server_cert.pem --from-file=ca.crt=client_ca_cert.pemCatatanNama rahasia harus sama dengan credentialName yang dikonfigurasikan di gateway Istio.
Untuk instance ASM versi 1.17 atau lebih baru
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi sebelah kiri, pilih .
Di halaman Certificate Management, klik Create. Di panel Certificate Information, konfigurasikan parameter yang diperlukan dan klik OK.
Langkah 5: Mulai klien gRPC
Dalam contoh ini, klien gRPC yang menggunakan mTLS dimulai. Untuk informasi lebih lanjut, lihat situs resmi gRPC.
Instal dependensi. Untuk informasi lebih lanjut, lihat Memulai cepat gRPC di Go.
Clone repositori kode gRPC-go. Untuk informasi lebih lanjut, lihat gRPC-go.
Ganti isi file main.go di jalur /grpc-go/examples/helloworld/greeter_client/ dengan kode berikut dan ubah nilai
addressmenjadi${Alamat IP ingress gateway}:443:Pergi ke jalur examples dan jalankan perintah berikut:
go run helloworld/greeter_client/main.goHasil yang diharapkan:
Greeting: Hello WorldJika kesalahan seperti pada gambar berikut ditampilkan, sertifikat tidak valid. Lakukan langkah-langkah sebelumnya untuk memasang sertifikat lagi.
