
AWS EKS on Fargateを最速で検証する方法
はじめに
こんにちは。インフラエンジニアの末盛です。
AWS EKSは、AWSのコンテナ環境ではよく使われるKubernetesのコントロールプレーンの機能を提供してくれるサービスです。
そのデータプレーンとして選択可能なAWS Fargateは、AWSマネージドなサービスである分、EC2をデータプレーンとして使用する場合と比べて制約やFargateならではの仕様があります。
Fargateの導入を検討する際にはそのような制約やFargateの特性を調査、検証する必要があるのですが、そんなときにFargate環境をさっと構築、削除できると便利ですよね。
今回はAWS EKS on Fargateのお試し環境を最速で作成するための具体的な手順を解説したいと思います。
ポイント
手順のポイントは以下の通りです。
EKSクラスタとFargateだけでなく、前提となるVPCやサブネット、SG等も作成されます。
環境の構築にあたっては、EKSクラスタを操作するコマンドラインツールであるeksctlを使用します。
AWSマネジメントコンソールでの操作やCloudFormationではなくeksctlを採用した理由は以下の通りです。
AWSマネジメントコンソールでは1つ1つAWSリソースを作っていくことになり、時間がかかる。
CloudFormationでは、検証後の実環境への適用が比較的スムーズにできるというメリットがあるが、EKSクラスタに必要なほかのAWSリソースの分まで作成しようとすると準備すべき資材が多量になってしまう。
eksctlはコマンド一つで必要なリソースをすべて作成してくれるのに加え、裏ではCloudFormationスタックが作成されるため、そのスタックを参考にカスタマイズしたCloudFormationテンプレートを作成することができる。
タスクリスト
実施する手順の項目は以下のとおりです。
AWS CLIのインストール
kubectlインストール
eksctlインストール
EKSクラスタ作成
環境確認
目的に応じて検証を実施
環境を削除
手順
それでは具体的な手順の説明に入ります。 クライアント端末としてWindowsを使用する手順になっています。
AWS CLIのインストール
AWS CLIについては既にインストールされている方も多いかと思いますので、具体的な説明は割愛します。 公式ドキュメントのリンクを貼っておきます。
kubectlインストール
Kubernetesを操作するために使用するコマンドラインツールkubectlをインストールします。
PowerShellのプロンプトを立ち上げ、以下のコマンドを実行しkubectlの実行ファイルをダウンロードします。
PS > curl.exe -O https://s3.us-west-2.amazonaws.com/amazon-eks/1.31.2/2024-11-15/bin/windows/amd64/kubectl.exe
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 55.2M 100 55.2M 0 0 3184k 0 0:00:17 0:00:17 --:--:-- 2283k
URLはバージョンによって異なりますので、以下のリンクから最新のバージョンをダウンロードしてください。
ダウンロードしたファイルをパスが通っているフォルダに格納します。 今回は新しいフォルダC:\binを作成して格納します。
PS > mkdir c:\bin
PS > mv .\kubectl.exe c:\bin
パスに追加します。
以下ではコマンドでユーザの環境変数Pathに追加しています。もちろんGUIで追加したり、システムの環境変数に追加してもよいです。
PS > [Environment]::SetEnvironmentVariable("Path", [Environment]::GetEnvironmentVariable("Path", "User")+";C:\bin", [EnvironmentVariableTarget]::User)
PowerShellのターミナルを立ち上げなおして以下のコマンドを実行し、kubectlがインストールされていることを確認します。
PS > kubectl version --client
Client Version: v1.31.2-eks-94953ac
Kustomize Version: v5.4.2
eksctlインストール
EKSクラスタの操作に使用するeksctlをインストールします。
PowerShellで以下のコマンドを実行し、eksctlのzipファイルをダウンロードします。
PS > curl.exe -LO https://github.com/eksctl-io/eksctl/releases/latest/download/eksctl_windows_amd64.zip
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 35.7M 100 35.7M 0 0 17.2M 0 0:00:02 0:00:02 --:--:-- 23.5M
展開して先ほどパスを通したフォルダに移動します。
PS > Expand-Archive .\eksctl_windows_amd64.zip
PS > mv .\eksctl_windows_amd64\eksctl.exe C:\bin\
PowerShellのターミナルを立ち上げなおして以下のコマンドを実行し、eksctlがインストールされていることを確認します。
PS > eksctl version
0.199.0
EKSクラスタ作成
以下のeksctlコマンドを実行します。
PS > eksctl create cluster --name test --region ap-northeast-1 --fargate
2024-12-22 15:25:29 [ℹ] eksctl version 0.199.0
2024-12-22 15:25:29 [ℹ] using region ap-northeast-1
2024-12-22 15:25:29 [ℹ] setting availability zones to [ap-northeast-1a ap-northeast-1d ap-northeast-1c]
(略)
【オプションの説明】
--name:EKSクラスタの名前
--region:作成するAWSリージョン
--fargate:データプレーンとしてFargateを使用
以下のログが出ればコマンドは終了です。
[✔] EKS cluster "test" in "ap-northeast-1" region is ready
環境確認
kubectlコマンドでFargateのデータプレーンが起動していることを確認します。
PS > kubectl get nodes
NAME STATUS ROLES AGE VERSION
fargate-ip-192-168-104-8.ap-northeast-1.compute.internal Ready <none> 50m v1.30.6-eks-7f9249a
fargate-ip-192-168-184-3.ap-northeast-1.compute.internal Ready <none> 50m v1.30.6-eks-7f9249a
Podが起動していることを確認します。
PS > kubectl get pods -o wide -A
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system coredns-6b959cfc4b-645s6 1/1 Running 0 51m 192.168.104.8 fargate-ip-192-168-104-8.ap-northeast-1.compute.internal <none> <none>
kube-system coredns-6b959cfc4b-mxzmc 1/1 Running 0 51m 192.168.184.3 fargate-ip-192-168-184-3.ap-northeast-1.compute.internal <none> <none>
目的に応じて検証を実施
EKSクラスタが作成され、kubectlで操作が可能な状態になりました。
目的に応じてFargate関連のやりたい検証を実施します。
Fargateプロファイルはdefault、kube-systemのNamespaceに対してのみ作成されているため、それ以外のNamespaceにPodを作成した場合は起動しません。

