高级概念

Google Cloud 上的 Citrix ADC CPX、Citrix Ingress Controller 和 Application Delivery Management

GCP K8 体系结构和组件的 Citrix 产品概述

GCP 的 5 个主要 Citrix 组件

  1. Citrix ADC VPX 作为第 1 层 ADC,用于基于入站的 Internet 客户端流量。

    借助 GCP 中的 VPX 实例,您可以利用 GCP 计算功能并使用 Citrix 负载平衡和流量管理功能来满足您的业务需求。您可以在 GCP 中将 VPX 部署为独立实例。支持单网卡和多网卡 (NIC) 配置。

  2. 使用 Google Kubernetes Engine (GKE) 组成容器平台的 Kubernetes 群集。

    Kubernetes 引擎是一个托管的生产就绪环境,用于部署容器化应用程序。它支持快速部署和管理您的应用程序和服务。

  3. 使用 YAML 文件库部署示例 Citrix Web 应用程序。

    Citrix 提供了一个示例微服务 Web 应用程序,用于在 GCP 上测试双层应用程序拓扑。我们还在示例文件中包含了以下组件以进行概念验证:

    • Kubernetes YAML 文件中的示例 Hotdrink Web Service
    • Kubernetes YAML 文件中的示例 Colddrink Web Service
    • Kubernetes YAML 文件中的示例 Guestbook Web Service
    • Kubernetes YAML 文件中的示例 Grafana Charting Service
    • Kubernetes YAML 文件中的示例 Prometheus Logging Service

    GCP

  4. 将第 1 层 Citrix ADC 自动化的 Citrix Ingress Controller 部署到 GKE 群集。

    围绕 Kubernetes 构建的 Citrix Ingress Controller 会根据入口资源配置自动配置一个或多个 Citrix ADC。Ingress Controller 是一种控制器,它监视 Kubernetes API 服务器以获取入口资源的更新,并相应地重新配置入口负载平衡器。Citrix Ingress Controller 可以直接使用 YAML 文件部署,也可以通过 Helm 图部署。

    GCP

    Citrix 为第 1 层 VPX 实例的 Citrix Ingress Controller 自动化提供了示例 YAML 文件。这些文件在第 1 层 VPX 上自动执行多项配置,包括:

    • 重写策略和操作
    • 响应者策略和行动
    • 内容切换 URL 规则
    • 添加/删除 CPX 负载平衡服务

    用于 GCP 的 Citrix Ingress Controller YAML 文件位于此处: https://github.com/citrix/example-cpx-vpx-for-kubernetes-2-tier-microservices/tree/master/gcp

GCP 上的两层入口部署

在双层入口部署中,将 Citrix ADC VPX/MPX 部署在 Kubernetes 群集(第 1 层)外部,并在 Kubernetes 群集(第 2 层)内部部署 Citrix ADC CPX。

第 1 层 VPX/MPX 将在 Kubernetes 群集内部平衡第 2 层 CPX 的负载。这是一个广泛遵循的通用部署模型,无论平台是 Google 云、Amazon Web Services、Azure 还是本地部署。

第 1 层 VPX/MPX 的自动化

第 1 层 VPX/MPX 会自动对第 2 层 CPX 进行负载平衡。Citrix Ingress Controller 通过在 Kubernetes 群集中作为容器运行来完成自动化配置。它为第 1 层 VPX/MPX 配置单独的入口类,以便该配置不会与其他入口资源重叠。

GCP


Citrix 部署概述

在 GCP 上安装和配置第 1 层 Citrix ADC

您可以使用以下方法之一部署 Citrix ADC:

现在,您需要使用 3-NIC GDM 模板部署 Citrix VPX (tier-1-adc)。

