Topik ini menjelaskan cara mengakses layanan WebSocket di dalam mesh melalui gerbang masuk ASM.
Prasyarat
Langkah 1: Deploy aplikasi contoh
-
Hubungkan ke kluster menggunakan kubectl. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
-
Buat file YAML bernama tornado.yaml dengan konten berikut.
apiVersion: v1 kind: Service metadata: name: tornado labels: app: tornado service: tornado spec: ports: - port: 8888 name: http selector: app: tornado --- apiVersion: apps/v1 kind: Deployment metadata: name: tornado spec: replicas: 1 selector: matchLabels: app: tornado version: v1 template: metadata: labels: app: tornado version: v1 spec: containers: - name: tornado image: registry.cn-beijing.aliyuncs.com/aliacs-app-catalog/tornado:lastest imagePullPolicy: Always ports: - containerPort: 8888 --- -
Jalankan perintah berikut untuk membuat aplikasi tornado.
kubectl apply -f tornado.yaml
Langkah 2: Konfigurasikan aturan routing
-
Masuk ke Konsol ASM.
-
Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Mesh Management, temukan instans ASM yang ingin Anda konfigurasi. Klik nama instans ASM tersebut atau klik Manage di kolom Actions.
-
Buat Gateway.
-
Pada halaman detail instans ASM, pilih di panel navigasi sebelah kiri. Pada halaman yang muncul, klik Create from YAML.
-
Atur Namespaces menjadi default, tempel konten berikut, lalu klik Create.
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: tornado-gateway spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "*"Atur
numbermenjadi80agar layanan WebSocket dapat menerima koneksi HTTP atau TCP masuk atau keluar pada Port 80.
-
-
Buat VirtualService.
-
Pada halaman detail instans ASM, pilih di panel navigasi sebelah kiri. Pada halaman yang muncul, klik Create from YAML.
-
Atur Namespaces menjadi default, tempel konten berikut, lalu klik Create.
apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: tornado spec: hosts: - "*" gateways: - tornado-gateway http: - match: - uri: prefix: / route: - destination: host: tornado weight: 100Mengatur
hostsmenjadi*memungkinkan permintaan apa pun untuk mengakses layanan WebSocket.
-
Langkah 3: Dapatkan alamat gerbang masuk
Konsol ASM
-
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Ingress Gateway, temukan Service address.
Konsol ACK
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi sebelah kiri, klik .
-
Di bagian atas halaman Hosts, pilih Namespaces dari daftar drop-down Namespace. Di kolom External IP, temukan alamat IP yang terkait dengan Port 80 untuk layanan istio-ingressgateway.
Langkah 4: Verifikasi akses layanan WebSocket
-
Masukkan http://<alamat gerbang masuk> di empat browser berbeda.
Halaman menampilkan judul tornado WebSocket example. Status WebSocket adalah open (ditandai dengan label hijau). Di bawahnya, halaman menampilkan sembilan entri data dalam tiga tabel dengan kolom No., id, dan value. Semua nilai awal adalah 0.
-
Jalankan perintah berikut untuk mengirim permintaan ke layanan WebSocket.
curl "http://<alamat gerbang masuk>/api?id=8&value=300"curl "http://<alamat gerbang masuk>/api?id=5&value=600"curl "http://<alamat gerbang masuk>/api?id=1&value=200"curl "http://<alamat gerbang masuk>/api?id=3&value=290"Data pada halaman layanan WebSocket di keempat browser diperbarui secara bersamaan dan menampilkan hasil yang identik.
Langkah 5: Beralih ke protokol wss
-
Konfigurasikan Sertifikat server dan kunci privat untuk gerbang. Untuk informasi selengkapnya, lihat Langkah 1: Siapkan Sertifikat server dan kunci privat untuk multiple host.
Pastikan Anda memiliki Secret bernama myexample-credential yang berisi Sertifikat dan kunci privat di namespace istio-system kluster ACK Anda.
-
Modifikasi Gateway yang telah Anda buat di Langkah 2: Konfigurasikan aturan routing.
Contoh YAML:
apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: tornado-gateway spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - "*" - hosts: - "*" port: name: https number: 443 protocol: HTTPS tls: credentialName: myexample-credential mode: SIMPLE
Langkah 6: Verifikasi akses layanan WebSocket melalui wss
-
Modifikasi file hosts di mesin lokal Anda agar a.aliyun.com di-resolve ke alamat IP gerbang ASM. Hal ini memungkinkan Anda mengakses gerbang ASM menggunakan Nama domain yang tercantum dalam Sertifikat yang dikonfigurasi di Langkah 5.
-
Di empat browser berbeda, buka https://a.aliyun.com.
Halaman menampilkan judul tornado WebSocket example. Status WebSocket adalah open (ditandai dengan label hijau). Di bawahnya, halaman menampilkan sembilan entri data dalam tiga tabel dengan kolom No., id, dan value. Semua nilai awal adalah 0.
-
Jalankan perintah berikut untuk mengirim permintaan ke layanan WebSocket.
curl -k "https://<alamat gerbang masuk>/api?id=8&value=300"curl -k "https://<alamat gerbang masuk>/api?id=5&value=600"curl -k "https://<alamat gerbang masuk>/api?id=1&value=200"curl -k "https://<alamat gerbang masuk>/api?id=3&value=290"Data pada halaman layanan WebSocket di keempat browser diperbarui secara bersamaan dan menampilkan hasil yang identik.