The terraform-aws-eks repo contains a collection of Terraform modules for deploying an AWS EKS cluster and additional supporting resources. The primary tool that is used for deploying these resources is Terraform. However, there are a number of additional tools that are required to work with the terraform-aws-eks repo (and the Gruntwork Library in general). All tools listed below should be installed and properly configured prior to attempting to deploy any of the modules within the terraform-aws-eks repo.
EKS module has dependencies on kubergrunt. Will be installed automatically if not present on system, but it is better to have this pre-installed to avoid any potential issues during Terraform runs.
Packer is used for building the Gruntwork EKS Worker AMI.
Tool Configuration
Once each of the recommended tools are installed, it is important to have each of them properly configured. The most common configuration issues arise from the AWS CLI and Python. Below are configuration considerations and recommendations on the AWS CLI and Python.
AWS CLI
There are multiple methods for configuring the AWS CLI. A recommended approach is to configure the AWS CLI using named profiles for each of the environments you will be working with, then setting environment variables that specify the appropriate profile based on the environment you are executing against.
This is a great blog on securing and authenticating with the AWS CLI for reference.
Example AWS CLI configuration with IAM User and IAM Role
# ~/.aws/config
[profile my-user]
region = us-east-1output = json
cli_pager =
[profile my-assumed-role]
role_arn = arn:aws:iam::1234567891011:role/MyRole
source_profile = my-user
output = json
region = us-east-1
cli_pager =
# ~/.aws/credentials
[my-user]
aws_access_key_id = ABCDEFJ1234567
aws_secret_access_key = asdfasdfadsfasdfasdfasdfadsf
# Environment variables set on machine
AWS_PROFILE=my-assumed-role
# Make sure to unset AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY
Complimentary Tools
aws-vault is a great tool for securely storing credentials locally on the machine and is an alternative to using local configuration files which store credentials in plain text.
Python
Many systems come with Python pre-installed but the system installed version isn't recommended to be used outside of the core system function. It is typically better to explicitly install the needed version(s) of Python in addition to the system pre-installed version. Using a tool like pyenv can help proper installation of Python, including multiple versions, and is recommended. Python 3 is a requirement for the Gruntwork Library and python should resolve to Python 3, not Python 2.
Common Issues
Python not found on PATH
python command resolves to Python 2 and not Python 3
An important, and often missed, pre-requisite for deploying an AWS EKS cluster with the terraform-aws-eks repo/module, is building the EKS Worker Node AMI. The terraform-aws-eks repo/module was not designed to work with off-the-shelf AMIs provided by AWS or the broader community. Support for this may come at a later date, but as of now building the Gruntwork EKS Worker Node AMI is a pre-requisite requirement for running EKS via the terraform-aws-eks repo/module. The exception to this is if running a Fargate only EKS Cluster. The reason for this requirement is there are a number of additional components built into the AMI as dependencies that provide additional hardening to the Worker Node and provide additional mechanisms for managing the lifecycle of the EKS Worker Node itself.
The Gruntwork Worker Node AMI is built via a provided Packer template. The template can be found here. Instructions on how to build the AMI are provided in the README.
NOTE: When building the AMI from the template, ensure that the input variables provided are appropriate for the intended use. Such as the AWS Region the AMI should be available in and the version of Kubernetes the EKS cluster will be running.
Questions? Ask away.
We're here to talk about our services, answer any questions, give advice, or just to chat.
{"treedata":{"name":"root","toggled":true,"children":[{"name":".circleci","children":[{"name":"config.yml","path":".circleci/config.yml","sha":"0f2bb944b2b2ec5c6a437d5de3c6aff37d83bc79"},{"name":"post-upgrade-test-results.sh","path":".circleci/post-upgrade-test-results.sh","sha":"a4867e8fbdc334b7a90259568ee41ea577fbe764"},{"name":"set-upgrade-test-vars.sh","path":".circleci/set-upgrade-test-vars.sh","sha":"892467768667b771c06e8dd6ff7c7fba1919809f"}]},{"name":".github","children":[{"name":"ISSUE_TEMPLATE","children":[{"name":"bug_report.md","path":".github/ISSUE_TEMPLATE/bug_report.md","sha":"d2e87e27c601e423865ed660ec697082470ca60f"},{"name":"feature_request.md","path":".github/ISSUE_TEMPLATE/feature_request.md","sha":"023a33099be2336476930c96e17ff1ba5dc55348"}]},{"name":"pull_request_template.md","path":".github/pull_request_template.md","sha":"6b100e40e323b5b07f40ed30616277c51c9f4b9e"}]},{"name":".gitignore","path":".gitignore","sha":"bfc15743d4328afefce082a0c1f1a7e94c2c7019"},{"name":".pre-commit-config.yaml","path":".pre-commit-config.yaml","sha":"5572d654afb9977c494772ccc3dfb8b26b2d2cec"},{"name":"CODEOWNERS","path":"CODEOWNERS","sha":"4d7d85a37b224e4ec798f28d4202059cd03a9178"},{"name":"CONTRIBUTING.md","path":"CONTRIBUTING.md","sha":"1fa95dac5dc8a9b5f5cb33fcdf9bb4d085f6f155"},{"name":"GRUNTWORK_PHILOSOPHY.md","path":"GRUNTWORK_PHILOSOPHY.md","sha":"02d9873a74c99fe6d9b6b26bd9f8eb4a7a699c32"},{"name":"LICENSE.md","path":"LICENSE.md","sha":"a2cf01ecdd725fddd718ab91c80c115882c94f3c"},{"name":"README.adoc","path":"README.adoc","sha":"3c7f2bd34e3a7426adda47c32a6efc727a3a283b"},{"name":"_docs","children":[{"name":"eks-architecture.png","path":"_docs/eks-architecture.png","sha":"b4c9c46f88ed465c5575e915af54ad9920b56941"},{"name":"eks-icon.png","path":"_docs/eks-icon.png","sha":"83a29dc46e7bc6234ba5bb825e8ae283c56229a0"},{"name":"iam-role-icon.png","path":"_docs/iam-role-icon.png","sha":"c05bb05e6caae9b9db46505ce505a386f21fa2e4"}]},{"name":"core-concepts.md","path":"core-concepts.md","sha":"348a0f2131a64a1ff9fc8d9ca142228be88fce26"},{"name":"examples","children":[{"name":"README.md","path":"examples/README.md","sha":"93b72e051adc393d5ef2daadad4ab6c49f8fbae2"},{"name":"eks-cluster-managed-workers","children":[{"name":"README.md","path":"examples/eks-cluster-managed-workers/README.md","sha":"dfeb410bdf56b810e03ba3e73e9bb93d79e97452"},{"name":"dependencies.tf","path":"examples/eks-cluster-managed-workers/dependencies.tf","sha":"756ddc34328bd4de3a615f5369bf71cc3cffafdc"},{"name":"main.tf","path":"examples/eks-cluster-managed-workers/main.tf","sha":"dda8a0edf5b2b0db33e520dacf6ad1cc99b994ae"},{"name":"outputs.tf","path":"examples/eks-cluster-managed-workers/outputs.tf","sha":"84532a8cc37bbcb322e11d554713d98036d12b34"},{"name":"user-data","children":[{"name":"user_data.sh","path":"examples/eks-cluster-managed-workers/user-data/user_data.sh","sha":"c5fdd13d5bb04f765f1c90e9f12d23c48e94a252"}]},{"name":"variables.tf","path":"examples/eks-cluster-managed-workers/variables.tf","sha":"76502bb6a79245087fe013cc6202c460be9b6bc0"}]},{"name":"eks-cluster-with-argocd","children":[{"name":"README.md","path":"examples/eks-cluster-with-argocd/README.md","sha":"a4501dd1636f41fef573d730601d781998984919"},{"name":"argocd","children":[{"name":"dependencies.tf","path":"examples/eks-cluster-with-argocd/argocd/dependencies.tf","sha":"9fb708d6ce688d0c167d9fec0d6c1739e02a3d89"},{"name":"main.tf","path":"examples/eks-cluster-with-argocd/argocd/main.tf","sha":"30d91c59d2af7d6f360ecbd98c5399dd92df458f"},{"name":"outputs.tf","path":"examples/eks-cluster-with-argocd/argocd/outputs.tf","sha":"c09565f06bd69a9ed26536cbc8389012d20b7cb7"},{"name":"variables.tf","path":"examples/eks-cluster-with-argocd/argocd/variables.tf","sha":"4080eb586a0fc43d2380495590b5fc0b048ecbb2"}]},{"name":"core-services","children":[{"name":"dependencies.tf","path":"examples/eks-cluster-with-argocd/core-services/dependencies.tf","sha":"e0355c17476f86787dd04663fe2dbece2b710b90"},{"name":"main.tf","path":"examples/eks-cluster-with-argocd/core-services/main.tf","sha":"2e672896707add80998ace20728ff7cf80754574"},{"name":"outputs.tf","path":"examples/eks-cluster-with-argocd/core-services/outputs.tf","sha":"b7b6da1a4da0ed22f2ebf7b9be1a4b5526be0fac"},{"name":"variables.tf","path":"examples/eks-cluster-with-argocd/core-services/variables.tf","sha":"4a84f55446e8820f083416f94839c926a834dccf"}]},{"name":"eks-cluster","children":[{"name":"dependencies.tf","path":"examples/eks-cluster-with-argocd/eks-cluster/dependencies.tf","sha":"756ddc34328bd4de3a615f5369bf71cc3cffafdc"},{"name":"main.tf","path":"examples/eks-cluster-with-argocd/eks-cluster/main.tf","sha":"0fd7fe2a275ef207fdd042e8778d919616011bfa"},{"name":"outputs.tf","path":"examples/eks-cluster-with-argocd/eks-cluster/outputs.tf","sha":"2e17cf19632aab9deb96adc2650ccf0e6e103379"},{"name":"user-data","children":[{"name":"user_data.sh","path":"examples/eks-cluster-with-argocd/eks-cluster/user-data/user_data.sh","sha":"c5fdd13d5bb04f765f1c90e9f12d23c48e94a252"}]},{"name":"variables.tf","path":"examples/eks-cluster-with-argocd/eks-cluster/variables.tf","sha":"76502bb6a79245087fe013cc6202c460be9b6bc0"}]}]},{"name":"eks-cluster-with-iam-role-mappings","children":[{"name":"README.md","path":"examples/eks-cluster-with-iam-role-mappings/README.md","sha":"7491b8b28b06af093a3d21a2b005b550c79275c9"},{"name":"dependencies.tf","path":"examples/eks-cluster-with-iam-role-mappings/dependencies.tf","sha":"1e257e8ae253547bcfb04b1623f77cd3a2278e10"},{"name":"main.tf","path":"examples/eks-cluster-with-iam-role-mappings/main.tf","sha":"312ec063c0e5e32e258f296bf8639853e2faebf0"},{"name":"outputs.tf","path":"examples/eks-cluster-with-iam-role-mappings/outputs.tf","sha":"e641213ad585fffe0f165b9a543d54c9175a1a7d"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/eks-cluster-with-iam-role-mappings/user-data/user-data.sh","sha":"b10c34bfe4c9d10101472b47edbc3b7dff42a88e"}]},{"name":"variables.tf","path":"examples/eks-cluster-with-iam-role-mappings/variables.tf","sha":"051243bcda00b81da36a6cfe16088b0457e58bda"}]},{"name":"eks-cluster-with-karpenter","children":[{"name":"README.md","path":"examples/eks-cluster-with-karpenter/README.md","sha":"1103de5beb3e965a02fad20553445edc3889c1b9"},{"name":"charts","children":[{"name":"karpenter-configs","children":[{"name":"Chart.yaml","path":"examples/eks-cluster-with-karpenter/charts/karpenter-configs/Chart.yaml","sha":"8a82e61c5316ddb4ad37ef5ef958cff57397e692"},{"name":"templates","children":[{"name":"default-node-template.yaml","path":"examples/eks-cluster-with-karpenter/charts/karpenter-configs/templates/default-node-template.yaml","sha":"c8c816b7c987dfaa993133ee0064875c251992ee"},{"name":"default-provisioner.yaml","path":"examples/eks-cluster-with-karpenter/charts/karpenter-configs/templates/default-provisioner.yaml","sha":"92d44dff2bff7bde0420b344c1de8e711c41b367"}]},{"name":"values.yaml","path":"examples/eks-cluster-with-karpenter/charts/karpenter-configs/values.yaml","sha":"2722c76a72f50476c340dce342e0eca3b55ea5e6"}]}]},{"name":"dependencies.tf","path":"examples/eks-cluster-with-karpenter/dependencies.tf","sha":"756ddc34328bd4de3a615f5369bf71cc3cffafdc"},{"name":"main.tf","path":"examples/eks-cluster-with-karpenter/main.tf","sha":"2726755d1c3dbaf2a9688a8fd35c214906cb9d9c"},{"name":"outputs.tf","path":"examples/eks-cluster-with-karpenter/outputs.tf","sha":"d601b7479266890c5b22fc2e44f593fc14fa57d4"},{"name":"templates","children":[{"name":"nginx-values.yaml","path":"examples/eks-cluster-with-karpenter/templates/nginx-values.yaml","sha":"a6924778ed01fda8375d708e7582db439d664fa6"}]},{"name":"user-data","children":[{"name":"user_data.sh","path":"examples/eks-cluster-with-karpenter/user-data/user_data.sh","sha":"c5fdd13d5bb04f765f1c90e9f12d23c48e94a252"}]},{"name":"variables.tf","path":"examples/eks-cluster-with-karpenter/variables.tf","sha":"19cce63511f726c14e24ff97a1b6ffebe62fae7a"}]},{"name":"eks-cluster-with-supporting-services","children":[{"name":"README.md","path":"examples/eks-cluster-with-supporting-services/README.md","sha":"b1882c2dfbf1e0db6436ca45839f4a4c83813b87"},{"name":"core-services","children":[{"name":"README.md","path":"examples/eks-cluster-with-supporting-services/core-services/README.md","sha":"ec11e4899d4ca1a898fbf5b5a77bcff8555c2e64"},{"name":"dependencies.tf","path":"examples/eks-cluster-with-supporting-services/core-services/dependencies.tf","sha":"977c72682567c034c4effe391757cab2f342086f"},{"name":"main.tf","path":"examples/eks-cluster-with-supporting-services/core-services/main.tf","sha":"5fe61a30ecd3e23952e91d7b68c669eb85e1256a"},{"name":"outputs.tf","path":"examples/eks-cluster-with-supporting-services/core-services/outputs.tf","sha":"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391"},{"name":"variables.tf","path":"examples/eks-cluster-with-supporting-services/core-services/variables.tf","sha":"4a84f55446e8820f083416f94839c926a834dccf"}]},{"name":"eks-cluster","children":[{"name":"README.md","path":"examples/eks-cluster-with-supporting-services/eks-cluster/README.md","sha":"8a60a01004a93bbbf2091b730f0207f6dd2cc07e"},{"name":"dependencies.tf","path":"examples/eks-cluster-with-supporting-services/eks-cluster/dependencies.tf","sha":"abce3f302a956114f394e4c5025a4aaf2b9da148"},{"name":"main.tf","path":"examples/eks-cluster-with-supporting-services/eks-cluster/main.tf","sha":"3cd060facf31859042695171d2f0ab0b3fd14e35"},{"name":"outputs.tf","path":"examples/eks-cluster-with-supporting-services/eks-cluster/outputs.tf","sha":"be23a13dd6f4063be394b8ca7358b631d50fab8a"},{"name":"user-data","children":[{"name":"app_worker_user_data.sh","path":"examples/eks-cluster-with-supporting-services/eks-cluster/user-data/app_worker_user_data.sh","sha":"c5fdd13d5bb04f765f1c90e9f12d23c48e94a252"},{"name":"core_worker_user_data.sh","path":"examples/eks-cluster-with-supporting-services/eks-cluster/user-data/core_worker_user_data.sh","sha":"0fa26153108b3d030ceeaae777aeb0a7e115404e"}]},{"name":"variables.tf","path":"examples/eks-cluster-with-supporting-services/eks-cluster/variables.tf","sha":"585b34d5bbfbe129ca6cbfb973760f93f9b3f6f7"}]},{"name":"nginx-service","children":[{"name":"README.md","path":"examples/eks-cluster-with-supporting-services/nginx-service/README.md","sha":"31221d1b06df0b3207e8c5a58ecd165250187619"},{"name":"dependencies.tf","path":"examples/eks-cluster-with-supporting-services/nginx-service/dependencies.tf","sha":"0176248910eed450c12b54d10e3d74c8702c17ca"},{"name":"main.tf","path":"examples/eks-cluster-with-supporting-services/nginx-service/main.tf","sha":"6ffb3f1bc31635e4764cac5035d4ae48e894d985"},{"name":"templates","children":[{"name":"values.yaml","path":"examples/eks-cluster-with-supporting-services/nginx-service/templates/values.yaml","sha":"f9be5310abb29e3310d77bbb8a025ef90f15dc5a"}]},{"name":"variables.tf","path":"examples/eks-cluster-with-supporting-services/nginx-service/variables.tf","sha":"36ea6f8a36b19e34dbeeb25ae7e5fcf30c956b0f"}]},{"name":"packer","children":[{"name":"README.md","path":"examples/eks-cluster-with-supporting-services/packer/README.md","sha":"2e3d40d4297cbd7cbdfb2172c38b0c479ea2e7ee"},{"name":"build.pkr.hcl","path":"examples/eks-cluster-with-supporting-services/packer/build.pkr.hcl","sha":"fb7c43ca52ed8a43c71a11b36aae176a6e7a1fe2"}]}]},{"name":"eks-fargate-cluster-with-argocd","children":[{"name":"README.md","path":"examples/eks-fargate-cluster-with-argocd/README.md","sha":"7115776901baa2362222195afd48edbfbc4e4dd7"},{"name":"argocd","children":[{"name":"dependencies.tf","path":"examples/eks-fargate-cluster-with-argocd/argocd/dependencies.tf","sha":"edac96d132bc7425e886356bdb529375079f3af0"},{"name":"main.tf","path":"examples/eks-fargate-cluster-with-argocd/argocd/main.tf","sha":"ca985a4f8e00fbbf7b9dc27bec0911032f4acc00"},{"name":"outputs.tf","path":"examples/eks-fargate-cluster-with-argocd/argocd/outputs.tf","sha":"c09565f06bd69a9ed26536cbc8389012d20b7cb7"},{"name":"variables.tf","path":"examples/eks-fargate-cluster-with-argocd/argocd/variables.tf","sha":"b7bd683967ed8d49b98a5349a87478c8582c6d1f"}]},{"name":"core-services","children":[{"name":"README.md","path":"examples/eks-fargate-cluster-with-argocd/core-services/README.md","sha":"5a479eadaae31051bc6922443018683051f2ef9c"},{"name":"dependencies.tf","path":"examples/eks-fargate-cluster-with-argocd/core-services/dependencies.tf","sha":"96c15ff4a702a70e6f8a1234b6a5e02fd41e38b7"},{"name":"main.tf","path":"examples/eks-fargate-cluster-with-argocd/core-services/main.tf","sha":"fcbc668aeb236775d5375a689c48ed9e953a435a"},{"name":"outputs.tf","path":"examples/eks-fargate-cluster-with-argocd/core-services/outputs.tf","sha":"c09565f06bd69a9ed26536cbc8389012d20b7cb7"},{"name":"variables.tf","path":"examples/eks-fargate-cluster-with-argocd/core-services/variables.tf","sha":"fe40dd3758a52a0bce8342e95cec25b23db232ff"}]},{"name":"eks-cluster","children":[{"name":"dependencies.tf","path":"examples/eks-fargate-cluster-with-argocd/eks-cluster/dependencies.tf","sha":"f0730837927bfc77f4208917dfb9186789d607e0"},{"name":"main.tf","path":"examples/eks-fargate-cluster-with-argocd/eks-cluster/main.tf","sha":"a9b2bd905512f3ce71863ff785337879909827c0"},{"name":"outputs.tf","path":"examples/eks-fargate-cluster-with-argocd/eks-cluster/outputs.tf","sha":"be823054868d3e9d3fbf88dccb707dc6a33aa1ce"},{"name":"variables.tf","path":"examples/eks-fargate-cluster-with-argocd/eks-cluster/variables.tf","sha":"c5578fac1f179299d4c19bbe9def3d39685621c1"}]}]},{"name":"eks-fargate-cluster-with-irsa","children":[{"name":"README.md","path":"examples/eks-fargate-cluster-with-irsa/README.md","sha":"2ef7cf26c31533e74f1cc2b0b33489237b313b76"},{"name":"dependencies.tf","path":"examples/eks-fargate-cluster-with-irsa/dependencies.tf","sha":"b1404cb3c268b1c1af371859cec6ed8a4167c91c"},{"name":"main.tf","path":"examples/eks-fargate-cluster-with-irsa/main.tf","sha":"87b167283fb34b864baf961cbedd7056b0430819"},{"name":"outputs.tf","path":"examples/eks-fargate-cluster-with-irsa/outputs.tf","sha":"f059d7b74ffbfb06a0868d6d0a5d1831c8f45f10"},{"name":"variables.tf","path":"examples/eks-fargate-cluster-with-irsa/variables.tf","sha":"6a40f648e748c4ae88254d7f35cb448a55f49dad"}]},{"name":"eks-fargate-cluster-with-supporting-services","children":[{"name":"README.md","path":"examples/eks-fargate-cluster-with-supporting-services/README.md","sha":"49bdbe1483a7133cab1b345bb1ed9cf994dac786"},{"name":"core-services","children":[{"name":"README.md","path":"examples/eks-fargate-cluster-with-supporting-services/core-services/README.md","sha":"18cf6d3c8a4b2de11a41517121d3292fc632e1ec"},{"name":"dependencies.tf","path":"examples/eks-fargate-cluster-with-supporting-services/core-services/dependencies.tf","sha":"977c72682567c034c4effe391757cab2f342086f"},{"name":"main.tf","path":"examples/eks-fargate-cluster-with-supporting-services/core-services/main.tf","sha":"2d1d9eefc2ae6944c70d6792c94862014106b546"},{"name":"variables.tf","path":"examples/eks-fargate-cluster-with-supporting-services/core-services/variables.tf","sha":"c878e34d13bce307523d30bd2741fc64a29e54c4"}]},{"name":"eks-cluster","children":[{"name":"dependencies.tf","path":"examples/eks-fargate-cluster-with-supporting-services/eks-cluster/dependencies.tf","sha":"243348214af559f81518ede4871dd10670813ed0"},{"name":"main.tf","path":"examples/eks-fargate-cluster-with-supporting-services/eks-cluster/main.tf","sha":"4808ac8882cff18e2afb5dfe4cd774b79acf6729"},{"name":"outputs.tf","path":"examples/eks-fargate-cluster-with-supporting-services/eks-cluster/outputs.tf","sha":"edddf9a6ab6f5927db366689db79e1b91db9d8c8"},{"name":"variables.tf","path":"examples/eks-fargate-cluster-with-supporting-services/eks-cluster/variables.tf","sha":"c4798ace304bd5aa47ad1a686d60d617d97a13e3"}]},{"name":"nginx-service","children":[{"name":"dependencies.tf","path":"examples/eks-fargate-cluster-with-supporting-services/nginx-service/dependencies.tf","sha":"0176248910eed450c12b54d10e3d74c8702c17ca"},{"name":"main.tf","path":"examples/eks-fargate-cluster-with-supporting-services/nginx-service/main.tf","sha":"4971f1c23b7cd98e10b0001089386cf2df332893"},{"name":"templates","children":[{"name":"values.yaml","path":"examples/eks-fargate-cluster-with-supporting-services/nginx-service/templates/values.yaml","sha":"7faf0150a3336c47a2a9c0195172b6c249db9efe"}]},{"name":"variables.tf","path":"examples/eks-fargate-cluster-with-supporting-services/nginx-service/variables.tf","sha":"d3c166441cdc556b0839930fbc281b7e8a1bd57f"}]}]},{"name":"eks-fargate-cluster","children":[{"name":"README.md","path":"examples/eks-fargate-cluster/README.md","sha":"d4327780c978b563d52ea7ff6772ab9f95447eb0"},{"name":"dependencies.tf","path":"examples/eks-fargate-cluster/dependencies.tf","sha":"b1404cb3c268b1c1af371859cec6ed8a4167c91c"},{"name":"main.tf","path":"examples/eks-fargate-cluster/main.tf","sha":"e0a4e083034e7f9a82b2efec7e6ba15db1b8f7db"},{"name":"outputs.tf","path":"examples/eks-fargate-cluster/outputs.tf","sha":"b95747230a76d29eb3b00093e6c4d20be776dfdf"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/eks-fargate-cluster/user-data/user-data.sh","sha":"b10c34bfe4c9d10101472b47edbc3b7dff42a88e"}]},{"name":"variables.tf","path":"examples/eks-fargate-cluster/variables.tf","sha":"ae5e34b58316aaad03443b1e345c7c8e7ed2bfbd"}]},{"name":"eks-private-fargate-cluster","children":[{"name":"README.md","path":"examples/eks-private-fargate-cluster/README.md","sha":"f97e1789cdcca547e546dc9d6671d1b504e33237"},{"name":"dependencies.tf","path":"examples/eks-private-fargate-cluster/dependencies.tf","sha":"b1404cb3c268b1c1af371859cec6ed8a4167c91c"},{"name":"main.tf","path":"examples/eks-private-fargate-cluster/main.tf","sha":"990ede84d7ed97629f5b405beb9aa5ef46e68488"},{"name":"outputs.tf","path":"examples/eks-private-fargate-cluster/outputs.tf","sha":"be8cfb1ba6c42ffb4ff5b80053c47193e82e2652"},{"name":"user-data","children":[{"name":"user-data.sh","path":"examples/eks-private-fargate-cluster/user-data/user-data.sh","sha":"384647634c0337e04dc3c333680afb23e83144d4"}]},{"name":"variables.tf","path":"examples/eks-private-fargate-cluster/variables.tf","sha":"033b31a22cde7a512ce3acba3ee2d18bc1765ed1"}]}]},{"name":"getting-started.md","path":"getting-started.md","sha":"efc2b81e978a6a15584735c405f49012f930791e","toggled":true},{"name":"gruntwork-gitops.md","path":"gruntwork-gitops.md","sha":"ff7e953aa2d29d3399dad67e72a618d66240ebee"},{"name":"modules","children":[{"name":"eks-alb-ingress-controller-iam-policy","children":[{"name":"README.md","path":"modules/eks-alb-ingress-controller-iam-policy/README.md","sha":"c87be2ee00f8f59403f827303915b5a70c602002"},{"name":"iampolicy.json.templ","path":"modules/eks-alb-ingress-controller-iam-policy/iampolicy.json.templ","sha":"0bdfeee16510453f92ffc5c72dcc1dbeae77a6f1"},{"name":"main.tf","path":"modules/eks-alb-ingress-controller-iam-policy/main.tf","sha":"54941b67e9654757869a9267ee800850b9037af9"},{"name":"outputs.tf","path":"modules/eks-alb-ingress-controller-iam-policy/outputs.tf","sha":"b551b0bcc6eb1b43bfff1606696566658564cfb4"},{"name":"variables.tf","path":"modules/eks-alb-ingress-controller-iam-policy/variables.tf","sha":"ae1260926827cbb952350870775070ac0ad11fdf"}]},{"name":"eks-alb-ingress-controller","children":[{"name":"README.md","path":"modules/eks-alb-ingress-controller/README.md","sha":"674460e96524b7c471bcd145fc63ffda572f6dd6"},{"name":"main.tf","path":"modules/eks-alb-ingress-controller/main.tf","sha":"394aa19eeca870c3c8475c7bb55f154b1f8d5a13"},{"name":"variables.tf","path":"modules/eks-alb-ingress-controller/variables.tf","sha":"70f24f4e027f1663118b172fc80199dd286a5cbe"}]},{"name":"eks-aws-auth-merger","children":[{"name":"Dockerfile","path":"modules/eks-aws-auth-merger/Dockerfile","sha":"9380baad15659923c5905853afbab3ec6427aa74"},{"name":"README.adoc","path":"modules/eks-aws-auth-merger/README.adoc","sha":"278af23a94e15647115366921d35a0e8758901da"},{"name":"aws-auth-merger","children":[{"name":"aws_auth_merger.go","path":"modules/eks-aws-auth-merger/aws-auth-merger/aws_auth_merger.go","sha":"dc516a60ba7fe184c4566ecb2bf77c22d83f0f56"},{"name":"aws_auth_merger_test.go","path":"modules/eks-aws-auth-merger/aws-auth-merger/aws_auth_merger_test.go","sha":"218a7dbb20c3e5ba80e6540156a81241360c6930"},{"name":"cli.go","path":"modules/eks-aws-auth-merger/aws-auth-merger/cli.go","sha":"e59602c3f30025d24db02d9362c3ff4f07a27abd"},{"name":"configmap_watch_controller.go","path":"modules/eks-aws-auth-merger/aws-auth-merger/configmap_watch_controller.go","sha":"a0f8c6befb7a40e1b6f35bbe93e90c7054f3536c"},{"name":"debouncer.go","path":"modules/eks-aws-auth-merger/aws-auth-merger/debouncer.go","sha":"1d9ddd27a9db243fd250eb4b8672a44edb63e7ff"},{"name":"debouncer_test.go","path":"modules/eks-aws-auth-merger/aws-auth-merger/debouncer_test.go","sha":"e6cd8e44503b4dea3e81b26ff20db39c35c8c72e"},{"name":"go.mod","path":"modules/eks-aws-auth-merger/aws-auth-merger/go.mod","sha":"41f707440d5250bdc6ea21005c855337d4b1a83f"},{"name":"go.sum","path":"modules/eks-aws-auth-merger/aws-auth-merger/go.sum","sha":"1e1d51d4abe66ee6e408d7f487a5a7a1e5f76012"},{"name":"main.go","path":"modules/eks-aws-auth-merger/aws-auth-merger/main.go","sha":"caa9ef8bda3af991c3c088fa20b80d9696b9dcb5"},{"name":"mapping.go","path":"modules/eks-aws-auth-merger/aws-auth-merger/mapping.go","sha":"04ad904821a3530a3dea9930b74081d95330d73f"},{"name":"mapping_test.go","path":"modules/eks-aws-auth-merger/aws-auth-merger/mapping_test.go","sha":"02c91e45a128d6c306ec42a548ac9023df350e78"}]},{"name":"core-concepts.md","path":"modules/eks-aws-auth-merger/core-concepts.md","sha":"2da0061c35747e9f280f8a440adfc4534da40fa4"},{"name":"main.tf","path":"modules/eks-aws-auth-merger/main.tf","sha":"e4ffd5b768b22dad9f9f49b844d66b34221a408e"},{"name":"outputs.tf","path":"modules/eks-aws-auth-merger/outputs.tf","sha":"d733fb246403f97ac011cbedf3f1d2761badef82"},{"name":"variables.tf","path":"modules/eks-aws-auth-merger/variables.tf","sha":"429e5990df785c4c01c4a07668d41ce648e4e68b"}]},{"name":"eks-cloudwatch-agent","children":[{"name":"README.md","path":"modules/eks-cloudwatch-agent/README.md","sha":"fa78952ef636c021ce85246dc89955ae87c16f32"},{"name":"main.tf","path":"modules/eks-cloudwatch-agent/main.tf","sha":"eb170d9962c9b28b7aa0c3c28751c3e4be219672"},{"name":"outputs.tf","path":"modules/eks-cloudwatch-agent/outputs.tf","sha":"7061ed458fec528c8b8b587291f0eccb4324fb72"},{"name":"variables.tf","path":"modules/eks-cloudwatch-agent/variables.tf","sha":"5bb5fdf994036c472b0f5e4b162895ccd018c6e8"}]},{"name":"eks-cluster-control-plane","children":[{"name":"README.md","path":"modules/eks-cluster-control-plane/README.md","sha":"e8a0fa5defdc96d36d7a1c3a48159b152340fc9e"},{"name":"dependencies.tf","path":"modules/eks-cluster-control-plane/dependencies.tf","sha":"f33b4c9962a861cf7203fe7a90fbc86478d7a143"},{"name":"main.tf","path":"modules/eks-cluster-control-plane/main.tf","sha":"41acb307b471555e1e29b960644c22cf365faf18"},{"name":"outputs.tf","path":"modules/eks-cluster-control-plane/outputs.tf","sha":"2fdd25d917d7525a5e891f16c8970b3fb2fd2f5a"},{"name":"scripts","children":[{"name":"find_and_run_kubergrunt.py","path":"modules/eks-cluster-control-plane/scripts/find_and_run_kubergrunt.py","sha":"889a0de78b1f71c7b7329acfea97f9e1c7a34e46"}]},{"name":"templates","children":[{"name":"kubectl_config.tpl","path":"modules/eks-cluster-control-plane/templates/kubectl_config.tpl","sha":"4eadcc7bd5c167feb6100efb17052a96ac83bba8"}]},{"name":"variables.tf","path":"modules/eks-cluster-control-plane/variables.tf","sha":"29d6bf160bd286f772ae4b646eae9348ec1a9689"}]},{"name":"eks-cluster-managed-workers","children":[{"name":"README.md","path":"modules/eks-cluster-managed-workers/README.md","sha":"3a16f897364248d95f5ab96e064b26ad580bd29f"},{"name":"main.tf","path":"modules/eks-cluster-managed-workers/main.tf","sha":"886e165b6bceb9dcc5ecf40204245b3768e133ac"},{"name":"outputs.tf","path":"modules/eks-cluster-managed-workers/outputs.tf","sha":"0717106e35f73f355972e05b9b8c5e2ea94434f4"},{"name":"variables.tf","path":"modules/eks-cluster-managed-workers/variables.tf","sha":"af41ba4053fa077613dcc7cd0231b05e8b965829"}]},{"name":"eks-cluster-workers-cross-access","children":[{"name":"README.md","path":"modules/eks-cluster-workers-cross-access/README.md","sha":"6c4e50bda62acc6c06d836488ef54f7119f27aee"},{"name":"main.tf","path":"modules/eks-cluster-workers-cross-access/main.tf","sha":"87d4af7235258cf5d2213eace0f77155ada53f65"},{"name":"outputs.tf","path":"modules/eks-cluster-workers-cross-access/outputs.tf","sha":"c6c7f7a89007c55be5470ffd639c05c3fb052ad7"},{"name":"variables.tf","path":"modules/eks-cluster-workers-cross-access/variables.tf","sha":"d64aab893b6e909416189e985f072dd8809dfa2f"}]},{"name":"eks-cluster-workers","children":[{"name":"README.md","path":"modules/eks-cluster-workers/README.md","sha":"13dca344372f0c7492ab813a42ab7cefaa975fe3"},{"name":"dependencies.tf","path":"modules/eks-cluster-workers/dependencies.tf","sha":"d177e89ddc5cb6b4ab5b36ec96fd1ec22a008a49"},{"name":"main.tf","path":"modules/eks-cluster-workers/main.tf","sha":"5528efe62ea62eebc852a61f273caad3b5690ac5"},{"name":"outputs.tf","path":"modules/eks-cluster-workers/outputs.tf","sha":"aeab5d8ac0fd110798c22c067baf8ba559605fbf"},{"name":"variables.tf","path":"modules/eks-cluster-workers/variables.tf","sha":"82ebe162ab2fc342192feca65a8f96868223b130"}]},{"name":"eks-container-logs","children":[{"name":"README.md","path":"modules/eks-container-logs/README.md","sha":"b0ceb4671329b00a0f2003bd0d08589c12ea83ed"},{"name":"main.tf","path":"modules/eks-container-logs/main.tf","sha":"8d40a23bbbb8d8e076d78f80bc33c136c65519a5"},{"name":"outputs.tf","path":"modules/eks-container-logs/outputs.tf","sha":"7061ed458fec528c8b8b587291f0eccb4324fb72"},{"name":"variables.tf","path":"modules/eks-container-logs/variables.tf","sha":"ebc356572e8b3a325aecfaebe6213d812b135da1"}]},{"name":"eks-ebs-csi-driver","children":[{"name":"README.md","path":"modules/eks-ebs-csi-driver/README.md","sha":"5093c00ffdc285ac8f0d94858ec1cd19de845395"},{"name":"main.tf","path":"modules/eks-ebs-csi-driver/main.tf","sha":"81b6ba94d9febdcc34713fd226e970fc42889e2d"},{"name":"outputs.tf","path":"modules/eks-ebs-csi-driver/outputs.tf","sha":"8780f7f757b1d06c68136902283428a94c367f28"},{"name":"variables.tf","path":"modules/eks-ebs-csi-driver/variables.tf","sha":"534b26d733e2561921c47a3cb367c64ab107dcb5"}]},{"name":"eks-fargate-container-logs","children":[{"name":"README.md","path":"modules/eks-fargate-container-logs/README.md","sha":"7ac3892272260b9af994dfbe50aded64d54b58cf"},{"name":"main.tf","path":"modules/eks-fargate-container-logs/main.tf","sha":"1add1acb38aa94f5244d4f874955f3a12b141ee2"},{"name":"outputs.tf","path":"modules/eks-fargate-container-logs/outputs.tf","sha":"2ed65ae0ecffdfb49281bcb32fd90a4f71d3a016"},{"name":"variables.tf","path":"modules/eks-fargate-container-logs/variables.tf","sha":"83547c699653a578e35542822b547aa0abff6724"}]},{"name":"eks-iam-role-assume-role-policy-for-service-account","children":[{"name":"README.md","path":"modules/eks-iam-role-assume-role-policy-for-service-account/README.md","sha":"efbbbd70fea3661c662750768facb7950239ffa3"},{"name":"main.tf","path":"modules/eks-iam-role-assume-role-policy-for-service-account/main.tf","sha":"bf89695ecffb107b86de783847ae3c7de2f9c40e"},{"name":"outputs.tf","path":"modules/eks-iam-role-assume-role-policy-for-service-account/outputs.tf","sha":"c2910cec89910bb06a157311ac8c4bf72835dfe5"},{"name":"variables.tf","path":"modules/eks-iam-role-assume-role-policy-for-service-account/variables.tf","sha":"763803eda0d225bb23642767306d5e150977253d"}]},{"name":"eks-k8s-argocd","children":[{"name":"README.md","path":"modules/eks-k8s-argocd/README.md","sha":"aa8371a21947f3dfa4185ffc89894f38fde7cc58"},{"name":"main.tf","path":"modules/eks-k8s-argocd/main.tf","sha":"9f7b64f1b76afcf1ffdfa28a489bd07d63a3a1b5"},{"name":"outputs.tf","path":"modules/eks-k8s-argocd/outputs.tf","sha":"cb9f236128127bb1b2028bc60b2a7f3becc36ac3"},{"name":"variables.tf","path":"modules/eks-k8s-argocd/variables.tf","sha":"641a3273fe0695184c193951dc8aa9ac8774868d"}]},{"name":"eks-k8s-cluster-autoscaler-iam-policy","children":[{"name":"README.md","path":"modules/eks-k8s-cluster-autoscaler-iam-policy/README.md","sha":"591a2e965b97691e43bd72ad9700c62653933072"},{"name":"main.tf","path":"modules/eks-k8s-cluster-autoscaler-iam-policy/main.tf","sha":"6bcac03cda0e4da97312d1e8d705b6110ba77f32"},{"name":"outputs.tf","path":"modules/eks-k8s-cluster-autoscaler-iam-policy/outputs.tf","sha":"8b6c4e1747b3fa6a88c6233ec87aa2f450dfd334"},{"name":"variables.tf","path":"modules/eks-k8s-cluster-autoscaler-iam-policy/variables.tf","sha":"7534ac11f3cd71e1a1bf9521065a474f5f56ec3c"}]},{"name":"eks-k8s-cluster-autoscaler","children":[{"name":"README.md","path":"modules/eks-k8s-cluster-autoscaler/README.md","sha":"720c5bf5ac2fae03be80ca2284cb813cbe9dda78"},{"name":"main.tf","path":"modules/eks-k8s-cluster-autoscaler/main.tf","sha":"4ef3d8487fb688620f7b9d6284006d39d1b18225"},{"name":"templates","children":[{"name":"expander-priorities.tpl","path":"modules/eks-k8s-cluster-autoscaler/templates/expander-priorities.tpl","sha":"989d1ac06ad6c8fad0b71b0d9a25fcf792064819"}]},{"name":"variables.tf","path":"modules/eks-k8s-cluster-autoscaler/variables.tf","sha":"42629e7110c7cbb12c1284d55954d6e9c998ddf6"}]},{"name":"eks-k8s-external-dns-iam-policy","children":[{"name":"README.md","path":"modules/eks-k8s-external-dns-iam-policy/README.md","sha":"a33d41f9824e6270ef4573d6b7e22b394224689c"},{"name":"main.tf","path":"modules/eks-k8s-external-dns-iam-policy/main.tf","sha":"30ab6315a893c742b43d90ae800e1f3413fd5a5c"},{"name":"outputs.tf","path":"modules/eks-k8s-external-dns-iam-policy/outputs.tf","sha":"21604a63b741b94ea9ebffd20b18772131020fcf"},{"name":"variables.tf","path":"modules/eks-k8s-external-dns-iam-policy/variables.tf","sha":"c9d71db85ad8f3085d9ae3c3073bf46da6241b75"}]},{"name":"eks-k8s-external-dns","children":[{"name":"README.md","path":"modules/eks-k8s-external-dns/README.md","sha":"3258c634834d26d3e973da22aaab1b2dd824a2e5"},{"name":"main.tf","path":"modules/eks-k8s-external-dns/main.tf","sha":"1240cb88c9e08c8a27e71ec5d22bcc415359acb8"},{"name":"variables.tf","path":"modules/eks-k8s-external-dns/variables.tf","sha":"b746e3844a43007816e2761364a706a1a77a4d89"}]},{"name":"eks-k8s-karpenter","children":[{"name":"README.md","path":"modules/eks-k8s-karpenter/README.md","sha":"785965c48e8f9235a9262be288e43cb554e8b14d"},{"name":"main.tf","path":"modules/eks-k8s-karpenter/main.tf","sha":"259dd45cdb59234c4e6d6bee8af83d1ac79448f7"},{"name":"migrating-to-karpenter-from-cas.md","path":"modules/eks-k8s-karpenter/migrating-to-karpenter-from-cas.md","sha":"6b1b4ab812b30f272e2692dd05f3300bec79befc"},{"name":"outputs.tf","path":"modules/eks-k8s-karpenter/outputs.tf","sha":"9702c9f17856696a76c0f47e172b8a4c9182cf2d"},{"name":"variables.tf","path":"modules/eks-k8s-karpenter/variables.tf","sha":"66ac2297f3a597f7b5a5e4e7bfb6883107529783"}]},{"name":"eks-k8s-role-mapping","children":[{"name":"README.md","path":"modules/eks-k8s-role-mapping/README.md","sha":"2962e93307761b2356c62f0ac8068dc01f98d9f4"},{"name":"main.tf","path":"modules/eks-k8s-role-mapping/main.tf","sha":"5294a92e519efab879af245cae18197d79076196"},{"name":"outputs.tf","path":"modules/eks-k8s-role-mapping/outputs.tf","sha":"95d4d4ec652bb541b91a2844e00f68064b423e60"},{"name":"variables.tf","path":"modules/eks-k8s-role-mapping/variables.tf","sha":"8b4947f34102ce2c42d89f434ef36fbc4ed5b3b0"}]},{"name":"eks-scripts","children":[{"name":"README.md","path":"modules/eks-scripts/README.md","sha":"ecbee774470d2934bd06be0a617cf308a9e2f3fb"},{"name":"bin","children":[{"name":"map-ec2-tags-to-node-labels","path":"modules/eks-scripts/bin/map-ec2-tags-to-node-labels","sha":"5518b99c1427110c77b6ff3d2c8ef525407da15c"},{"name":"map_ec2_tags_to_node_labels.py","path":"modules/eks-scripts/bin/map_ec2_tags_to_node_labels.py","sha":"f75ad19587e95b2bd8924125ea2a1a697154909f"}]},{"name":"dev_requirements.txt","path":"modules/eks-scripts/dev_requirements.txt","sha":"f56f9d1629a85734fe16ed70f00f36b830cd97c9"},{"name":"install.sh","path":"modules/eks-scripts/install.sh","sha":"9bcc8f9f983a6304fd092c044b19b74ee0200cc1"},{"name":"requirements.txt","path":"modules/eks-scripts/requirements.txt","sha":"d0d331dd2b1483f8dcfd833d2e1d4d6220a4111a"}]},{"name":"eks-vpc-tags","children":[{"name":"README.md","path":"modules/eks-vpc-tags/README.md","sha":"b53e923baaa79718b55a272158ff9b710871a6ce"},{"name":"main.tf","path":"modules/eks-vpc-tags/main.tf","sha":"0de63bf873ca9c5020bdcf394094a00b1f215380"},{"name":"outputs.tf","path":"modules/eks-vpc-tags/outputs.tf","sha":"0ef2787cfd02ea8668c687302b1929618079a0b2"},{"name":"variables.tf","path":"modules/eks-vpc-tags/variables.tf","sha":"a6e332e9da4e473e1e42b1ca6c7b0ba139a77cfb"}]}]},{"name":"renovate.json","path":"renovate.json","sha":"39a2b6e9a55b8aaa96d0ee0e1c8f956c5c662e75"},{"name":"rfc","children":[{"name":"shipping-logs-to-cloudwatch.md","path":"rfc/shipping-logs-to-cloudwatch.md","sha":"77d230b88e3b760140d0e2e2b8b54fd13698ca2e"}]},{"name":"setup.cfg","path":"setup.cfg","sha":"981bc2bfd0b35029438d56c6d862a7f1519b8fe6"},{"name":"terraform-cloud-enterprise-private-module-registry-placeholder.tf","path":"terraform-cloud-enterprise-private-module-registry-placeholder.tf","sha":"ae586c0fe830819580e1009d41a9074f16e65bed"},{"name":"test","children":[{"name":"README.md","path":"test/README.md","sha":"f020dc40af74a4deed3b1530e067d79e7b5e3812"},{"name":"eks_cluster_drain_test.go","path":"test/eks_cluster_drain_test.go","sha":"62460b5f6e402b06a84331c8cb9e891abb567bc2"},{"name":"eks_cluster_integration_test.go","path":"test/eks_cluster_integration_test.go","sha":"7c083285e53b74682c143dee24df25119d8003d5"},{"name":"eks_cluster_karpenter_test.go","path":"test/eks_cluster_karpenter_test.go","sha":"47d983567c9547267676fabeb822ae346ca555ba"},{"name":"eks_cluster_managed_workers_test.go","path":"test/eks_cluster_managed_workers_test.go","sha":"db216be8c1e8cda05044d6af37b65f188d4e10c3"},{"name":"eks_cluster_test_helpers.go","path":"test/eks_cluster_test_helpers.go","sha":"b93b58b8b61d639cd78f62b3e2453183f570c798"},{"name":"eks_cluster_upgrade_test.go","path":"test/eks_cluster_upgrade_test.go","sha":"4f8cccffe1f4b60de2742f430e6555522006e4e6"},{"name":"eks_cluster_with_auth_merger_test.go","path":"test/eks_cluster_with_auth_merger_test.go","sha":"f08e71f96f87e4b1c696158bbf589b939bf799e0"},{"name":"eks_cluster_with_iam_role_test.go","path":"test/eks_cluster_with_iam_role_test.go","sha":"76ccb120ad4c880fd352cc229691f8fabee5fc6b"},{"name":"eks_cluster_with_supporting_services_test.go","path":"test/eks_cluster_with_supporting_services_test.go","sha":"a382dd1c03c2bff947ccb62fc5e3860fd5aacc7b"},{"name":"eks_cluster_workers_optional_test.go","path":"test/eks_cluster_workers_optional_test.go","sha":"9c1398c1cd8ebe01f1d8f36349a6512f7f25171c"},{"name":"eks_envelope_encryption_test.go","path":"test/eks_envelope_encryption_test.go","sha":"a3a3e188ca2620e2fef831ed1732915cb8b24f32"},{"name":"eks_fargate_cluster_disable_public_endpoint_test.go","path":"test/eks_fargate_cluster_disable_public_endpoint_test.go","sha":"c8f8795570e5c8d9e22e5e27b41750ceb33a1332"},{"name":"eks_fargate_cluster_irsa_test.go","path":"test/eks_fargate_cluster_irsa_test.go","sha":"6199b0f6e7c7f9f5d8bc4ac77ea1ebed6e3a3479"},{"name":"eks_fargate_cluster_private_access_test.go","path":"test/eks_fargate_cluster_private_access_test.go","sha":"f9558dcf1c832616082a278cbe0e2f849ebed026"},{"name":"eks_fargate_cluster_public_access_cidr_test.go","path":"test/eks_fargate_cluster_public_access_cidr_test.go","sha":"0108e317220d505d8f8ec8eff94372b278ac425b"},{"name":"eks_fargate_cluster_test.go","path":"test/eks_fargate_cluster_test.go","sha":"697588af6d7372a17adc5d967fa22362d4c3f4bb"},{"name":"eks_fargate_cluster_with_supporting_services_test.go","path":"test/eks_fargate_cluster_with_supporting_services_test.go","sha":"6e637c902f5ea41e029d45e0c92bfacbc4e6c0fd"},{"name":"eks_mixed_cluster_dns_test.go","path":"test/eks_mixed_cluster_dns_test.go","sha":"069332615ab046026f91262ebfb3715786132895"},{"name":"errors.go","path":"test/errors.go","sha":"be062fe0205ff82db8183d0fde639aa1883013ad"},{"name":"go.mod","path":"test/go.mod","sha":"b5c97be98d7df0c954725f17373d47fb47fdcedc"},{"name":"go.sum","path":"test/go.sum","sha":"fa3b95e8cb69290cba0562e7ecfb163249128cb1"},{"name":"kubefixtures","children":[{"name":"autoscaler-test-pods-deployment.yml","path":"test/kubefixtures/autoscaler-test-pods-deployment.yml","sha":"b2d94c4bfa729b639290ee21629c19ca6ea694ee"},{"name":"eks-irsa-test.yml","path":"test/kubefixtures/eks-irsa-test.yml","sha":"db5439cf6d38873dbae71daa4197d6947990a94a"},{"name":"eks-k8s-role-mapping-test-role.yml","path":"test/kubefixtures/eks-k8s-role-mapping-test-role.yml","sha":"ede7587308d2a4ecf55042b05800099c43f3af7d"},{"name":"kube-system-sa-admin-binding.yml","path":"test/kubefixtures/kube-system-sa-admin-binding.yml","sha":"282d406512102cbe54e952575f26e7e0fbb2aa9a"},{"name":"nginx-deployment.yml","path":"test/kubefixtures/nginx-deployment.yml","sha":"a58866e59c113635af24982cfb0b530f0c416af0"},{"name":"robust-nginx-deployment.yml","path":"test/kubefixtures/robust-nginx-deployment.yml","sha":"b5307c53b4a00e90055d172373a23638264ff1ea"}]},{"name":"script_tests","children":[{"name":"executor.sh","path":"test/script_tests/executor.sh","sha":"458c534996fbc045081d1cfae521c090f6787a7f"},{"name":"requirements.txt","path":"test/script_tests/requirements.txt","sha":"06396f7e5a86d69eece77d50a8abeb668b32b6c5"},{"name":"test_map_ec2_tags_to_node_labels.py","path":"test/script_tests/test_map_ec2_tags_to_node_labels.py","sha":"6b88e92ac569e20ece5a35c74f053a08839e4638"},{"name":"tox.ini","path":"test/script_tests/tox.ini","sha":"8f35694ace0ae33f6935e5e779bed26d7ccdd9e8"}]},{"name":"terratest_options.go","path":"test/terratest_options.go","sha":"43a391b77d3fd48846f73c7067589c439a2424f9"},{"name":"test_debug_helpers.go","path":"test/test_debug_helpers.go","sha":"c71a7a9d5b68f0f59d2518496d9f5893206b5e22"},{"name":"test_helpers.go","path":"test/test_helpers.go","sha":"1eb9c6089b41d234929d0b5c7050b389a2fb954d"},{"name":"upgrades","children":[{"name":"upgrade_test.go","path":"test/upgrades/upgrade_test.go","sha":"03dcad4d2bab1add4c73ff1053a3a8dd61aa9f2c"}]},{"name":"validation","children":[{"name":"validate_all_modules_and_examples_test.go","path":"test/validation/validate_all_modules_and_examples_test.go","sha":"74c928d0cbc2914e5cd708277bd857cb2375b660"}]}]}]},"detailsContent":"<h1 class=\"preview__body--title\" id=\"getting-started\">Getting Started</h1><div class=\"preview__body--border\"></div><p>The <code>terraform-aws-eks</code> repo contains a collection of Terraform modules for deploying an AWS EKS cluster and additional supporting resources. The primary tool that is used for deploying these resources is Terraform. However, there are a number of additional tools that are required to work with the <code>terraform-aws-eks</code> repo (and the Gruntwork Library in general). All tools listed below should be installed and properly configured prior to attempting to deploy any of the modules within the <code>terraform-aws-eks</code> repo.</p>\n<table>\n<thead>\n<tr>\n<th>Tool</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><a href=\"https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli\" class=\"preview__body--description--blue\" target=\"_blank\">Terraform</a></td>\n<td>Recommended to be installed and managed via <a href=\"https://github.com/tfutils/tfenv\" class=\"preview__body--description--blue\" target=\"_blank\">tfenv</a> to easily install multiple versions of Terraform and easily switch between versions as needed.</td>\n</tr>\n<tr>\n<td><a href=\"https://terragrunt.gruntwork.io/\" class=\"preview__body--description--blue\" target=\"_blank\">Terragrunt</a></td>\n<td>Only needed if following the Terragrunt workflow.</td>\n</tr>\n<tr>\n<td><a href=\"https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html\" class=\"preview__body--description--blue\" target=\"_blank\">AWS CLI v2</a></td>\n<td>Required tool for using Terraform with AWS.</td>\n</tr>\n<tr>\n<td><strong>Python</strong></td>\n<td>Recommended to be installed and managed via <a href=\"https://realpython.com/intro-to-pyenv/\" class=\"preview__body--description--blue\" target=\"_blank\">pyenv</a> to easily install multiple versions of Python and easily switch between versions as needed.</td>\n</tr>\n<tr>\n<td><a href=\"/repos/kubergrunt\" class=\"preview__body--description--blue\">kubergrunt</a></td>\n<td>EKS module has dependencies on <code>kubergrunt</code>. Will be installed automatically if not present on system, but it is better to have this pre-installed to avoid any potential issues during Terraform runs.</td>\n</tr>\n<tr>\n<td><a href=\"https://developer.hashicorp.com/packer/tutorials/docker-get-started/get-started-install-cli\" class=\"preview__body--description--blue\" target=\"_blank\">Packer</a></td>\n<td>Packer is used for building the Gruntwork EKS Worker AMI.</td>\n</tr>\n</tbody>\n</table>\n<hr>\n<h2 class=\"preview__body--subtitle\" id=\"tool-configuration\">Tool Configuration</h2>\n<p>Once each of the recommended tools are installed, it is important to have each of them properly configured. The most common configuration issues arise from the AWS CLI and Python. Below are configuration considerations and recommendations on the AWS CLI and Python.</p>\n<h4 id=\"aws-cli\">AWS CLI</h4>\n<p>There are <a href=\"https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html\" class=\"preview__body--description--blue\" target=\"_blank\">multiple methods</a> for configuring the AWS CLI. A recommended approach is to configure the AWS CLI using <a href=\"https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-using-profiles\" class=\"preview__body--description--blue\" target=\"_blank\">named profiles</a> for each of the environments you will be working with, then setting <a href=\"https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html\" class=\"preview__body--description--blue\" target=\"_blank\">environment variables</a> that specify the appropriate profile based on the environment you are executing against.</p>\n<p>This is a <a href=\"https://blog.gruntwork.io/a-comprehensive-guide-to-authenticating-to-aws-on-the-command-line-63656a686799\" class=\"preview__body--description--blue\" target=\"_blank\">great blog</a> on securing and authenticating with the AWS CLI for reference.</p>\n<h4 id=\"example-aws-cli-configuration-with-iam-user-and-iam-role\">Example AWS CLI configuration with IAM User and IAM Role</h4>\n<pre><span class=\"hljs-comment\"># ~/.aws/config</span>\n[profile my-user]\nregion = us-east-<span class=\"hljs-number\">1</span>\n<span class=\"hljs-keyword\">output</span> = json\ncli_pager =\n\n[profile my-assumed-role]\nrole_arn = arn:aws:iam::<span class=\"hljs-number\">1234567891011</span>:role/MyRole\nsource_profile = my-user\n<span class=\"hljs-keyword\">output</span> = json\nregion = us-east-<span class=\"hljs-number\">1</span>\ncli_pager =\n\n<span class=\"hljs-comment\"># ~/.aws/credentials</span>\n[my-user]\naws_access_key_id = ABCDEFJ1234567\naws_secret_access_key = asdfasdfadsfasdfasdfasdfadsf\n\n<span class=\"hljs-comment\"># Environment variables set on machine</span>\nAWS_PROFILE=my-assumed-role\n\n<span class=\"hljs-comment\"># Make sure to unset AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY</span>\n</pre>\n<h4 id=\"complimentary-tools\">Complimentary Tools</h4>\n<ul>\n<li><a href=\"https://github.com/99designs/aws-vault\" class=\"preview__body--description--blue\" target=\"_blank\">aws-vault</a> is a great tool for securely storing credentials locally on the machine and is an alternative to using local configuration files which store credentials in plain text.</li>\n</ul>\n<h4 id=\"python\">Python</h4>\n<p>Many systems come with Python pre-installed but the system installed version isn't recommended to be used outside of the core system function. It is typically better to explicitly install the needed version(s) of Python in addition to the system pre-installed version. Using a tool like <a href=\"https://realpython.com/intro-to-pyenv/\" class=\"preview__body--description--blue\" target=\"_blank\">pyenv</a> can help proper installation of Python, including multiple versions, and is recommended. Python 3 is a requirement for the Gruntwork Library and <code>python</code> should resolve to Python 3, not Python 2.</p>\n<h4 id=\"common-issues\">Common Issues</h4>\n<ul>\n<li>Python not found on PATH</li>\n<li><code>python</code> command resolves to Python 2 and not Python 3</li>\n</ul>\n<h4 id=\"common-resolutions\">Common Resolutions</h4>\n<ul>\n<li><a href=\"https://realpython.com/add-python-to-path/\" class=\"preview__body--description--blue\" target=\"_blank\">Add Python to PATH</a></li>\n<li><a href=\"/repos/v0.61.0/terraform-aws-eks\" class=\"preview__body--description--blue\">Issue 449</a></li>\n</ul>\n<hr>\n<h2 class=\"preview__body--subtitle\" id=\"eks-worker-node-ami\">EKS Worker Node AMI</h2>\n<p>An important, and often missed, pre-requisite for deploying an AWS EKS cluster with the <code>terraform-aws-eks</code> repo/module, is building the EKS Worker Node AMI. The <code>terraform-aws-eks</code> repo/module was not designed to work with off-the-shelf AMIs provided by AWS or the broader community. Support for this may come at a later date, but as of now building the Gruntwork EKS Worker Node AMI is a pre-requisite requirement for running EKS via the <code>terraform-aws-eks</code> repo/module. The exception to this is if running a Fargate only EKS Cluster. The reason for this requirement is there are a number of additional components built into the AMI as dependencies that provide additional hardening to the Worker Node and provide additional mechanisms for managing the lifecycle of the EKS Worker Node itself.</p>\n<p>The Gruntwork Worker Node AMI is built via a provided <a href=\"https://www.packer.io/\" class=\"preview__body--description--blue\" target=\"_blank\">Packer</a> template. The template can be found <a href=\"/repos/v0.61.0/terraform-aws-eks/examples/eks-cluster-with-supporting-services/packer\" class=\"preview__body--description--blue\">here</a>. Instructions on how to build the AMI are provided in the README.</p>\n<blockquote>\n<p>NOTE: When building the AMI from the template, ensure that the input variables provided are appropriate for the intended use. Such as the AWS Region the AMI should be available in and the version of Kubernetes the EKS cluster will be running.</p>\n</blockquote>\n","repoName":"terraform-aws-eks","repoRef":"v0.65.5","serviceDescriptor":{"serviceName":"EC2 Kubernetes Service (EKS) Cluster","serviceRepoName":"terraform-aws-eks","serviceRepoOrg":"gruntwork-io","cloudProviders":["aws"],"description":"Deploy a Kubernetes cluster on top of Amazon EC2 Kubernetes Service (EKS).","imageUrl":"eks.png","licenseType":"subscriber","technologies":["Terraform","Python","Bash"],"compliance":[],"tags":[""]},"serviceCategoryName":"Docker orchestration","fileName":"getting-started.md","filePath":"/getting-started.md","title":"Repo Browser: EC2 Kubernetes Service (EKS) Cluster","description":"Browse the repos in the Gruntwork Infrastructure as Code Library."}