前提条件
- EKSクラスターを作成している
- kubectl がAWS EKSクラスターに接続されている
まだしていない人は以下の記事を参照してください。
本編
1. Nginxのデプロイファイルを作成する
以下のようなファイルを作成します。
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
purpose: serve-web
annotations:
description: Deployment for the nginx web server
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
name: nginx-pod
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
protocol: TCP
restartPolicy: Always
このファイルはnginxのイメージを使って2つのポッドを作成します。
2. サービスファイルを作成する
以下のようなファイルを作成します。
apiVersion: v1
kind: Service
metadata:
name: nginx-service
labels:
app: nginx
purpose: expose-nginx
annotations:
description: Service to expose the nginx Deployment
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
このファイルによってクラシックロードバランサーが作成され、アクセスがpodに分散されます。
3. ファイルを適用する
プロジェクトの中で以下のコマンドでファイルを適用します。
kubectl apply -f .
4. サービスの確認
EC2からロードバランサーを見つけます。
DNS名が表示されているのでこれをコピーしてブラウザに貼り付けます。
ロードバランサーがEC2を認識するまで少し時間がかかることがあります。
おわりに
以上でEKSにNginxをデプロイする方法を紹介しました。
あとは好きなイメージに置き換えれば何でもできます!
よきEKSライフを!