简 介

随着微服务网络的变动和增长,它们之间的交互可能难以治理和了解。这就是为什么将服务网格作为独自的基础架构层很不便的起因。服务网格是一种大规模解决微服务的办法。它能够解决路由和终止流量、监控和跟踪,服务交付和路由、负载平衡、断路(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/cit...)或部署Citrix Node Controller来建设。

注:Catalog的所有镜像均取自Rancher v.2.4.4版本,它反对Istio 1.4.10版本和Istio-adaptor
1.2.0版本。拜访这里理解更多对于架构的信息:

https://github.com/citrix/cit...

总 结

在本文中,咱们曾经向你展现了如何应用Citrix ADC Istio ingress网关配置ingress规定,以及应用Citrix CPX Istio Sidecar配置sidecar proxy。该网关容许内部流量进入服务网格,并治理边缘服务的流量。Citrix ADC作为sidecar用于服务到服务的通信,并且通明路由每个服务的所有流量。

在本文中,咱们通过Rancher catalog中的Helm chart一键部署了Citrix ADC,直观地体验到了Rancher利用商店如何使部署和配置利用变得简略。