Amazon Web Services ブログ
AWS ALB Ingress Controller の App Mesh への統合
AWS App Mesh は、アプリケーションレベルのネットワークを提供するサービスメッシュであり、サービスが複数のタイプのコンピューティングインフラストラクチャ間で簡単に相互通信できるようにします。App Mesh はサービスの通信方法を標準化し、エンドツーエンドの可視性を提供し、アプリケーションの高可用性を確保します。
AWS ALB Ingress コントローラーは、Kubernetes ユーザーがクラスターで Ingress リソースを宣言するたびに ALB と必要なサポートのための AWS リソースの作成をトリガーするコントローラーです。Ingress リソースは、ALB を使用して HTTP[s] トラフィックをクラスター内の異なるエンドポイントにルーティングします。
App Mesh では、EKS の内部トラフィック (別名 East-West トラフィック) は、App Mesh コントロールプレーンによって制御される Envoy サイドカーによって管理されますが、外部アクセス (別名 North-South トラフィック) は App Mesh によって管理されません。North-South トラフィックを East-West トラフィックに接続するオプションとしては次のようなものがあります。
- Ingress ゲートウェイとしての Gloo。
- App Mesh のゲートウェイアプリケーションを使用する ALB Ingress Controller。
- App Mesh へのイングレスとしての Ingress-nginx。ingress-nginx-controller は、メッシュ内の仮想ノードとして設定されます。
このブログでは、AWS App Mesh のサンプルアプリケーションである Color App を使用して AWS ALB Ingress Controller をセットアップする方法を説明します
仕組み
- ALB: ALB イングレスコントローラーによって作成および維持される AWS Application Load Balancer。トラフィックは Color Gateway サービスにルーティングされます。ALB のターゲットグループは、ALB イングレスコントローラー IP モードでゲートウェイの各ポッドをポイントします。
- Color Gateway: Go で記述された単純な http サービス。外部クライアントに公開され、http://service-name:port/color に応答します。ゲートウェイは、color-teller から取得した色と、リクエストを行った時点までに応答したサーバーで観察された色のヒストグラムで応答します。
- ColorTeller – Go で記述され、色を返すように設定された単純な http サービス。サービスの複数のバリアントがデプロイされます。各サービスは、特定の色を返すように設定されています。
チュートリアル
1.eksctl で EKS クラスターを作成する
このドキュメントに従って、AWS CLI、kubectl、および eksctl ツールをインストールおよび設定してください。次に、以下のコマンドに従って EKS クラスターとワーカーノードを作成します。
EKS クラスターおよびワーカーノードの作成には 15 分かかる場合があります。終了後、次のコマンドを実行して EKS クラスターを検証できます。
予想される出力は次のようになります。
IAM OIDC プロバイダーを作成し、クラスターに関連付けます。
2.appmesh コントローラーをインストールする
次の kubectl コマンドを実行して、appmesh コントローラーをインストールします。
コントローラリソースを確認します。
予想される出力は次のようになります。
3.appmesh サイドカーインジェクターをインストールする
4. カラーテラーサンプルアプリケーションをインストールする
5. AWS ALB Ingress コントローラーをインストールする
次のコマンドを実行して、ALB イングレスコントローラーをインストールします。このブログでは、各コマンドの詳細な説明をご覧いただけます。
6.カラーテラーアプリケーションのイングレスを作成する
次の内容で新しいファイル appmesh-alb-ingress.yaml を作成します。
次に、以下のコマンドを実行して、イングレスリソースを作成します
新しい ALB リソースを作成して準備するのに数分かかる場合があります。ALB のエンドポイントを取得できます。
次に、上記の ALB エンドポイントを使用して、サンプルアプリケーションにアクセスできます。
予想される出力は次のようになります。
{"color":"white", "stats": {"black":0.33,"blue":0.33,"white":0.33}}
7.クリーンアップ
まとめ
App Mesh のイングレスとして ALB を使用することは、外部トラフィックをメッシュにルーティングする最も簡単な方法の 1 つです。デプロイプロセスは、EKS または自己ビルド Kubernetes で ALB Ingress Controller をデプロイするのと同じです。Color App サンプルアプリケーションでは、ゲートウェイは、メッシュのエントリとして公開される App Mesh 仮想ノードです。ALB はメッシュ内にないため、このゲートウェイは外部と内部のトラフィックをブリッジする必要があります。
参照ドキュメント:
- ALB Ingress Controller: https://github.com/kubernetes-sigs/aws-alb-ingress-controller
- App Mesh Color App Sample アプリケーション: https://github.com/aws/aws-app-mesh-examples/tree/master/examples/apps/colorapp
- AWS App Mesh 用の Ingress Gateway として Gloo を使用する: https://aws.amazon.com/blogs/containers/using-gloo-as-an-ingress-gateway-for-aws-app-mesh/