サービスメッシュ(ASM)ゲートウェイは、サービスの可用性を向上させるために複数のクラスターにデプロイできます。複数のクラスターにサービスをデプロイし、これらのクラスターへのイングレストラフィックを管理するために、これらのクラスターに対して統合イングレスゲートウェイを構成できます。このトピックでは、複数クラスターの統合イングレスゲートウェイを構成する方法について説明します。
前提条件
アプリケーションは、ASM インスタンスの 2 つのクラスターにデプロイされています。詳細については、「ASM インスタンスへのクラスターの追加」および「ASM インスタンスへのアプリケーションのデプロイ」をご参照ください。
サイドカープロキシインジェクションは、指定された名前空間に対して有効になっています。詳細については、「自動サイドカープロキシインジェクションの有効化」をご参照ください。
構成の説明
ASM ゲートウェイが複数のクラスターにデプロイされると、ゲートウェイポッドと対応するサービスがクラスターに作成され、クラシックロードバランサー(CLB)インスタンスが各サービスにアタッチされます。したがって、複数のクラスターにサービスを提供する ASM ゲートウェイには、複数の IP アドレスがあります。
ASM ゲートウェイでは、既存の CLB インスタンスを再利用できます。ただし、複数のサービスに同じ CLB インスタンスを再利用することはお勧めしません。
このトピックでは、次の 2 つのシナリオで複数クラスターの統合イングレスゲートウェイを構成する方法について説明します。
シナリオ 2:複数クラスターの異なるゲートウェイ関連リソース構成:たとえば、CLB インスタンスの仕様やゲートウェイレプリカの数などの構成が異なります。
シナリオ 1:複数クラスターの同一のゲートウェイ関連リソース構成
複数クラスターのゲートウェイ関連リソースが同一である場合、ASM コンソールでマルチクラスターゲートウェイを作成するか、単一クラスターゲートウェイをマルチクラスターゲートウェイに変更できます。ASM は、ゲートウェイの構成に基づいて、すべてのクラスターに同一の構成のゲートウェイを作成します。
方法 1:マルチクラスターゲートウェイを作成する
ASM コンソールで関連する構成項目を設定するか、YAML ファイルを使用して、マルチクラスターゲートウェイを作成できます。
ASM コンソール にログインします。左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
マルチクラスターゲートウェイを作成します。
方法 1:ASM コンソールで関連する構成項目を設定してマルチクラスターゲートウェイを作成する
[イングレスゲートウェイ] ページで、[作成] をクリックします。
[作成] ページで、[クラスター] ドロップダウンリストから複数のクラスターを選択し、関連パラメーターを構成して、[作成] をクリックします。
他の構成項目の説明については、「イングレスゲートウェイの作成」をご参照ください。

方法 2:YAML ファイルを使用してマルチクラスターゲートウェイを作成する
[イングレスゲートウェイ] ページで、[YAML から作成] をクリックします。
[作成] ページで、YAML ファイルの次のフィールドを構成し、[作成] をクリックします。
apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: name: ingressgateway-multi-cluster namespace: istio-system spec: affinity: {} autoCreateGatewayYaml: false clusterIds: - c87e370627c3f4e62ac77a7********* - c877e9b78610a419e833f22********* compression: {} cpu: {} dnsPolicy: ClusterFirst externalTrafficPolicy: Local gatewayType: ingress hostNetwork: false kernel: parameters: {} memory: {} ports: - name: http-0 port: 80 protocol: HTTP targetPort: 80 - name: https-1 port: 443 protocol: HTTPS targetPort: 443 readinessProbe: {} replicaCount: 2 resources: limits: cpu: '2' memory: 4G requests: cpu: 200m memory: 256Mi runAsRoot: true sds: {} serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet serviceType: LoadBalancer
方法 2:単一クラスターゲートウェイをマルチクラスターゲートウェイに変更する
シングルクラスターゲートウェイを作成した場合は、ゲートウェイ YAML ファイルの spec.clusterIds フィールドに必要なクラスターを追加して、シングルクラスターゲートウェイをマルチクラスターゲートウェイに変更できます。
ASM コンソール にログオンします。左側のナビゲーションペインで、 を選択します。
メッシュ管理 ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
イングレスゲートウェイ ページで、管理するイングレスゲートウェイを見つけ、ゲートウェイ編集領域で YAML をクリックします。
編集 ダイアログボックスで、目的のクラスターの ID を spec.clusterIds フィールドに追加し、OK をクリックします。

