天天看點

快速內建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,實作微服務應用内的流量優化!

Istio ingress網關作為輸入流量的入口點,確定對服務網格的通路控制。它還執行路由和負載均衡。Citrix ADC CPX、MPX 或 VPX 可部署為ingress網關,以控制 Istio服務網格的ingress流量。

Citrix ADC MPX或VPX作為Ingress 網關

快速內建Citrix ADC與Istio,實作微服務應用内的流量優化!

在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與Istio,實作微服務應用内的流量優化!

将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 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。

快速內建Citrix ADC與Istio,實作微服務應用内的流量優化!

在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是否正在運作。

快速內建Citrix ADC與Istio,實作微服務應用内的流量優化!

有幾點需要記住:

- 如果你想要暴露多個應用程式:

設定 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 CPX 可以作為 Istio 中應用容器的sidecar proxy。你可以使用Istio sidecar注入器手動或自動注入Citrix ADC CPX。 自動注入sidecar需要的資源包括Kubernetes mutating webhook admission controller和服務。使用 Rancher Catalog,你可以建立自動部署 Citrix ADC CPX 作為 sidecar proxy所需的資源。

快速內建Citrix ADC與Istio,實作微服務應用内的流量優化!

将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中。

重要提示:

不要在應用程式命名空間上啟用Istio自動注入。

要自動将 Citrix ADC CPX 部署為應用程式 pod 中的 sidecar,應用程式名稱空間必須标注為 cpx-injection=enabled。

Kubectl label namespace <application_namespace> cpx-injection=enabled

步驟:

2、 建立名為citrix-system的命名空間

3、 進入叢集,通路項目層級,導航到【Apps→Launch】

5、 單擊citrix-cpx-istio-sidecar-injector

快速內建Citrix ADC與Istio,實作微服務應用内的流量優化!

6、 設定環境變量:

a)IstioAdaptor版本:1.2.0

b)cpxProxy.EULA : YES

1、 更新所需變量的值,單擊Launch

2、 導航至Apps,并驗證cpx-sidecar-injector是否在運作

快速內建Citrix ADC與Istio,實作微服務應用内的流量優化!

你可以在以下網址中找到部署示例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應用商店如何使部署和配置應用變得簡單。

繼續閱讀