上記の2つのNamespaceで検証するか、検証したいNamespaceのFargateプロファイルを追加で作成する必要があります。
環境を削除
検証が終わったら以下のコマンドで環境を削除します。
PS > eksctl delete cluster --name test --region ap-northeast-1
2024-12-22 16:31:34 [ℹ] deleting EKS cluster "test"
(略)
以下のログが表示されたら削除は完了です。
2024-12-22 16:33:45 [✔] all cluster resources were deleted
念のためeksctlよって作成されているCloudFormationスタックが削除されていることを確認します。

コスト
本手順によって作成されたAWSリソースにかかる費用は以下のとおりです。
0.22 USD/h
参考までに70分稼働した場合のコストは以下となりました。

まとめ
今回はAWS EKS on Fargateで最速で検証する手順を紹介しました。
実際にEKSのデータプレーンをEC2からFargateに移行するとなると、Fargateならではの仕様や考慮ポイントが多くあり、実機での検証が不可欠です。
最終的な環境構築はCloudFormation等で実施するとは思いますが、手軽さでいうと今回実施したeksctlでの構築が圧倒的に簡単です。
皆様も上記の手順を活用し、AWS EKS on Fargateの検証をしていただければと思います!
参考リンク
執筆者プロフィール:末盛 孝輔
SIerでSAPベーシスコンサルタントとしてキャリアをスタート。 その後インフラエンジニアへの転向、東京から広島へのUターンを経てSHIFTへ入社。 現在はクラウドインフラ、コンテナ基盤の構築、運用保守に携わっている。
お問合せはお気軽に
SHIFTについて(コーポレートサイト)
SHIFTのサービスについて(サービスサイト)
SHIFTの導入事例
お役立ち資料はこちら
SHIFTの採用情報はこちら
PHOTO:UnsplashのSolen Feyissa