Jika instans Service Mesh (ASM) Anda lebih lama dari v1.18.0.124, Anda hanya dapat mengekspor data tracing ke sistem yang dikelola sendiri yang kompatibel dengan Zipkin. Jika instans ASM Anda v1.18.0.124 atau lebih baru, Anda hanya dapat mengekspor data tracing ke Managed Service for OpenTelemetry. Topik ini menjelaskan cara mengekspor data tracing ASM ke sistem yang dikelola sendiri yang kompatibel dengan Zipkin atau Managed Service for OpenTelemetry.
Prasyarat
Sistem yang dikelola sendiri yang kompatibel dengan Zipkin telah dibuat dan mendengarkan pada port 9411 server Zipkin. Jika Anda menggunakan Jaeger, collector Zipkin harus diterapkan.
Sistem yang dikelola sendiri diterapkan di kluster pada bidang data.
Instans ASM telah dibuat, dan kluster Kubernetes telah ditambahkan ke instans ASM tersebut. Untuk informasi selengkapnya, lihat Tambahkan kluster ke instans ASM.
Gerbang masuk telah dibuat di instans ASM. Untuk informasi selengkapnya, lihat Buat gerbang masuk.
Prosedur
Lakukan operasi berdasarkan versi instans ASM Anda.
Untuk instans ASM versi v1.18.0.124 atau lebih baru
Langkah 1: Terapkan Zipkin
Jalankan perintah berikut untuk membuat namespace bernama zipkin guna menerapkan Zipkin:
kubectl create namespace zipkin
Jalankan perintah berikut untuk menginstal Zipkin menggunakan Helm:
helm install --namespace zipkin my-zipkin carlosjgp/zipkin --version 0.2.0
Jalankan perintah berikut untuk memeriksa apakah Zipkin berjalan dengan baik:
kubectl -n zipkin get pods
Output yang diharapkan:
NAME READY STATUS RESTARTS AGE
my-zipkin-collector-79c6dc9cd7-jmswm 1/1 Running 0 29m
my-zipkin-ui-64c97b4d6c-f742j 1/1 Running 0 29m
Langkah 2: Terapkan Operator OpenTelemetry
-
Di lingkungan kubeconfig untuk kluster ACK Anda, jalankan perintah berikut untuk membuat namespace opentelemetry-operator-system:
kubectl create namespace opentelemetry-operator-system
-
Jalankan perintah berikut untuk menginstal Operator OpenTelemetry di namespace opentelemetry-operator-system menggunakan Helm:
helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
helm install --namespace=opentelemetry-operator-system opentelemetry-operator open-telemetry/opentelemetry-operator \
--set "manager.collectorImage.repository=otel/opentelemetry-collector-k8s" \
--set admissionWebhooks.certManager.enabled=false \
--set admissionWebhooks.autoGenerateCert.enabled=true
-
Jalankan perintah berikut untuk memeriksa apakah Operator OpenTelemetry berjalan dengan baik:
kubectl get pod -n opentelemetry-operator-system
Output yang diharapkan:
NAME READY STATUS RESTARTS AGE
opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 1m
Status Running menunjukkan bahwa Operator OpenTelemetry sedang berjalan.
Langkah 3: Buat Collector OpenTelemetry
Buat file collector.yaml yang berisi konten berikut dalam blok kode.
Ganti ${ENDPOINT} dalam file YAML dengan titik akhir virtual private cloud (VPC) yang mendukung protokol gRPC. Ganti ${TOKEN} dengan Token otentikasi. Untuk informasi selengkapnya tentang cara memperoleh titik akhir yang didukung oleh Managed Service for OpenTelemetry dan token otentikasi, lihat Hubungkan ke Managed Service for OpenTelemetry dan autentikasi klien.
Tampilkan file collector.yaml
apiVersion: opentelemetry.io/v1alpha1
kind: OpenTelemetryCollector
metadata:
labels:
app.kubernetes.io/managed-by: opentelemetry-operator
name: default
namespace: opentelemetry-operator-system
annotations:
sidecar.istio.io/inject: "false"
spec:
config: |
extensions:
memory_ballast:
size_mib: 512
zpages:
endpoint: 0.0.0.0:55679
receivers:
otlp:
protocols:
grpc:
endpoint: "0.0.0.0:4317"
exporters:
debug:
zipkin:
endpoint: http://my-zipkin-collector.zipkin.svc.cluster.local:9411/api/v2/spans
service:
pipelines:
traces:
receivers: [otlp]
processors: []
exporters: [zipkin, debug]
ingress:
route: {}
managementState: managed
mode: deployment
observability:
metrics: {}
podDisruptionBudget:
maxUnavailable: 1
replicas: 1
resources: {}
targetAllocator:
prometheusCR:
scrapeInterval: 30s
resources: {}
upgradeStrategy: automatic
Gunakan kubectl untuk terhubung ke kluster Container Service for Kubernetes (ACK) berdasarkan informasi dalam file kubeconfig, lalu jalankan perintah berikut untuk menerapkan Collector OpenTelemetry di kluster:
kubectl apply -f collector.yaml
Jalankan perintah berikut untuk memeriksa apakah Collector OpenTelemetry telah dimulai:
kubectl get pod -n opentelemetry-operator-system
Output yang diharapkan:
NAME READY STATUS RESTARTS AGE
opentelemetry-operator-854fb558b5-pvllj 2/2 Running 0 3m
default-collector-5cbb4497f4-2hjqv 1/1 Running 0 30s
Output tersebut menunjukkan bahwa Collector OpenTelemetry telah dimulai secara normal.
Jalankan perintah berikut untuk memeriksa apakah layanan telah dibuat untuk Collector OpenTelemetry:
kubectl get svc -n opentelemetry-operator-system
Output yang diharapkan:
opentelemetry-operator ClusterIP 172.16.138.165 <none> 8443/TCP,8080/TCP 3m
opentelemetry-operator-webhook ClusterIP 172.16.127.0 <none> 443/TCP 3m
default-collector ClusterIP 172.16.145.93 <none> 4317/TCP 30s
default-collector-headless ClusterIP None <none> 4317/TCP 30s
default-collector-monitoring ClusterIP 172.16.136.5 <none> 8888/TCP 30s
Output tersebut menunjukkan bahwa layanan telah dibuat untuk Collector OpenTelemetry.
Langkah 4: Terapkan aplikasi uji coba
Terapkan aplikasi Bookinfo contoh.
-
Buat file bookinfo.yaml dengan konten berikut.
Perluas untuk melihat konten YAML
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: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-details-v1:1.20.1
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: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-ratings-v1:1.20.1
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: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-reviews-v1:1.20.1
imagePullPolicy: IfNotPresent
env:
- name: LOG_DIR
value: "/tmp/logs"
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
- name: wlp-output
mountPath: /opt/ibm/wlp/output
volumes:
- name: wlp-output
emptyDir: {}
- name: tmp
emptyDir: {}
---
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: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-reviews-v2:1.20.1
imagePullPolicy: IfNotPresent
env:
- name: LOG_DIR
value: "/tmp/logs"
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
- name: wlp-output
mountPath: /opt/ibm/wlp/output
volumes:
- name: wlp-output
emptyDir: {}
- name: tmp
emptyDir: {}
---
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: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-reviews-v3:1.20.1
imagePullPolicy: IfNotPresent
env:
- name: LOG_DIR
value: "/tmp/logs"
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
- name: wlp-output
mountPath: /opt/ibm/wlp/output
volumes:
- name: wlp-output
emptyDir: {}
- name: tmp
emptyDir: {}
---
##################################################################################################
# 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:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "9080"
prometheus.io/path: "/metrics"
labels:
app: productpage
version: v1
spec:
serviceAccountName: bookinfo-productpage
containers:
- name: productpage
image: registry-cn-hangzhou.ack.aliyuncs.com/ack-demo/examples-bookinfo-productpage-v1:1.20.1
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
---
Terapkan aplikasi Bookinfo ke kluster bidang data.
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f bookinfo.yaml
Terapkan aplikasi sleep.
Buat file bernama sleep.yaml dengan konten berikut.
Sleep.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: sleep
---
apiVersion: v1
kind: Service
metadata:
name: sleep
labels:
app: sleep
service: sleep
spec:
ports:
- port: 80
name: http
selector:
app: sleep
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: sleep
spec:
replicas: 1
selector:
matchLabels:
app: sleep
template:
metadata:
labels:
app: sleep
spec:
terminationGracePeriodSeconds: 0
serviceAccountName: sleep
containers:
- name: sleep
image: registry.cn-hangzhou.aliyuncs.com/acs/curl:8.1.2
command: ["/bin/sleep", "infinity"]
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /etc/sleep/tls
name: secret-volume
volumes:
- name: secret-volume
secret:
secretName: sleep-secret
optional: true
---
Terapkan aplikasi sleep.
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f sleep.yaml
Langkah 5: Akses aplikasi productpage dan lihat data tracing
Jalankan perintah berikut untuk mengakses aplikasi productpage:
kubectl exec -it deploy/sleep -c sleep -- curl productpage:9080/productpage?u=normal
Setelah akses berhasil, lihat log Collector OpenTelemetry dan output yang dicetak oleh exporter debug.
2023-11-20T08:44:27.531Z info TracesExporter {"kind": "exporter", "data_type": "traces", "name": "debug", "resource spans": 1, "spans": 3}
Langkah 6: Konfigurasikan gerbang ASM dan lihat data tracing di layanan Zipkin
Buat gateway Istio.
Gunakan konten berikut untuk membuat file ingressgateway.yaml:
Perluas untuk melihat file ingressgateway.yaml
apiVersion: networking.istio.io/v1beta1
kind: Gateway
metadata:
name: ingressgateway
namespace: istio-system
spec:
selector:
istio: ingressgateway
servers:
- hosts:
- '*'
port:
name: http
number: 80
protocol: HTTP
---
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: ingressgateway
namespace: istio-system
spec:
gateways:
- ingressgateway
hosts:
- '*'
http:
- route:
- destination:
host: my-zipkin-collector.zipkin.svc.cluster.local
port:
number: 9411
Gunakan kubectl untuk terhubung ke instans ASM berdasarkan informasi dalam file kubeconfig. Kemudian, jalankan perintah berikut untuk mengaktifkan gerbang ASM agar mendengarkan pada port 80 dan mengonfigurasi rute ke layanan Zipkin:
kubectl apply -f ingressgateway.yaml
Akses layanan Zipkin menggunakan alamat IP gerbang ASM dan lihat data tracing.

