すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ALB Ingressを使用してハイブリッドサーバーグループを設定し、ECSインスタンスを別のリージョンにデプロイされたALBインスタンスに関連付け、オンプレミスサーバーをALBインスタンスに関連付ける

最終更新日:Oct 30, 2024

Application Load Balancer (ALB) ingressでは、alb.ingress.kubernetes.io/actions.<Service name> アノテーションを使用して、サービスのサーバーグループを設定できます。 サービスの名前またはサーバーグループのIDを指定して、クラスターにデプロイされたポッドとクラスター外にデプロイされたECS (Elastic Compute Service) インスタンスをサービスに関連付けることができます。 ECSインスタンスを別のリージョンの仮想プライベートクラウド (VPC) にデプロイされたALBインスタンスに関連付けるには、ALB、トランジットルーター、およびcloud Enterprise Network (CEN) の組み合わせを使用します。 このメソッドを使用して、オンプレミスサーバーをALBインスタンスに関連付けることもできます。 このトピックでは、ハイブリッドサーバーグループを設定する方法、ECSインスタンスを別のリージョンにデプロイされたALBインスタンスに関連付ける方法、およびオンプレミスサーバーをALBインスタンスに関連付ける方法について説明します。

目次

使用上の注意

  • alb.ingress.kubernetes.io/actions.<Service name> アノテーションのサービス名は、rulesセクションのbackendフィールドの下のサービス名と同じである必要があります。

  • サーバーグループを設定するときは、ルールセクションのバックエンドフィールドの下にあるサービスポート名をuse-annotationに設定する必要があります。

  • alb.ingress.kubernetes.io/actions.<Service name> アノテーションを使用して、複数のサーバーグループをALBインスタンスに関連付けることができます。

  • 最大5つのサーバーグループを基本ALBインスタンスに関連付けることができます。

  • ServerGroupIDServiceName + ServicePortの両方の設定を使用してサーバーグループを関連付ける場合、ServerGroupID設定が優先されます。

シナリオ1: ACKクラスターまたはACKサーバーレスクラスター内の複数のサービスにリクエストを転送する

前提条件

  • リージョンにVPC1という名前のVPCが作成されます。 VSW1とVSW2という名前の2つのvSwitchは、VPC1の異なるゾーンに作成されます。 詳細については、「VPCの作成と管理」および「vSwitchの作成と管理」をご参照ください。

  • Container Service for Kubernetes (ACK) クラスターまたはACKサーバーレスクラスターがVPC1に作成されています。 詳細については、「ACKマネージドクラスターの作成」および「ACKサーバーレスクラスターの作成」をご参照ください。

  • ALB Ingressコントローラーは、ACKクラスターまたはACKサーバーレスクラスターにインストールされています。 詳細については、「Manage the ALB Ingress controller」をご参照ください。

  • ALBインスタンスは、ACKクラスターまたはACKサーバーレスクラスターのALBConfigから作成され、tea-svcおよびcoffee-svcという名前のサービスがクラスターにデプロイされます。 詳細については、「ALB Ingressを使用したサービスへのアクセス」をご参照ください。

シナリオ

次の図では、ServiceName + ServicePort設定を使用して、複数のサーバーグループをALB Ingressに関連付けています。 ALB Ingressがクラスター内の異なるサービスにリクエストを転送するために、複数の転送ルールが設定されています。

image

手順

  1. ALB Ingressを設定します。

    tea-ingress.yamlという名前のファイルを作成し、次の内容をファイルに追加します。 このファイルをデプロイして、クラスター内の複数のサービスにリクエストを転送します。

    # Forward requests to different Services based on the hostname and path of the requests and specify the weight of each Service. 
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: tea-ingress
      annotations:
        alb.ingress.kubernetes.io/actions.forward: |
           [{
               "type": "ForwardGroup",
               "ForwardConfig": {
                 "ServerGroups" : [{
                   "ServiceName": "tea-svc",
                   "Weight": 80,
                   "ServicePort": 80
                 },
                 {
                   "ServiceName": "coffee-svc",
                   "Weight": 20,
                   "ServicePort": 80
                 }]
               }
           }]
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: forward
                port:
                  name: use-annotation
  2. CLIを使用してサービスにアクセスします。 詳細については、「ALB Ingressを使用したサービスへのアクセス」トピックの手順4: サービスへのアクセスを参照してください。