必备条件(强制性):

  1. 仅使用您的 Citrix 邮件 ID 创建 GCP 帐户 http://console.cloud.google.com

  2. 在 GCP 控制台上创建 cnn-selab-atl 作为项目名称: GCP

  3. 在设备上安装 gcloud 实用程序。点击链接找到该实用程序: https://cloud.google.com/sdk/install

  4. 使用 gcloud API gcloud auth login 对您的 Google 帐户进行身份验证。

  5. 在您的客户端上安装 kubectl: https://kubernetes.io/docs/tasks/tools/install-kubectl/

  6. gcloud 实用程序上运行以下命令以创建映像。

    gcloud compute images create netscaler12-1 --source-uri=gs://tme-cpx-storage/NSVPX-GCP-12.1-50.28_nc.tar.gz --guest-os-features=MULTI_IP_SUBNET
    <!--NeedCopy-->
    

    创建映像可能需要一段时间。创建映像后,它会显示在 GCP 控制台的“计算”>“计算引擎”下。

在 GCP 上部署 Citrix VPX (tier-1-adc)

  1. GCP VPC 实例: 出于安全目的解决外部网络、内部网络和 DMZ 网络的分离问题。我们必须创建三个 NIC,如下表所示:

    网络 注意
    192.168.10.0/24 管理网络 (vpx-snet-mgmt)
    172.16.10.0/24 客户端网络 (vpx-snet-vip)
    10.10.10.0/24 服务器网络 (vpx-snet-snip)

    注意:

    在部署任何虚拟机实例之前,先构建三臂网络 VPC。

    VPC 可以使用 gcloud API 或者通过 Google 云端平台控制台由 SDK 进行创建 通过 gcloud API 创建 VPC

    为管理或 NSIP 流量创建 VPC

     gcloud compute --project=cnn-selab-atl networks create vpx-snet-mgmt --subnet-mode=custom
     gcloud compute --project=cnn-selab-atl networks subnets create vpx-snet-mgmt --network=vpx-snet-mgmt --region=us-east1 --range=192.168.10.0/24
     <!--NeedCopy-->
    

    为客户端或 VIP 流量创建 VPC

     gcloud compute --project=cnn-selab-atl networks create vpx-snet-vip --subnet-mode=custom
     gcloud compute --project=cnn-selab-atl networks subnets create vpx-snet-vip --network=vpx-snet-vip --region=us-east1 --range=172.16.10.0/24
     <!--NeedCopy-->
    

    为托管您的 kubernetes 群集的服务器或 SNIP 流量创建 VPC

     gcloud compute --project=cnn-selab-atl networks create vpx-snet-snip --subnet-mode=custom
     gcloud compute --project=cnn-selab-atl networks subnets create vpx-snet-snip --network=vpx-snet-snip --region=us-east1 --range=10.10.10.0/24
     <!--NeedCopy-->
    

    通过 GCP GUI 控制台创建 VPC 在 Google 控制台中,选择网络连接 > VPC 网络 > 创建 VPC 网络,然后输入必填字段,如下所示。然后单击 创建

    GCP

    同样,为客户端和服务器端 NIC 创建 VPC 网络以创建三个子网。

    注意:

    所有三个 VPC 网络都应位于同一区域,在这种情况下为 us-east1。

    GCP

  2. VPC网络下创建三个网络和三个子网后,请使用 GDM 模板部署 Citrix ADC VPX 实例。确保 configuration.ymltemplate.py 位于同一文件夹或目录中。使用 Google 开发工具包中的以下命令部署实例。

     gcloud deployment-manager deployments create tier1-vpx --config configuration.yml
     <!--NeedCopy-->
    
  3. 成功部署后,转到计算引擎检查 citrix-adc-tier1-vpx 部分,并验证内部 IP。

GCP

Citrix Ingress Controller 可以自动执行层 1 VPX 中的静态路由配置。配置子网 IP (SNIP) 地址,该地址应属于 Kubernetes 集群的相同子网/虚拟私有云。

注意:

部署的第 1 层 VPX/MPX 将对 Kubernetes 集群内的 CPX 进行负载平衡。在第 1 层 VPX 中配置 SNIP。

在第 1 层 VPX 上的 PuTTY 会话中,完成以下命令以添加 SNIP 并启用对 SNIP 的管理访问:

clear config -force full
add ns ip 10.10.10.20 255.255.255.0 -type snip -mgmt enabled
enable ns mode mbf
<!--NeedCopy-->

使用 GKE 部署 Kubernetes 群集

人们可以通过 Google 云端 SDK 或通过 Google 云端平台 GUI 控制台部署 Kubernetes 群集。

用于创建 k8s 群集的 Gcloud API 命令

