出口網關是指連接內部網絡和外部網絡的邊緣網關,用于控制網絡流量并實現遠程訪問和通信。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網關的SNAT條目,關于NAT網關的創建操作,請參見使用公網NAT網關SNAT功能訪問互聯網。執行該文檔步驟三:創建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高級用法。