Kubernetes アプリケーションが外部からの HTTP/HTTPS トラフィックを受信する必要がある場合、Enterprise Distributed Application Service (EDAS) で Application Load Balancer (ALB) イングレスを作成し、リクエストを対象のサービスにルーティングできます。ALB イングレスは NGINX イングレスと互換があり、複雑なルーティングルールおよび自動証明書検出をサポートします。
ALB イングレスの仕組み
イングレスリソースを作成または更新すると、ALB イングレスコントローラーが Kubernetes API サーバーを介して変更を検出し、動的に AlbConfig オブジェクトを生成します。その後、コントローラーは以下の操作を順次実行します:
ALB インスタンスを作成します。
ALB インスタンス上でリスナーを構成します。
イングレスルーティングルールを作成します。
バックエンドサーバーグループを構成します。
トラフィックのルーティングには、以下の 3 つの Kubernetes オブジェクトが連携して動作します:
| オブジェクト | 役割 |
|---|---|
| サービス | レプリカ化された Pod のグループ全体にデプロイされたアプリケーションの抽象化です。 |
| Ingress | ホスト名および URL パスに基づき、HTTP/HTTPS リクエストを特定のサービスにルーティングする一連のリバースプロキシルールです。 |
| AlbConfig | ALB インスタンスと 1 対 1 で対応するカスタムリソース定義(CRD)です。ALB イングレスコントローラーは AlbConfig を使用して ALB インスタンスおよびリスナーを管理します。 |

前提条件
開始する前に、以下の条件を満たしていることを確認してください。
アプリケーションにサービスが追加済みであること。詳細については、「サービスの追加」をご参照ください。
クラスターに ALB イングレスコントローラーがインストール済みであること。インストール方法は以下のいずれかを選択します:
新規クラスターの場合: クラスター作成時の「コンポーネント構成」ウィザードページで、Ingress パラメーターを ALB イングレス に設定します。
既存のクラスターの場合: コンポーネント管理から ALB イングレスコントローラーをインストールします。詳細については、「システムコンポーネントの管理」をご参照ください。
お使いのKubernetesクラスターと同じ仮想プライベートクラウド (VPC) 内の標準ALBインスタンス。ALBインスタンスが存在しない場合は、作成してください。詳細については、「ALBインスタンスの作成」をご参照ください。
ALB イングレスの作成
EDAS コンソール にログインします。
左側ナビゲーションウィンドウで、アプリケーションルーティング をクリックします。
アプリケーションルーティング(Kubernetes イングレス) ページの上部メニューバーからリージョンを選択し、マイクロサービス名前空間を選択します。
ALB イングレスの作成 をクリックします。
ALB イングレスの作成 パネルで、以下のパラメーターを設定します:
説明 標準 ALB インスタンスのみがサポートされます。1 つのクラスター内の Ingress にバインドされた ALB インスタンスは、他のクラスターの Ingress にはバインドできません。ただし、単一の ALB インスタンスは、同一クラスター内の複数の Ingress を処理できます。パラメーター 説明 K8s クラスター イングレスの対象となる Kubernetes クラスターです。ドロップダウンリストからクラスターを選択します。 K8s 名前空間 イングレスを作成する名前空間です。有効な値は、 default(名前空間未指定時に使用)、kube-system(システムによって作成されたオブジェクト)、kube-public(すべてのユーザー(未認証ユーザーを含む)が読み取り可能な名前空間)です。HTTPS へのリダイレクト 有効にすると、HTTP リクエストが自動的に HTTPS にリダイレクトされます。 アプリケーションルート名 選択した名前空間内で一意の名前です。小文字の英字、数字、ハイフン(-)のみ使用可能です。先頭は英字で始まり、末尾は英字または数字で終わる必要があります。 ALB インスタンス Ingress にバインドする標準の ALB インスタンス。ドロップダウンリストには、選択したクラスターと同じ VPC 内の ALB インスタンスのみが表示されます。ALB インスタンスが存在しない場合は、「ALB インスタンスの作成」をご参照ください。 転送ルールの追加 をクリックし、ルーティングルールを設定します。以下の図は設定例を示しています。
説明 特定のドメイン名とパスの組み合わせは、1 つのサービスにのみマップできます。1 つのサービスには、複数のドメイン名およびパスの組み合わせからアクセスできます。同一のルーティングルールは、異なる Ingress 間で重複して存在できます。パラメーター 説明 ドメイン名 トラフィックをルーティングする対象のドメイン名です。 パス 一致させる URL パスです。前方スラッシュ( /)で始める必要があります。アプリケーション 選択したクラスター内のターゲットアプリケーションです。ドロップダウンリストから選択します。 サービス名 このルートのリクエストを処理するサービスです。ドロップダウンリストから選択します。 サービスポート サービスがリッスンするポートです。 TLS を開く 内部サービスへの HTTPS ルーティングを有効化します。有効にした場合、EDAS コンソールの「構成管理」>「Kubernetes 構成」>「Secrets」タブから TLS 証明書を格納する Secret を選択します。Secret が存在しない場合は、Secret の作成 をクリックして作成してください。詳細については、「Secret の作成」をご参照ください。 
はい をクリックして、イングレスを作成します。
制限事項と注意事項
イングレスに使用される ALB インスタンスは EDAS によりフルマネージドです。ALB コンソールからこれらのインスタンスを変更すると、サービス中断が発生する可能性があります。
EDAS によって作成された Ingress リソースには、
edas-domain: edas-adminおよびedas-domainというラベルが付与されます。これらのリソースを変更または削除しないでください。また、これらの Ingress に関連付けられた IngressClass オブジェクトおよび AlbConfig オブジェクトの名前はedas-{alb_id}の形式であり、変更および削除できません。Flannel ネットワークプラグインを使用するクラスターでは、NodePort および LoadBalancer のサービスタイプのみがサポートされます。
ALB イングレスの HTTPS ルーティングを設定するには、Ingress のすべてのルーティングルールで [TLS の有効化] をオンにします。
ALB イングレスは自動証明書検出をサポートします。TLS の有効化 を有効にした後は、Secret の手動設定は不要です。ただし、SSL Certificates Service で対応するドメイン名用に、ワイルドカード証明書またはシングルドメイン証明書のいずれかを購入する必要があります。
標準 ALB インスタンスをクラスター内の Ingress にバインドした後は、その ALB インスタンスを他のクラスターで使用できなくなります。
イングレスの管理
イングレスを作成すると、アプリケーションルーティング(Kubernetes イングレス) ページのイングレス一覧に表示されます。この一覧から、以下の操作が可能です:
バインドされた ALB インスタンスおよびルーティングルールを含むイングレスの詳細を表示
転送ルールの変更
イングレスの削除