Terraform の Amazon EKS ブループリントへようこそ!
このリポジトリには、お客様がAmazon EKSをより簡単かつ迅速に採用できるようにすることを目的とした Terraform モジュールのコレクションが含まれています。AWS のお客様、パートナー、社内の AWS チームが使用して、ワークロードのデプロイと運用に必要な運用ソフトウェアで完全にブートストラップされた完全な EKS クラスターを構成および管理できます。
このプロジェクトは、コミュニティの terraform-aws-eksモジュールを活用して、EKS クラスターをデプロイします。
EKS ブループリントの使用を開始する最も簡単な方法は、入門ガイドに従うことです。
完全なプロジェクト ドキュメントについては、ドキュメント サイトを参照してください。
EKS ブループリントを活用する方法の例を表示するには、 examplesディレクトリを参照してください。
以下は、EKS ブループリントを活用して、EKS クラスター、マネージド ノード グループ、およびさまざまな Kubernetes アドオンをデプロイする方法を示しています。
module "eks_blueprints" {
source = "github.com/aws-ia/terraform-aws-eks-blueprints?ref=v4.0.2"
# EKS CLUSTER
cluster_version = "1.21"
vpc_id = "<vpcid>" # Enter VPC ID
private_subnet_ids = ["<subnet-a>", "<subnet-b>", "<subnet-c>"] # Enter Private Subnet IDs
# EKS MANAGED NODE GROUPS
managed_node_groups = {
mg_m5 = {
node_group_name = "managed-ondemand"
instance_types = ["m5.large"]
subnet_ids = ["<subnet-a>", "<subnet-b>", "<subnet-c>"]
}
}
}
module "eks_blueprints_kubernetes_addons" {
source = "github.com/aws-ia/terraform-aws-eks-blueprints//modules/kubernetes-addons?ref=v4.0.2"
eks_cluster_id = module.eks_blueprints.eks_cluster_id
# EKS Addons
enable_amazon_eks_vpc_cni = true
enable_amazon_eks_coredns = true
enable_amazon_eks_kube_proxy = true
enable_amazon_eks_aws_ebs_csi_driver = true
#K8s Add-ons
enable_argocd = true
enable_aws_for_fluentbit = true
enable_aws_load_balancer_controller = true
enable_cluster_autoscaler = true
enable_metrics_server = true
enable_prometheus = true
}
上記のコードは、以下をプロビジョニングします。
vpc-cni、
CoreDNS、
kube-proxy、および
aws-ebs-csi-driver.
Cluster Autoscaler
Metrics Serverワークロードをスケーリングするために。
Fluent Bitルーティング ログ用。
AWS Load Balancer Controllerトラフィックを分散するため。
ArgocdKubernetes 用の宣言型 GitOps CD 用。
Prometheus可観測性のために。
EKS Blueprints を使用すると、幅広い一般的な Kubernetes アドオンを EKS クラスターに簡単にプロビジョニングできます。デフォルトでは、Terraform Helm プロバイダーは、公開されているHelm チャートを使用してアドオンをデプロイするために使用されます。EKS Blueprints は、自己ホスト型の Helm チャートを活用するためのサポートも提供します。
アドオンの展開に関する完全なドキュメントについては、アドオンのドキュメントを参照してください。
ルートモジュールは、Amazon EKS と連携して使用できる多数の外部 AWS サービスのデプロイと統合をサポートする複数のサブモジュールを呼び出します。これには、Amazon Managed Prometheus と EKS 上の EMR が含まれます。外部サービスの展開に関する完全なドキュメントについては、サブモジュールのドキュメントを参照してください。
Kubernetes は、コンテナ化されたアプリケーションを大規模にデプロイおよび管理できる、強力で拡張可能なコンテナ オーケストレーション テクノロジーです。Kubernetes の拡張可能な性質により、Kubernetes クラスターで、一般にアドオンと呼ばれるさまざまな一般的なオープンソース ツールを使用することもできます。ただし、利用可能なツールと設計の選択肢が非常に多いため、アプリケーション固有のニーズを満たすように調整された EKS クラスターを構築するには、かなりの時間がかかる場合があります。これには、幅広いオープンソース ツールと AWS サービスの統合が含まれ、AWS と Kubernetes に関する深い専門知識が必要です。
AWS のお客様は、Kubernetes ツールのランドスケープを統合し、特定のアプリケーション要件を満たす完全で独自の EKS クラスターを簡単にプロビジョニングする方法を示す例を求めてきました。お客様は、EKS ブループリントを使用して、専用の EKS クラスターを構成およびデプロイし、数か月ではなく数日でワークロードのオンボーディングを開始できます。
Terraform の EKS ブループリントは、AWS ソリューション アーキテクトによって管理されています。これは AWS サービスの一部ではなく、サポートは EKS Blueprints コミュニティによって最善を尽くして提供されます。
フィードバックを投稿したり、機能のアイデアを送信したり、バグを報告したりするには、この GitHub リポジトリの問題セクションを使用してください。
アーキテクチャの詳細、段階的な手順、およびカスタマイズ オプションについては、ドキュメント サイトを参照してください。
EKS ブループリントへの貢献に関心がある場合は、貢献ガイドを参照してください。
名前 | バージョン |
---|---|
テラフォーム | >= 1.0.0 |
aws | >= 3.72 |
兜 | >= 2.4.1 |
http | 2.4.1 |
kubectl | >= 1.14 |
kubernetes | >= 2.10 |
ローカル | >= 2.1 |
ヌル | >= 3.1 |
名前 | バージョン |
---|---|
aws | >= 3.72 |
http | 2.4.1 |
kubernetes | >= 2.10 |
名前 | ソース | バージョン |
---|---|---|
aws_eks | terraform-aws-modules/eks/aws | v18.26.6 |
aws_eks_fargate_profiles | ./modules/aws-eks-fargate-profiles | なし |
aws_eks_managed_node_groups | ./modules/aws-eks-managed-node-groups | なし |
aws_eks_self_managed_node_groups | ./modules/aws-eks-self-managed-node-groups | なし |
aws_eks_teams | ./modules/aws-eks-teams | なし |
emr_on_eks | ./modules/emr-on-eks | なし |
kms | ./modules/aws-kms | なし |
名前 | 説明 | タイプ | デフォルト | 必須 |
---|---|---|---|---|
application_teams | 作成するアプリケーション チームのマップのマップ | any |
{} |
番号 |
aws_auth_additional_labels | aws-auth ConfigMap に適用される追加の kubernetes ラベル | map(string) |
{} |
番号 |
cloudwatch_log_group_kms_key_id | KMS キー ARN が設定されている場合、このキーは対応するログ グループの暗号化に使用されます。KMS キーに適切なキー ポリシーがあることを確認してください ( https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html ) | string |
null |
番号 |
cloudwatch_log_group_retention_in_days | ログ イベントを保持する日数。デフォルトの保持期間 - 90 日 | number |
90 |
番号 |
cluster_additional_security_group_ids | クラスタ コントロール プレーンにアタッチする、外部で作成された追加のセキュリティ グループ ID のリスト | list(string) |
[] |
番号 |
cluster_enabled_log_types | 有効にする目的のコントロール プレーン ロギングのリスト | list(string) |
[ |
番号 |
cluster_encryption_config | クラスターの暗号化構成を含む構成ブロック | list(object({ |
[] |
番号 |
cluster_endpoint_private_access | EKS プライベート API サーバー エンドポイントが有効かどうかを示します。デフォルトは EKS リソースで、false です | bool |
false |
番号 |
cluster_endpoint_public_access | EKS パブリック API サーバー エンドポイントが有効かどうかを示します。デフォルトは EKS リソースであり、true です | bool |
true |
番号 |
cluster_endpoint_public_access_cidrs | Amazon EKS パブリック API サーバー エンドポイントにアクセスできる CIDR ブロックのリスト | list(string) |
[ |
番号 |
cluster_identity_providers | クラスターで有効にするクラスター ID プロバイダー構成のマップ。注 - これは IRSA とは異なります。 | any |
{} |
番号 |
cluster_ip_family | Kubernetes ポッドとサービス アドレスの割り当てに使用される IP ファミリ。有効な値はipv4(デフォルト) と ipv6です。クラスターを作成するときにのみ IP ファミリを指定できます。この値を変更すると、新しいクラスターが強制的に作成されます。 |
string |
"ipv4" |
番号 |
cluster_kms_key_additional_admin_arns | KMS キーポリシーでフルアクセス (kms:*) を持つ必要がある追加の IAM ARN のリスト | list(string) |
[] |
番号 |
cluster_kms_key_arn | Kubernetes シークレットを暗号化するための有効な EKS クラスター KMS キー ARN | string |
null |
番号 |
cluster_kms_key_deletion_window_in_days | 日数 (7 - 30) で指定された待機期間。待機期間が終了すると、AWS KMS は KMS キーを削除します | number |
30 |
番号 |
cluster_name | EKS クラスター名 | string |
"" |
番号 |
cluster_security_group_additional_rules | 作成されたクラスター セキュリティ グループに追加する追加のセキュリティ グループ ルールのリスト。をソースとして設定source_node_security_group = trueする内部ルールを設定します node_security_group |
any |
{} |
番号 |
cluster_security_group_id | クラスター セキュリティ グループの作成がオフになっている場合に使用されるセキュリティ グループ | string |
"" |
番号 |
cluster_security_group_tags | 作成されたクラスター セキュリティ グループに追加する追加タグのマップ | map(string) |
{} |
番号 |
cluster_service_ipv4_cidr | Kubernetes サービスの IP アドレスを割り当てる CIDR ブロック。ブロックを指定しない場合、Kubernetes は 10.100.0.0/16 または 172.20.0.0/16 CIDR ブロックからアドレスを割り当てます | string |
null |
番号 |
cluster_service_ipv6_cidr | Kubernetes サービス IP アドレスを割り当てるための IPV6 サービス CIDR ブロック | string |
null |
番号 |
cluster_timeouts | クラスターのタイムアウト構成の作成、更新、および削除 | map(string) |
{} |
番号 |
cluster_version | <major>.<minor>EKS クラスターに使用するKubernetesのバージョン (例: 1.22) |
string |
"1.22" |
番号 |
control_plane_subnet_ids | EKS クラスター コントロール プレーン (ENI) がプロビジョニングされるサブネット ID のリスト。EKS コントロール プレーンを交換せずに、ノード/ノード グループによって使用されるサブネットのプールを拡張するために使用されます | list(string) |
[] |
番号 |
create_cloudwatch_log_group | このモジュールによってクラスター ログ用のログ グループが作成されるかどうかを決定します。そうでない場合、ロギングが有効になっていれば AWS が自動的に作成します。 | bool |
false |
番号 |
create_cluster_security_group | クラスタ セキュリティ グループの作成または割り当てに切り替えます | bool |
true |
番号 |
create_eks | EKS クラスターを作成する | bool |
true |
番号 |
create_iam_role | IAM ロールを作成するか、既存の IAM ロールを使用するかを決定します | bool |
true |
番号 |
create_node_security_group | ノード グループのセキュリティ グループを作成するか、既存のセキュリティ グループを使用するかを決定します。node_security_group_id |
bool |
true |
番号 |
custom_oidc_拇印 | OpenID Connect (OIDC) ID プロバイダーのサーバー証明書のサーバー証明書拇印の追加リスト | list(string) |
[] |
番号 |
eks_readiness_timeout | EKS API サーバー エンドポイントが正常になるまで待機する最大時間 (秒単位) | number |
"600" |
番号 |
emr_on_eks_teams | EKS Teams 構成の EMR | any |
{} |
番号 |
enable_emr_on_eks | EKS で EMR を有効にする | bool |
false |
番号 |
enable_irsa | IRSA を有効にするために EKS 用の OpenID Connect プロバイダーを作成するかどうかを決定します | bool |
true |
番号 |
enable_windows_support | Windows サポートを有効にする | bool |
false |
番号 |
fargate_profiles | Fargate プロファイル構成 | any |
{} |
番号 |
iam_role_additional_policies | IAM ロールに追加される追加のポリシー | list(string) |
[] |
番号 |
iam_role_arn | クラスターの既存の IAM ロール ARN。create_iam_roleに設定されている場合は必須 false |
string |
null |
番号 |
iam_role_name | 作成された IAM ロールで使用する名前 | string |
null |
番号 |
iam_role_path | クラスター IAM ロール パス | string |
null |
番号 |
iam_role_permissions_boundary | IAM ロールのアクセス許可の境界を設定するために使用されるポリシーの ARN | string |
null |
番号 |
managed_node_groups | 管理対象ノード グループの構成 | any |
{} |
番号 |
map_accounts | aws-auth ConfigMap に追加する追加の AWS アカウント番号 | list(string) |
[] |
番号 |
map_roles | aws-auth ConfigMap に追加する追加の IAM ロール | list(object({ |
[] |
番号 |
map_users | aws-auth ConfigMap に追加する追加の IAM ユーザー | list(object({ |
[] |
番号 |
node_security_group_additional_rules | 作成されたノード セキュリティ グループに追加する追加のセキュリティ グループ ルールのリスト。をソースとして設定source_cluster_security_group = trueする内部ルールを設定します cluster_security_group |
any |
{} |
番号 |
node_security_group_tags | 作成されたノード セキュリティ グループに追加する追加タグのマップ | map(string) |
{} |
番号 |
openid_connect_audiences | IRSA プロバイダーに追加する OpenID Connect オーディエンス クライアント ID のリスト | list(string) |
[] |
番号 |
platform_teams | 作成するプラットフォーム チームのマップのマップ | any |
{} |
番号 |
private_subnet_ids | クラスターとワーカーノードのプライベートサブネット ID のリスト | list(string) |
[] |
番号 |
public_subnet_ids | ワーカー ノードのパブリック サブネット ID のリスト | list(string) |
[] |
番号 |
self_managed_node_groups | セルフマネージド ノード グループの構成 | any |
{} |
番号 |
タグ | 追加のタグ (例: map('BusinessUnit、 XYZ) |
map(string) |
{} |
番号 |
vpc_id | VPC ID | string |
なし | はい |
worker_additional_security_group_ids | ワーカー インスタンスにアタッチする追加のセキュリティ グループ ID のリスト | list(string) |
[] |
番号 |
名前 | 説明 |
---|---|
cluster_primary_security_group_id | クラスター用に Amazon EKS によって作成されたクラスター セキュリティ グループ。管理対象ノード グループは、このセキュリティ グループを使用して、コントロール プレーンからデータ プレーンへの通信を行います。EKS コンソールでは「クラスター セキュリティ グループ」と呼ばれます |
cluster_security_group_arn | クラスター セキュリティ グループの Amazon リソースネーム (ARN) |
cluster_security_group_id | EKS コントロール プレーン セキュリティ グループ ID |
configure_kubectl | kubectl の構成: 正しい AWS プロファイルでログインしていることを確認し、次のコマンドを実行して kubeconfig を更新します。 |
eks_cluster_arn | Amazon EKS クラスター名 |
eks_cluster_certificate_authority_data | クラスターとの通信に必要な Base64 でエンコードされた証明書データ |
eks_cluster_endpoint | Kubernetes API サーバーのエンドポイント |
eks_cluster_id | Amazon EKS クラスター名 |
eks_cluster_status | Amazon EKS クラスターのステータス |
eks_cluster_version | クラスターの Kubernetes バージョン |
eks_oidc_issuer_url | EKS クラスターの URL OIDC 発行者 |
eks_oidc_provider_arn | の場合、OIDC プロバイダーの ARN enable_irsa = true。 |
emr_on_eks_role_arn | EKS 上の EMR の IAM 実行ロール ARN |
emr_on_eks_role_id | EKS 上の EMR の IAM 実行ロール ID |
fargate_profiles | EKS Fargate プロファイル グループからの出力 |
fargate_profiles_aws_auth_config_map | Fargate プロファイル AWS 認証マップ |
fargate_profiles_iam_role_arns | Fargate プロファイルの IAM ロール arn |
managed_node_group_arn | 管理対象ノード グループ arn |
managed_node_group_aws_auth_config_map | 管理対象ノード グループ AWS 認証マップ |
managed_node_group_iam_instance_profile_arns | 管理対象ノード グループの IAM インスタンス プロファイル arn |
managed_node_group_iam_instance_profile_id | 管理対象ノード グループの IAM インスタンス プロファイル ID |
managed_node_group_iam_role_arns | 管理対象ノード グループの IAM ロール arn |
managed_node_group_iam_role_names | 管理対象ノードグループの IAM ロール名 |
managed_node_groups | EKS マネージド ノード グループからの出力 |
managed_node_groups_id | EKS 管理対象ノード グループ ID |
managed_node_groups_status | EKS 管理対象ノード グループのステータス |
oidc_プロバイダー | OpenID Connect ID プロバイダー (先頭の のない発行者 URL https://) |
self_managed_node_group_autoscaling_groups | セルフマネージド ノード グループのグループ名の自動スケーリング |
self_managed_node_group_aws_auth_config_map | 自己管理ノード グループ AWS 認証マップ |
self_managed_node_group_iam_instance_profile_id | 管理対象ノード グループの IAM インスタンス プロファイル ID |
self_managed_node_group_iam_role_arns | 自己管理ノード グループの IAM ロール arn |
self_managed_node_groups | EKS セルフマネージド ノード グループからの出力 |
チーム | EKS Fargate プロファイル グループからの出力 |
windows_node_group_aws_auth_config_map | Windows ノード グループ AWS 認証マップ |
worker_node_security_group_arn | ワーカーノード共有セキュリティグループの Amazon リソースネーム (ARN) |
worker_node_security_group_id | ワーカー ノード共有セキュリティ グループの ID |
詳細については、貢献を参照してください。
Apache-2.0 ライセンス。ライセンスを参照してください。