gcloud beta container --project "cnn-selab-atl" clusters create "k8s-cluster-with-cpx" --zone "us-east1-b" --username "admin" --cluster-version "1.11.7-gke.12" --machine-type "n1-standard-1" --image-type "COS" --disk-type "pd-standard" --disk-size "100" --scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" --num-nodes "3" --enable-cloud-logging --enable-cloud-monitoring --no-enable-ip-alias --network "projects/cnn-selab-atl/global/networks/vpx-snet-snip" --subnetwork "projects/cnn-selab-atl/regions/us-east1/subnetworks/vpx-snet-snip" --addons HorizontalPodAutoscaling,HttpLoadBalancing --enable-autoupgrade --enable-autorepair
<!--NeedCopy-->

Google 云端平台 GUI 控制台步骤

  1. 在 GCP 控制台上搜索 Kubernetes 引擎,然后单击 创建群集

    GCP

  2. 在您的 VPX SNIP 所在的同一子网中创建群集 (vpx-snet-snip)。此群集可自动将配置从 K8s 群集中的 Citrix Ingress Controller 向 1 级 ADC 推送。

    GCP

    GCP

  3. 单击“高级选项”将子网更改为vpx-snet-snip ,然后选择以下字段。

    GCP

  4. 要从云 SDK 访问此群集,请单击 Kubernetes 连接到群集 按钮,然后将命令粘贴到云 SDK 中。

    GCP

  5. 通过运行以下命令验证 GKE 集群部署:

kubectl get nodes
<!--NeedCopy-->

GCP


使用示例 YAML 文件库部署示例应用程序

Citrix ADC 提供双层体系结构部署解决方案,用于对微服务中部署并通过 Internet 访问的企业级应用程序进行负载平衡。层 1 具有重负载平衡器,如 VPX/SDX/MPX,用于平衡南北流量。第 2 层具有 CPX 部署,用于管理微服务和负载均衡东西向流量。

  1. 如果您在 GKE 中运行群集,请确保您已使用群集角色绑定来配置群集管理员。您可以使用以下命令执行此操作。

     kubectl create clusterrolebinding citrix-cluster-admin --clusterrole=cluster-admin --user=<email-id of your google account>.
     <!--NeedCopy-->
    
  2. 访问您拥有部署 YAML 文件的当前目录。运行以下命令获取节点状态。

     kubectl get nodes
     <!--NeedCopy-->
    

    GCP

  3. 创建命名空间:

     kubectl create -f namespace.yaml
     <!--NeedCopy-->
    

    验证命名空间命令:

     kubectl get namespaces
     <!--NeedCopy-->
    

    GCP

  4. 在默认命名空间中部署 rbac.yaml。

     kubectl create -f rbac.yaml
     <!--NeedCopy-->
    
  5. 使用以下命令为 hotdrink、colddrink 和 guestbook 微服务部署 CPX。

     kubectl create -f cpx.yaml -n tier-2-adc
     kubectl create -f hotdrink-secret.yaml -n tier-2-adc
     <!--NeedCopy-->
    
  6. 部署 three-hotdrink beverage 微服务 — — 带有发夹体系结构的 SSL 型微服务。

     kubectl create -f team_hotdrink.yaml -n team-hotdrink
     kubectl create -f hotdrink-secret.yaml -n team-hotdrink
     <!--NeedCopy-->
    
  7. 部署 colddrink beverage 微服务 — SSL_TCP 类型的微服务。

     kubectl create -f team_colddrink.yaml -n team-colddrink
     kubectl create -f colddrink-secret.yaml -n team-colddrink
     <!--NeedCopy-->
    
  8. 部署 guestbook - 一个 NoSQL 类型的微服务。

     kubectl create -f team_guestbook.yaml -n team-guestbook
     <!--NeedCopy-->
    
  9. 验证为以上三个应用程序部署的 CPX。首先,获取部署为 tier-2-adc 的 CPX 容器,然后获得 CPX 的 CLI 访问权限。

    ``` To get CPX pods in tier-2-adc namespace, enter: kubectl get pods -n tier-2-adc

    要获得 CLI 访问(bash)到 CPX 窗格 (hotdrinks-cpx pod),请输入:kubectl exec -it "copy and paste hotdrink CPX pod name from the above step" bash -n tier-2-adc

    例如,

    kubectl exec -it cpx-ingress-hotdrinks-768b674f76-pcnw4 bash -n tier-2-adc

    要检查 CS 虚拟服务器是否在 hotdrink-cpx 中运行,请在根访问 CPX 后输入以下命令:cli-script"sh csvs"

    例如,

    root@cpx-ingress-hotdrinks-768b674f76-pcnw4:/# cli_script.sh "sh csvs"

  10. 将 VPX 入口和 Ingress Controller 部署到层 2 命名空间,该命名空间会自动配置 VPX。Citrix Ingress Controller (CIC) 自动执行 tier-1-adc (VPX)。

     kubectl create -f ingress_vpx.yaml -n tier-2-adc
     kubectl create -f cic_vpx.yaml -n tier-2-adc
     <!--NeedCopy-->
    
  11. 在本地计算机的主机文件中添加 DNS 条目,以便通过 Internet 访问微服务。

    对于 Windows 客户端,请转到 C:\Windows\System32\drivers\etc\hosts

    对于 macOS 客户端,请在终端中输入:sudo nano /etc/hosts`

    在主机的文件中添加以下条目并保存该文件。

     hotdrink.beverages.com   xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     colddrink.beverages.com  xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     guestbook.beverages.com  xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     grafana.beverages.com    xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     prometheus.beverages.com xxx.xxx.xxx.xxx (static-external-traffic-ip-tier1-vpx)
     <!--NeedCopy-->
    
  12. 现在,您可以通过Internet访问每个应用程序。例如,https://hotdrink.beverages.com

    GCP


为示例应用程序启用重写和响应程序策略

现在是时候通过自定义资源定义 (CRD) 在 VPX 上推送重写和响应程序策略了。

  1. 部署 CRD 以将“重写”和“响应程序”策略推送到默认命名空间中的 Tier-1-adc。
   kubectl create -f crd_rewrite_responder.yaml
   <!--NeedCopy-->
  1. 黑名单 URL 配置 hotdrink.beverages.com 上的响应程序策略以阻止对咖啡页的访问。
   kubectl create -f responderpolicy_hotdrink.yaml -n tier-2-adc
   <!--NeedCopy-->

部署响应者策略后,访问 hotdrink.beverages.com 上的咖啡页。然后您会收到以下消息。

GCP

  1. 标头插入 配置 colddrink.beverages.com 上的重写策略以在标头中插入会话 ID。
   kubectl create -f rewritepolicy_colddrink.yaml -n tier-2-adc
   <!--NeedCopy-->

部署重写策略后,访问在浏览器上启用了开发人员模式的 colddrink.beverages.com。在 Chrome 中,按 F12 并保留登录网络类别以查看会话 ID,该会话 ID 由 Tier-1-adc (VPX) 上的重写策略插入。

GCP


开源工具集

  1. 部署 Cloud Native Computing Foundation (CNCF) 监视工具,例如 Prometheus 和 Grafana,以收集 ADC 代理统计数据。

     kubectl create -f monitoring.yaml -n monitoring
     kubectl create -f ingress_vpx_monitoring.yaml -n monitoring
     <!--NeedCopy-->
    

Prometheus 日志聚合器

  1. 登录 http://grafana.beverages.com 并完成以下一次性设置。

    1. 使用管理员凭据登录门户。
    2. 单击添加数据源,然后选择 Prometheus 数据源。
    3. 配置以下设置,然后单击“保存并测试”按钮。

    GCP

Grafana 可视化控制板

  1. 从左侧面板中,选择“导入”选项并上载文grafana_config.jsonyamlFiles 夹中提供的文件。现在,您可以看到包含基本 ADC 统计信息的 Grafana 控制板。

GCP


删除部署

  1. 要删除 Citrix VPX (tier-1-adc) 部署,请转到 Google SDK CLI 控制台以删除实例:

    gcloud deployment-manager deployments delete tier1-vpx
    <!--NeedCopy-->
    
  2. 要删除 GKE Kubernetes 群集,请转到 GCP 控制台,选择 kubernetes 群集,然后单击删除以擦除群集。

    GCP