- クラウド技術
NGINX Ingress Controllerのインストール
- #Kubernetes
目次
目的
【エンジニア募集中】フルリモート可◎、売上/従業員数9年連続UP、平均残業8時間、有給取得率90%、年休124日以上 etc. 詳細はこちらから>
Kubernetesにリリースされているアプリケーションが増えてくると
個別にアクセスポートを割り振るのは効率が悪くなる。
そのため、GINX Ingress Controllerをプロキシサーバーのように設定する。
※内容は以下のイントールガイドに沿ったものになります。
Installation with Manifests
前提
・kubernetesが作成済みであること
・kubectlコマンドが実行可能であること
・gitが使用可能であること
以下はkubectlコマンドが使用可能な端末で行う。
NGINX Ingress Controllerをイントールする
Gitから対象モジュールを取得する。
安定版はv2.1.1※2022/03/24時点
1 2 3 |
git clone https://github.com/nginxinc/kubernetes-ingress/ cd kubernetes-ingress/deployments git checkout v2.1.1 |
RBACを構成する
Ingressコントローラーの名前空間とサービスアカウントを作成
1 |
1kubectl apply -f common/ns-and-sa.yaml |
サービスアカウントのクラスターロールとクラスターロールバインディングを作成
1 |
1kubectl apply -f rbac/rbac.yaml |
共通リソースを作成する
まず、TLS証明書とNGINXのデフォルトサーバーのキーを使用してシークレットを作成
1 |
1kubectl apply -f common/default-server-secret.yaml |
次に、NGINX構成をカスタマイズするための構成マップを作成
1 |
1kubectl apply -f common/nginx-config.yaml |
最後に、IngressClassリソースを作成
1 |
1kubectl apply -f common/ingress-class.yaml |
カスタムリソースを作成する
VirtualServerおよびVirtualServerRoute、TransportServerおよびポリシーリソース のカスタムリソース定義を作成
1 2 3 4 |
kubectl apply -f common/crds/k8s.nginx.org_virtualservers.yaml kubectl apply -f common/crds/k8s.nginx.org_virtualserverroutes.yaml kubectl apply -f common/crds/k8s.nginx.org_transportservers.yaml kubectl apply -f common/crds/k8s.nginx.org_policies.yaml |
IngressControllerをデプロイする
NGINXの場合、次を実行する
1 |
1kubectl apply -f deployment/nginx-ingress.yaml |
IngressControllerポッド用のサービスを作成
1 |
1kubectl apply -f service/nodeport.yaml |
ここまででIngressControllerのイントールは完了。
動作確認用サンプルアプリを作成
apacheのデプロイ、サービスを作成する
作成ファイル:apache-app-svc.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
apiVersion: apps/v1 kind: Deployment metadata: name: apache-app spec: replicas: 2 selector: matchLabels: app: apache-app template: metadata: labels: app: apache-app spec: containers: - name: apache-app image: httpd:latest ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: apache-svc labels: spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: apache-app |
サンプルアプリのデプロイ
1kubectl apply -f apache-app-svc.yaml
Ingress設定ファイルをデプロイ
サンプルアプリにアクセスできるようにIngress設定ファイルを作成する
作成ファイル:ingress.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: micro-ingress namespace: default annotations: kubernetes.io/ingress.class: nginx spec: rules: - host: test-smallit.jp http: paths: - path: / pathType: Prefix backend: service: name: apache-svc port: number: 80 |
※host「test-smallit.jp」の部分は任意の値に変更する必要あり
Ingress設定ファイルをデプロイ
1 |
1kubectl apply -f ingress.yaml |
IngressControllerサービスのノードポートを確認する
1 |
1kubectl get svc -n nginx-ingress |
※今回は「30987」がノードポートとなる。
サンプルアプリにアクセスする
ブラウザで以下のURLにアクセスする。
http://test-smallit.jp:30987/
「It works!」が表示されれば正常に動作しています。
ぜひ参考にしてみてください!
【エンジニア募集中】フルリモートも◎(リモート率85.7%)、平均残業8時間、年休124日以上、有給取得率90% etc. 詳細はこちらから>