部署 Bookinfo

本页面介绍如何将示例应用部署到 Anthos Service Mesh 上。如果您尚未安装 Anthos Service Mesh,请参阅安装指南部分,选择适合您的指南。

Anthos Service Mesh 安装附带了多个示例应用。本指南将引导您部署 BookInfo 示例。这是一个简单的模拟书店应用,由四项服务组成。这些服务提供了 Web 产品页面、图书详细信息、评论(有多个版本的评论服务)以及评分,且全部使用 Anthos Service Mesh 进行管理。您可以在 samples/bookinfo 的 Anthos Service Mesh 安装目录中找到此示例中使用的源代码和所有其他文件。

部署应用

按照以下步骤操作可以部署 BookInfo 应用的服务,并且 Sidecar 代理会与每项服务一起注入。

  1. 在安装 Anthos Service Mesh 的计算机上的命令行界面,转到 Anthos Service Mesh 安装目录的根目录。

  2. 启用自动 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

  3. 将修订版本标签应用于命名空间。在以下命令中,NAMESPACE 是要注入 Sidecar 的命名空间的名称,REVISION 是您在上一步中记下的 istiod 修订版本标签的值。

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
    
  4. 使用 kubectl 部署您的应用:

    kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
  5. 通过运行以下命令确认是否已正确部署应用:

    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
  6. 最后,为应用定义入站流量网关路由:

    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

试用应用

  1. 使用 curl 来检查 BookInfo 应用是否在运行:

    curl -I http://EXTERNAL_IP/productpage

    如果响应显示 200,则表示该应用与 Anthos Service Mesh 正常配合使用。

  2. 如需查看 BookInfo 网页,请在浏览器中输入以下地址

    http://EXTERNAL_IP/productpage

    如果您多次刷新该页面,您应该会看到产品页面中显示的不同版本的评论,以轮循方式呈现(红色星标、黑色星标、无星标)。

现在应用已在生成流量,接下来您可以在 Google Cloud 控制台中探索 Anthos Service Mesh 页面,以了解指标和其他可观测性功能。

后续步骤

详细了解 Bookinfo 示例

清理

试用完 Bookinfo 示例后,请将其从集群中移除。

  1. 使用以下脚本卸载 Bookinfo:

    samples/bookinfo/platform/kube/cleanup.sh
  2. 确认关停:

    kubectl get services
    kubectl get pods

    Bookinfo pod 应已删除。