设置双层或精简服务网格拓扑的详细步骤

软件要求

Kubernetes 分发版 Kubernetes 版本 容器网络接口 (CNI) CPX 版本 CIC 版本 NetScaler Console 版本 NetScaler Agent 版本
开源 v1.16.3 Flannel 13.0–41.28 1.5.25 13.0–47.22 13.0–47.22

开始之前

您可以使用以下场景查看服务图:

  • NetScaler Console 和 Kubernetes 集群位于同一网络上(例如,托管在 Citrix Hypervisor 上的 NetScaler Console 和 Kubernetes 集群)。

  • NetScaler Console 和 Kubernetes 集群位于不同的网络上。在这种情况下,您必须配置一个本地 Agent,并在托管 Kubernetes 集群的网络上注册该 Agent。

要在 NetScaler Console 中使用服务图,请确保您已具备:

软件要求

Kubernetes 分发版 Kubernetes 版本 容器网络接口 (CNI) CPX 版本 CIC 版本 NetScaler Console 版本 NetScaler Agent 版本
开源 v1.16.3 Flannel 13.0–41.28 1.5.25 13.0–47.22 13.0–47.22

开始之前

您可以使用以下场景查看服务图:

  • NetScaler Console 和 Kubernetes 集群位于同一网络上(例如,托管在 Citrix Hypervisor 上的 NetScaler Console 和 Kubernetes 集群)。

  • NetScaler Console 和 Kubernetes 集群位于不同的网络上。在这种情况下,您必须配置一个本地 Agent,并在托管 Kubernetes 集群的网络上注册该 Agent。

要在 NetScaler Console 中使用服务图,请确保您已具备:

在 NetScaler Console 中配置静态路由

在 Kubernetes 集群内部,所有容器化 Pod 都使用覆盖网络。无法直接使用这些私有 IP 地址建立通信。要启用从 NetScaler Console 到 Kubernetes 集群的通信,您必须在 NetScaler Console 中配置静态路由。

注意

如果您使用的是本地 Agent,请确保在 Agent 上配置静态路由。使用 SSH 客户端登录到 NetScaler Agent 并配置静态路由。

假设您的 Kubernetes 集群具有以下 IP 地址:

  • Kubernetes 主节点 – 101.xx.xx.112

  • Kubernetes 工作节点 1 – 101.xx.xx.111

  • Kubernetes 工作节点 2 – 101.xx.xx.110

在 Kubernetes 主节点上,运行以下命令以识别用于静态路由的 Pod 网络:

kubectl get nodes -o jsonpath="{range .items[*]}{'podNetwork: '}{.spec.podCIDR}{'\t'}{'gateway: '}{.status.addresses[0].address}{'\n'}{end}"

运行命令后,以下是示例输出:

Example command

  1. 使用 SSH 客户端登录到 NetScaler Console。

  2. 使用命令 route add -net <public IP address range> <Kubernetes IP address> 配置静态路由。

    例如:

    route add -net 192.168.0.0/24 101.xx.xx.112

    route add -net 192.168.1.0/24 101.xx.xx.111

    route add -net 192.168.2.0/24 101.xx.xx.110

  3. 使用 netstat -rn 验证配置。

    static routing

  4. 将这些路由命令附加到 /mpsconfig/svm.conf 文件中。

    1. 在 NetScaler Console 中,使用以下命令访问 svm.conf 文件:

      vim /mpsconfig/svm.conf

    2. svm.conf 文件中添加静态路由。

      例如,route add -net 192.168.0.0/24 101.xx.xx.112

从 GitHub 下载示例部署文件

  1. 使用命令 git clone https://github.com/citrix/citrix-k8s-ingress-controller.git 在主节点中克隆 GitHub 存储库。

  2. 要访问 YAML 文件:

    cd citrix-k8s-ingress-controller/example/servicegraph-demo/

在 CPX YAML 文件中添加参数

注意

如果您使用的是 CPX 58.x 或更高版本,则在注册到 Agent 时必须使用非 nsroot 密码。为确保安全性,NetScaler Agent 61.x 或更高版本需要强制更改密码。如果您的 NetScaler Agent 已升级到 61.x 或最新版本,则必须确保使用 CPX 58.x 或更高版本的内部版本。

您必须在 cpx.yaml 文件中包含以下参数,以确保 CPX 注册到 NetScaler Console:

-  name: "NS_MGMT_SERVER"
  value: "xx.xx.xx.xx"
-  name: "NS_MGMT_FINGER_PRINT"
  value: "xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
-  name: "NS_HTTP_PORT"
  value: "9080"
-  name: "NS_HTTPS_PORT"
  value: 9443"
-  name: "NS_MGMT_USER"
  value: "nsroot"
-  name: "NS_MGMT_PASS"
  value: <your password>
-  name: "LOGSTREAM_COLLECTOR_IP"
  value: "xx.xx.xx.xx"

<!--NeedCopy-->
  • NS_MGMT_SERVER – 指示 NetScaler Console IP 地址

    注意

    如果使用 Agent,则此参数指示 Agent IP 地址。

  • NS_MGMT_FINGER_PRINT – 指示 NetScaler Console 中 CPX 的身份验证。要获取指纹:

    1. 在 NetScaler Console 中,导航到 Settings > Administration(设置 > 管理)。

    2. System Configurations(系统配置)下,单击 View ADM Fingerprint(查看 ADM 指纹)。

      Fingerprint

      注意:

      如果您已配置本地 Agent,请导航到 Infrastructure > Instances > Agents(基础结构 > 实例 > Agent),选择 Agent,然后单击 View Fingerprint(查看指纹)。

      Fingerprint agent

  • NS_HTTP_PORT – 指示用于通信的 HTTP 端口

  • NS_HTTPS_PORT – 指示用于通信的 HTTPS 端口

  • NS_MGMT_USER - 指示用户名

  • NS_MGMT_PASS - 指示密码。指定您选择的密码

  • LOGSTREAM_COLLECTOR_IP – 指示 NetScaler Agent IP 地址,其中必须启用 Logstream 协议才能将日志数据从 CPX 传输到 NetScaler Console