シナリオ2: ACKクラスターまたはACKサーバーレスクラスターにデプロイされたポッドとクラスター外にデプロイされたECSインスタンスにリクエストを転送する

前提条件

シナリオ

次の図では、ALB Ingressを使用して、クラスターにデプロイされたポッドとクラスター外にデプロイされたECSインスタンスにリクエストを転送します。 これを行うには、ALBコンソールで、またはALB APIを呼び出してサーバーグループを作成し、ECSインスタンスをサーバーグループに追加する必要があります。 次に、サーバーグループIDを記録し、ALB Ingressの構成でIDを指定します。

image

手順

  1. ALB Ingressを設定します。

    tea-ingress.yamlという名前のファイルを作成し、次の内容をファイルに追加します。 このファイルをデプロイして、クラスター内のポッドとクラスター外のECSインスタンスにリクエストを転送します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: tea-ingress
      annotations:
        alb.ingress.kubernetes.io/actions.forward: |
           [{
               "type": "ForwardGroup",
               "ForwardConfig": {
                 "ServerGroups" : [{
                   "ServiceName": "tea-svc",
                   "Weight": 30,
                   "ServicePort": 80
                 },
                 {
                   "ServiceName": "coffee-svc",
                   "Weight": 20,
                   "ServicePort": 80
                 },
                 {
                   "ServerGroupID": "sgp-71aexb9y93ypo*****",
                   "Weight": 30
                 },
                 {
                   "ServerGroupID": "sgp-slygpbvm2cydo*****",
                   "Weight": 20
                 }]
               }
           }]
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: forward
                port:
                  name: use-annotation
  2. CLIを使用してサービスにアクセスします。 詳細については、「ALB Ingressを使用したサービスへのアクセス」をご参照ください。

シナリオ3: 異なるリージョンにデプロイされたVPCのクラスターおよびECSインスタンスのポッドにリクエストを転送する

前提条件

  • 2つのVPCは異なるリージョンで作成されます。 vSwitchは、各VPCの異なるゾーンに作成されます。 たとえば、VPC1は中国 (成都) リージョンで作成され、VPC2は中国 (杭州) リージョンで作成されます。

    • VSW1とVSW2はVPC1で作成されます。 VSW1はゾーンAに配備され、VSW2はゾーンBに配備される。

    • VSW3とVSW4はVPC2で作成されます。 VSW3はゾーンHに配置され、VSW4はゾーンIに配置される。

    詳細については、「VPCの作成と管理」および「vSwitchの作成と管理」をご参照ください。

  • ACKクラスターまたはACKサーバーレスクラスターがVPC1で作成され、ALBインスタンスがクラスターのALBConfigから作成されます。 詳細については、「ACK管理クラスターの作成」および「ALB Ingressを使用したサービスへのアクセス」をご参照ください。

  • 少なくとも1つのECSインスタンスがVPC2に作成され、webサービスがECSインスタンスにデプロイされています。 詳細については、「カスタム起動タブでインスタンスを作成する」および「Alibaba Cloud Linux 2または3を実行するECSインスタンスでLNMPスタックを構築する」をご参照ください。

  • CENインスタンスが作成され、帯域幅プランがCENインスタンスに関連付けられます。 詳細については、「CENインスタンス」および「帯域幅プランの使用」トピックの「帯域幅プランの購入」セクションをご参照ください。

  • トランジットルーターは、中国 (成都) リージョンに作成されます。 別のトランジットルーターが中国 (杭州) リージョンに作成されます。 詳細については、「トランジットルーター」の「トランジットルーターの作成」セクションをご参照ください。

シナリオ

次の図では、ALB Ingressを使用して、クラスター内のポッドと別のリージョンにデプロイされたVPC内のECSインスタンスにリクエストを転送します。 これを行うには、CENインスタンスを作成し、VPC1とVPC2をCENインスタンスにアタッチし、VPC2のECSインスタンスをサーバーグループに追加する必要があります。 次に、サーバーグループIDを記録し、ALB Ingressの構成でIDを指定します。

image

たとえば、ACKクラスタまたはACKサーバーレスクラスタは中国 (成都) リージョンのVPC1に作成され、ALBインスタンスはVPC1のALBConfigから作成されます。 ALBをCENと一緒に使用して、中国 (杭州) リージョンのVPC2のECSインスタンスにリクエストを転送できます。

image

