Terraformを使用する
警告
Terraformを使用したワークショップクラスターの作成は現在プレビュー中です。発生した問題はGitHubリポジトリで報告してください。
このセクションでは、HashiCorp Terraformを使用して実習用クラスターを構築する方法を説明します。これはTerraformインフラストラクチャ・アズ・コードの使用に慣れている学習者を対象としています。
terraform CLIはIDE環境に事前にインストールされているため、すぐにクラスターを作成できます。クラスターとその支援インフラストラクチャを構築するために使用される主なTerraform設定ファイルを確認しましょう。
Terraform設定ファイルについて
providers.tfファイルはインフラストラクチャを構築するために必要なTerraformプロバイダーを設定します。このケースでは、aws、kubernetes、helmプロバイダーを使用します:
provider "aws" {
default_tags {
tags = local.tags
}
}
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
version = ">= 4.67.0"
}
}
required_version = ">= 1.4.2"
}
main.tfファイルは、現在使用されているAWSアカウントとリージョンを取得するためのTerraformデータソースと、いくつかのデフォルトタグを設定します:
locals {
tags = {
created-by = "eks-workshop-v2"
env = var.cluster_name
}
}
vpc.tf設定は、VPCインフラストラクチャが作成されることを保証します:
locals {
private_subnets = [for k, v in local.azs : cidrsubnet(var.vpc_cidr, 3, k + 3)]
public_subnets = [for k, v in local.azs : cidrsubnet(var.vpc_cidr, 3, k)]
azs = slice(data.aws_availability_zones.available.names, 0, 3)
}
data "aws_availability_zones" "available" {
state = "available"
}
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "~> 6.0"
name = var.cluster_name
cidr = var.vpc_cidr
azs = local.azs
public_subnets = local.public_subnets
private_subnets = local.private_subnets
public_subnet_suffix = "SubnetPublic"
private_subnet_suffix = "SubnetPrivate"
enable_nat_gateway = true
create_igw = true
enable_dns_hostnames = true
single_nat_gateway = true
# Manage so we can name
manage_default_network_acl = true
default_network_acl_tags = { Name = "${var.cluster_name}-default" }
manage_default_route_table = true
default_route_table_tags = { Name = "${var.cluster_name}-default" }
manage_default_security_group = true
default_security_group_tags = { Name = "${var.cluster_name}-default" }
public_subnet_tags = merge(local.tags, {
"kubernetes.io/role/elb" = "1"
})
private_subnet_tags = merge(local.tags, {
"karpenter.sh/discovery" = var.cluster_name
"kubernetes.io/role/internal-elb" = "1"
})
tags = local.tags
}