Prasyarat
-
Dua kluster Container Service for Kubernetes (ACK) telah dibuat dalam VPC yang sama. Tutorial ini menggunakan kluster bernama m1c1 dan m1c2. Untuk informasi selengkapnya, lihat Create an ACK dedicated cluster (discontinued) atau Create an ACK managed cluster.
Catatan
Saat membuat kluster, gunakan advanced security groups untuk menyederhanakan komunikasi antar-kluster.
-
Instans ASM versi v1.18.0.139 atau yang lebih baru. Tutorial ini menggunakan instans ASM bernama mesh1. Untuk informasi selengkapnya, lihat Create an ASM instance.
Langkah 1: Verifikasi komunikasi antar-kluster
Dua kluster dalam VPC yang sama dapat berkomunikasi secara default jika keduanya menggunakan advanced security groups. Jika salah satu kluster menggunakan basic security group atau kedua security group tidak dapat berkomunikasi, konfigurasikan aturan security group untuk mengizinkan traffic di antara keduanya. Untuk informasi selengkapnya, lihat Manage security group rules.
Langkah 2: Tambahkan kluster ke instans ASM dan buat gerbang masuk serverless
Tambahkan kedua kluster ke instans ASM, lalu buat gerbang masuk serverless.
-
Tambahkan kedua kluster ke instans ASM. Untuk informasi selengkapnya, lihat Add a cluster to an ASM instance.
-
Buat gerbang masuk serverless dengan konfigurasi YAML berikut. Untuk informasi selengkapnya, lihat Create an ingress gateway.
YAML gerbang masuk 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: Deploy aplikasi Bookinfo di beberapa kluster
Deploy layanan mikro Bookinfo di kedua kluster. Kluster m1c2 menjalankan sebagian besar layanan (details, ratings, reviews v1/v2, dan productpage), sedangkan kluster m1c1 menjalankan versi v3 dari layanan mikro reviews dan layanan ratings.
-
Simpan konten berikut ke file bernama bookinfo-m1c2.yaml.
Catatan
Versi v3 dari layanan mikro reviews menampilkan rating sebagai bintang berwarna merah.
bookinfo-m1c2.yaml
# Details service
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
---
# Ratings service
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
---
# Reviews service
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
---
# Productpage services
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
---
-
Deploy aplikasi Bookinfo (tanpa layanan mikro reviews versi v3) ke kluster m1c2:
kubectl apply -f bookinfo-m1c2.yaml
-
Simpan konten berikut ke file bernama bookinfo-m1c1.yaml.
bookinfo-m1c1.yaml
# Reviews service
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
---
# Ratings service
apiVersion: v1
kind: Service
metadata:
name: ratings
labels:
app: ratings
service: ratings
spec:
ports:
- port: 9080
name: http
selector:
app: ratings
-
Deploy layanan mikro reviews versi v3 dan layanan ratings ke kluster m1c1:
kubectl apply -f bookinfo-m1c1.yaml
Langkah 4: Tambahkan virtual service dan Istio gateway
-
Buat virtual service bernama bookinfo di namespace default instans ASM. Untuk informasi selengkapnya, lihat Manage virtual services.
Virtual Service YAML
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 Istio gateway bernama bookinfo-gateway di namespace default instans ASM. Untuk informasi selengkapnya, lihat Manage Istio gateways.
YAML Istio gateway
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway # use istio default controller
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
-
Buka browser dan akses http://{IP address of the serverless ingress gateway}/productpage. Refresh halaman beberapa kali. Traffic didistribusikan kira-kira dengan rasio 1:1:1 ke tiga versi layanan mikro reviews (v1, v2, dan v3). Versi v3 berfungsi normal meskipun dijalankan di kluster yang berbeda dari layanan mikro lainnya.
(Opsional) Langkah 5: Rutekan seluruh traffic ke layanan mikro reviews versi v3
Definisikan destination rule dan virtual service untuk merutekan semua permintaan ke versi v3 dari layanan mikro reviews.
-
Buat destination rule bernama reviews di namespace default instans ASM. Untuk informasi selengkapnya, lihat Manage destination rules.
Destination Rule YAML
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 virtual service bernama reviews di namespace default instans ASM. Untuk informasi selengkapnya, lihat Manage virtual services.
YAML virtual service
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v3
-
Buka browser dan akses http://{IP address of the serverless ingress gateway}/productpage. Refresh halaman beberapa kali. Semua permintaan kini dirutekan ke versi v3 dari layanan mikro reviews. Rating ditampilkan sebagai bintang berwarna merah.
