访问 Bookinfo

本指南将引导您通过 Istio Ingress Gateway 访问 Bookinfo 并验证其功能。本文中使用的 Ingress Gateway 采用经典的 Istio VirtualService API。

开始之前,请确保:

为了简化设置流程,本教程使用 NodePort 方式访问 Ingress Gateway,无需使用 LoadBalancer。访问 Bookinfo 应用将通过节点 IP 和节点端口进行。

目录

第 1 步:部署 Ingress Gateway

  1. 创建项目和命名空间
    进入 项目管理 页面,点击 创建项目,命名为 platform,并选择 Bookinfo 应用所在的集群。
    在项目详情页左侧导航栏中点击 命名空间,创建名为 platform-gateway 的命名空间。

  2. 部署 Ingress Gateway
    进入 平台管理,导航至 服务网格 > Gateways,点击 部署 Gateway。填写 Gateway 参数:

    • 基本信息:名称为 public-ingressgw,网关类型选择 Ingress Gateway,网关类型选择为 共享,其他参数保持默认。

    • 部署配置:选择命名空间 platform-gateway,节点标签选择 ingress:true,其他参数保持默认。

    • 网络配置:选择 NodePort,HTTP 协议主机端口设置为 30665,HTTPS 主机端口设置为 30666

    • 检查端口占用情况:执行以下命令确保端口未被占用:

      kubectl get svc --all-namespaces -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name,TYPE:.spec.type,NODEPORT:.spec.ports[*].nodePort' | grep NodePort

第 2 步:创建 Gateway 配置

  1. 进入 Gateway 详情页,切换到 Gateway 配置 标签,点击 创建 Gateway 配置
  2. 命名为 public-ingressgw-gateway,选择 HTTP 端口 80,Host 设置为 *,点击创建。

第 3 步:创建 Virtual Services

  1. 切换到 Virtual Services 标签,点击 创建路由配置
  2. 命名为 public-ingressgw-vs,选择命名空间 platform-gateway,路由目标选择 Namespace: demo-devService: productpagePort: 9080

测试 Ingress 流量

  1. 获取 GATEWAY_IP_PORT

    • 首先执行以下命令,查找 Ingress Gateway 所在节点的 IP 地址:

      kubectl get nodes -o wide
    • 使用节点 IP 和端口 30665 组合成 GATEWAY_IP_PORT,例如 192.168.130.0:30665

  2. 执行以下命令验证 Ingress Gateway 是否正常工作:

    export GATEWAY_IP_PORT=<node_IP>:30665
    curl -k -s http://$GATEWAY_IP_PORT/productpage | grep -o "<title>.*</title>"
  3. 预期输出应类似于:

    <title>Simple Bookstore App</title>