MseIngressConfig是由MSE Ingress Controller提供的CRD資源,用於管理MSE雲原生網關執行個體的生命週期,配置Ingress監聽選項以及全域配置。本文介紹MseIngressConfig的常見用法,包含如何通過MseIngressConfig建立、複用和刪除MSE雲原生網關執行個體,以及如何配置全域執行個體層級的IP黑白名單存取控制、開啟SLS日誌和開啟XTrace鏈路追蹤。
背景資訊
MSE Ingress Controller負責監聽叢集中建立的MseIngressConfig資源,即時動態維護該資源對應的雲原生網關執行個體的生命週期以及該網關與ACK叢集的關聯性。
通過關聯ACK叢集的API Server,MSE雲原生網關的控制面可以擷取Ingress資源的變化,然後動態更新MSE雲原生網關的路由規則。收到請求時,MSE雲原生網關將匹配Ingress轉寄規則轉寄請求到後端Service所對應的Pod。
Kubernetes中的Service、Ingress、IngressClass、MseIngressConfig和MSE Ingress Controller存在以下關係:
Service:後端真實服務的抽象,一個Service可以代表多個相同的後端服務。
Ingress:反向 Proxy規則,用來規定HTTP和HTTPS請求應該被轉寄到哪個Service上。例如,根據請求中不同的Host和URL路徑,使請求轉寄到不同的Service上。
IngressClass:Ingress處理器的描述,用於在K8s叢集中聲明一個Ingress處理器實現,關聯該IngressClass的Ingress資源會被該Ingress處理器解析。此外,需要通過IngressClass的Parameter欄位關聯一個MseIngressConfig(MSE雲原生網關),用於實施被解析的Ingress資源描述的流量管理規則。
MseIngressConfig:由MSE Ingress Controller提供的CRD,用於描述雲原生網關執行個體的基本資料。
MSE Ingress Controller:管理MSE雲原生網關執行個體以及配置的控制平面,本身不是網路資料平面。負責監聽叢集中的MseIngressConfig資源,協調MSE雲原生網關執行個體,以實施Ingress資源描述的流量管理規則。
MSE Ingress Controller工作示意圖。
概覽
本文從以下幾個部分介紹如何配置MseIngressConfig:
MseIngressConfig說明
配置說明
MseIngressConfig是由MSE Ingress Controller提供的CRD資源,MSE Ingress Controller使用MseIngressConfig來管理MSE雲原生網關執行個體的生命週期以及全域配置。
一個MseIngressConfig對應一個MSE雲原生網關執行個體。如果您需要使用多個MSE雲原生網關執行個體,需要建立多個MseIngressConfig配置。除複用情境外,刪除MseIngressConfig配置,會串聯刪除對應的MSE雲原生網關執行個體。
以下範例程式碼為完整的MseIngressConfig配置。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
name: mse-ingress
common:
pay:
payType: POSTPAY
instance:
spec: 4c8g
replicas: 3
network:
vSwitches:
- "vsw-1"
- "vsw-2"
publicSLBSpec: slb.s2.small
securityGroupType: normal
global:
tls:
enableHardwareAcceleration: true
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.2.XX.XX
monitor:
logging:
sls:
reuseProject: "xxx" # 為空白,表示使用預設
tracing:
xTrace:
sampleRate: "100"
ingress:
local:
ingressClass: mse
watchNamespace: "" # ""表示所有命名空間中的Ingress資源
參數 | 說明 | 是否可選 | 預設值 |
name | 網關的名稱。 | 可選 | mse-ingress |
common.pay.payType | 付費類型。 目前只支援隨用隨付。 | 可選 若不配置,系統預設選擇隨用隨付。 | POSTPAY |
common.instance.spec | 網關執行個體規格。 可選值:
| 可選 | 4c8g |
common.instance.replicas | 網關執行個體副本數。 網關執行個體副本數為0~30個。 | 可選 | 3個 |
common.network.vSwitches | 主備交換器,主在前,備在後。 主備交換器在填寫時至少指定一個,至多兩個;不填則從Controller Pod所在的Node上擷取交換器。 | 可選 | 無 |
common.network.publicSLBSpec | 網關代購的公網SLB規格。 可選值:
| 可選 | slb.s2.small |
common.network.privateSLBSpec | 網關代購的私網SLB規格。 可選值:
| 可選 | slb.s2.small |
common.securityGroupType | 安全性群組類型。 可選值:
| 可選 | normal |
global.tls.enableHardwareAcceleration | TLS硬體加速開關。 可以大幅提升HTTPS流量的效能。 | 可選 | 開啟 |
global.ipAccessControl.whitelist | 全域IP訪問白名單。 | 可選 | 未配置 |
global.ipAccessControl.blacklist | 全域IP訪問黑名單。 | 可選 | 未配置 |
monitor.logging.sls | SLSLog Service開關。 開啟需要賦予Controller有關SLS的許可權。 | 可選 | 關閉 |
monitor.logging.sls.reuseProject | SLSLog Service,投遞訪問日誌的目標Project。 可選值:
| 可選 | 配置為空白 |
monitor.tracing.xTrace | xTrace鏈路追蹤開關。 | 可選 | 關閉 |
monitor.tracing.xTrace.sampleRate | 鏈路追蹤採樣率。 | 可選 | 0 |
ingress.local.ingressClass | 雲原生網關監聽叢集中具體IngressClass下的Ingress資源。 可選值:
說明 該配置的優先順序低於使用者通過IngressClass資源關聯MseIngressConfig的方式。 | 可選 | 未配置 |
ingress.local.watchNamespace | 雲原生網關監聽叢集中哪些命名空間的Ingress資源。 可選值:
| 可選 | 配置為空白 |
狀態說明
當您建立MseIngressConfig資源後,可以通過kubectl get mseingressconfig
的方式查看資源的狀態。MseIngressConfig會按照Pending > Running > Listening的狀態依次變化。各狀態說明如下:
Pending:雲原生網關正在建立中,需等待3min左右。
Running:雲原生網關建立成功,並處於運行狀態。
Listening:雲原生處於運行狀態,並監聽叢集中Ingress資源。
Failed:雲原生網關處於非法狀態,可以查看Status欄位中Message來進一步明確原因。
標籤說明
通過MseIngressConfig建立或者複用的MSE雲原生網關執行個體會被打上資源標籤,您可以在的基本資料中查看目標網關的標籤資訊。
請勿在MSE雲原生網關控制台編輯下表中的標籤,避免對您的網關執行個體造成影響。
標籤名 | 說明 |
ack.aliyun.com | MSE雲原生網關管理的Container Service叢集的入口流量。 |
ingress.k8s.alibaba/MseIngressConfig | MSE雲原生網關與MseIngressConfig關聯。 |
kubernetes.reused.by.user | MSE雲原生網關是否是複用情境。當為複用情境時,刪除與之關聯的MseIngressConfig時,該MSE雲原生網關執行個體不會被刪除。 |
建立MSE雲原生網關執行個體
配置MseIngressConfig。
通過以下是範例程式碼,建立一個名為mse-ingress,副本數為3,執行個體規格為2c4g的MSE雲原生網關執行個體。您可以按需修改MseIngressConfig的其他配置。
apiVersion: mse.alibabacloud.com/v1alpha1 kind: MseIngressConfig metadata: name: test spec: name: mse-ingress common: instance: spec: 2c4g replicas: 3
在Container Service叢集中建立IngressClass資源,並關聯MseIngressConfig。
在Container Service叢集中建立IngressClass資源,並通過spec.parameters關聯以上的MseIngressConfig配置,完成在Container Service叢集中聲明一個Ingress處理器。通過這種方式,叢集中關聯該IngressClass的Ingress資源就會被以上MseIngressConfig關聯的MSE雲原生網關執行個體處理並實施。
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: mse spec: controller: mse.alibabacloud.com/ingress parameters: apiGroup: mse.alibabacloud.com kind: MseIngressConfig name: test
複用已有MSE雲原生網關執行個體
如果您希望複用已有MSE雲原生網關執行個體,在建立MseIngressConfig時通過spec.id
指定MSE雲原生網關執行個體唯一ID (格式為gw-xxx),並通過參數spec.override
來控制是否根據MseIngressConfig覆蓋被複用的MSE雲原生網關執行個體的相關配置。
以下範例程式碼,通過MseIngressConfig複用已有MSE雲原生網關執行個體,設定該網關執行個體關聯容器叢集並監聽該容器叢集中ingressClass為mse的Ingress資源。
以下配置中
spec.override
設定為false
,表示不覆蓋已有的MSE雲原生網關的Ingress監聽選項和全域配置。如果已有的網關執行個體沒有關聯該容器叢集,將會自動化佈建該網關執行個體關聯容器叢集並設定Ingress監聽選項,監聽該容器叢集中ingressClass為spec.ingress.local.ingressClass
值的Ingress資源 (此處設定的mse);如果已有的網關執行個體已經關聯過該容器叢集,則不會覆蓋原有的Ingress監聽選項。如果您希望覆蓋掉已有的MSE雲原生網關的Ingress監聽選項和全域配置,請確保MseIngressConfig中網關參數配置 (Ingress監聽選項、硬體加速、全域黑白名單、可觀測)正確之後,再開啟
spec.override
。當這些配置在MseIngressConfig未指定,開啟spec.override
會覆蓋網關原有的參數配置 (Ingress監聽選項、硬體加速、全域黑白名單、可觀測),並可能對您的流量造成影響。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: reuse
spec:
id: gw-xxxx
override: false
ingress:
local:
ingressClass: mse
參數 | 說明 |
spec.id | 複用的目標MSE雲原生網關執行個體ID,格式gw-開頭。 |
spec.override | 是否根據MseIngressConfig配置覆蓋被複用的MSE雲原生網關執行個體的相關配置。
|
刪除MSE雲原生網關執行個體
一個MseIngressConfig對應一個MSE雲原生網關執行個體。除複用情境除外,刪除MseIngressConfig配置,會串聯刪除對應的MSE雲原生網關執行個體。
刪除策略如下表所示。
網關付費類型 | MSE Ingress Controller自動建立 | 複用控制台已購網關 |
隨用隨付 | 刪除MseIngressConfig,自動刪除網關執行個體。 | 刪除MseIngressConfig,保留網關執行個體。 |
訂用帳戶 | 不涉及。 | 刪除MseIngressConfig,保留網關執行個體。 |
執行如下命令,刪除MseIngressConfig配置。
kubectl delete mseingressconfig your-config-name
配置全域執行個體層級的IP存取控制
配置IP白名單
配置全域執行個體層級的IP白名單,可以只允許目標源IP訪問MSE Ingress。
以下範例程式碼,配置只允許源IP地址為1.1.XX.XX或者網段為2.0.XX.XX訪問MSE Ingress網關執行個體。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
global:
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.0.XX.XX/8
...
配置IP黑名單
配置全域執行個體層級的IP黑名單,可以拒絕目標源IP訪問MSE Ingress。
以下範例程式碼,配置拒絕源IP地址為1.1.XX.XX或者網段為2.0.XX.XX訪問MSE Ingress網關執行個體。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
global:
ipAccessControl:
blacklist:
- 1.1.XX.XX
- 2.0.XX.XX/8
...
開啟SLS日誌
開啟SLS日誌之前,請確保已為MSE Ingress Controller授予SLS相關許可權。
如果您的叢集是託管版或專有版ACK叢集,請參見為ACK專有版叢集中的MSE Ingress Controller授權。
如果您的叢集是ACK Serverless叢集,請參見為ACK Serverless叢集中的MSE Ingress Controller授權。
以下範例程式碼,配置MSE Ingress網關投遞訪問日誌到名為demo
的Project。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
monitor:
logging:
sls:
# 為空白,表示使用預設
reuseProject: "demo"
...
配置reuseProject欄位才能開啟SLSLog Service。如果您希望使用預設Project,可將reuseProject配置為空白。
開啟XTrace鏈路追蹤
為網關配置阿里雲XTrace鏈路追蹤服務後,可以實現構建端到端的全鏈路追蹤監控體系,方便線上問題快速診斷和定位。
以下範例程式碼,配置MSE Ingress網關的XTrace鏈路追蹤,其中採樣率(sampleRate)為100%。
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: test
spec:
...
monitor:
tracing:
xTrace:
sampleRate: "100"
...