AWS Elastic Kubernetes Service (Amazon EKS)クラスターをTerraformでセットアップする必要がある場合は、運が良いです。Terraform EKSモジュールとその他必要なリソースを使用して、1つのTerraform構成を作成し、コードでAKSクラスターを作成できます。
Amazon EKSは、独自のKubernetesクラスターをインストール、運用、および維持することなくAWS上でKubernetesを実行するための管理されたサービスです。Terraformを使用してEKSクラスターを構築することで、リソースを迅速かつ効率的に自動化されたアプローチで作成できます。
このチュートリアルでは、ステップバイステップでTerraform構成を構築し、Terraformを使用してEKSクラスターを構築する方法を学びます。さあ、始めましょう!
前提条件
この投稿はステップバイステップのチュートリアルになります。一緒に進む場合は、以下の準備が整っていることを確認してください:
- Amazon Web Service (AWS) アカウント
- A code editor – Even though you can use any text editor to work with Terraform configuration files, you should consider Visual Studio (VS) Code as it understands the HCL Terraform language well.
- Terraform – このチュートリアルでは、Terraform v0.14.9をUbuntu 18.04.5 LTSで実行しますが、Terraformがある任意のオペレーティングシステムで動作するはずです。
AWS EKSクラスターのTerraform構成のビルド
Terraformは、インフラストラクチャをコードとして構築、変更、およびバージョン管理するためのツールで、さまざまな構成ファイルを使用します。各ファイルは、プレーンテキスト形式(.tf)またはJSON形式(.tfjson)で書かれています。
まず、AKSクラスターをゼロから作成するTerraform構成を作成しましょう。
1. ターミナルを開く。
2. ~/terraform-eks-cluster-demoという名前のフォルダを作成し、そのフォルダに作業ディレクトリを変更(cd
)します。このフォルダには作業するすべての構成ファイルが含まれます。
3. 次に、お気に入りのコードエディタを開いて、次の構成をコピー/貼り付けて、main.tfという名前のファイルを~/terraform-eks-cluster-demoに保存します。このmain.tfファイルは、AKSクラスターのTerraform構成です。
main.tfファイルにはEKSクラスターをプロビジョニングするために必要なすべてのリソースが含まれています:
- AWS Identity and Access Management(IAM)ロール(
terraformekscluster
)- このリソースは、Amazon EKSによって管理され、他のAWSサービス(AWS S3、CloudWatchなど)に代わってサービスで使用するリソースを管理するために呼び出します。 - AWS EC2セキュリティグループ(
resource "aws_security_group" "eks-cluster"
)- AWS EKSクラスターからの着信および送信ネットワークトラフィックを許可します。SG-eks-cluster
という名前のセキュリティグループを起動し、VPC IDにアタッチして、クラスターからのすべてのトラフィックの流入/流出を許可します。0.0.0.0/0
はインターネットのIPアドレスです。 - EKSクラスター(
terraformEKScluster
)- このEKSクラスターはバージョン1.19
になります。 - EKSノードが他のAWSサービスに呼び出しを行うIAMロール(
eks-node-group
)。このロールは、インスタンス上で一時的なセキュリティ資格情報を想定して、他のAWSリソースにアクセスするためのポリシーがアタッチされています。 - EKSクラスターノードグループ(
node_group1
)- このリソースは、scaling_config
属性を介してクラスターが持つノードの数を定義します。
4. 〜/terraform-eks-cluster-demoに別のファイルを作成し、provider.tfと名付け、以下の内容を貼り付けます。プロバイダーのファイルは、AWS、Oracle、Azureなどのプロバイダーを定義し、Terraformが正しいクラウドサービスに接続できるようにします。
チュートリアルでは、us-east-2リージョンでリソースを作成します。
5. 以下の必要なファイルがすべてフォルダ内に存在することを確認するには、tree
コマンドを実行します。

AWS EKSモジュールを使用したAWS EKSクラスターの作成
Terraform構成ファイルと変数ファイルが準備できたら、Terraformを初期化してクラスターを作成する準備が整いました。 AKSクラスターをプロビジョニングするには、他のTerraform構成と同様に、Terraformが3つのコマンド(terraform init → terraform plan → terraform apply )を使用します。
これから各段階を説明します。
1. ターミナルを開き、~/terraform-eks-cluster-demo
ディレクトリに移動します。 cd ~/terraform-eks-cluster-demo
2. 同じディレクトリでterraform init
コマンドを実行します。 terraform init
コマンドは、リソースを操作するために必要なプラグインとプロバイダを初期化します。
すべてがうまくいけば、以下のように出力にメッセージTerraformが正常に初期化されましたが表示されます。

3.次に、terraform plan
コマンドを実行します。 terraform plan
の実行は必須ではありませんが、構成ファイルの構文が正しいことを確認し、インフラストラクチャにプロビジョニングされるリソースのブループリントを提供するために推奨されます。
成功すると、出力にPlan:「X」を追加、「Y」を変更、または「Z」を破棄のようなメッセージが表示されます。

4.次に、terraform apply
を実行して、トレーニングホイールを取り除き、Terraformを呼び出してAKSクラスターを作成します。 terraform apply
を呼び出すと、現在のディレクトリ内の各構成(*.tf)が読み込まれ、EKSクラスターやその他のコンポーネントを構築するためにAWSに送信される状態ファイルがコンパイルされます。
AWSは、各EKSクラスターに対して1時間あたり$0.10を請求します。作成したテストクラスターは必ず破棄してください!

AWS EKSクラスターの検証
この時点で、機能するAKSクラスターが構築されているはずですが、AWS管理コンソールで確認してみてください。
1.お気に入りのウェブブラウザを開き、AWS管理コンソールに移動し、ログインします。
2.上部の検索バーをクリックし、EKSを検索し、Elastic Kubernetes Serviceメニューアイテムをクリックします。そこにはterraformEKScluster EKSクラスターが表示されるはずです。


クリックしてください:設定、そして、以下に示すように、Terraform構成で定義した各コンポーネントが正常に作成されているはずです。



結論
このチュートリアルでは、Terraformを使用してAWS EKSクラスターとそのコンポーネントをデプロイする方法を学びました。これで、このEKSクラスターを使用してアプリケーションをデプロイする準備が整いました!
あなたは新しく見つけたクラスターにどのアプリケーションをデプロイする予定ですか?