为ASM实例添加入口网关后,您可以部署应用到该实例关联的集群。本文介绍如何将Bookinfo书评应用部署到ASM实例关联的ACK集群
应用说明
本文所使用应用示例是一个名为Bookinfo的书评应用。微服务架构如下图所示:
该应用由以下4个微服务构成:
-
Productpage:该微服务会调用Details和Reviews两个微服务,用来生成页面。
-
Details:该微服务包含了书籍的信息。
-
Reviews:该微服务包含了书籍相关的评论,同时会调用Ratings微服务。
-
Ratings:该微服务包含了由书籍评价组成的评级信息。
Reviews微服务有3个版本:
-
v1版本不会调用Ratings服务。
-
v2版本会调用Ratings服务,并使用1到5个黑色星形图标来显示评分信息。
-
v3版本会调用Ratings服务,并使用1到5个红色星形图标来显示评分信息。
前提条件
-
已创建入口网关。
-
已在ACK集群中集成可观测监控Prometheus版或者自建Prometheus,用于采集监控指标。本文以可观测监控Prometheus版为例。具体操作,请参见集成可观测监控Prometheus版实现网格监控或集成自建Prometheus实现网格监控。
部署Bookinfo应用程序
-
使用以下内容创建bookinfo.yaml。
-
执行以下命令,在default命名空间中部署该示例应用。
kubectl apply -f bookinfo.yaml
部署并配置入口网关
-
创建bookinfo-gateway.yaml。
apiVersion: networking.istio.io/v1beta1 kind: Gateway metadata: name: bookinfo-gateway namespace: default spec: selector: istio: ingressgateway servers: - port: number: 80 name: http protocol: HTTP hosts: - '*' --- apiVersion: networking.istio.io/v1beta1 kind: VirtualService metadata: name: vs-demo namespace: default spec: hosts: - '*' http: - name: gw-to-productage 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 gateways: - bookinfo-gateway -
部署入口网关。
kubectl apply -f bookinfo-gateway.yaml
访问应用程序
您将通过刚刚配置的网关连接到 Bookinfo productpage 服务。
-
获取网关IP地址。
echo $(kubectl -n istio-system get istiogateway ingressgateway -o jsonpath="{.status.GatewayAddress[0]}") -
在浏览器中访问
http://{入口网关的IP地址}/productpage查看Bookinfo应用。页面展示书籍 "The Comedy of Errors" 的产品信息,中部 Book Details 区域以表格列出 ISBN-10、Publisher、Pages、Type、Language 等字段,下方 Book Reviews 区域显示两条书评及红色星级评分(对应 reviews-v3 版本)。
多次刷新页面,您可以看到Book Reviews下的ratings发生变化,分别对应reviews应用的v1、v2和v3版本。
为Bookinfo开启Ambient模式
-
登录ASM控制台,在左侧导航栏,选择。
-
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择。
-
单击default命名空间数据面模式列下的切换为Ambient Mesh模式。
您随时可以在页面将命名空间的数据面模式切换回Sidecar模式。
-
在浏览器中访问
http://{入口网关的IP地址}/productpage查看Bookinfo应用。可以看到业务仍然可以正常访问,区别在于此时的Bookinfo的应用Pod之间全部开启了mTLS加密。
查看网格拓扑
-
开启监控指标采集。
-
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择。
-
单击将监控指标采集到阿里云可观测监控Prometheus版,在确认弹框中勾选集群名称,单击确定。
若您使用的是自建Prometheus,本步骤可以跳过。
-
-
开启网格拓扑。
-
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择。
-
单击开始启用,按照以下参数配置网格拓扑,配置完成后单击确认启用。
以下以ASM网关的方式访问为例进行配置。
配置项
示例值
服务部署模式
数据面Kubernetes集群内部部署模式。
使用托管模式部署时仅支持使用Serverless ASM网关进行访问。
观测集群
c6118d720xxxxxxxxxxxxxx58410a9c7d0。
Prometheus读取地址
本示例无需填写。
若您使用的是自建Prometheus,请在这里填入实际的读取地址。
ASM中添加多个集群时,需要先创建聚合实例,并填写聚合实例的读取地址。
身份认证-登录方式
使用Token登录。
访问入口
ASM网关方式 。
-
选择ASM网关 选择入口网关名称,本示例为ingressgateway。
-
选择ASM网关端口 选择443。
您也可以通过编辑网关来为网格拓扑增加独立的端口。
-
-
-
发送测试流量,生成流量拓扑图。
export GATEWAY_ADDRESS=$(kubectl -n istio-system get istiogateway ingressgateway -o jsonpath="{.status.GatewayAddress[0]}") for i in $(seq 1 100); do echo "Request $i: $(curl -sSI -o /dev/null -w "%{http_code}" "http://${GATEWAY_ADDRESS}:80/productpage")" done -
在网格拓扑页面,单击拓扑地址后的访问ASM网格拓扑。然后在登录方式部分单击查看登录Token并复制Token内容。在Kiali页面将复制的内容填入Token输入框,单击Log in。