本页面介绍如何将示例应用部署到 Anthos Service Mesh 上。如果您尚未安装 Anthos Service Mesh,请参阅安装指南部分,选择适合您的指南。
Anthos Service Mesh 安装附带了多个示例应用。本指南将引导您部署 BookInfo 示例。这是一个简单的模拟书店应用,由四项服务组成。这些服务提供了 Web 产品页面、图书详细信息、评论(有多个版本的评论服务)以及评分,且全部使用 Anthos Service Mesh 进行管理。您可以在 samples/bookinfo
的 Anthos Service Mesh 安装目录中找到此示例中使用的源代码和所有其他文件。
部署应用
按照以下步骤操作可以部署 BookInfo 应用的服务,并且 Sidecar 代理会与每项服务一起注入。
在安装 Anthos Service Mesh 的计算机上的命令行界面,转到 Anthos Service Mesh 安装目录的根目录。
启用自动 Sidecar 注入。使用以下命令查找
istiod
上的标签,其中包含要在后续步骤中使用的修订版本标签值。kubectl -n istio-system get pods -l app=istiod --show-labels
输出类似于以下内容:
NAME READY STATUS RESTARTS AGE LABELS istiod-asm-173-3-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-173-3,istio=istiod,pod-template-hash=5788d57586 istiod-asm-173-3-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-173-3,istio=istiod,pod-template-hash=5788d57586
在输出中的
LABELS
列下,记下istiod
修订版本标签的值,该值位于前缀istio.io/rev=
之后。在此示例中,该值为asm-173-3
。将修订版本标签应用于命名空间。在以下命令中,
NAMESPACE
是要注入 Sidecar 的命名空间的名称,REVISION 是您在上一步中记下的istiod
修订版本标签的值。kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
使用
kubectl
部署您的应用:kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
通过运行以下命令确认是否已正确部署应用:
kubectl get services
输出:NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE details 10.0.0.31 <none> 9080/TCP 6m kubernetes 10.0.0.1 <none> 443/TCP 7d productpage 10.0.0.120 <none> 9080/TCP 6m ratings 10.0.0.15 <none> 9080/TCP 6m reviews 10.0.0.170 <none> 9080/TCP 6m
和
kubectl get pod
输出:NAME READY STATUS RESTARTS AGE details-v1-1520924117-48z17 2/2 Running 0 6m productpage-v1-560495357-jk1lz 2/2 Running 0 6m ratings-v1-734492171-rnr5l 2/2 Running 0 6m reviews-v1-874083890-f0qf0 2/2 Running 0 6m reviews-v2-1343845940-b34q5 2/2 Running 0 6m reviews-v3-1813607990-8ch52 2/2 Running 0 6m
最后,为应用定义入站流量网关路由:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
验证应用部署
如需查看图书信息应用是否正常运行,您需要将流量发送到入站流量网关。
如果您在 GKE on VMware 上安装了 Anthos Service Mesh,请获取您在安装 Anthos Service Mesh 之后配置的入站流量网关的外部 IP 地址
如果您在 GKE 上安装了 Anthos Service Mesh,请按如下所示方式获取入站流量网关的外部 IP 地址:
kubectl get svc istio-ingressgateway -n istio-system
输出:NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.19.247.233 35.239.7.64 80:31380/TCP,443:31390/TCP,31400:31400/TCP 27m
在此示例中,入站流量服务的 IP 地址为
35.239.7.64
。
试用应用
使用
curl
来检查 BookInfo 应用是否在运行:curl -I http://EXTERNAL_IP/productpage
如果响应显示
200
,则表示该应用与 Anthos Service Mesh 正常配合使用。如需查看 BookInfo 网页,请在浏览器中输入以下地址
http://EXTERNAL_IP/productpage
如果您多次刷新该页面,您应该会看到产品页面中显示的不同版本的评论,以轮循方式呈现(红色星标、黑色星标、无星标)。
现在应用已在生成流量,接下来您可以在 Google Cloud 控制台中探索 Anthos Service Mesh 页面,以了解指标和其他可观测性功能。
后续步骤
清理
试用完 Bookinfo 示例后,请将其从集群中移除。
使用以下脚本卸载 Bookinfo:
samples/bookinfo/platform/kube/cleanup.sh
确认关停:
kubectl get services
kubectl get pods
Bookinfo pod 应已删除。