NGINX Ingress ControllerとAWS Application Load Balancerを静的なポート(NodePort)で連携する

目的

【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc.  詳細はこちらから>

今回の目的は、NGINX Ingress Controllerの上にAWS Application Load Balancerを設置したいが、Ingress Controllerに付属している設定がClassic Load Balancerを対象としているため、NodePortで公開しApplication Load Balancerと連携することである。

前提

・kubernetesが作成済みであること
・kubectlコマンドが実行可能であること
・別記事「NGINX Ingress Controllerのインストール」に従いControllerのイントールが完了していること
NGINX Ingress Controllerのインストール

NGINXサービスのノードポートを固定する

デフォルトだと再作成する度にノードポートが変更されてしまうので、固定しておく。

gitから取得した設定ファイルの場所に移動

サービス設定ファイルを編集

13行目にポート指定を追記する

 

変更内容を反映

変更内容を確認

AWSコンソールからApplication Load Balancer(以下ALB)を作成する

【1】ALB用のターゲットグループを作成する

ターゲットグループ名:dev-nginx-ingress

VPCに任意の値を設定し、以外はデフォルト

kubernetesのノードサーバーをターゲットに追加し作成する。

【2】ALB用のセキュリティグループを作成する

セキュリティグループ名:dev-nginx-ingress

インバウンドルール:

 タイプ:HTTP

 ソース:Anywhere-IPv4

VPCに任意の値を設定し、以外はデフォルト

【3】ALBを作成する

Application Load Balancerの「Create」ボタンを選択

ALB名:dev-nginx-ingress

Network mappingに任意のVPCとパブリックサブネットを指定

セキュリティグループに【2】で作成した「dev-nginx-ingress」を設定

Listeners and routingに【1】で作成したターゲットグループを指定する

作成が完了したらAWSのコンソールに表示されているALBのドメインを確認する

今回の場合「dev-nginx-ingress-879757639.ap-northeast-1.elb.amazonaws.com」

ここまででALBの作成は完了

Ingress設定ファイルをALBホストを設定する

編集ファイル:ingress.yaml

 

Ingress設定ファイルをデプロイ

ブラウザからALBにアクセスする

http://dev-nginx-ingress-879757639.ap-northeast-1.elb.amazonaws.com

「It works!」が表示されれば成功です。

以ぜひ参考にしてみてください!

【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>

Smallitのサービス