手順

  1. CENインスタンスを設定し、リージョン間VPC接続を作成します。

    詳細については、「VPCのECSインスタンスを別のリージョンのALBのバックエンドサーバーとして指定する」をご参照ください。

    説明

    ALB Ingressで使用されるALBインスタンスのALBコンソールでリスナーを設定する必要はありません。 ステップ3を実行して、リスナーを設定できます。

  2. VPC2のECSインスタンスをALBインスタンスのサーバーグループに追加します。

    詳細については、「サーバーグループの作成と管理」のバックエンドサーバーの追加セクションをご参照ください。

  3. alb.ingress.kubernetes.io/actions.<Service name> アノテーションを使用して転送ルールを設定し、サーバーグループをALB Ingressに関連付け、リクエストをクラスターのポッドとVPC2のECSインスタンスに転送します。

    tea-ingress.yamlという名前のファイルを作成し、次の内容をファイルに追加します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: tea-ingress
      annotations:
        alb.ingress.kubernetes.io/actions.forward: |
           [{
               "type": "ForwardGroup",
               "ForwardConfig": {
                 "ServerGroups" :  [{
                   "ServiceName": "tea-svc",
                   "Weight": 30,
                   "ServicePort": 80
                 },
                 {
                   "ServiceName": "coffee-svc",
                   "Weight": 20,
                   "ServicePort": 80
                 },
                 {
                   "ServerGroupID": "sgp-71aexb9y93ypo*****",
                   "Weight": 30
                 },
                 {
                   "ServerGroupID": "sgp-slygpbvm2cydo*****",
                   "Weight": 20
                 }]
               }
           }]
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: forward
                port:
                  name: use-annotation

シナリオ4: クラスターおよびオンプレミスサーバー内のポッドにリクエストを転送する

前提条件

使用上の注意

オンプレミスサーバーをALBインスタンスに関連付けるための使用上の注意事項の詳細については、「同じリージョン内のALBインスタンスにオンプレミスサーバーを追加する」トピックの注意事項を参照してください。

シナリオ

次の図では、ALB Ingressを使用して、クラスターおよびオンプレミスサーバーのポッドにリクエストを転送します。 これを行うには、CENインスタンス、Express Connect回路、およびVBRを設定し、オンプレミスサーバーをサーバーグループに追加する必要があります。 次に、サーバーグループIDを記録し、ALB Ingressの構成でIDを指定します。

image

たとえば、ACKクラスターまたはACKサーバーレスクラスターが中国 (成都) リージョンのVPC1にデプロイされ、ALBインスタンスがVPCのALBConfigから作成されます。 ALB、CEN、VBR、およびExpress Connectの組み合わせを使用して、リージョン内のオンプレミスサーバーにリクエストを転送できます。 次の図は、組み合わせを示しています。

image

手順

  1. CENインスタンスを設定し、ALBインスタンスが存在するVBRとVPC1をトランジットルーターに接続し、VBRを使用してデータセンターをAlibaba Cloudに接続します。 詳細については、「同じリージョン内のALBインスタンスへのオンプレミスサーバーの追加」をご参照ください。

    説明

    ALB Ingressで使用されるALBインスタンスのALBコンソールでリスナーを設定する必要はありません。 ステップ3を実行して、リスナーを設定できます。

  2. を使用します。Use thealb.ingress.kubernetes.io/actions.<サービス名>アノテーションを使用して転送ルールを設定し、サーバーグループをALB Ingressに関連付け、クラスターおよびオンプレミスサーバーのポッドに要求を転送します。

    tea-ingress.yamlという名前のファイルを作成し、次の内容をファイルに追加します。

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: tea-ingress
      annotations:
        alb.ingress.kubernetes.io/actions.forward: |
           [{
               "type": "ForwardGroup",
               "ForwardConfig": {
                 "ServerGroups" :  [{
                   "ServiceName": "tea-svc",
                   "Weight": 30,
                   "ServicePort": 80
                 },
                 {
                   "ServiceName": "coffee-svc",
                   "Weight": 20,
                   "ServicePort": 80
                 },
                 {
                   "ServerGroupID": "sgp-ihydxb9y93ypo*****",
                   "Weight": 30
                 },
                 {
                   "ServerGroupID": "sgp-pd0ipbvm2cydo*****",
                   "Weight": 20
                 }]
               }
           }]
    spec:
      ingressClassName: alb
      rules:
       - host: demo.domain.ingress.top
         http:
          paths:
          - path: /path
            pathType: Prefix
            backend:
              service:
                name: forward
                port:
                  name: use-annotation