エグレスゲートウェイは、内部ネットワークを外部ネットワークに接続するエッジゲートウェイです。ネットワークトラフィックを制御し、リモートアクセスと通信を可能にします。MSE クラウドネイティブゲートウェイをエグレスゲートウェイとして使用することで、お使いの Container Service for Kubernetes (ACK) クラスターに、安定性、効率性、安全性に優れたネットワークエグレスサービスを提供できます。これにより、エグレストラフィックの管理とセキュリティコントロールの実装が可能になります。
MSE クラウドネイティブゲートウェイのメリット
-
MSE クラウドネイティブゲートウェイは、独立してデプロイおよび管理されるゲートウェイを提供します。ACK クラスターから分離されているため、より高い安定性が保証されます。
-
MSE クラウドネイティブゲートウェイは、IP 許可リストと拒否リスト、トラフィックスロットリング、負荷分散、TLS オフロード、トラフィックミラーリング、ヘッダー制御など、レイヤー 7 の HTTP ガバナンス機能を提供します。
-
ACK クラスター内のすべての Pod でパブリックネットワークアクセスを有効にする必要はありません。代わりに、MSE クラウドネイティブゲートウェイの vSwitch に SNAT を設定することで、ゲートウェイのみにパブリックアクセスを有効にします。これにより、攻撃対象領域が減少し、セキュリティが強化されます。
デプロイアーキテクチャ

操作手順
手順1:MSE Ingress Controller のインストール
既存の Container Service for Kubernetes (ACK) クラスターまたはACK Serverless クラスターに MSE Ingress Controller をインストールするか、新しいクラスターを作成する際にインストールします。詳細については、「MSE Ingress Controller コンポーネントの管理」をご参照ください。
手順2:MseIngressConfig リソースの作成
MseIngressConfig は、MSE Ingress Controller によって提供される Custom Resource Definition (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" # ゲートウェイがバインドされる vSwitch の ID。
privateSLBSpec: slb.s2.small
ACK クラスターまたはACK Serverless クラスターの作成時に [VPC の SNAT を設定] を選択しなかった場合、クラスターはインターネットにアクセスできません。パブリックアクセスを有効にするには、ゲートウェイに個別に SNAT を設定する必要があります。
パブリックネットワークアクセスには、NAT ゲートウェイの SNAT エントリが必要です。NAT ゲートウェイの作成については、「パブリック NAT ゲートウェイの SNAT 機能を使用したインターネットアクセス」をご参照ください。リンク先のドキュメントで、「手順3:SNAT エントリの作成」の指示に従ってください。SNAT エントリでは、[vSwitch] を選択し、MseIngressConfig の vSwitch ID を指定します。
手順3:ExternalName サービスの作成
Kubernetes の ExternalName サービスは、内部サービスを DNS 名にマッピングします。たとえば、Kubernetes クラスター内から Alibaba Cloud 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
手順4: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 # バックエンドサービスへのアクセスパス。
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 # Alibaba Cloud サービスは HTTPS を強制するため必須です。ゲートウェイは 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 アドレスに置き換えます。
手順5:外部サービスへのアクセスの確認
curl http://www.aliyun.com/product/aliware/mse --resolve www.aliyun.com:80:xx.xx.xx.xx
xx.xx.xx.xx を手順4で取得したゲートウェイの CLB の IP アドレスに置き換えてください。
関連ドキュメント
Ingress で他の高度なゲートウェイ機能を使用する方法については、「MSE Ingress の高度な使用方法」をご参照ください。