简 介
随着微服务网络的变化和增长,它们之间的交互可能难以管理和理解。这就是为什么将服务网格作为单独的基础架构层很方便的原因。服务网格是一种大规模处理微服务的方法。它可以处理路由和终止流量、监控和跟踪,服务交付和路由、负载均衡、断路(circuit breaking)以及相互认证。服务网格采用了这些组件,并使它们成为基础架构层的一部分,从而无需开发人员编写支持这些功能的特定代码。
Istio是一个十分受欢迎的开源服务网格,已经内置在Rancher Kubernetes管理平台中。这一集成使得开发人员可以专注于业务逻辑,而其余的可以交给Kubernetes和Istio解决。
Citrix ADC(https://www.citrix.com/products/citrix-adc/platforms.html)是针对单体和基于微服务的应用的综合应用交付和负载均衡解决方案。其高级流量管理功能可以提高应用性能并提供全面的安全性。Citrix ADC与Istio集成,作为服务网格环境的Ingress网关,并作为sidecar proxy来控制微服务间的通信。这一集成可以让你严格保护和优化进入基于微服务的应用环境及其内部的流量。Citrix ADC的Ingress部署被配置为Kubernetes服务的负载均衡器。作为sidecar proxy,Citrix ADC处理服务到服务的通信,并使这种通信可靠、安全、可观察和可管理。
在本文中,我们将探讨Citrix ADC作为Istio Ingress 网关和sidecar proxy与在Rancher上部署的Istio服务网格的集成。我们将引入新的catalog模板,用于部署Citrix ADC作为Ingress网关和sidecar proxy injector。
Rancher catalog为DevOps工程师提供了一个UI平台,以部署和运行具有监控、审计和日志等开箱即用功能的应用程序。你可以在Rancher Catalog中找到Citrix Istio ingress网关和sidecar注入器。
将Citrix ADC作为Istio的ingress网关
Istio ingress网关作为输入流量的入口点,确保对服务网格的访问控制。它还执行路由和负载均衡。Citrix ADC CPX、MPX 或 VPX 可部署为ingress网关,以控制 Istio服务网格的ingress流量。
Citrix ADC MPX或VPX作为Ingress 网关
在Rancher Catalog中Citrix ADC VPX/MPX作为Ingress网关
当 Citrix ADC MPX/VPX 作为 Ingress Gateway 设备部署时,Istio-adaptor 容器主要在 Ingress Gateway 部署管理的 pod 内运行。
Citrix ADC CPX作为Istio Ingress网关
当 Citrix ADC CPX 部署为 Ingress Gateway 时,CPX 和 Istio-adaptor 均作为容器在 Ingress Gateway Pod 中运行。
将Citrix ADC CPX作为Rancher catalog中的ingress网关
Citrix Istio Adaptor
Citrix Istio Adaptor是一个用Go编写的开源软件。其主要工作是自动配置部署在Istio服务网格中的Citrix ADC。Istio Pilot、Citadel以及Mixer等组件构成了Istio控制平面。Pilot为网格中的代理提供服务发现功能。其本质上是一个gPRC×DS服务器,负责在运行时配置代理。
Istio-adaptor是xDS服务器的gRPC客户端,通过安全的gRPC通道从xDS服务器接收集群、监听器(listener)、路由和端点等xDS资源。在接收到这些资源后,Istio-adaptor将它们转换为相同的Citrix ADC配置块,并使用RESTful NITRO调用配置相关的Citrix ADC。你可以访问以下链接了解Citrix Istio adaptor的更多内容:
https://www.citrix.com/blogs/2019/11/13/citrix-adc-as-an-istio-ingress-gateway-part-1-deployment/
在下一节中,我们将使用Rancher Catalog将Citrix ADC设置为网关和sidecar。?Ingress Gateway描述了一个在网格边缘运行的负载均衡器,它接收传入的连接。?Sidecar proxy是为了监控、安全和资源分配而执行的。
Rancher Catalog将Citrix ADC设置为 Istio Ingress网关
前期准备
为了可以让你跟上以下步骤,请你准备以下内容:
- Rancher deployment(你可以通过官网上的quick start快速启动和运行Rancher)
- 由Rancher管理的Kubernetes集群
- 启用Istio
- 确保你的集群Kubernetes版本在1.14.0及以上并启用admissionregistration.k8s.io/v1beta1 API
- 为Citrix ADC用户名和密码创建一个Kubernetes secret。在导航栏选择【资源→Secrets】
步骤
1、 登录到Rancher
2、 创建一个名为citrix-system的命名空间
3、 进入集群,然后访问项目层级,导航到【App→Launch】
4、 在搜索框中搜索citrix
5、 单击 citrix-adc-istio-ingress-gateway。
在Rancher Catalog中Citrix ADC作为Istio的Ingress网关
6、 点击【Launch】来部署Citrix ADC作为ingress网关
a)对于Citrix ADC CPX:使用特定值设置以下环境变量
- Citrix ADC CPX-true
- ingressGateway EULA – true
- istioAdaptor.tag - 1.2.0
b)对于Citrix ADC MPX/VPX:设置以下环境变量:
- istioAdaptor版本:1.2.0
- netscalerUrl:以URL格式指定Citrix ADC IP
- vServer IP:为Citrix ADC虚拟服务器指定尚未使用的IP地址。
当你更新完成所需的变量值之后,点击launch。导航到Apps并验证citrix-ingressgateway是否正在运行。
有几点需要记住:
- 如果你想要暴露多个应用程序:
设置 exposeMutipleApps变量为true
- secretVolumes.name:
- secretVolumes.secretName:
-
secretVolumes.mountPath:
- 如果你想暴露non-HTTP服务(比如基于TCP的应用程序):
设置exposeNonHttpService变量为true
- tcpPort.name:
- tcpPort.nodePort: . // applicable in case of Citrix ADC CPX
- tcpPort.Port:
- tcpPort.targetPort:
Citrix ADC作为Istio的sidecar
Citrix ADC CPX 可以作为 Istio 中应用容器的sidecar proxy。你可以使用Istio sidecar注入器手动或自动注入Citrix ADC CPX。?自动注入sidecar需要的资源包括Kubernetes mutating webhook admission controller和服务。使用 Rancher Catalog,你可以创建自动部署 Citrix ADC CPX 作为 sidecar proxy所需的资源。
使用Rancher Catalog部署Citrix ADC作为Istio的Sidecar
前期准备
将Citrix ADC部署为应用程序pod中的sidecar需要以下先决条件:
- 确保Istio已经启用
- 确保你的集群Kubernetes版本在1.14.0及以上并且admissionregistration.k8s.io/v1beta1
API已经启用 - 通过执行以下步骤来创建自动sidecar注入所需的资源:
1、 下载webhook-create-signed-cert.sh脚本
curl -L https://raw.githubusercontent.com/citrix/citrix-istio-adaptor/master/deployment/webhook-create-signed-cert.sh > we
2、 将脚本权限改为可执行模式
chmod +x webhook-create-signed-cert.sh
3、 创建一个签名的证书、密钥对,并将其存储在Kubernetes secret中。
./webhook-create-signed-cert.sh
--service cpx-sidecar-injector
--secret cpx-sidecar-injector-certs
--namespace citrix-system
重要提示:
不要在应用程序命名空间上启用Istio自动注入。
要自动将 Citrix ADC CPX 部署为应用程序 pod 中的 sidecar,应用程序名称空间必须标注为 cpx-injection=enabled。
Kubectl label namespace <application_namespace> cpx-injection=enabled
步骤:
1、 登录到Rancher
2、 创建名为citrix-system的命名空间
3、 进入集群,访问项目层级,导航到【Apps→Launch】
4、 在搜索框中搜索citrix
5、 单击citrix-cpx-istio-sidecar-injector
6、 设置环境变量:
a)IstioAdaptor版本:1.2.0
b)cpxProxy.EULA?: YES
1、 更新所需变量的值,单击Launch
2、 导航至Apps,并验证cpx-sidecar-injector是否在运行
使用Citrix ADC访问示例应用程序
你可以在以下网址中找到部署示例bookinfo应用程序的例子:
https://github.com/citrix/citrix-helm-charts/tree/master/examples/citrix-adc-in-istio
- 如果将Citrix ADC VPX/MPX部署为ingress 网关,则将通过vServer IP访问服务。(这个细节在Citrix
ADC VPX作为ingress网关部署的步骤6b中提到)。 - 如果将Citrix ADC CPX部署为ingress网关,则可通过Ingress IP和端口访问服务。请访问此链接了解更多信息:
https://github.com/citrix/citrix-helm-charts/tree/master/examples/citrix-adc-in-istio#verification
重要提示:要将 Citrix ADC VPX 或 MPX 部署为ingress网关,你应在 Citrix ADC VPX 或 MPX 与群集节点之间建立连接。这种连接性可以通过在Citrix ADC上配置链接里提到的路由(https://github.com/citrix/citrix-k8s-ingress-controller/blob/master/docs/network/staticrouting.md)或部署Citrix Node Controller来建立。
注:Catalog的所有镜像均取自Rancher v.2.4.4版本,它支持Istio 1.4.10版本和Istio-adaptor
1.2.0版本。访问这里了解更多关于架构的信息:https://github.com/citrix/citrix-istio-adaptor/blob/master/docs/architecture.md
总 结
在本文中,我们已经向你展示了如何使用Citrix ADC Istio ingress网关配置ingress规则,以及使用Citrix CPX Istio Sidecar配置sidecar proxy。该网关允许外部流量进入服务网格,并管理边缘服务的流量。Citrix ADC作为sidecar用于服务到服务的通信,并且透明路由每个服务的所有流量。
在本文中,我们通过Rancher catalog中的Helm chart一键部署了Citrix ADC,直观地体验到了Rancher应用商店如何使部署和配置应用变得简单。