Application Load Balancer (ALB) Ingressを設定する場合、クラスターに複数のリソースを作成して、ALB Ingressがトラフィックをバックエンドポッドにルーティングできるようにする必要があります。 このトピックでは、ALB Ingressを使用して外部サービスを提供するアプリケーションをデプロイする方法について説明します。
あなたが始める前に
ALB Ingressに関連する用語については、まずALB Ingressの概要を読むことをお勧めします。
制限事項
Flannelネットワークプラグインを使用する場合、ALB IngressゲートウェイのバックエンドサービスはNodePortまたはLoadBalancerタイプである必要があります。
AlbConfigオブジェクト、名前空間、Ingress、およびServicesの名前は、aliyunで始めることはできません。
以前のバージョンのNGINX Ingressコントローラーは、Ingressリソースの
spec:ingressClassName
フィールドを認識できません。 NGINX IngressとALB Ingressの両方がACKクラスターに設定されている場合、ALB Ingressは以前のバージョンのNGINX Ingressコントローラーによって調整される可能性があります。 この問題を回避するには、できるだけ早くNGINX Ingressコントローラーを更新するか、アノテーションを使用してALB IngressのIngressClassesを指定します。 詳細については、「NGINX Ingressコントローラーの更新」または「高度なALB Ingress設定」をご参照ください。
シナリオ
次の例では、NGINXサービスは4つのポッドにデプロイされています。 このトピックでは、例を使用して、同じドメイン名で異なるURLパスを宛先とするリクエストを転送するようにALB Ingressを設定する方法について説明します。
フロントエンド要求 | 宛先サービス |
| サービス |
|
|
前提条件
ACKマネージドクラスターまたはACK専用クラスターが作成され、クラスターはKubernetes 1.18以降を実行します。 詳細については、「ACK管理クラスターの作成」および「ACK専用クラスターの作成」をご参照ください。
必要に応じて、 kubectlは、次のいずれかの方法を使用してクラスターに接続するために使用されます。
ステップ1: ALB Ingressコントローラのインストール
ALB Ingressを使用するには、まずALB Ingressコントローラーをインストールします。
クラスター作成時にALB Ingressコントローラーをインストールする
ACK管理クラスターまたはACK専用クラスターを作成する場合、Ingress セクションでALB Ingressを選択します。
[ゲートウェイソース] を [新規] 、[既存] 、または [なし] に設定できます。 次の表に、3つのオプションを示します。
[新規] または [既存] を選択した場合、ALB Ingressコントローラーのインストール後にAlbConfigとIngressClassが自動的に作成されます。 HTTPを使用し、ポート80でリッスンするリスナー
は、AlbConfigで設定されています。
比較項目 | 新しい | 既存 | なし |
利用シナリオ | クラスターでALB Ingressを使用するのはこれが初めてです。 クラスターにはAlbConfigが存在しません。 | 既存のALBインスタンスを使用します。 | ALB Ingressコントローラーのインストール後にAlbConfigを設定します。 |
制御ポリシー機能の動作 | AlbConfigが作成されると、AlbConfigに基づいてALBインスタンスが自動的に作成されます。 | AlbConfigは自動的に作成されます。 | ALB Ingressコントローラのみがインストールされています。 AlbConfigは作成されません。 |
次のステップ | [ネットワークタイプ] をALBインスタンスが使用するネットワークのタイプに設定し、[vSwitch] をALBインスタンスのvSwitchに設定します。 重要 高可用性を確保するために、異なるゾーンに存在するvSwitchを少なくとも2つ選択することを推奨します。 | 使用するALBインスタンスにALB Cloud-native Gatewayを設定します。 AlbConfigを使用してALBインスタンスを指定するには、「既存のALBインスタンスの再利用」をご参照ください。 重要 基本ALBインスタンスはサポートされていません。 | 既存のAlbConfigを選択するか、後でAlbConfigを作成します。 |
既存のクラスターにALB Ingressコントローラーをインストールする
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[アドオン] ページで、[ネットワーク] タブをクリックします。 ネットワーク セクションで、ALB Ingress Controllerカードを見つけ、右下隅の インストール をクリックします。
[ALB Ingress Controllerのインストール] ダイアログボックスで、[ゲートウェイソース] を [新規] 、[既存] 、または [なし] に設定します。 次の表に、3つのオプションを示します。
重要[新規] または [既存] を選択した場合、ALB Ingressコントローラーのインストール後にAlbConfigとIngressClassが自動的に作成されます。 HTTPを使用し、ポート80でリッスンする
リスナー
は、AlbConfigで設定されています。比較項目
新しい
既存
なし
利用シナリオ
クラスターでALB Ingressを使用するのはこれが初めてです。 クラスターにはAlbConfigが存在しません。
既存のALBインスタンスを使用します。
ALB Ingressコントローラーのインストール後にAlbConfigを設定します。
制御ポリシー機能の動作
AlbConfigが作成されると、AlbConfigに基づいてALBインスタンスが自動的に作成されます。
AlbConfigは自動的に作成されます。
id
フィールドは、指定されたALBインスタンスのIDに設定されます。ALB Ingressコントローラのみがインストールされています。 AlbConfigは作成されません。
次のステップ
[ネットワークタイプ] をALBインスタンスが使用するネットワークのタイプに設定し、[vSwitch] をALBインスタンスのvSwitchに設定します。
重要高可用性を確保するために、異なるゾーンに存在するvSwitchを少なくとも2つ選択することを推奨します。
使用するALBインスタンスにALB Cloud-native Gatewayを設定します。 AlbConfigを使用してALBインスタンスを指定するには、「既存のALBインスタンスの再利用」をご参照ください。
重要基本ALBインスタンスはサポートされていません。
既存のAlbConfigを選択するか、後でAlbConfigを作成します。
[OK] をクリックします。
ALB Ingressを使用してACK専用クラスターにデプロイされたサービスにアクセスするには、まずクラスターにALB Ingressコントローラーへのアクセスを許可する必要があります。 詳細については、「ACK専用クラスターにALB Ingressコントローラーへのアクセスを許可する」をご参照ください。
手順2: バックエンドサービスのデプロイ
ACKコンソール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[デプロイメント] ページの右上隅で、[YAMLから作成] をクリックします。
サンプルテンプレート: ドロップダウンリストから [カスタム] を選択します。
テンプレート: 次のコードをコードエディターにコピーします。 YAML構成ファイルは、
coffee
とtea
という名前の2つのデプロイメントと、coffee-svc
とtea-svc
という名前の2つのサービスをデプロイするために使用されます。
設定が完了したら、[作成] をクリックします。 [作成済み] メッセージが表示されます。
次の手順を実行して、デプロイメントとサービスが作成されていることを確認します。
左側のウィンドウで、[ワークロード]> [デプロイメント] を選択します。 コーヒーと紅茶という名前の展開が表示されます。
左側のウィンドウで、[ネットワーク]> [サービス] を選択します。 coffee-svcとtea-svcという名前のサービスが表示されます。
kubectl
cafe-service.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 このファイルは、
coffee
とtea
という名前の2つの展開と、coffee-svc
とtea-svc
という名前の2つのサービスを展開するために使用されます。次のコマンドを実行して、デプロイメントとサービスをデプロイします。
kubectl apply -f cafe-service.yaml
期待される出力:
deployment "coffee" created service "coffee-svc" created deployment "tea" created service "tea-svc" created
デプロイメントとサービスのステータスを表示します。
次のコマンドを実行して、デプロイメントのステータスを表示します。
kubectl get deployment
期待される出力:
NAME READY UP-TO-DATE AVAILABLE AGE coffee 1/2 2 1 2m26s tea 1/1 1 1 2m26s
次のコマンドを実行して、サービスのステータスを表示します。
kubectl get svc
期待される出力:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE coffee-svc NodePort 172.16.XX.XX <none> 80:32056/TCP 9m38s tea-svc NodePort 172.16.XX.XX <none> 80:31696/TCP 9m38s
ステップ3: AlbConfigの作成
手順1: ALB Ingressコントローラーのインストールで、Gateway Sourceを新規または既存に設定した場合、alb Ingressコントローラーによって、albという名前のAlbConfigとALBという名前のIngressClassが自動的に作成されます。 このステップはスキップできます。
ACKコンソール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[カスタムリソース] ページの右上隅で、[YAMLから作成] をクリックします。
サンプルテンプレート: ドロップダウンリストから [カスタム] を選択します。
テンプレート: 次のコードをコードエディターにコピーします。
次の表に、指定できるパラメーターを示します。
パラメーター
必須
説明
metadata.name
必須
AlbConfigの名前。
説明AlbConfigの名前は、クラスター内で一意である必要があります。 AlbConfigを作成するときは、名前の競合を防ぐためにAlbConfig名が一意であることを確認してください。
spec.config.name
選択可能
ALBインスタンスの名前。
spec.config.addressType
選択可能
ALBインスタンスのネットワークタイプ。 有効な値:
インターネット: インターネットに面しています。 デフォルト値です。 ALBインスタンスはインターネットにサービスを提供し、インターネット経由でアクセスできます。
説明ALBインスタンスがインターネット接続サービスを提供できるようにするには、ALBインスタンスをelastic IPアドレス (EIP) に関連付ける必要があります。 インターネット接続のALBインスタンスを使用している場合、関連するEIPのインスタンス料金と帯域幅またはデータ転送料金が課金されます。 詳細については、「従量課金」をご参照ください。
イントラネット: 内部向き。 ALBインスタンスは仮想プライベートクラウド (VPC) 内でサービスを提供し、インターネット経由でアクセスすることはできません。
spec.config.zoneMappings
必須
ALBインスタンスに関連付けられているvSwitchのID。 vSwitchの作成方法の詳細については、「vSwitchの作成と管理」をご参照ください。
説明指定されたvSwitchは、ALBインスタンスでサポートされているゾーンにデプロイし、クラスターと同じVPCにデプロイする必要があります。 ALBでサポートされているリージョンとゾーンの詳細については、「ALBが利用可能なリージョンとゾーン」をご参照ください。
ALBはマルチゾーン展開をサポートしています。 現在のリージョンで2つ以上のゾーンがサポートされている場合は、高可用性を確保するために2つ以上のゾーンのvSwitchを選択します。
spec.listeners
選択可能
ALBインスタンスのリスナーポートとプロトコル。 この例では、ポート80を使用するHTTPリスナーが設定されています。
リスナーは、ALBがトラフィックを受信する方法を定義します。 リスナーの構成を保持することを推奨します。 それ以外の場合は、ALB Ingressを使用する前にリスナーを作成する必要があります。
設定が完了したら、[作成] をクリックします。 [作成済み] メッセージが表示されます。
次の手順を実行して、ALBインスタンスが作成されたことを確認します。
ALB コンソールにログインします。
上部のナビゲーションバーで、ALBインスタンスがデプロイされているリージョンを選択します。
[インスタンス] ページで、ALB-testという名前のalbインスタンスがインスタンスリストに表示されていることを確認します。
kubectl
alb-test.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 ファイルは、AlbConfigを作成するために使用されます。
次の表に、指定できるパラメーターを示します。
パラメーター
必須
説明
metadata.name
必須
AlbConfigの名前。
説明AlbConfigの名前は、クラスター内で一意である必要があります。 AlbConfigを作成するときは、名前の競合を防ぐためにAlbConfig名が一意であることを確認してください。
spec.config.name
選択可能
ALBインスタンスの名前。
spec.config.addressType
選択可能
ALBインスタンスのネットワークタイプ。 有効な値:
インターネット: インターネットに面しています。 デフォルト値です。 ALBインスタンスはインターネットにサービスを提供し、インターネット経由でアクセスできます。
説明ALBインスタンスがインターネット接続サービスを提供できるようにするには、ALBインスタンスをEIPに関連付ける必要があります。 インターネット接続のALBインスタンスを使用している場合、EIPのインスタンス料金と帯域幅またはデータ転送料金が課金されます。 詳細については、「従量課金」をご参照ください。
イントラネット: 内部向き。 ALBインスタンスはVPC内でサービスを提供し、インターネット経由でアクセスすることはできません。
spec.config.zoneMappings
必須
ALBインスタンスに関連付けられているvSwitchのID。 vSwitchの作成方法の詳細については、「vSwitchの作成と管理」をご参照ください。
説明指定されたvSwitchは、ALBインスタンスでサポートされているゾーンにデプロイし、クラスターと同じVPCにデプロイする必要があります。 ALBでサポートされているリージョンとゾーンの詳細については、「ALBが利用可能なリージョンとゾーン」をご参照ください。
ALBはマルチゾーン展開をサポートしています。 現在のリージョンで2つ以上のゾーンがサポートされている場合は、高可用性を確保するために2つ以上のゾーンのvSwitchを選択します。
spec.listeners
選択可能
ALBインスタンスのリスナーポートとプロトコル。 この例では、ポート80を使用するHTTPリスナーが設定されています。
リスナーは、ALBがトラフィックを受信する方法を定義します。 リスナーの構成を保持することを推奨します。 それ以外の場合は、ALB Ingressを使用する前にリスナーを作成する必要があります。
次のコマンドを実行して、AlbConfigを作成します。
kubectl apply -f alb-test.yaml
期待される出力:
albconfig.alibabacloud.com/alb-demo created
ステップ4: IngressClassの作成
AlbConfigごとにIngressClassを作成することを推奨します。
手順1: ALB Ingressコントローラーのインストールで、Gateway Sourceを新規または既存に設定した場合、alb Ingressコントローラーによって、albという名前のAlbConfigとALBという名前のIngressClassが自動的に作成されます。 このステップはスキップできます。
kubectl
alb.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。
次の表に、指定できるパラメーターを示します。
パラメーター
必須
説明
metadata.name
必須
IngressClassの名前。
説明IngressClassの名前は、クラスター内で一意である必要があります。 IngressClassを作成するときは、名前の競合を防ぐためにIngressClass名が一意であることを確認してください。
spec.parameters.name
必須
関連付けられたAlbConfigの名前。
次のコマンドを実行してIngressClassを作成します。
kubectl apply -f alb.yaml
期待される出力:
ingressclass.networking.k8s.io/alb created
ACKコンソール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[カスタムリソース] ページの右上隅で、[YAMLから作成] をクリックします。
サンプルテンプレート: ドロップダウンリストから [カスタム] を選択します。
テンプレート: 次のコードをコードエディターにコピーします。
次の表に、指定できるパラメーターを示します。
パラメーター
必須
説明
metadata.name
必須
IngressClassの名前。
説明IngressClassの名前は、クラスター内で一意である必要があります。 IngressClassを作成するときは、名前の競合を防ぐためにIngressClass名が一意であることを確認してください。
spec.parameters.name
必須
関連付けられたAlbConfigの名前。
設定が完了したら、[作成] をクリックします。 [作成済み] メッセージが表示されます。
次の手順を実行して、IngressClassが作成されていることを確認します。
左側のウィンドウで、[ワークロード]> [カスタムリソース] を選択します。
[カスタムリソース] ページで、[リソースオブジェクト] タブをクリックします。
[APIグループ] 検索ボックスに、[IngressClass] と入力します。 作成したIngressClassが表示されます。
ステップ5: Ingressを作成する
ACKコンソール
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
[Ingress] ページで、[Ingressの作成] をクリックします。 [Ingressの作成] ダイアログボックスで、Ingressを設定します。
パラメーター
説明
例
ゲートウェイタイプ
要件に基づいて、ALB Ingress、MSE Ingressy、またはNginx Ingressを選択できます。
3つのゲートウェイタイプの違いの詳細については、「NGINX Ingress、ALB Ingress、およびMSE Ingressの比較」をご参照ください。
ALBイングレス
メトリック
Ingressの名前を指定します。
カフェ-ingress
Ingressクラス
Ingressのクラスを指定します。
alb
リスナー /ポート
AlbConfigで指定するALBインスタンスのリスナーポートとプロトコル。リスナーとプロトコルは、ALBインスタンスがトラフィックを受信および処理する方法を定義します。
HTTP:80
ルール
[+ ルールの追加] をクリックして、Ingressルールを追加します。
ドメイン名: カスタムドメイン名を入力します。
マッピング: 次のパラメーターを指定します。
パス: バックエンドサービスのURLパスを入力します。 この例では、ルートパス /が使用されます。
ルール: [プレフィックス (プレフィックスベースの一致)] 、[完全一致] 、または [ImplementationSpecific (デフォルト値)] を選択できます。
サービス: バックエンドサービスを選択します。
ポート: 公開するサービスポートを指定します。
ドメイン名に複数のパスを設定できます。 [+ 追加] をクリックしてパスを追加します。
ドメイン名: demo. Domain. ingress.top
マッピング:
パス: /tea
ルール: ImplementationSpecific。 デフォルト値です。
サービス: tea-svc
ポート: 80
マッピング:
パス: /coffee
ルール: ImplementationSpecific。 デフォルト値です。
サービス: coffee-svc
ポート: 80
TLS設定
TLS認証を有効にするかどうかを指定します。 IngressのTLS認証を有効にできます。
ドメイン名: カスタムドメイン名。
シークレット: 使用するシークレットを選択します。
シークレットを作成するには、次の手順を実行します。
Secretフィールドの右側にある [作成] をクリックします。
[シークレットの作成] ダイアログボックスで、[名前] 、[証明書] 、および [キー] パラメーターを設定します。 [OK] をクリックします。
[シークレット] ドロップダウンリストから作成したシークレットを選択します。
[+ 追加] をクリックすると、さらにTLS証明書を追加できます。
詳細については、「ALB Ingressを使用したHTTPSリスナーの証明書の設定」をご参照ください。
TLS設定をオフにします。 この例では、TLS証明書を設定する必要はありません。
その他
カナリアリリース: カナリアリリースを有効にします。 リクエストヘッダー、Cookie、および重みに基づいてカナリアリリースルールを設定できます。
説明カナリアリリースルールは、リクエストヘッダー、Cookie、および重みのいずれかの要素のみに基づいて設定できます。 リクエストヘッダー、Cookie、および重みに基づいて、カナリアリリースルールを同時に設定することもできます。 この場合、リクエストヘッダー、Cookie、および重みは、優先順位の高い順に有効になります。
[リクエストヘッダーに基づく]:
nginx.ingress.kubernetes.io/canary-by-Header
、nginx.ingress.kubernetes.io/canary-by-header-value
、またはnginx.ingress.kubernetes.io/canary-by-header-pattern注釈
を追加して、リクエストヘッダーに基づいてトラフィックを分散します。Cookieに基づく:
nginx.ingress.kubernetes.io/canary-by-cookie
注釈を追加して、Cookieに基づいてトラフィックを配布します。[重みに基づく]:
nginx.ingress.kubernetes.io/canary-Weight
アノテーションを追加して、サービスの重み (0〜100の整数) に基づいてトラフィックを分散します。
プロトコル:
nginx.ingress.kubernetes.io/backend-Protocol
アノテーションを追加して、バックエンドサービスで使用されるプロトコルを選択します。HTTP、HTTPS、gRPC、およびgRPCSがサポートされています。
パスの書き換え:
nginx.ingress.kubernetes.io /Rewrite-target
アノテーションを追加して、リクエストがバックエンドサービスに転送される前にクライアントリクエストのパスを書き換えます。
カナリアリリースをオフにします。 ProtocolおよびRewrite Pathパラメーターのデフォルト値を使用します。 この例では、これらのパラメーターを設定する必要はありません。
カスタム転送ルール
カスタム転送ルールを有効にして、受信トラフィックをきめ細かく管理できます。
説明転送ルールには最大10の条件を追加できます。
[条件の追加] ドロップダウンリストでは、次の条件タイプを使用できます。
ホスト:
指定されたドメイン名を含むリクエストのみがルーティングされるように指定します。 複数のドメイン名の論理関係はORです。 ドメイン名を指定すると、
alb.ingress.kubernetes.io/conditions.host-example
アノテーションが追加されます。パス:
指定されたパスを含むリクエストのみがルーティングされます。 複数のパス間の論理関係はORである。 パスを指定すると、
alb.ingress.kubernetes.io/conditions.path-example
アノテーションが追加されます。HTTPヘッダー:
指定されたHTTPヘッダーを含むリクエストのみがルーティングされるように指定します。 各HTTPリクエストヘッダーはキーと値のペアです。 たとえば、keyを
headername
に設定し、valueをheadervalue1
に設定できます。 複数のヘッダー間の論理関係はORです。 ヘッダーを指定すると、alb.ingress.kubernetes.io/conditions.http-header-example
アノテーションが追加されます。
[アクション] ドロップダウンリストでは、次のアクションを使用できます。
転送先
受信トラフィックを複数のバックエンドサーバーグループに転送します。 [サービス名] ドロップダウンリストからアクセスするサービスを選択します。 [ポート] ドロップダウンリストから、サービスへの接続に使用するポートを選択します。 各バックエンドサーバーグループのカスタム重みを指定します。
説明クラスターにFlannelコンポーネントを使用する場合、ClusterIPサービスはサポートされません。
[アクション] ドロップダウンリストから [転送] を選択した場合、ルールの [マッピング] パラメーターを設定する必要はありません。
リターン固定レスポンス
ALBインスタンスによって固定コンテンツがクライアントに返されることを指定します。 クライアントに返されるステータスコード、コンテンツ、およびコンテンツの種類を指定できます。 ビジネス要件に基づいて、応答ステータスコード、応答コンテンツタイプ (オプション) 、および応答コンテンツ (オプション) パラメーターを設定します。
応答コンテンツタイプパラメーターの有効な値:
text/plain: コンテンツがプレーンテキストであることを示します。
text/css: コンテンツがXML形式であることを示します。
text/html: コンテンツがHTML形式であることを示します。
application/javascript: コンテンツがJavaScript形式であることを示します。
application/json: コンテンツがJSON形式であることを示します。
カスタム転送ルールでは、複数の条件とアクションを指定できます。 ドメイン名、パス、およびHTTPリクエストヘッダーを転送条件として設定し、受信トラフィックをバックエンドサーバーグループに転送するか、固定コンテンツをクライアントに返すことができます。 詳細については、「ALB Ingressのルーティングルールのカスタマイズ」をご参照ください。
カスタム転送ルールをオフにします。 この例では、カスタム転送ルールを設定する必要はありません。
注釈
カスタム注釈の名前と値を入力できます。 ドロップダウンリストから名前で注釈を選択または検索することもできます。 Ingressアノテーションの詳細については、「アノテーション」をご参照ください。
[+ 注釈の追加] をクリックして注釈を追加します。 ACKは、追加できるIngressアノテーションの数を制限しません。
この例では、注釈を設定する必要はありません。
ラベル
Ingressの特性を表すラベルを追加できます。
[+ ラベルの追加] をクリックしてラベルを追加します。 追加できるIngressラベルの数に制限はありません。
この例では、ラベルを設定する必要はありません。
設定が完了したら、[Ingressの作成] パネルの左下隅にある [OK] をクリックします。
次の手順を実行して、Ingressが作成されたことを確認します。
左側のウィンドウで、[ネットワーク]> [Ingress] を選択します。 Ingressのページには、cafe-ingressという名前のIngressが表示されます。
cafe-ingressの [エンドポイント] 列で、エンドポイントを表示できます。
kubectl
cafe-ingress.yamlという名前のファイルを作成し、次の内容をファイルにコピーします。 ファイルはIngressを作成するために使用されます。
次の表に、指定できるパラメーターを示します。
パラメーター
必須
説明
metadata.name
必須
Ingressの名前。
説明Ingressの名前は、クラスター内で一意である必要があります。 Ingressを作成するときは、名前の競合を防ぐためにIngress名が一意であることを確認してください。
spec.ingressClassName
必須
関連付けられたIngressClassの名前。
spec.rules.host
選択可能
HTTPホストヘッダーのドメイン名。 このパラメーターをカスタムドメイン名に設定する必要があります。
ブラウザでhttp:// demo.domain.ingress.topなどのドメイン名にアクセスすると、HTTPリクエストが送信されると、ブラウザは自動的にHost: demo.domain.ingress.topヘッダーを追加します。 このように、サーバは、ヘッダに基づいて宛先ホストを識別する。 Kubernetesでは、Ingressルールのホストフィールドを使用して、リクエストのホストヘッダーと照合します。 ホストヘッダーが一致する場合、リクエストは対応するバックエンドサービスに送信されます。
説明カスタムドメイン名を指定する場合は、ドメイン名のインターネットコンテンツプロバイダ (ICP) 申請が完了していることを確認してください。 そうしないと、ドメイン名の解決に失敗する可能性があります。 詳細については、「ICPファイリングの概要」をご参照ください。
このパラメーターを指定しない場合、IngressルールはIngressコントローラーに送信されるすべてのリクエストと一致します。
spec.ru les.http.paths.path
必須
URLパス。
spec.ru les.http.paths.pathType
必須
URLマッチングルール。 詳細については、「高度なALB Ingress設定」トピックの「URLパスに基づくリクエストの転送」セクションをご参照ください。
spec.rules.http.paths.backend.service.name
必須
作成したサービスの名前。
spec.ru les.http.paths.backend.service.port.number
必須
作成したサービスのポート。
ポートはリクエストをバックエンドサービスにルーティングするために使用されるため、重要です。 要求がバックエンドサービスにルーティングされ、期待どおりに処理できるように、ポートが有効であることを確認してください。
次のコマンドを実行して、外部からアクセス可能なドメイン名と
coffee
およびtea
Servicesのパス
を設定します。kubectl apply -f cafe-ingress.yaml
期待される出力:
ingress.networking.k8s.io/cafe-ingress created
必要に応じて、 次のコマンドを実行して、ALBインスタンスのドメイン名を取得します。
kubectl get ingress
期待される出力:
NAME CLASS HOSTS ADDRESS PORTS AGE cafe-ingress alb demo.domain.ingress.top alb-m551oo2zn63yov****.cn-hangzhou.alb.aliyuncs.com 80 50s
(オプション) 手順6: ドメイン名解決の設定
Ingressの作成時にspec.ru les.host
パラメーターをカスタムドメイン名に設定した場合、CNAMEレコードを追加して、ドメイン名をALBインスタンスのドメイン名にマップする必要があります。 その後、カスタムドメイン名を使用してサービスにアクセスできます。
ACKコンソールにログインします。
クラスター名をクリックして、クラスターの詳細ページに移動します。
左側のウィンドウで、[ネットワーク]> [Ingress] を選択します。
cafe-ingressの [エンドポイント] 列で、ドメイン名をコピーします。
CNAMEレコードを作成するには、次の手順を実行します。
Alibaba Cloud DNS コンソールにログインします。
[ドメイン名の解決] ページで、[ドメイン名の追加] をクリックします。
[ドメイン名の追加] ダイアログボックスで、ホストのドメイン名を入力し、[OK] をクリックします。
重要CNAMEレコードを作成する前に、TXTレコードを使用してドメイン名の所有権を確認する必要があります。
管理するドメイン名を見つけて、[操作] 列の [DNS設定] をクリックします。
[DNS設定] ページで、[DNSレコードの追加] をクリックします。
[DNSレコードの追加] パネルで、次のパラメーターを設定し、[OK] をクリックします。
パラメーター
説明
レコードタイプ
DNSレコードのタイプ。 ドロップダウンリストから [CNAME] を選択します。
ホスト名
ドメイン名のプレフィックス。 例:
www
.DNSリクエストソース
DNSリクエストの送信元のリージョン。 ドロップダウンリストから [デフォルト] を選択します。
値
CNAME。 CNAMEは、コピーしたドメイン名です。
TTL
DNSサーバーにキャッシュされるCNAMEレコードの有効期間 (TTL) 。 この例では、デフォルト値が使用されます。
ステップ7: トラフィック転送のテスト
ブラウザのアドレスバーに「test domain name + URL path」と入力して、トラフィックが指定されたサービスに転送されているかどうかを確認します。
カスタムドメイン名を設定する場合、テストドメイン名はカスタムドメイン名です。
カスタムドメイン名を設定していない場合、テストドメイン名はcafe-ingressのエンドポイントです。
この例では、demo.domain.ingress.top
が使用されています。
ブラウザのアドレスバーに
demo.domain.ingress.top/coffee
と入力します。 coffee-svcサービスのページが表示されます。ブラウザのアドレスバーに
demo.domain.ingress.top/tea
と入力します。 tea-svcサービスのページが表示されます。
関連ドキュメント
さまざまなドメイン名またはURL宛てのリクエストのさまざまなバックエンドサーバーグループへの転送、ヘルスチェック、HTTPからHTTPSへのリクエストのリダイレクト、カナリアリリース、カスタムリスナーポートなどの高度なALB Ingress設定の詳細については、「高度なALB Ingress設定」をご参照ください。
カスタムALB Ingress転送ルール、転送条件、およびアクションを設定する方法の詳細については、「ALB Ingressのルーティングルールのカスタマイズ」をご参照ください。
HTTPSリスナーを使用してHTTPSリクエストを転送する方法の詳細については、「ALB Ingressを使用してHTTPSリスナーの証明書を設定する」をご参照ください。
ALB Ingressの問題のトラブルシューティング方法の詳細については、「ALB Ingressコントローラーのトラブルシューティング」および「ALB Ingress FAQ」をご参照ください。