Prasyarat
Dua klaster Container Service for Kubernetes (ACK), yaitu m1c1 dan m1c2 dalam contoh ini, telah dibuat dalam VPC yang sama. Untuk informasi lebih lanjut, lihat Buat klaster ACK khusus (tidak berlaku lagi) atau Buat klaster ACK dikelola.
Catatan Saat membuat klaster, disarankan untuk mengonfigurasi kelompok keamanan tingkat lanjut untuk klaster tersebut.
Sebuah instance ASM versi 1.18.0.139 atau lebih baru telah dibuat. Instance ASM mesh1 digunakan dalam contoh ini. Untuk informasi lebih lanjut tentang cara membuat instance ASM, lihat Buat instance ASM.
Langkah 1: Pastikan bahwa kedua klaster dapat berkomunikasi satu sama lain
Secara default, dua klaster dalam VPC yang sama dapat berkomunikasi satu sama lain jika terkait dengan kelompok keamanan tingkat lanjut. Jika salah satu klaster terkait dengan kelompok keamanan dasar atau kedua kelompok keamanan tidak dapat berkomunikasi satu sama lain, konfigurasikan aturan kelompok keamanan untuk klaster tersebut. Untuk informasi lebih lanjut, lihat Kelola aturan kelompok keamanan.
Langkah 2: Tambahkan klaster ke instance ASM dan buat gateway ingress serverless
Setelah menambahkan kedua klaster ke instance ASM, buat gateway ingress serverless.
Tambahkan kedua klaster ke instance ASM. Untuk informasi lebih lanjut, lihat Tambahkan klaster ke instance ASM.
Gunakan file YAML berikut untuk membuat gateway ingress serverless. Untuk informasi lebih lanjut, lihat Buat gateway ingress.
Perluas untuk melihat file YAML gateway ingress serverless
apiVersion: istio.alibabacloud.com/v1beta1
kind: IstioGateway
metadata:
annotations:
asm.alibabacloud.com/managed-by-asm: 'true'
name: ingressgateway
namespace: istio-system
spec:
gatewayType: ingress
dnsPolicy: ClusterFirst
externalTrafficPolicy: Local
hostNetwork: false
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
replicaCount: 1
resources:
limits:
cpu: '2'
memory: 2G
requests:
cpu: 200m
memory: 256Mi
rollingMaxSurge: 100%
rollingMaxUnavailable: 25%
runAsRoot: true
serviceType: LoadBalancer
Langkah 3: Terapkan aplikasi Bookinfo
ASM memungkinkan Anda menerapkan aplikasi lintas klaster. Anda dapat menerapkan mikro-layanan aplikasi Bookinfo di kedua klaster.
Gunakan konten berikut untuk membuat sumber daya yang dikonfigurasi dalam file bookinfo-m1c2.yaml di klaster m1c2:
Catatan Versi v3 dari mikro-layanan reviews menampilkan peringkat sebagai bintang merah.
Tampilkan file YAML aplikasi Bookinfo
# Layanan Details
apiVersion: v1
kind: Service
metadata:
name: details
labels:
app: details
service: details
spec:
ports:
- port: 9080
name: http
selector:
app: details
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: bookinfo-details
labels:
account: details
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: details-v1
labels:
app: details
version: v1
spec:
replicas: 1
selector:
matchLabels:
app: details
version: v1
template:
metadata:
labels:
app: details
version: v1
spec:
serviceAccountName: bookinfo-details
containers:
- name: details
image: docker.io/istio/examples-bookinfo-details-v1:1.15.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
---
# Layanan Ratings
apiVersion: v1
kind: Service
metadata:
name: ratings
labels:
app: ratings
service: ratings
spec:
ports:
- port: 9080
name: http
selector:
app: ratings
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: bookinfo-ratings
labels:
account: ratings
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: ratings-v1
labels:
app: ratings
version: v1
spec:
replicas: 1
selector:
matchLabels:
app: ratings
version: v1
template:
metadata:
labels:
app: ratings
version: v1
spec:
serviceAccountName: bookinfo-ratings
containers:
- name: ratings
image: docker.io/istio/examples-bookinfo-ratings-v1:1.15.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
---
# Layanan Reviews
apiVersion: v1
kind: Service
metadata:
name: reviews
labels:
app: reviews
service: reviews
spec:
ports:
- port: 9080
name: http
selector:
app: reviews
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: bookinfo-reviews
labels:
account: reviews
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: reviews-v1
labels:
app: reviews
version: v1
spec:
replicas: 1
selector:
matchLabels:
app: reviews
version: v1
template:
metadata:
labels:
app: reviews
version: v1
spec:
serviceAccountName: bookinfo-reviews
containers:
- name: reviews
image: docker.io/istio/examples-bookinfo-reviews-v1:1.15.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: reviews-v2
labels:
app: reviews
version: v2
spec:
replicas: 1
selector:
matchLabels:
app: reviews
version: v2
template:
metadata:
labels:
app: reviews
version: v2
spec:
serviceAccountName: bookinfo-reviews
containers:
- name: reviews
image: docker.io/istio/examples-bookinfo-reviews-v2:1.15.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
---
# Layanan Productpage
apiVersion: v1
kind: Service
metadata:
name: productpage
labels:
app: productpage
service: productpage
spec:
ports:
- port: 9080
name: http
selector:
app: productpage
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: bookinfo-productpage
labels:
account: productpage
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: productpage-v1
labels:
app: productpage
version: v1
spec:
replicas: 1
selector:
matchLabels:
app: productpage
version: v1
template:
metadata:
labels:
app: productpage
version: v1
spec:
serviceAccountName: bookinfo-productpage
containers:
- name: productpage
image: docker.io/istio/examples-bookinfo-productpage-v1:1.15.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
---
Jalankan perintah berikut untuk menerapkan aplikasi Bookinfo yang tidak mengandung versi v3 dari mikro-layanan reviews di klaster m1c2:
kubectl apply -f bookinfo-m1c2.yaml
Gunakan konten berikut untuk membuat sumber daya yang dikonfigurasi dalam file bookinfo-m1c1.yaml di klaster m1c1:
Tampilkan file YAML
# Layanan Reviews
apiVersion: v1
kind: Service
metadata:
name: reviews
labels:
app: reviews
service: reviews
spec:
ports:
- port: 9080
name: http
selector:
app: reviews
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: bookinfo-reviews
labels:
account: reviews
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: reviews-v3
labels:
app: reviews
version: v3
spec:
replicas: 1
selector:
matchLabels:
app: reviews
version: v3
template:
metadata:
labels:
app: reviews
version: v3
spec:
serviceAccountName: bookinfo-reviews
containers:
- name: reviews
image: docker.io/istio/examples-bookinfo-reviews-v3:1.15.0
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
---
# Layanan Ratings
apiVersion: v1
kind: Service
metadata:
name: ratings
labels:
app: ratings
service: ratings
spec:
ports:
- port: 9080
name: http
selector:
app: ratings
Jalankan perintah berikut untuk menerapkan versi v3 dari mikro-layanan reviews dan mikro-layanan ratings di klaster m1c1:
kubectl apply -f bookinfo-m1c1.yaml
Langkah 4: Tambahkan layanan virtual dan gateway Istio
Buat layanan virtual bernama bookinfo di namespace default instance ASM. Untuk informasi lebih lanjut, lihat Kelola layanan virtual.
Perluas untuk melihat file YAML layanan virtual
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: bookinfo
spec:
hosts:
- "*"
gateways:
- bookinfo-gateway
http:
- match:
- uri:
exact: /productpage
- uri:
prefix: /static
- uri:
exact: /login
- uri:
exact: /logout
- uri:
prefix: /api/v1/products
route:
- destination:
host: productpage
port:
number: 9080
Buat gateway Istio bernama bookinfo-gateway di namespace default instance ASM. Untuk informasi lebih lanjut, lihat Kelola gateway Istio.
Perluas untuk melihat file YAML gateway Istio
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway # gunakan pengontrol default istio
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
Di bilah alamat browser Anda, masukkan http://{alamat IP gateway ingress serverless}/productpage dan segarkan halaman beberapa kali.
Anda dapat melihat bahwa rasio permintaan yang dirutekan ke tiga versi mikro-layanan reviews mendekati 1:1:1. Versi v3 dari mikro-layanan reviews dapat berfungsi normal meskipun tidak diterapkan di klaster yang sama dengan mikro-layanan lainnya.
(Opsional) Langkah 5: Tentukan bahwa permintaan selalu dirutekan ke versi v3 mikro-layanan reviews
Anda dapat mendefinisikan aturan tujuan dan layanan virtual untuk menetapkan kebijakan penerapan mikro-layanan aplikasi Bookinfo. Contoh berikut menentukan bahwa permintaan selalu dirutekan ke versi v3 mikro-layanan reviews.
Buat aturan tujuan bernama reviews di namespace default instance ASM. Untuk informasi lebih lanjut, lihat Kelola layanan virtual.
Perluas untuk melihat file YAML aturan tujuan
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: reviews
spec:
host: reviews
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
- name: v3
labels:
version: v3
Buat layanan virtual bernama reviews di namespace default instance ASM. Untuk informasi lebih lanjut, lihat Kelola layanan virtual.
Perluas untuk melihat file YAML layanan virtual
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v3
Di bilah alamat browser Anda, masukkan http://{alamat IP gateway ingress serverless}/productpage dan segarkan halaman beberapa kali.
Anda dapat melihat bahwa permintaan selalu dirutekan ke versi v3 mikro-layanan reviews. Dalam hal ini, peringkat ditampilkan sebagai bintang merah.