乐趣区

关于kubernetes:快速集成Citrix-ADC与Istio实现微服务应用内的流量优化

简 介

随着微服务网络的变动和增长,它们之间的交互可能难以治理和了解。这就是为什么将服务网格作为独自的基础架构层很不便的起因。服务网格是一种大规模解决微服务的办法。它能够解决路由和终止流量、监控和跟踪,服务交付和路由、负载平衡、断路(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 利用商店如何使部署和配置利用变得简略。

退出移动版