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インスタンスに関連付けることができます。
ServerGroupID
とServiceName + 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がクラスター内の異なるサービスにリクエストを転送するために、複数の転送ルールが設定されています。
手順
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
CLIを使用してサービスにアクセスします。 詳細については、「ALB Ingressを使用したサービスへのアクセス」トピックの手順4: サービスへのアクセスを参照してください。
シナリオ2: ACKクラスターまたはACKサーバーレスクラスターにデプロイされたポッドとクラスター外にデプロイされたECSインスタンスにリクエストを転送する
前提条件
リージョンにVPC1という名前のVPCが作成されます。 詳細については、「VPC の作成と管理」をご参照ください。
ACKクラスターまたはACKサーバーレスクラスターがVPC1で作成されています。 詳細については、「ACKマネージドクラスターの作成」および「ACKサーバーレスクラスターの作成」をご参照ください。
少なくとも1つのECSインスタンスがVPC1に作成され、webサービスがECSインスタンスにデプロイされています。 詳細については、「カスタム起動タブでインスタンスを作成する」および「Alibaba Cloud Linux 2または3を実行するECSインスタンスでLNMPスタックを構築する」をご参照ください。
サーバーグループが作成されます。 詳細については、「サーバーグループの作成と管理」をご参照ください。
作成したサーバーグループにECSインスタンスが追加されます。 詳細については、「サーバーグループの作成と管理」をご参照ください。
alb.ingress.kubernetes.io/actions.<Service name>
アノテーションは、転送ルールを設定し、サーバーグループをALB Ingressに関連付けるために使用されます。
シナリオ
次の図では、ALB Ingressを使用して、クラスターにデプロイされたポッドとクラスター外にデプロイされたECSインスタンスにリクエストを転送します。 これを行うには、ALBコンソールで、またはALB APIを呼び出してサーバーグループを作成し、ECSインスタンスをサーバーグループに追加する必要があります。 次に、サーバーグループIDを記録し、ALB Ingressの構成でIDを指定します。
手順
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
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を指定します。
たとえば、ACKクラスタまたはACKサーバーレスクラスタは中国 (成都) リージョンのVPC1に作成され、ALBインスタンスはVPC1のALBConfigから作成されます。 ALBをCENと一緒に使用して、中国 (杭州) リージョンのVPC2のECSインスタンスにリクエストを転送できます。
手順
CENインスタンスを設定し、リージョン間VPC接続を作成します。
詳細については、「VPCのECSインスタンスを別のリージョンのALBのバックエンドサーバーとして指定する」をご参照ください。
VPC2のECSインスタンスをALBインスタンスのサーバーグループに追加します。
詳細については、「サーバーグループの作成と管理」のバックエンドサーバーの追加セクションをご参照ください。
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: クラスターおよびオンプレミスサーバー内のポッドにリクエストを転送する
前提条件
CENインスタンスが作成され、CENインスタンス用にトランジットルーターが作成されます。 詳細については、「CENインスタンス」および「トランジットルーター」トピックの「トランジットルーターの作成」セクションをご参照ください。
Express Connect回路と仮想ボーダールーター (VBR) が作成されます。 詳細については、「Express Connect回線を介した専用接続の作成と管理」および「VBRの作成と管理」をご参照ください。
使用上の注意
オンプレミスサーバーをALBインスタンスに関連付けるための使用上の注意事項の詳細については、「同じリージョン内のALBインスタンスにオンプレミスサーバーを追加する」トピックの注意事項を参照してください。
シナリオ
次の図では、ALB Ingressを使用して、クラスターおよびオンプレミスサーバーのポッドにリクエストを転送します。 これを行うには、CENインスタンス、Express Connect回路、およびVBRを設定し、オンプレミスサーバーをサーバーグループに追加する必要があります。 次に、サーバーグループIDを記録し、ALB Ingressの構成でIDを指定します。
たとえば、ACKクラスターまたはACKサーバーレスクラスターが中国 (成都) リージョンのVPC1にデプロイされ、ALBインスタンスがVPCのALBConfigから作成されます。 ALB、CEN、VBR、およびExpress Connectの組み合わせを使用して、リージョン内のオンプレミスサーバーにリクエストを転送できます。 次の図は、組み合わせを示しています。
手順
CENインスタンスを設定し、ALBインスタンスが存在するVBRとVPC1をトランジットルーターに接続し、VBRを使用してデータセンターをAlibaba Cloudに接続します。 詳細については、「同じリージョン内のALBインスタンスへのオンプレミスサーバーの追加」をご参照ください。
を使用します。Use the
alb.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