部署图书信息示例

{default_version.


%20%20%20%E7%99%E7%97%90%E7%99%9%E8%E%E7%9F%B1%20%20%20%E4%E2%E7%9B%21%20%20%E2B%E2%E7%97%20%20%23%24%23%20%E7%E7%E7%97%23%23%21%21%21%21%20%23%2023 及{3}B2B{3} V3" "%1" "%20%1" "%20%1" "%21%20%10 吗%20%20%10808083223%23%23 中为什么%2B2 解释 {/2}

本页面介绍了如何部署示例应用来演示 Cloud Service Mesh。如果您尚未开始使用 Cloud Service Mesh,请参阅新手入门指南

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

启用 Sidecar 自动注入功能

  1. 启用用于注入的命名空间。具体步骤取决于您的控制平面实现

    受管 (TD)

    1. 将修订版本标签应用于命名空间:
    kubectl label namespace default \
        istio.io/rev- istio-injection=enabled --overwrite
    

    代管式 (Istiod)

    新用户使用以下命令将修订版本标签应用于命名空间:

      kubectl label namespace default \
          istio.io/rev- istio-injection=enabled --overwrite
    

    使用托管式 Istiod 控制平面的现有用户按照以下说明操作:

    1. 使用以下命令查找可用的发布渠道:

      kubectl -n istio-system get controlplanerevision
      

      输出类似于以下内容:

      NAME                AGE
      asm-managed-rapid   6d7h
      

      注意:如果上述列表中显示了两个控制平面修订版本,请移除一个。不支持在集群中拥有多个控制平面通道。

      在输出中,NAME 列下的值是与 Cloud Service Mesh 版本的可用发布版本对应的修订版本标签。

    2. 将修订版本标签应用于命名空间:

      kubectl label namespace default \
          istio-injection- istio.io/rev=REVISION_LABEL --overwrite
      

    集群内

    1. 使用以下命令查找 istiod 的修订版本标签:

      kubectl get deploy -n istio-system -l app=istiod -o \
        jsonpath={.items[*].metadata.labels.'istio\.io\/rev'}'{"\n"}'
      
    2. 将修订版本标签应用于命名空间。在以下命令中,REVISION 是您在上一步中记下的 istiod 修订版本标签的值。

      kubectl label namespace default \
          istio.io/rev- istio-injection=enabled --overwrite
      

部署应用

现在,default 命名空间已启用自动注入功能,当您部署 BookInfo 应用的服务时,Sidecar 代理会与每项服务一起注入。

  1. 在安装了 Cloud Service Mesh 的计算机上的命令行中,转到 Cloud Service Mesh 安装目录的根目录。如果需要,请下载集群内安装文件(其中包含 bookinfo 示例应用),并将其解压缩。

  2. 使用 kubectl 将应用部署到默认命名空间:

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

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

    kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
    

    输出如下:

    gateway.networking.istio.io/bookinfo-gateway created
    virtualservice.networking.istio.io/bookinfo created

验证应用部署

如需查看图书信息应用是否正常运行,您需要将流量发送到入站流量网关。

  • 如果您在 GKE on VMware 上安装了 Cloud Service Mesh,请获取您在安装 Cloud Service Mesh 后配置的入站流量网关的外部 IP 地址

  • 如果您在 GKE 上安装了 Cloud Service Mesh,请按如下方式获取入站流量网关的外部 IP 地址:

    kubectl get service 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,则表示应用与 Cloud Service Mesh 正常配合使用。

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

    http://EXTERNAL_IP/productpage
    

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

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

清理

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

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

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

    kubectl get virtualservices   #-- there should be no virtual services
    kubectl get destinationrules  #-- there should be no destination rules
    kubectl get gateway           #-- there should be no gateway
    kubectl get pods              #-- the Bookinfo pods should be deleted
    

后续步骤

详细了解 Bookinfo 示例