Untuk instans ASM versi lebih lama dari v1.18.0.124
Langkah 1: Aktifkan fitur tracing untuk instans ASM
Jika versi instans ASM lebih lama dari v1.17.2.28, Anda dapat mengaktifkan fitur tracing dengan melakukan operasi berikut: Masuk ke Konsol ASM. Di halaman Base Information instans ASM, klik Settings. Di halaman yang muncul, pilih Enable Tracing Analysis, konfigurasikan parameter terkait, lalu klik OK.
Jika versi instans ASM v1.17.2.28 atau lebih baru, Anda dapat mengaktifkan fitur tracing dengan merujuk ke bagian "Deskripsi Pengaturan Analisis Tracing" dalam Konfigurasikan Pengaturan Observabilitas.
Langkah 2: Terapkan Zipkin di kluster Kubernetes pada bidang data
Gunakan konten berikut untuk membuat file zipkin-server.yaml:
Perluas untuk melihat file zipkin-server.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: zipkin-server
namespace: istio-system
spec:
replicas: 1
selector:
matchLabels:
app: zipkin-server
component: zipkin
template:
metadata:
labels:
app: zipkin-server
component: zipkin
spec:
containers:
- name: zipkin-server
image: openzipkin/zipkin
imagePullPolicy: IfNotPresent
readinessProbe:
httpGet:
path: /health
port: 9411
initialDelaySeconds: 5
periodSeconds: 5
Catatan Jika Anda menggunakan file YAML kustom untuk menerapkan Zipkin, pastikan Zipkin diterapkan di namespace istio-system.
Jalankan perintah berikut untuk menerapkan Zipkin di kluster Kubernetes pada bidang data:
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f zipkin-server.yaml
Catatan Jika Anda menggunakan kode contoh dalam topik ini, ganti ${DATA_PLANE_KUBECONFIG} dalam perintah dengan path ke file kubeconfig kluster Kubernetes pada bidang data. Selain itu, ganti ${ASM_KUBECONFIG} dengan path ke file kubeconfig instans ASM.
Setelah penerapan selesai, verifikasi bahwa Pod tempat server Zipkin diterapkan dapat dimulai dengan baik.
Langkah 3: Buat layanan untuk mengekspos server Zipkin
Buat layanan bernama zipkin di namespace istio-system untuk menerima data tracing ASM.
Untuk mengekspos server Zipkin ke Internet, gunakan file zipkin-svc-expose-public.yaml.
Jika tidak, gunakan file zipkin-svc.yaml.
Dalam contoh ini, file zipkin-svc-expose-public.yaml digunakan untuk mengekspos server Zipkin ke Internet agar Anda dapat melihat data tracing dengan mudah.
Catatan Nama layanan yang dibuat harus zipkin.
Gunakan kode berikut sesuai kebutuhan bisnis Anda untuk membuat file YAML.
Untuk mengekspos server Zipkin ke Internet, gunakan file zipkin-svc-expose-public.yaml dengan konten berikut:
Perluas untuk melihat file zipkin-svc-expose-public.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: tracing
component: zipkin
name: zipkin
namespace: istio-system
spec:
ports:
- name: zipkin
port: 9411
protocol: TCP
targetPort: 9411
selector:
app: zipkin-server
component: zipkin
type: LoadBalancer
Jika Anda tidak perlu mengekspos server Zipkin ke Internet, gunakan file zipkin-svc.yaml dengan konten berikut:
Perluas untuk melihat file zipkin-svc.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: tracing
component: zipkin
name: zipkin
namespace: istio-system
spec:
ports:
- name: zipkin
port: 9411
protocol: TCP
targetPort: 9411
selector:
app: zipkin-server
component: zipkin
type: ClusterIP
Catatan Jika Anda menggunakan file YAML kustom untuk menerapkan layanan zipkin, pastikan layanan ini diterapkan di namespace istio-system.
Jalankan perintah berikut untuk menerapkan layanan zipkin di kluster Kubernetes pada bidang data:
# Terapkan layanan zipkin untuk mengekspos server Zipkin ke jaringan internal.
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f zipkin-svc.yaml
# Terapkan layanan zipkin untuk mengekspos server Zipkin ke Internet.
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f zipkin-svc-expose-public.yaml
Langkah 4: Terapkan aplikasi Bookinfo
Jalankan perintah berikut untuk menerapkan aplikasi Bookinfo ke kluster Kubernetes pada bidang data:
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} apply -f bookinfo.yaml
Perluas untuk melihat file bookinfo.yaml
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.16.2
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.16.2
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.16.2
imagePullPolicy: IfNotPresent
env:
- name: LOG_DIR
value: "/tmp/logs"
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
- name: wlp-output
mountPath: /opt/ibm/wlp/output
volumes:
- name: wlp-output
emptyDir: {}
- name: tmp
emptyDir: {}
---
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.16.2
imagePullPolicy: IfNotPresent
env:
- name: LOG_DIR
value: "/tmp/logs"
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
- name: wlp-output
mountPath: /opt/ibm/wlp/output
volumes:
- name: wlp-output
emptyDir: {}
- name: tmp
emptyDir: {}
---
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.16.2
imagePullPolicy: IfNotPresent
env:
- name: LOG_DIR
value: "/tmp/logs"
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
- name: wlp-output
mountPath: /opt/ibm/wlp/output
volumes:
- name: wlp-output
emptyDir: {}
- name: tmp
emptyDir: {}
---
##################################################################################################
# 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.16.2
imagePullPolicy: IfNotPresent
ports:
- containerPort: 9080
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
---
Jalankan perintah berikut pada klien kubectl untuk menerapkan layanan virtual untuk Bookinfo:
kubectl --kubeconfig=${ASM_KUBECONFIG} apply -f virtual-service-all-v1.yaml
Perluas untuk melihat file virtual-service-all-v1.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: productpage
spec:
hosts:
- productpage
http:
- route:
- destination:
host: productpage
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews
spec:
hosts:
- reviews
http:
- route:
- destination:
host: reviews
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: ratings
spec:
hosts:
- ratings
http:
- route:
- destination:
host: ratings
subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: details
spec:
hosts:
- details
http:
- route:
- destination:
host: details
subset: v1
---
Jalankan perintah berikut pada klien kubectl untuk menerapkan aturan tujuan untuk Bookinfo:
kubectl --kubeconfig=${ASM_KUBECONFIG} apply -f destination-rule-all.yaml
Perluas untuk melihat file destination-rule-all.yaml
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: productpage
spec:
host: productpage
subsets:
- name: v1
labels:
version: v1
---
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
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: ratings
spec:
host: ratings
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
- name: v2-mysql
labels:
version: v2-mysql
- name: v2-mysql-vm
labels:
version: v2-mysql-vm
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: details
spec:
host: details
subsets:
- name: v1
labels:
version: v1
- name: v2
labels:
version: v2
---
Jalankan perintah berikut pada klien kubectl untuk menerapkan gerbang untuk Bookinfo:
kubectl --kubeconfig=${ASM_KUBECONFIG} apply -f bookinfo-gateway.yaml
Perluas untuk melihat file bookinfo-gateway.yaml
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: bookinfo-gateway
spec:
selector:
istio: ingressgateway # gunakan controller default istio
servers:
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
---
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
Langkah 5: Hasilkan data tracing
Jalankan perintah berikut untuk menanyakan alamat IP gerbang masuk:
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG} get svc -n istio-system|grep ingressgateway|awk -F ' ' '{print $4}'
Masukkan Alamat IP gerbang masuk/productpage di bilah alamat browser Anda untuk mengakses Bookinfo.
Langkah 6: Lihat data tracing
Jalankan perintah berikut untuk memperoleh alamat layanan zipkin:
kubectl --kubeconfig=${DATA_PLANE_KUBECONFIG}get svc -n istio-system|grep zipkin|awk -F ' ' '{print $4}'
Masukkan alamat IP layanan zipkin:9411 di bilah alamat browser Anda untuk mengakses konsol Zipkin. Di konsol Zipkin, Anda dapat melihat data tracing.