在 ambient 模式下部署 Bookinfo 应用

您可以通过依赖 ZTunnel 代理,在不注入 sidecar 的情况下以 ambient 模式部署 Bookinfo 示例应用。有关 Bookinfo 应用的背景信息,请参见 Deploying the Bookinfo Application

前提条件

  • 由具有 cluster-admin 角色的集群管理员开启的有效 ACP CLI (kubectl) 会话。
  • 您已在本地安装了 istioctl,以便运行以下操作指令。
  • 已安装 Alauda Service Mesh Operator 2.1.1 或更高版本,Istio 资源已创建,且 Operator 已部署 Istio。
  • 已创建 IstioCNI 资源,且 Operator 已部署所需的 IstioCNI pods。
  • 已创建 ZTunnel 资源,且 Operator 已部署所需的 ZTunnel pods。

操作步骤

  1. 创建 bookinfo 命名空间:

    kubectl create namespace bookinfo
  2. bookinfo 命名空间添加 istio-discovery=enabled 标签:

    kubectl label namespace bookinfo istio-discovery=enabled
  3. 部署 Bookinfo 应用:

    kubectl apply -n bookinfo -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo.yaml

    应用 bookinfo-versions YAML 文件以创建多个版本的 Bookinfo 服务:

    kubectl apply -n bookinfo -f https://raw.githubusercontent.com/istio/istio/refs/heads/master/samples/bookinfo/platform/kube/bookinfo-versions.yaml
  4. 验证 Bookinfo pods 是否正在运行:

    kubectl get pods -n bookinfo

    示例输出

    NAME                              READY   STATUS    RESTARTS   AGE
    details-v1-569946bc86-f5xks       1/1     Running   0          2m30s
    productpage-v1-6c76dd65f7-tk5mr   1/1     Running   0          2m29s
    ratings-v1-5fd569d7c8-5x778       1/1     Running   0          2m30s
    reviews-v1-7668bf774d-qvpjh       1/1     Running   0          2m30s
    reviews-v2-55dd985686-bxv5v       1/1     Running   0          2m29s
    reviews-v3-5d7d6bddd8-2wr5w       1/1     Running   0          2m29s
  5. 确认 Bookinfo 应用响应正常:

    kubectl exec "$(kubectl get pod -l app=ratings -n bookinfo \
      -o jsonpath='{.items[0].metadata.name}')" \
      -c ratings -n bookinfo \
      -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"

    示例输出

    <title>Simple Bookstore App</title>
  6. 通过给整个命名空间或单个 pod 添加标签,将 Bookinfo 应用注册到 ambient mesh:

    • 若要包含 bookinfo 命名空间中的所有工作负载:

      kubectl label namespace bookinfo istio.io/dataplane-mode=ambient
    • 若只包含特定工作负载,则直接给单个 pod 添加 istio.io/dataplane-mode=ambient 标签。有关用于添加或排除工作负载的标签详情,请参见附加资源部分。

      NOTE

      将工作负载注册到 ambient mesh 不需要重启或重新部署应用 pod。与 sidecar 模式不同,每个 pod 中的容器数量保持不变。

  7. 确认 ZTunnel 代理已在 pod 网络命名空间成功建立监听套接字:

    istioctl -n ztunnel ztunnel-config workloads

    bookinfo 命名空间添加到 Ambient mesh 后,您会看到 HBONE 协议。

    示例输出

    NAMESPACE    POD NAME                        ADDRESS    NODE           WAYPOINT PROTOCOL
    bookinfo     details-v1-569946bc86-f5xks     10.3.0.143 192.168.131.32 None     HBONE
    bookinfo     productpage-v1-6c76dd65f7-tk5mr 10.3.0.148 192.168.131.32 None     HBONE
    bookinfo     ratings-v1-5fd569d7c8-5x778     10.3.0.144 192.168.131.32 None     HBONE
    bookinfo     reviews-v1-7668bf774d-qvpjh     10.3.0.145 192.168.131.32 None     HBONE
    bookinfo     reviews-v2-55dd985686-bxv5v     10.3.0.146 192.168.131.32 None     HBONE
    bookinfo     reviews-v3-5d7d6bddd8-2wr5w     10.3.0.147 192.168.131.32 None     HBONE
    istio-cni    istio-cni-node-vfrbr            10.3.0.140 192.168.131.32 None     TCP
    istio-system istiod-57f9449cdd-56gl8         10.3.0.141 192.168.131.32 None     TCP
    ztunnel      ztunnel-lf7c9                   10.3.0.142 192.168.131.32 None     TCP

清理

# 从 ambient 数据平面移除该命名空间
kubectl label namespace bookinfo istio.io/dataplane-mode-
# 删除 Bookinfo 命名空间
kubectl delete namespace bookinfo

附加资源