はじめに
gRPCのアプリケーションを外部に公開したかったので、EKSにNLBを立てて、Nginxでアクセスできるようにしてみました。
EKSのクラスタ構築はAWS EKS をはじめてみるを参考にどうぞ。
Deployment
まずはNginxのDeployment
を作ります。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
namespace: default
spec:
replicas: 1
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.5
ports:
- containerPort: 80
上記、内容のファイルをnginx.yaml
として保存して、下記kubectlで実行します。
$ kubectl create -f nginx.yaml
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-6c496b6b85-xrb5q 0/1 ContainerCreating 0 8s
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-6c496b6b85-xrb5q 1/1 Running 0 15s
Running
になったらOK
Service
Service
でNLBを立てます。
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
labels:
app: nginx
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
spec:
externalTrafficPolicy: Local
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: LoadBalancer
上記内容でファイルをaws-nlb.yaml
として保存して、下記kubectlで実行します。
$ kubectl create -f aws-nlb.yml
NLB自体はすぐに出来上がりますが、Nginxに繋がるまで数分かかるので待ちます。
出来上がったら、下記コマンドを叩いてLoadBalancer Ingress
をブラウザのURLに入力して、Welcome to nginx!
が表示されたら、完了です。
$ kubectl describe svc nginx
Name: nginx
Namespace: default
Labels: app=nginx
Annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb
Selector: app=nginx
Type: LoadBalancer
IP: 10.100.104.52
LoadBalancer Ingress: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bbbbbbbbbbbbb.elb.ap-northeast-1.amazonaws.com
〜省略〜
※上記だと、aaaaaaaaaaaaaaaaaaaaaaaaaaaaa-bbbbbbbbbbbbb.elb.ap-northeast-1.amazonaws.com
です。