はじめに
Amazon EKSでNGINX Ingress Controllerを利用する方法をまとめます。
Mac環境を想定しています。
NGINX Ingress Controllerは、NGINXをリバース プロキシおよびロード バランサーとして使用する Kubernetes 用のイングレス コントローラーです。
NGINX Ingress Controllerを利用するとCLBが構築されます。
実行環境の準備
-
AWS CLIの設定
AWS CloudFormationを動かすためのAWS CLIの設定を参考にしてください。 -
EKSクラスタの構築
Macでeksctlを利用してAmazon EKSのクラスターを構築するを参考にしてください。 -
EKSのコンテキストの設定
MacにてAmazon EKSの設定をするを参考にしてください。 -
Helmの設定
Amazon EKSでHelmを利用するを参考にしてください。
環境設定
-
NGINX Ingress ControllerのチャートをHelmでインストールする
※事前にKubernetesクラスターのコンテキストの設定をします。# ingress-nginx チャートリポジトリを追加する helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx # リポジトリを更新する helm repo update # NGINX Ingress Controller のチャートをインストールする helm install nginx-ingress-controller ingress-nginx/ingress-nginx \ -n nginx-ingress-controller \ --create-namespace # NGINX Ingress Controller がインストールされたことを確認する helm list -n nginx-ingress-controller
[サンプル] guestbookのマニフェスト
guestbookを構築する。
-
guestbook をクラスターに適用する
kubectl apply -f https://raw.githubusercontent.com/argoproj/argocd-example-apps/master/guestbook/guestbook-ui-deployment.yaml
-
ingress.yaml
を作成するingress.yamlapiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: nginx name: guestbook-ui namespace: default spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: guestbook-ui port: number: 3000
-
service.yaml
を作成する
※guestbook-ui-svc.yaml を参考にするservice.yamlapiVersion: v1 kind: Service metadata: annotations: labels: app: guestbook-ui name: guestbook-ui namespace: default spec: ports: - port: 3000 protocol: TCP targetPort: 80 selector: app: guestbook-ui type: NodePort
-
クラスターに適用する
kubectl apply -f ingress.yaml kubectl apply -f service.yaml
-
guestbook にアクセスする
※ELBが構築されるまで、数分アクセスできないことがあります。open "http://$(kubectl get svc -n nginx-ingress-controller nginx-ingress-controller-ingress-nginx-controller | awk '{ print $4 }' | tail -1)"
クリーンアップ
-
クラスターから削除する
kubectl delete -f ingress.yaml kubectl delete -f service.yaml
-
guestbook をクラスターから削除する
kubectl delete -f https://raw.githubusercontent.com/argoproj/argocd-example-apps/master/guestbook/guestbook-ui-deployment.yaml
-
NGINX Ingress ControllerをHelmで削除する
helm delete nginx-ingress-controller -n nginx-ingress-controller
-
Namespaceを削除する
kubectl delete ns nginx-ingress-controller