
はじめに
DockerとKubernetesを活用したマイクロサービスの構築に挑戦したい方向けに、AWSのマネージドKubernetesサービス「EKS(Elastic Kubernetes Service)」を利用して、実際にコンテナアプリケーションをデプロイする方法を解説します。
EKSは便利ですが、利用し続けると料金が発生します。本記事では、 環境の完全削除 についても詳細に説明し、無駄な課金を防ぐ方法までカバーします。
この記事で学べること
- AWS EKSの基本
- クラスタの作成方法
- マイクロサービスのデプロイ
- 環境の完全削除
1. 前提条件と準備
1.1 必要なAWS権限
本記事では AWSの管理権限があること を前提としています。もしIAMユーザーで操作する場合は、以下のポリシーが必要です。
- AmazonEKSClusterPolicy
- AmazonEC2ContainerRegistryFullAccess
- AmazonEKSWorkerNodePolicy
- AmazonEKSServicePolicy
1.2 必要なツールのインストール
ローカル環境で以下のツールをセットアップしてください。
AWS CLI
#curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
#sudo installer -pkg AWSCLIV2.pkg -target /
#aws --version
aws-cli/1.22.34 Python/3.10.12 Linux/6.8.0-52-generic botocore/1.23.34
kubectl(Kubernetes CLI)
#curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
#chmod +x kubectl
#sudo mv kubectl /usr/local/bin/
#kubectl version --client
Client Version: v1.32.2
Kustomize Version: v5.5.0
eksctl(EKSクラスタ管理ツール)
#curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_Linux_amd64.tar.gz" | tar xz -C /tmp
#sudo mv /tmp/eksctl /usr/local/bin
#eksctl version
0.205.0
2. EKSクラスタの作成
最初の状態ではクラスタはありません

2.1 クラスタの作成
EKSクラスタを作成するには、以下のコマンドを実行します。
eksctl create cluster \
--name my-cluster \
--region ap-northeast-1 \
--nodegroup-name my-nodes \
--node-type t3.medium \
--nodes 2
2025-03-10 18:22:39 [✔] all EKS cluster resources for "my-cluster" have been created
2025-03-10 18:22:39 [ℹ] nodegroup "my-nodes" has 2 node(s)
2025-03-10 18:22:39 [ℹ] node "ip-192-168-28-124.ap-northeast-1.compute.internal" is ready
2025-03-10 18:22:39 [ℹ] node "ip-192-168-49-124.ap-northeast-1.compute.internal" is ready
2025-03-10 18:22:39 [ℹ] waiting for at least 2 node(s) to become ready in "my-nodes"
2025-03-10 18:22:39 [ℹ] nodegroup "my-nodes" has 2 node(s)
2025-03-10 18:22:39 [ℹ] node "ip-192-168-28-124.ap-northeast-1.compute.internal" is ready
2025-03-10 18:22:39 [ℹ] node "ip-192-168-49-124.ap-northeast-1.compute.internal" is ready
2025-03-10 18:22:39 [✔] created 1 managed nodegroup(s) in cluster "my-cluster"
2025-03-10 18:22:40 [ℹ] kubectl command should work with "/root/.kube/config", try 'kubectl get nodes'
2025-03-10 18:22:40 [✔] EKS cluster "my-cluster" in "ap-northeast-1" region is ready
クラスタが作成されるまで 10〜15分 ほどかかります。
コンソールからも確認できるはずです

クラスタ用のEC2もできます

VPCも作成されます

2.2 クラスタの確認
作成が完了したら、以下のコマンドでクラスタが正しく作成されたか確認します。
kubectl get nodes
NAME STATUS ROLES AGE VERSION
ip-192-168-28-124.ap-northeast-1.compute.internal Ready <none> 4m43s v1.30.9-eks-5d632ec
ip-192-168-49-124.ap-northeast-1.compute.internal Ready <none> 4m43s v1.30.9-eks-5d632ec
クラスタ内のノードが表示されれば、成功です。
3. アプリケーションのデプロイ
3.1 サンプルアプリケーションの作成
まず、シンプルなNginxアプリケーションをデプロイします。
Deploymentマニフェストの作成
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
このマニフェストを nginx-deployment.yaml として保存し、適用します。
# kubectl apply -f nginx-deployment.yaml
deployment.apps/nginx-deployment created
3.2 サービスの作成
EKSクラスタの外部からアクセスできるよう、LoadBalancer型のサービスを作成します。
Serviceマニフェストの作成
apiVersion: v1
kind: Service
metadata:
name: nginx-service
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
このマニフェストを nginx-service.yaml として保存し、適用します。
# kubectl apply -f nginx-service.yaml
service/nginx-service created
3.3 アクセス確認
作成されたロードバランサーのURLを取得し、ブラウザで確認します。
kubectl get svc nginx-service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx-service LoadBalancer 10.100.101.109 a80d0793c0792469da96099cd05353f2-1164207824.ap-northeast-1.elb.amazonaws.com 80:31742/TCP 44s
表示される EXTERNAL-IP にアクセスし、Nginxのデフォルトページが表示されれば成功です。

4. EKS環境の削除(課金防止)
EKS環境はそのまま放置すると料金が発生します。不要になったら、以下の手順で完全に削除しましょう。
4.1 デプロイしたアプリケーションを削除
kubectl delete -f nginx-service.yaml
kubectl delete -f nginx-deployment.yaml
4.2 クラスタの削除
#eksctl delete cluster --name my-cluster --region ap-northeast-1
2025-03-10 18:41:54 [ℹ] waiting for CloudFormation stack "eksctl-my-cluster-nodegroup-my-nodes"
2025-03-10 18:41:55 [ℹ] will delete stack "eksctl-my-cluster-cluster"
2025-03-10 18:41:55 [✔] all cluster resources were deleted
削除には 5〜10分 ほどかかります。
4.3 未削除のリソース確認
念のため、AWSコンソールで以下のリソースが残っていないか確認しましょう。
- EC2インスタンス
- ロードバランサー(ELB)
- VPC(EKSが作成したVPCが残っていないか)
まとめ
この記事では、AWS EKSを使ったDocker/Kubernetes環境の構築から、サンプルアプリケーションのデプロイ、環境の完全削除まで解説しました。
✅ 学んだこと
- EKSクラスタの作成
- マイクロサービスのデプロイ
- 課金を防ぐための環境削除