ALB イングレスは、alb.ingress.kubernetes.io/actions.<service-name> アノテーションを使用してバックエンドサーバーグループを構成することをサポートしています。バックエンドサーバーグループは、サービス名またはサーバーグループ ID でアタッチでき、これにより Kubernetes クラスター内の Pod とクラスター外の ECS インスタンスをハイブリッドにアタッチできます。ALB、Cloud Enterprise Network (CEN)、トランジットルーターなどのプロダクトを組み合わせることで、ALB が他のリージョンの VPC 内のサーバーにリクエストを転送するクロスリージョンアタッチメントや、オンプレミス IDC サーバーにリクエストを転送するオンプレミス IDC アタッチメントを実現できます。本トピックでは、ALB イングレスを使用してハイブリッド、クロスリージョン、およびオンプレミス IDC アタッチメントを実装する方法について説明します。
目次
注意事項
alb.ingress.kubernetes.io/actions.<service-name>アノテーション内のサービス名は、ruleフィールド内のbackendのサービス名と一致している必要があります。バックエンドサーバーグループを構成する際、
ruleフィールド内のbackend下のサービスポート名は、use-annotationである必要があります。alb.ingress.kubernetes.io/actions.<service name>アノテーションを使用して、複数のサーバーグループを ALB インスタンスにアタッチできます。ベーシック ALB インスタンスは、最大 5 つのサーバーグループをサポートします。
ServerGroupIDとServiceName+ServicePortの両方を使用してサーバーグループをアタッチする場合、システムはバックエンドサーバーグループのマッチングにおいてServerGroupIDを優先します。
シナリオ 1:複数のサービスへのリクエスト転送
前提条件
あるリージョンに VPC1 という名前の VPC が作成されています。VPC1 内の異なるゾーンに、VSW1 および VSW2 という 2 つの vSwitch が作成されています。詳細については、「VPC の作成と管理」および「vSwitch の作成と管理」をご参照ください。
VPC1 に ACK または ACK Serverless クラスターが作成されています。詳細については、「ACK マネージドクラスターの作成」および「ACK Serverless クラスターの作成」をご参照ください。
ACK または ACK Serverless クラスターに ALB イングレスコントローラーがインストールされています。詳細については、「ALB イングレスコントローラーコンポーネントの管理」をご参照ください。
ALBConfig を使用して ACK または ACK Serverless クラスター内に ALB インスタンスが作成済みであり、
tea-svcおよびcoffee-svcバックエンドサービスがデプロイされています。詳細については、「ALB イングレスの作成と使用によるサービスの公開」をご参照ください。
シナリオ
次の図に示すように、ALB イングレスのマルチサーバーグループ転送機能を使用して、ServiceName+ServicePort を構成することで、複数のバックエンドサーバーグループを作成またはアタッチし、クラスター内の複数のサービスにリクエストを転送できます。
操作手順
ALB イングレスを構成します。
次の内容を
tea-ingress.yamlファイルにデプロイします。これにより、クラスター内の複数のサービスへのリクエスト転送方法が定義されます。# この Ingress は、ホスト名とパスに基づいてリクエストを異なるバックエンドサーバーグループに転送し、重みに従ってトラフィックを分散します。 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:クラスターポッドと外部 ECS への転送
前提条件
あるリージョンに VPC1 という名前の VPC が作成されています。詳細については、「VPC の作成と管理」をご参照ください。
VPC1 に ACK または ACK Serverless クラスターが作成されています。詳細については、「ACK マネージドクラスターの作成」および「ACK Serverless クラスターの作成」をご参照ください。
VPC1(ALB インスタンスがデプロイされているのと同じ VPC)内に、少なくとも 1 つの ECS インスタンスが作成されており、その ECS インスタンス上に Web サービスがデプロイされています。詳細については、「カスタムインスタンスの作成」および「LNMP スタックのデプロイ」をご参照ください。
サーバーグループが作成されています。詳細については、「サーバーグループの作成と管理」をご参照ください。
外部 ECS インスタンスがサーバーグループに追加されています。詳細については、「サーバーグループの作成と管理」をご参照ください。
alb.ingress.kubernetes.io/actions.<service-name>アノテーションを使用して転送操作を構成し、作成済みのサーバーグループをアタッチします。
シナリオ
このシナリオでは、同じ VPC 内のクラスター内のポッドと外部 ECS インスタンスの両方にリクエストを転送する方法を示します。ALB コンソールまたは API を使用してサーバーグループを作成し、外部 ECS インスタンスをそれに追加した後、Ingress アノテーション内でその ServerGroupID を参照します。これにより、次の図に示すようなハイブリッドバックエンドが作成されます。
操作手順
ALB イングレスを構成します。
次の内容を
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コマンドラインからサービスにアクセスする。詳細については、「サービスへのアクセス」をご参照ください。
シナリオ 3:クラスターポッドとクロスリージョン ECS への転送
前提条件
異なるリージョンに 2 つの VPC が作成され、各 VPC 内の異なるゾーンに vSwitch が作成されています。たとえば、中国 (成都) リージョンに VPC1 を、中国 (杭州) リージョンに VPC2 を作成します。
VPC1 では、vSwitch VSW1 がゾーン A に、vSwitch VSW2 がゾーン B にあります。
VPC2 では、vSwitch VSW3 がゾーン H に、vSwitch VSW4 がゾーン I にあります。
詳細については、「VPC の作成と管理」および「vSwitch の作成と管理」をご参照ください。
VPC1 に ACK または ACK Serverless クラスターが作成され、そのクラスター内で AlbConfig を使用して ALB インスタンスが作成されています。詳細については、「ACK マネージドクラスターの作成」および「ALB イングレスの作成と使用によるサービスの公開」をご参照ください。
VPC2 に少なくとも 1 つの ECS インスタンスが作成され、その ECS インスタンス上に Web サービスがデプロイされています。詳細については、「カスタムインスタンスの作成」および「LNMP スタックのデプロイ」をご参照ください。
CEN インスタンスが作成され、その帯域幅プランが購入されています。詳細については、「CEN インスタンスの作成」および「帯域幅プランの購入」をご参照ください。
中国 (成都) リージョンおよび中国 (杭州) リージョンの両方にトランジットルーターインスタンスが作成されています。詳細については、「トランジットルーターインスタンスの作成」をご参照ください。
シナリオ
このシナリオでは、CEN を使用して VPC 間にクロスリージョン接続を確立する方法を示します。これにより、別のリージョンの ECS インスタンスをサーバーグループに追加できます。Ingress 内でその ServerGroupID を参照することで、クラスター内のポッドとクロスリージョンの ECS インスタンスの両方にトラフィックをルーティングできます。次の図に示すとおりです。
たとえば、ACK または ACK Serverless クラスターおよび ALB インスタンスが中国 (成都) リージョンの VPC1 にデプロイされている場合、ALB と CEN を組み合わせて、中国 (杭州) リージョンの VPC2 内の ECS インスタンスにリクエストを転送できます。
操作手順
CEN を構成し、クロスリージョン VPC 接続を作成します。
詳細については、「ALB インスタンスへのクロスリージョンサーバーのアタッチ」をご参照ください。
クロスリージョンの ECS インスタンスを ALB サーバーグループに追加します。
詳細については、「バックエンドサーバーの追加または削除」をご参照ください。
alb.ingress.kubernetes.io/actions.<service-name>アノテーションを使用して転送操作を構成し、既存のサーバーグループを関連付けます。サービスがリクエストされると、この操作によりクラスター内のポッドとクラスター外のクロスリージョン VPC 内の 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 インスタンスの作成」および「トランジットルーターインスタンスの作成」をご参照ください。
Express Connect および VBR が作成されています。詳細については、「Express Connect 回線の申請」および「VBR の作成と管理」をご参照ください。
注意事項
ALB インスタンスにオンプレミスサーバーをアタッチする際の制限事項については、「制限事項」をご参照ください。
シナリオ
このシナリオでは、CEN、Express Connect、および VBR を使用してオンプレミスデータセンターを Alibaba Cloud に接続する方法を示します。これにより、オンプレミスサーバーをサーバーグループに追加できます。Ingress 内で ServerGroupID を参照することで、クラスター内のポッドとオンプレミスサーバーの両方にトラフィックをルーティングできます。次の図に示すとおりです。
たとえば、ACK または ACK Serverless クラスターおよび ALB インスタンスが中国 (成都) リージョンの VPC1 にデプロイされている場合、ALB、CEN、VBR、および Express Connect を組み合わせて、同じリージョン内のオンプレミスサーバーにリクエストを転送できます。
操作手順
CEN を構成して、ALB インスタンスが配置されている VPC および VBR をトランジットルーターに接続します。これにより、VBR を通じてオンプレミスデータセンターが Alibaba Cloud に接続されます。詳細については、「同一リージョン内のオンプレミスサーバーを ALB インスタンスにアタッチ」をご参照ください。
alb.ingress.kubernetes.io/actions.<service-name>アノテーションを使用して転送操作を構成し、指定された既存のサーバーグループをアタッチします。これにより、クラスター内のポッドとクラスター外のオンプレミスインターネットデータセンター (IDC) サーバーにリクエストが転送されます。次の内容を
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