0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraform を使った Kubernetes クラスタの構築

Posted at

はじめに

Kubernetes(K8s)を複数台のクラスタ構成で運用する際、インフラのコード化は欠かせません。本記事では、Terraform を使用して Kubernetes クラスタを構築する方法を紹介します。

Terraform は、クラウドプロバイダ(AWS, GCP, Azure など)を問わず、一貫した IaC(Infrastructure as Code)管理を可能にします。これにより、Kubernetes のマスターとワーカーノードを含むクラスタを簡単に作成し、運用することができます。


1. クラウド環境の選定

Terraform では、クラウドごとに異なる Provider を利用できます。以下に代表的なクラウドプロバイダを示します。

  • AWS(Amazon Web Services):EKS(Elastic Kubernetes Service)
  • GCP(Google Cloud Platform):GKE(Google Kubernetes Engine)
  • Azure(Microsoft Azure):AKS(Azure Kubernetes Service)

本記事では、AWS を例に Kubernetes クラスタを構築する Terraform の設定を紹介します。


2. AWS 上で Kubernetes クラスタを構築する Terraform コード

2.1 事前準備

Terraform の実行には以下のものが必要です。

  • AWS CLI(認証情報の設定)
  • Terraform CLI
  • IAM ロール & ポリシー(EKS の操作に必要)

まず、Terraform のプロバイダ設定を行います。

provider "aws" {
  region = "us-west-2"
}

2.2 VPC の作成

Kubernetes クラスタをデプロイするための VPC とサブネットを定義します。

resource "aws_vpc" "k8s_vpc" {
  cidr_block = "10.0.0.0/16"
  enable_dns_support = true
  enable_dns_hostnames = true
  tags = { Name = "k8s-vpc" }
}

resource "aws_subnet" "k8s_subnet" {
  vpc_id     = aws_vpc.k8s_vpc.id
  cidr_block = "10.0.1.0/24"
  availability_zone = "us-west-2a"
}

2.3 EKS クラスタの作成

EKS クラスタのリソースを作成します。

resource "aws_eks_cluster" "k8s_cluster" {
  name     = "k8s-cluster"
  role_arn = aws_iam_role.eks_role.arn
  vpc_config {
    subnet_ids = [aws_subnet.k8s_subnet.id]
  }
}

2.4 ワーカーノードの作成

EKS クラスタにワーカーノードを追加するためのノードグループを作成します。

resource "aws_eks_node_group" "worker_nodes" {
  cluster_name    = aws_eks_cluster.k8s_cluster.name
  node_group_name = "k8s-workers"
  node_role_arn   = aws_iam_role.worker_role.arn
  subnet_ids      = [aws_subnet.k8s_subnet.id]

  scaling_config {
    desired_size = 2
    min_size     = 1
    max_size     = 3
  }
}

3. Terraform の適用

設定が完了したら、以下の手順で Terraform を適用します。

terraform init
terraform plan
terraform apply -auto-approve

Terraform が完了すると、EKS クラスタとワーカーノードが作成されます。


4. Kubernetes クラスタの確認

作成した Kubernetes クラスタに接続するには、aws eks コマンドを使用して kubeconfig を更新します。

aws eks update-kubeconfig --name k8s-cluster --region us-west-2
kubectl get nodes

このコマンドでノードが表示されれば、EKS クラスタのデプロイが成功しています。


5. 運用のポイント

  • Terraform の状態管理:リモートバックエンド(S3 + DynamoDB)を利用する
  • ノードのスケーリングaws_eks_node_groupscaling_config を適切に設定
  • セキュリティ:IAM ロールを適切に管理し、必要なポリシーを付与
  • 監視:CloudWatch や Prometheus でメトリクスを監視

6. まとめ

本記事では、Terraform を使用して AWS 上に Kubernetes クラスタを構築する方法を紹介しました。

  • Terraform を使えば Kubernetes クラスタをコード化して管理できる
  • VPC、EKS クラスタ、ワーカーノードを Terraform で定義
  • terraform apply でクラスタをデプロイし、kubectl で管理可能

マルチクラウド環境やオンプレミスでの Kubernetes 運用も、Terraform を使えばスムーズに管理できます。ぜひ試してみてください!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?