マルチクラスターゲートウェイが作成されているかどうかの確認
データプレーン上の 2 つのクラスターの istio-system 名前空間にあるゲートウェイのサービスリソースとデプロイメントリソースを表示できます。 2 つのクラスターに同じ構成リソースがある場合、マルチクラスターゲートウェイは正常に作成されています。
シナリオ 2:複数クラスターの異なるゲートウェイ関連リソース構成
ゲートウェイは 2 つのクラスターにデプロイされており、2 つのクラスターには異なるゲートウェイ構成が必要です。たとえば、一方のクラスターは自動的に作成された CLB インスタンスを使用する必要があり、もう一方のクラスターは既存の CLB インスタンスを再利用する必要があります。一方のクラスターには 3 つのゲートウェイレプリカが必要で、もう一方には 5 つのゲートウェイレプリカが必要です。マルチクラスターゲートウェイの構成をカスタマイズするには、対応する YAML ファイルを変更する必要があります。次の例では、マルチクラスターゲートウェイで異なるタイプの CLB インスタンスを構成する方法について説明します。一方のクラスターのゲートウェイは自動的に作成された CLB インスタンスを使用し、もう一方のクラスターのゲートウェイは既存の CLB インスタンスを再利用します。
ASM コンソール にログインします。左側のナビゲーションペインで、 を選択します。
[メッシュ管理] ページで、ASM インスタンスの名前をクリックします。左側のナビゲーションペインで、 を選択します。
[イングレスゲートウェイ] ページで、[YAML から作成] をクリックします。
[作成] ページで、YAML ファイルの次のフィールドを構成し、[作成] をクリックします。
apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: name: ingressgateway2 namespace: istio-system spec: autoCreateGatewayYaml: false clusterIds: - c0ed16dbd6c5e429faca464********** - c7d5fba8f3c974353b56522********** compression: {} cpu: {} dnsPolicy: ClusterFirst externalTrafficPolicy: Local gatewayType: ingress hostNetwork: false kernel: parameters: {} memory: {} overrides: c0ed16dbd6c5e429faca464***********: serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-spec: slb.s1.small service.beta.kubernetes.io/alicloud-loadbalancer-address-type: internet c7d5fba8f3c974353b56522**********: serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: lb-bp1lv01rlga******** ports: - name: http-0 port: 80 protocol: HTTP targetPort: 80 - name: https-2 port: 443 protocol: HTTPS targetPort: 443 readinessProbe: {} replicaCount: 1 resources: limits: cpu: '2' memory: 4G requests: cpu: 200m memory: 256Mi rollingMaxSurge: 25% rollingMaxUnavailable: 25% runAsRoot: true sds: {} serviceType: LoadBalanceroverrides フィールドは、Map タイプの構造です。キーはクラスターの ID です。その値は、ゲートウェイの spec 構成フィールドと同じです。 CLB インスタンス関連のパラメーター、ゲートウェイレプリカの数、ゲートウェイリソースの仕様などのパラメーターを構成できます。 overrides フィールドでは、各クラスターのパラメーターを個別に構成できます。この構成は、最も外側のゲートウェイ構成よりも優先されます。フィールドの説明の詳細については、「ASM ゲートウェイの CRD フィールド」をご参照ください。
マルチクラスターゲートウェイが作成されているかどうかの確認。
2 つのクラスターの istio-system 名前空間にあるゲートウェイのサービスリソースを表示できます。一方のクラスターのサービスの外部 IP アドレスが自動的に作成された CLB インスタンスの IP アドレスであり、もう一方のクラスターのサービスの外部 IP アドレスが指定された CLB インスタンスの IP アドレスである場合、マルチクラスターゲートウェイは正常に作成されています。