出口網關是指串連內部網路和外部網路的邊緣網關,用於控制網路流量並實現遠端存取和通訊。MSE雲原生網關作為出口網關,能夠為ACK叢集提供穩定、高效、安全的網路出口服務,滿足業務對於出口流量管理和安全控制的需求。
MSE雲原生網關優勢
MSE雲原生網關提供託管式的網關服務,採用獨立部署模式,不受ACK叢集影響,穩定性更高。
MSE雲原生網關提供豐富的七層HTTP協議治理能力,包括IP黑白名單、限流、負載平衡、TLS卸載、流量鏡像、Header控制等,功能更加豐富。
ACK叢集無需所有的Pod都開啟公網訪問能力,只需要對MSE雲原生網關開啟公網訪問即可(對網關使用的交換器開啟SNAT),提供更高的安全控制。
部署架構

操作步驟
步驟一:安裝MSE Ingress Controller
在已有ACK/ACK Serverless叢集中安裝MSE Ingress Controller,或者在建立叢集時直接安裝。具體操作,請參見管理MSE Ingress Controller組件。
步驟二:建立MseIngressConfig資源來建立或者關聯MSE網關執行個體
MseIngressConfig是MSE Ingress Controller提供的自訂資源CRD,通過建立MseIngressConfig資源可以建立或者關聯MSE託管網關執行個體。具體操作,請參見建立MSE雲原生網關執行個體。
建立網關時只需建立私網CLB即可,配置樣本如下所示:
apiVersion: mse.alibabacloud.com/v1alpha1
kind: MseIngressConfig
metadata:
name: egress-gateway
spec:
name: egress-gateway
common:
instance:
spec: 2c4g
replicas: 3
network:
vSwitches:
- "vsw-xxxx" # 建立網關時綁定的交換器ID
privateSLBSpec: slb.s2.small如果在建立ACK或ACK Serverless叢集時沒有開啟為專用網路配置 SNAT,則叢集無法訪問外網,需要為網關單獨配置SNAT以支援公網訪問。
公網訪問需要使用NAT Gateway的SNAT條目,關於NAT Gateway的建立操作,請參見使用公網NAT GatewaySNAT功能訪問互連網。執行該文檔步驟三:建立SNAT條目,建立一條SNAT條目,選擇交換器粒度,然後將MseIngressConfig中的交換器ID添加進去完成條目建立。
步驟三:建立ExternalName類型的K8s服務關聯外部服務
類型為ExternalName的K8s服務可以實現將內部服務對應到外部DNS名稱,例如希望在K8s叢集內部訪問外部的阿里雲的MSE產品頁,配置樣本如下:
apiVersion: v1
kind: Service
metadata:
name: aliyun-svc-external
namespace: default
spec:
externalName: www.aliyun.com
ports:
- name: port1
port: 80
protocol: TCP
targetPort: 80
- name: port2
port: 443
protocol: TCP
targetPort: 443
type: ExternalName步驟四:為建立的ExternalName類型服務配置路由
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: mse-ingress
namespace: default
spec:
ingressClassName: mse
rules:
- host: www.aliyun.com # 佈建網域名
http:
paths:
- backend:
service:
name: aliyun-svc-external # 指定使用ExternalName服務
port:
number: 80
path: /product/aliware/mse # 配置MSE訪問路徑
pathType: Prefix將上述配置儲存為mse-ingress.yaml後,使用kubectl apply -f mse-ingress.yaml應用配置,然後使用kubectl get ingress mse-ingress -o yaml查看Ingress資源擷取MSE雲原生網關的CLB地址。樣本如下:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTPS # aliyun目前全站採用HTTPS,需要配置網關到後端aliyun服務走HTTPS
name: mse-ingress
namespace: default
spec:
ingressClassName: mse
rules:
- host: www.aliyun.com
http:
paths:
- backend:
service:
name: aliyun-svc-external
port:
number: 443
path: /product/aliware/mse
pathType: Prefix
status:
loadBalancer:
ingress:
- ip: xx.xx.xx.xx # 替換為MSE雲原生網關的CLB地址步驟五:測實驗證Pod內訪問外部MSE
curl http://www.aliyun.com/product/aliware/mse --resolve www.aliyun.com:80:xx.xx.xx.xx請將xx.xx.xx.xx為步驟四中擷取的網關CLB IP地址。
相關文檔
關於通過Ingress方式使用網關其他高階特性的內容,請參見MSE Ingress進階用法。