Skip to content

cosicosilife.com

ライフハックについていろいろ書きます

Primary Menu
  • サイトマップ
  • クラウド技術
  • 安全資産投資
  • 旅行
  • ライフハック
  • プライバシーポリシー
  • 運営者情報とご連絡先
  • Home
  • クラウド技術
  • AWS EKSを使ったDocker/Kubernetes環境構築
  • クラウド技術

AWS EKSを使ったDocker/Kubernetes環境構築

david 2025年3月10日
aws

この記事の目次(クリックしたらジャンプ)

Toggle
  • はじめに
    • この記事で学べること
  • 1. 前提条件と準備
    • 1.1 必要なAWS権限
    • 1.2 必要なツールのインストール
      • AWS CLI
      • kubectl(Kubernetes CLI)
      • eksctl(EKSクラスタ管理ツール)
  • 2. EKSクラスタの作成
    • 2.1 クラスタの作成
    • 2.2 クラスタの確認
  • 3. アプリケーションのデプロイ
    • 3.1 サンプルアプリケーションの作成
      • Deploymentマニフェストの作成
    • 3.2 サービスの作成
      • Serviceマニフェストの作成
    • 3.3 アクセス確認
  • 4. EKS環境の削除(課金防止)
    • 4.1 デプロイしたアプリケーションを削除
    • 4.2 クラスタの削除
    • 4.3 未削除のリソース確認
  • まとめ

はじめに

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クラスタの作成
  • マイクロサービスのデプロイ
  • 課金を防ぐための環境削除

Continue Reading

Previous: AWS stepfunction を試してみよう
Next: AWS systems manager でオンプレのサーバーを管理してみる

Related Stories

A realistic whale with the word Docker in a manga style, without making the eyes too cute
  • クラウド技術

david 2025年6月2日
A realistic whale with the word Docker in a manga style, without making the eyes too cute
  • クラウド技術

Ubuntu上にArgo CDをインストールし、ブラウザアクセスできるようにする手順(k8s.cosicosilife.com対応)

david 2025年6月1日
A realistic whale with the word Docker in a manga style, without making the eyes too cute
  • クラウド技術

【初心者向け】Argo CD に初めてのアプリケーションをデプロイしてみよう!

david 2025年6月1日
  • argocdの導入
  • (タイトルなし)
  • オンプレUbuntuでHelm中心にKubernetes運用・CI/CD構築
  • Ubuntu上にArgo CDをインストールし、ブラウザアクセスできるようにする手順(k8s.cosicosilife.com対応)
  • 【初心者向け】Argo CD に初めてのアプリケーションをデプロイしてみよう!
  • サイトマップ
  • クラウド技術
  • 安全資産投資
  • 旅行
  • ライフハック
  • プライバシーポリシー
  • 運営者情報とご連絡先
  • サイトマップ
  • クラウド技術
  • 安全資産投資
  • 旅行
  • ライフハック
  • プライバシーポリシー
  • 運営者情報とご連絡先
Copyright © Cosicosilife | MoreNews by AF themes.