在 ambient 模式下部署 Bookinfo 原生应用

您可以通过依赖 ZTunnel proxy,在无需 sidecar 注入的情况下,以 ambient 模式部署 Bookinfo 示例原生应用。有关 Bookinfo 原生应用的背景信息,请参阅 部署 Bookinfo 原生应用

前提条件

  • 由具有 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/alauda-mesh/istio/refs/heads/istio-1.28/samples/bookinfo/platform/kube/bookinfo.yaml

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

    kubectl apply -n bookinfo -f https://raw.githubusercontent.com/alauda-mesh/istio/refs/heads/istio-1.28/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 标签。有关用于将工作负载添加到 mesh 或从 mesh 中排除的标签详情,请参阅 附加资源 部分。

      NOTE

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

  7. 确认 ZTunnel proxy 已在 pod 网络命名空间中成功建立监听 socket:

    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

清理

# Remove the namespace from the ambient data plane
kubectl label namespace bookinfo istio.io/dataplane-mode-
# Remove the Bookinfo namespace
kubectl delete namespace bookinfo

附加资源