在 ambient 模式下部署 Bookinfo 应用
您可以依靠 ZTunnel proxy 在不注入 sidecar 的情况下,以 ambient 模式部署 Bookinfo 示例应用。有关 Bookinfo 应用的背景信息,请参阅部署 Bookinfo 应用。
部署 Bookinfo 应用
前提条件
- 集群管理员已登录有效的 ACP CLI(
kubectl)会话,并具有cluster-admin角色。 - 您已在本地安装
istioctl,以便运行这些操作步骤。 - 已安装 Alauda Service Mesh Operator 2.1.1 或更高版本,已创建 Istio 资源,并且 Operator 已部署 Istio。
- 已创建
IstioCNI资源,并且 Operator 已部署所需的IstioCNIpod。 - 已创建
ZTunnel资源,并且 Operator 已部署所需的ZTunnelpod。
操作步骤
-
创建
bookinfonamespace: -
为
bookinfonamespace 添加istio-discovery=enabledlabel: -
部署
Bookinfo应用:应用
bookinfo-versionsYAML 文件以创建Bookinfo服务的多个版本: -
通过为整个 namespace 或单个 pod 添加 label,将 Bookinfo 应用加入 ambient mesh:
-
要将
bookinfonamespace 中的所有工作负载纳入其中: -
要仅纳入特定工作负载,请直接为各个 pod 应用
istio.io/dataplane-mode=ambientlabel。有关用于将工作负载添加到 mesh 或从 mesh 中排除的 label 的详细信息,请参阅其他资源部分。NOTE将工作负载加入 ambient mesh 不需要重启或重新部署应用 pod。与 sidecar 模式不同,每个 pod 中的容器数量保持不变。
-
验证
-
要确认
bookinfo服务可用,请运行以下命令:示例输出
-
要检查
bookinfopod 是否可用,请执行以下命令:示例输出
由于 ambient 模式不会注入 proxy sidecar,
Ready列会显示1/1。请确保每个 pod 的Status列显示Running。 -
通过向其
product page发送请求,确认bookinfo应用正在运行。执行以下命令:示例输出
-
确认 ZTunnel proxy 已在 pod network namespace 中成功建立监听 socket:
将
bookinfonamespace 添加到 Ambient mesh 后,您将看到HBONEprotocol。示例输出
通过 Gateway 访问 Bookinfo 应用
Alauda Service Mesh v2 Operator 不会部署 gateway,因为 gateway 不被视为控制平面的一部分。在 ambient 模式下,Kubernetes Gateway API 是配置 ingress 流量的唯一受支持方式:通过创建 Gateway 资源来部署 gateway,并使用 HTTPRoute 资源定义路由规则。
在 ambient 模式下,VirtualService 资源的兼容性有限,不应与 Gateway API 配置结合使用。在 ambient 模式下,请使用 Kubernetes Gateway API 资源作为流量路由的标准方式。
前提条件
- 已按照前述操作步骤部署
bookinfo应用并将其加入 ambient mesh。 - 已安装 Gateway API CRD。
- 您的 Kubernetes 集群支持外部负载均衡器(即,类型为
LoadBalancer的 Service)。
操作步骤
-
将
istiogateway class overlay 添加到Istio资源,以便 gateway pod 被准入Restrictedbookinfonamespace:有关详细信息,请参阅 Pod Security Admission。
-
执行以下命令,使用
Gateway和HTTPRoute资源创建并配置 gateway:NOTE此示例使用示例 gateway 配置文件,通过 Gateway API 为
bookinfo应用配置 gateway。必须在应用的 namespace 中应用此文件。 -
运行以下命令,确保 Gateway API service 已就绪并具有地址:
-
使用以下命令获取主机:
-
使用以下命令获取端口:
-
使用以下命令获取 gateway URL:
INFO如果
$INGRESS_HOST是 IPv6 地址,在构造 URL 时请将其括在方括号中。例如: -
运行以下命令获取 product page 的完整 URL:
验证
-
使用
curl命令确认 productpage 可访问:示例输出
-
确认可在 Web 浏览器中访问 productpage。
将浏览器指向
http://${GATEWAY_URL}/productpage,查看 Bookinfo 网页。多次刷新页面时,您应看到
productpage中显示不同版本的 reviews,并以 round robin 方式呈现(红色星标、黑色星标、无星标),因为我们尚未使用 Istio 控制版本路由。
清理
完成对 Bookinfo 应用的探索后,请删除 bookinfo namespace,以移除应用及其所有关联的 gateway 资源: