Citrix ADC CPX、Citrix入口控制器和谷歌Cloud上的应用程序交付管理
Citrix对GCP K8架构和组件的产品概述
GCP的五个主要Citrix组件
Citrix ADC VPX作为基于入口的互联网客户端流量的第1层ADC。
GCP中的VPX实例使您能够利用GCP计算功能,并为您的业务需求使用Citrix负载平衡和流量管理特性。您可以在GCP中将VPX作为一个独立实例部署。支持单网卡配置和多网卡配置。
Kubernetes集群使用谷歌Kubernetes Engine (GKE)搭建容器平台。
Kubernetes Engine是一个可用于部署集装箱应用程序的受管理的、可用于生产的环境。它支持应用程序和服务的快速部署和管理。
使用YAML文件库部署一个示例Citrix web应用程序。
Citrix提供了一个示例微服务web应用程序来测试GCP上的两层应用程序拓扑结构。我们还在示例文件中包含了以下组件以进行概念验证:
- Kubernetes YAML文件中的热饮料Web服务示例
- Kubernetes YAML文件中的冷饮Web服务示例
- Kubernetes YAML文件中的留言簿Web服务示例
- 在Kubernetes YAML文件中的Grafana制图服务样本
- Kubernetes YAML文件中的Prometheus日志服务示例
将一级Citrix ADC自动化的Citrix入口控制器部署到GKE集群中。
围绕Kubernetes构建的Citrix入口控制器根据入口资源配置自动配置一个或多个Citrix ADC。入口控制器是一种控制器,它监视Kubernetes API服务器对入口资源的更新,并相应地重新配置入口负载均衡器。Citrix入口控制器可以直接使用YAML文件部署,也可以通过Helm Charts部署。
Citrix为第1层VPX实例的Citrix入口控制器自动化提供了样例YAML文件。这些文件自动化了一级VPX上的几个配置,包括:
- 重写策略和操作
- 响应器策略和操作
- 切换URL规则
- 添加/移除CPX负载均衡服务
用于GCP的Citrix入口控制器YAML文件位于这里:https://github.com/citrix/example-cpx-vpx-for-kubernetes-2-tier-microservices/tree/master/gcp
GCP上的两层入接口部署
双层入接口部署时,将Citrix ADC VPX/MPX部署在Kubernetes集群(Tier 1)外部,将Citrix ADC cpx部署在Kubernetes集群(Tier 2)内部。
一级VPX/MPX将在Kubernetes集群内平衡二级CPX的负载。这是一种被广泛采用的通用部署模型,不考虑平台,无论是谷歌Cloud、Amazon Web Services、Azure还是本地部署。
1层VPX/MPX的自动化
一级VPX/MPX自动对二级cpx进行负载均衡。Citrix入口控制器通过作为Kubernetes集群中的一个pod运行来完成自动化配置。它为一级VPX/MPX配置一个单独的入口类,这样配置就不会与其他入口资源重叠。
Citrix部署概述
在GCP上安装和配置第1层Citrix ADC
您可以使用以下方式之一部署Citrix ADC:
谷歌云平台GUI:有关通过GUI在谷歌云平台上配置一级Citrix ADC的信息,请参见部署Citrix ADC VPX实例.
谷歌部署管理器:有关通过GDM模板在谷歌云平台上配置一级Citrix ADC的信息,请参见使用GDM模板部署Citrix ADC VPX实例.
现在您需要使用3-NIC GDM模板部署Citrix VPX(一级adc)。
先决条件(强制性):
仅使用您的Citrix邮件id创建GCP帐户http://console.cloud.google.com
在GCP控制台创建cnn-selab-atl作为项目名称:
安装
gcloud
设备上的实用程序。点击链接找到实用工具:https://cloud.google.com/sdk/install.使用gcloud API验证您的谷歌帐户gcloud身份验证登录.
在客户端安装kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/
运行以下命令
gcloud
实用程序来创建映像。gcloud计算镜像创建netscaler12-1——source-uri=gs:// time -cpx-storage/NSVPX-GCP-12.1-50.28_nc.tar.gz——guest-os-features=MULTI_IP_SUBNET
创建映像可能需要一些时间。创建图像后,它出现在Compute >计算引擎在GCP控制台。
在GCP上部署一个Citrix VPX(一级adc)
GCP VPC实例:为了安全目的,解决外部、内部和DMZ网络的分离问题。需要创建3个网卡,如下表所示:
网络 评论 192.168.10.0/24 管理网络(vpx-snet-mgmt) 172.16.10.0/24 客户端网络(vpx-snet-vip) 10.10.10.0/24 服务器网络(vpx-snet-snip) 注意:
在部署任何VM实例之前,先构建三臂网络vpc。
VPC可以通过SDK、gcloud接口和谷歌云平台控制台两种方式创建通过gcloud API创建VPC
创建VPC用于管理流量或NSIP流量
Gcloud compute——project=cnn-selab-atl networks create vpx-snet-mgmt——subnet-mode=custom Gcloud compute——project=cnn-selab-atl networks subnet create vpx-snet-mgmt——network=vpx-snet-mgmt——region=us-east1——range=192.168.10.0/24
创建VPC供客户端或VIP流量使用
Gcloud compute——project=cnn-selab-atl networks create vpx-snet-vip——subnet-mode=custom Gcloud compute——project=cnn-selab-atl networks subnet create vpx-snet-vip——network=vpx-snet-vip——region=us-east1——range=172.16.10.0/24
创建“服务器流量”或“SNIP流量”VPC,用于托管kubernetes集群
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
VPC通过GCP GUI控制台从谷歌控制台选择组网> VPC网络>创建VPC网络然后输入所需的字段,如下所示。然后单击创建.
客户端和服务器端网卡分别创建VPC网络,创建三个子网。
注意:
3个VPC网络应该在同一个区域,本场景中为us-east1。
在下面创建三个网络和三个子网后VPC网络,使用GDM模板部署Citrix ADC VPX实例。确保configuration.yml而且template.py在相同的文件夹或目录中。从谷歌SDK中使用以下命令部署实例。
Gcloud部署管理器部署创建tier1-vpx——config配置。yml < !——NeedCopy >
部署成功后,转到计算引擎检查citrix-adc-tier1-vpx,验证内部ip。
Citrix入口控制器可以实现一级VPX静态路由配置的自动化。配置SNIP地址,需要与Kubernetes集群的子网/虚拟私有云属于同一子网。
注意:
部署的一级VPX/MPX将对Kubernetes集群内的cpx进行负载均衡。在一级VPX中配置SNIP。
在一级VPX上的PuTTY会话中,执行以下命令添加SNIP并启用管理访问SNIP:
清除config -force full add ns IP 10.10.10.20 255.255.255.0 -type snip -mgmt enabled enable ns mode MBF
使用GKE方式部署Kubernetes集群
可以通过以下两种方式部署Kubernetes集群谷歌云SDK或通过谷歌云平台GUI控制台.
Gcloud API创建k8s集群命令
Gcloud beta容器——项目“cnn-selab-atl”集群创建“k8s-cluster-with-cpx”——zone“us-east1-b”——用户名“admin”——cluster-version“1.11.7-gke”。12"——machine-type "n1-standard-1"——image-type "COS"——disk-type "pd-standard"——disk-size "100"——scope "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- autopgrade——enable-autorepair
云平台GUI控制台步骤
在GCP控制台中搜索Kubernetes引擎并单击创建集群.
在您的VPX SNIP所在子网(VPX -snet- SNIP)中创建一个集群。该集群自动将配置从K8s集群中的Citrix入口控制器推送到第1层ADC。
点击高级选项修改子网为
vpx-snet-snip
并选择以下字段。要从云SDK访问此集群,请单击Kubernetes连接到集群按钮,并将命令粘贴到云SDK中。
运行以下命令验证GKE Cluster的部署:
Kubectl获取节点
使用样例YAML文件库部署样例应用程序
Citrix ADC提供两层架构部署解决方案,以负载平衡部署在微服务中并通过Internet访问的企业级应用程序。Tier 1配置VPX/SDX/MPX等重型负载均衡器,实现南北流量的负载均衡。第2层有CPX部署,用于管理微服务和负载平衡东西流量。
如果您在GKE中运行您的集群,那么请确保您使用了集群角色绑定来配置cluster-admin。您可以使用以下命令来实现这一点。
Kubectl创建clusterrolebinding citrix-cluster-admin——clusterrole=cluster-admin——user=<您谷歌帐户>的email-id。<!——NeedCopy >
访问部署YAML文件所在的当前目录。执行以下命令获取节点状态。
Kubectl获取节点
创建名称空间:
Kubectl创建-f namespace。yaml < !——NeedCopy >
验证namespace命令:
Kubectl获得名称空间
部署rbac。默认名称空间中的Yaml。
Kubectl创建-f rbac。yaml < !——NeedCopy >
使用以下命令为热饮、冷饮和留言簿微服务部署CPX。
Kubectl创建-f cpx。yaml - n tier-2-adckubectl create -f hotdrink-secret.yaml -n tier-2-adc
部署三种热饮饮料微服务—带发夹架构的SSL类型微服务。
Kubectl创建-f team_hotdrink。Yaml -n team-hotdrink kubectl create -f hotdrink-secret。Yaml -n team-hotdrink
部署冷饮饮料微服务—SSL_TCP类型的微服务。
Kubectl创建-f team_colddrink。Yaml -n team-colddrink kubectl create -f colddrink-secret。Yaml -n team-cold - drink
部署guestbook—NoSQL类型的微服务。
Kubectl创建-f team_guestbook。Yaml -n team-guestbook
验证为以上三个应用程序部署的CPX。首先,获取部署为第2层adc的CPX pods,然后获得对CPX的CLI访问。
要在二级adc命名空间中获取CPX pods,输入:kubectl get pods -n二级adc
要获得对CPX pod (hotbeverages - CPX pod)的CLI访问(bash),输入:
“从上面的步骤复制和粘贴热饮料CPX pod名称”bash -n tier-2-adc
.例如,
Kubectl exec - cpx- ingpress -hotdrinks-768b674f76-pcnw4 bash -n tier-2-adc
查看hotdrink-cpx中是否运行CS vserver,在root用户访问CPX后输入如下命令:
cli-script“sh华禾投资”
.例如,
root@cpx-ingress-hotdrinks-768b674f76-pcnw4:/# cli_script.sh "sh csvs"
将VPX入口和入口控制器部署到第二层命名空间,该命名空间自动配置VPX。Citrix输入控制器(CIC)自动化一级adc (VPX)。
Kubectl创建-f ingress_vpx。yaml - n tier-2-adckubectl create -f cic_vpx.yaml -n tier-2-adc
在本地机器的主机文件中添加DNS条目,以便通过Internet访问微服务。
对于Windows客户端,转到:C:\Windows\System32\drivers\etc\hosts
对于macOS客户端,在终端中输入:sudo / etc / hosts nano”
在主机文件中添加以下条目并保存文件。
(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)
现在您可以通过Internet访问每个应用程序。例如,
https://hotdrink.beverages.com
.
为示例应用程序启用Rewrite和Responder策略
现在是时候通过自定义资源定义(CRD)在VPX上推动Rewrite和Responder策略了。
- 部署CRD将Rewrite和Responder策略推入默认命名空间中的一级adc。
Kubectl创建-f crd_rewrite_responder.yaml
- 黑名单的url在上配置Responder策略
hotdrink.beverages.com
阻止对咖啡页面的访问。
Kubectl创建-f responderpolicy_hotdrink。yaml - n tier-2-adc
部署Responder策略后,访问coffee页面hotdrink.beverages.com
.然后您会收到以下消息。
- 头插入配置“重写”策略
colddrink.beverages.com
在消息头中插入会话ID。
Kubectl创建-f rewritepolicy_colddrink。yaml - n tier-2-adc
部署Rewrite策略后,访问colddrink.beverages.com
在浏览器上启用开发人员模式。在Chrome浏览器下,按F12,保留network category下的日志,查看会话ID,会话ID是由VPX (tier-1-adc)的Rewrite策略插入的。
开源工具集
部署云本地计算基础(CNCF)监视工具,例如Prometheus和Grafana来收集ADC代理统计信息。
Kubectl创建-f监视。yaml - n监测kubectl create -f ingress_vpx_monitoring.yaml -n monitoring
普罗米修斯日志聚合器
登录到
http://grafana.beverages.com
并完成以下一次性设置。- 使用管理员凭证登录到门户。
- 点击添加数据来源并选择普罗米修斯数据源。
- 配置以下设置并单击保存并测试按钮。
Grafana视觉指示板
- 从左侧面板中选择进口选项,并上载
grafana_config.json
《yamlFiles
文件夹中。现在你可以看到Grafana仪表板上列出的基本ADC数据。
删除一个部署
如果需要删除Citrix VPX(一级adc)部署,请进入谷歌SDK CLI控制台删除实例:
Gcloud部署管理器删除tier1-vpx
删除GKE Kubernetes集群:进入GCP控制台,选择“Kubernetes集群”,单击删除删除集群。
' ' '