出口ゲートウェイは、内部ネットワークと外部ネットワークを接続するエッジゲートウェイです。 出口ゲートウェイは、ネットワークトラフィックを制御し、リモートアクセスと通信を可能にするために使用されます。 Microservices Engine(MSE)クラウドネイティブゲートウェイは、出口ゲートウェイとして機能し、Container Service for Kubernetes(ACK)クラスターに安定した、効率的で安全な出口サービスを提供して、出口トラフィック管理とセキュリティ制御のビジネス要件を満たします。
MSEクラウドネイティブゲートウェイの利点
MSEクラウドネイティブゲートウェイは、マネージドゲートウェイサービスを提供し、スタンドアロンモードでデプロイされます。 MSEクラウドネイティブゲートウェイはACKクラスターの影響を受けず、高い安定性を提供します。
MSEクラウドネイティブゲートウェイは、IPアドレスのブラックリストとホワイトリスト、スロットリング、負荷分散、Transport Layer Security(TLS)オフロード、トラフィックミラーリング、ヘッダー制御など、さまざまなレイヤー 7 HTTPプロトコルガバナンス機能を提供します。
ACKクラスター内のすべてのPodに対してインターネットアクセスを有効にする必要はありません。 MSEクラウドネイティブゲートウェイに対してのみインターネットアクセスを有効にして、より高いアクセス制御機能を提供する必要があります。 MSEクラウドネイティブゲートウェイへのインターネットアクセスを有効にする場合は、ゲートウェイが接続されているvSwitchに対してSource Network Address Translation(SNAT)を有効にする必要があります。
デプロイメントアーキテクチャ
手順
ステップ 1:MSE Ingress Controllerをインストールする
既存のACKクラスターまたは ACK Serverlessクラスター にMSE Ingress Controllerをインストールします。 クラスターの作成時にMSE Ingress Controllerをインストールすることもできます。 詳細については、「MSE Ingress Controllerコンポーネントの管理」の「MSE Ingress Controllerコンポーネントのインストール」セクションをご参照ください。
ステップ 2:MseIngressConfigリソースを作成してMSEクラウドネイティブゲートウェイを作成するか、作成したMseIngressConfigリソースを既存のMSEクラウドネイティブゲートウェイに関連付ける
MseIngressConfigは、MSE Ingress Controllerによって提供されるCustomResourceDefinition(CRD)です。 MseIngressConfigリソースを作成し、作成したMseIngressConfigリソースを使用してMSEクラウドネイティブゲートウェイを作成できます。 また、作成したMseIngressConfigリソースを既存のMSEクラウドネイティブゲートウェイに関連付けることもできます。 詳細については、「MseIngressConfigの構成」の「クラウドネイティブゲートウェイの作成」セクションをご参照ください。
ゲートウェイを作成するときに、内部向けのClassic Load Balancer(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" # MSEクラウドネイティブゲートウェイに関連付けられているvSwitchのID。 ゲートウェイを作成するときにvSwitch IDを設定する必要があります。
privateSLBSpec: slb.s2.small
ACKクラスターまたは ACK Serverlessクラスター を作成するときに [VPCのSNATを設定する] を選択しない場合、作成されたクラスターはインターネットにアクセスできません。 インターネットアクセスをサポートするには、MSEクラウドネイティブゲートウェイのSNATを設定する必要があります。
インターネットアクセスをサポートするには、ネットワークアドレス変換(NAT)ゲートウェイのSNATエントリを使用する必要があります。 NATゲートウェイの作成方法の詳細については、「インターネットNATゲートウェイのSNAT機能を使用してインターネットにアクセスする」をご参照ください。 ステップ 3:SNATエントリを作成する を実行してSNATエントリを作成します。 この操作では、[vswitchを指定] を選択し、MseIngressConfigリソースのvSwitch IDをエントリに追加します。
ステップ 3:ExternalNameタイプのKubernetesサービスを作成し、サービスを外部サービスに関連付ける
ExternalNameタイプのKubernetesサービスを作成し、サービス名を外部ドメインネームシステム(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 # MSEアクセス パス。
pathType: Prefix
上記の設定をmse-ingress.yamlという名前のファイルとして保存した後、kubectl apply -f mse-ingress.yaml
コマンドを実行して設定を適用します。 次に、kubectl get ingress mse-ingress -o yaml
コマンドを実行してIngressリソースに関する情報を表示し、MSEクラウドネイティブゲートウェイのCLB IPアドレスを取得します。 設定例:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/backend-protocol: HTTPS # ゲートウェイからバックエンドのAlibaba Cloudサービスへのサービスルーティングに使用される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 IPアドレス。
ステップ 5:Podを使用してMSEへのアクセスをテストする
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クラウドネイティブゲートウェイの他の高度な機能を使用する方法の詳細については、「MSE Ingressの高度な使用方法」をご参照ください。