Citrix ADC 支援與 Kubernetes 整合佈署Demo

2022 November 14

Citrix ADC 支援與 Kubernetes 整合實現對外發佈業務,通過在 Kubernetes 集群部署 Citrix Ingress Controller(簡稱CIC),實現根據 Ingress 規則設定 Citrix ADC,管理Kubernetes 環境應用程式的流量。

接下來將通過以下demo環境,驗證 Citrix ADC 與 Kubernetes 整合的佈署方案。

 

環境準備

  • 外層 Citrix ADC 佈署一台 VPX 版本
  • K8s 集群佈署一台 master 節點,兩台 node 節點

創建 ADC 管理帳戶

在外層 ADC 創建綁定在 CIC 的管理員帳戶,用於 CIC 通過 Nitro API 登錄 ADC 執行設定任務。

在 k8s master 創建 secret,將 cic-user 帳戶以 secret 方式提供給 CIC 控制器使用

K8s 集群部署 CIC 控制器

下載 CIC yaml 文件:https://github.com/citrix/citrix-k8s-ingress-controller/blob/master/deployment/baremetal/citrix-k8s-ingress-controller.yaml

修改 CIC 的 yaml 文件,將 NS_IP 改為外層 ADC 的管理 IP。

增加 IPAM 控制器參數名稱,用於關聯 IPAM 控制器,實現自動分配 ADC 的 VIP。

執行 kubectl apply 命令部署 CIC 控制器

查看 pod 可以看到 CIC pod 已經 running 起來了

部署完 CIC 後,在 ADC 上查看 LBVS,可以看到 CIC 自動創建的一個測試 VS,表示 CIC 已經連接上外層 ADC 並工作正常。

部署 IPAM 控制器

下載 yaml 文件:https://github.com/citrix/citrix-k8s-ingress-controller/blob/master/example/ipam-controller/citrix-ipam-controller.yaml

IPAM 控制器可以實現自動分配外層 ADC 的 VIP,編輯 IPAM 的 yaml 修改分配的 IP 範圍後進行部署

部署兩個應用程式用於測試

部署 Deployment:Nginx 和 Apache

將 my-nginx 和 my-apache 通過 Service NodePort 類型暴露出去

查看 pod,可以看到 my-nginx 和 my-apache 已經 running

查看 service,可以看到 my-nginx 和 my-apache 的 service 已經通過 NodePort 類型暴露出去

部署 Ingress 物件

部署 Ingress 物件,將 my-nginx 和 my-apache 應用程式通過 ADC 對外發佈提供服務。

kubernetes.io/ingress.class: citrix:與 CIC 的 yaml 裡面寫的對應,表示此 Ingress 物件與 CIC 關聯起來;

rules 定義的規則:

  • http 請求包 hostname 匹配 apache.local 的轉發到 my-apache-service;
  • http請 求包 hostname 匹配 nginx.local 的轉發到 my-nginx-service;
  • 未匹配以上規則的請求包都轉發到 my-nginx-service;

rules 定義的設定會被 CIC 翻譯成 ADC 的設定通過 Nitro API 推送到外層的 ADC 編輯好 ingress 物件的 yaml 後進行部署:

ingress 物件部署完成後,在 ADC 查看設定可以看到 CIC 推送過來的 LB 設定

測試通過 ADC 發佈的業務:

檢查 ADC 設定符合預期後,對 ADC 發佈到的業務VIP進行存取

測試通過 curl 存取 cs vip,指定 host 為 apache.local,流量按預期轉發到了my-apache-service

通過curl 存取cs vip,指定 host 為 nginx.local,流量按預期轉發到了my-nginx-service

通過 curl 存取 cs vip,不指定 host,流量轉發到了預設的 my-nginx-serice

測試 pod 的擴容,自動設定 ADC 效果:

查看 my-apache 和 my-nginx 應用程式都 running 在 k8s-worknode02(172.16.8.103) 上執行 kubectl scale 命令,對 my-apache 和 my-nginx 應用程式進行 replicas 2 份操作

查看 my-apache 和 my-nginx 應用程式已經 running 在 k8s-worknode01、k8s-worknode02

在外層 ADC 查看設定:

CIC 會接收到 k8s 的擴容事件,CIC 會將擴容新增的 Node 翻譯成 ADC 的設定,推送給外層 ADC

返回