做者 | 元毅 阿里云智能事业群高级开发工程师html
在 Istio 中提供了一个 Bookinfo 的示例,用于演示微服务之间的调用,那么如何在 Knative 中部署这个示例呢?本文将会给你们介绍一下在 Knative 中部署 Bookinfo 微服务以及查看调用链追踪信息。api
Bookinfo 这个示例应用由 4 个微服务组成。 Bookinfo 应用架构图以下:微信
另外 reviews 微服务目前有 3 个版本:架构
首先开启 Istio Sidecar 注入,咱们在 default 命名空间打上 istio-injection=enabled
的 Label:app
kubectl label namespace default istio-injection=enabled
部署 Bookinfo Knative Service 服务, 简单直接经过 yaml 文件一键拉起来,bookinfo.yaml:less
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: details-v1 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-details-v1:1.15.0 ports: - containerPort: 9080 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: ratings-v1 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-ratings-v1:1.15.0 ports: - containerPort: 9080 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: reviews-v1 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v1:v1-aliyun ports: - containerPort: 9080 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: reviews-v2 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v2:v1-aliyun ports: - containerPort: 9080 env: - name: SERVICES_DOMAIN value: default.svc.cluster.local - name: RATINGS_HOSTNAME value: ratings-v1 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: reviews-v3 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/examples-bookinfo-reviews-v3:v1-aliyun ports: - containerPort: 9080 env: - name: SERVICES_DOMAIN value: default.svc.cluster.local - name: RATINGS_HOSTNAME value: ratings-v1 --- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: productpage-v1 namespace: default spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/productpage:v1-aliyun ports: - containerPort: 9080 env: - name: SERVICES_DOMAIN value: default.svc.cluster.local - name: DETAILS_HOSTNAME value: details-v1 - name: RATINGS_HOSTNAME value: ratings-v1 - name: REVIEWS_HOSTNAME value: reviews-v2
这里须要说明几点:分布式
productpage 环境变量设置:ide
reviews v2, v3 环境变量设置。因为 v2 和 v3 须要访问 rate 进行评分, 所以须要设置对应的环境变量:微服务
执行命令:阿里云
# kubectl apply -f bookinfo.yaml
查看执行结果:
# kubectl get kservice productpage-v1 http://productpage-v1.default.knative.kuberun.com productpage-v1-s4drn productpage-v1-s4drn True ratings-v1 http://ratings-v1.default.knative.kuberun.com ratings-v1-bsvb2 ratings-v1-bsvb2 True details-v1 http://details-v1.default.knative.kuberun.com details-v1-dj47j details-v1-dj47j True reviews-v1 http://reviews-v1.default.knative.kuberun.com reviews-v1-q5wz4 reviews-v1-q5wz4 True reviews-v2 http://reviews-v2.default.knative.kuberun.com reviews-v2-5r7mm reviews-v2-5r7mm True reviews-v3 http://reviews-v3.default.knative.kuberun.com reviews-v3-s2v6j reviews-v3-s2v6j True
经过页面进行访问,说明服务访问正常:
通常状况下,用户比较关注微服务中的调用链信息,经过 Tracing Analysis 服务,咱们能够方便的查看服务调用链。
首先咱们进行一次服务访问,在 productpage 页面,点击 Normal user
。
能够看到 Book Details
和 Book Reviews
信息。productpage 服务依次会调用:details、reviews 和 ratings 服务。
接下来登陆 Tracing Analysis 服务控制台,选择【应用列表】,点击 productpage.default
。
选择 调用链分析
页签,能够查看服务调用链信息。
经过上面的介绍,咱们能够在 Knative 中轻松实现微服务部署,而且结合 Tracing Analysis 服务能够知足部署生产级别服务诉求。
做者简介:元毅,阿里云容器平台高级开发工程师,负责阿里云容器平台 Knative 相关工做。
了解 ACK 容器服务,请查看:https : //www.aliyun.com/product/kubernetes
“ 阿里巴巴云原生微信公众号(ID:Alicloudnative)关注微服务、Serverless、容器、Service Mesh等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,作最懂云原生开发者的技术公众号。”