在 NetScaler Console 中添加 VPX、SDX、MPX 或 BLX 实例

要在服务图中获取第 1 层 NetScaler 实例分析,您必须在 NetScaler Console 中添加 VPX/SDX/MPX/BLX 实例并启用 Web Insight

  1. 导航到 Infrastructure > Instances > NetScaler(基础结构 > 实例 > NetScaler)。

  2. 单击 Add(添加)选项以添加实例。有关详细信息,请参阅在 NetScaler Console 中添加实例

  3. 添加实例后,选择虚拟服务器并启用 Web Insight。有关详细信息,请参阅管理许可并在虚拟服务器上启用分析

在 NetScaler Console 中添加 Kubernetes 集群

要添加 Kubernetes 集群:

  1. 使用管理员凭据登录到 NetScaler Console。

  2. 导航到 Orchestration(编排)> Kubernetes > Cluster(集群)。 此时将显示“集群”页面。

  3. 单击 Add(添加)。

  4. Add Cluster(添加集群)页面中,指定以下参数:

    1. Name(名称)- 指定您选择的名称。

    2. API Server URL(API 服务器 URL)- 您可以从 Kubernetes 主节点获取 API 服务器 URL 详细信息。

      1. 在 Kubernetes 主节点上,运行命令 kubectl cluster-info

        API Server URL

      2. 输入为 “Kubernetes master is running at.”(Kubernetes 主节点正在运行于)显示的 URL。

    3. Authentication Token(身份验证令牌)- 指定身份验证令牌。身份验证令牌是验证 Kubernetes 集群和 NetScaler Console 之间通信访问所需的。要生成身份验证令牌:

      在 Kubernetes 主节点上:

      1. 使用以下 YAML 创建服务帐户:

        apiVersion: v1
        kind: ServiceAccount
        metadata:
          name: <name>
          namespace: <namespace>
        <!--NeedCopy-->
        
      2. 运行 kubectl create -f <yaml file>

        服务帐户已创建。

      3. 运行 kubectl create clusterrolebinding <name> --clusterrole=cluster-admin --serviceaccount=<namespace>:<name> 以将集群角色绑定到服务帐户。

        服务帐户现在具有集群范围的访问权限。

        创建服务帐户时会自动生成令牌。

      4. 运行 kubectl describe sa <name> 以查看令牌。

      5. 要获取密钥字符串,请运行 kubectl describe secret <token-name>

        Generate token

    4. 从列表中选择 Agent。

      注意

      如果您使用的是本地 Agent,请确保选择您在 CPX YAML 中添加的同一 Agent。

    5. 单击 Create(创建)。

      add cluster

部署示例微服务应用程序

在主节点上:

  1. 运行 kubectl create -f namespace.yaml 以创建命名空间。

  2. 使用以下命令部署 hotdrink 微服务、入口和密钥:

    kubectl create -f team_hotdrink.yaml -n sg-demo

    kubectl create -f hotdrink-secret.yaml -n sg-demo

部署 CPX 并在 NetScaler Console 中注册 CPX

  1. 运行 kubectl create -f rbac.yaml 以部署集群角色和集群绑定。

  2. 运行 kubectl create -f cpx.yaml -n sg-demo 以部署 CPX。

部署后,CPX 注册会自动完成。

启用自动选择虚拟服务器以进行许可

注意

确保您有足够的虚拟服务器许可证。有关详细信息,请参阅许可

在 NetScaler Console 中添加 Kubernetes 集群后,您必须确保自动选择虚拟服务器以进行许可。虚拟服务器必须获得许可才能在服务图中显示数据。要自动选择虚拟服务器:

  1. 导航到 Settings > Licensing & Analytics Configuration(设置 > 许可和分析配置)。

  2. Virtual Server License Summary(虚拟服务器许可证摘要)下,启用 Auto-select Virtual Servers(自动选择虚拟服务器)和 Auto-select non addressable Virtual Servers(自动选择不可寻址虚拟服务器)。

    Auto-select virtual server

启用 Web 事务和 TCP 事务设置

添加 Kubernetes 集群并启用自动选择虚拟服务器后,将 Web Transaction Settings(Web 事务设置)和 TCP Transactions Settings(TCP 事务设置)更改为所有

  1. 导航到 Settings > Analytics Settings(设置 > 分析设置)。

    此时将显示“分析设置”页面。

  2. 单击 Enable Features for Analytics(启用分析功能)。

  3. Web Transaction Settings(Web 事务设置)下,选择所有

  4. TCP Transactions Settings(TCP 事务设置)下,选择所有

    TCP

  5. 单击 OK(确定)。

将流量发送到微服务

接下来,您必须将流量发送到微服务,以使服务图在 NetScaler Console 中填充。

  1. 运行 kubectl get svc -n sg-demo 以通过 NodePort 公开 CPX。

    NodePort

  2. 编辑 etc/host 文件并为 hotdrink.beverages.com 创建域 IP 条目。

    您现在可以使用 https://hotdrink.beverages.com 访问微服务。