Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dellabeneta/terraform-aws-eks
Este é um "super-módulo" para provisionamento de um Cluster EKS completo na AWS. Ele considera VPC, Nodegroup, Load Balancer Controller etc.
https://github.com/dellabeneta/terraform-aws-eks
aws eks helm-charts kubernetes terraform
Last synced: 24 days ago
JSON representation
Este é um "super-módulo" para provisionamento de um Cluster EKS completo na AWS. Ele considera VPC, Nodegroup, Load Balancer Controller etc.
- Host: GitHub
- URL: https://github.com/dellabeneta/terraform-aws-eks
- Owner: dellabeneta
- License: mit
- Created: 2024-02-20T20:31:13.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-03-27T22:57:44.000Z (10 months ago)
- Last Synced: 2024-12-14T08:16:05.639Z (24 days ago)
- Topics: aws, eks, helm-charts, kubernetes, terraform
- Language: HCL
- Homepage: https://linktr.ee/dellabeneta
- Size: 103 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Bem-vindo(a) ao 'Super-Módulo' para Elastic Kubernetes Service.
Este é um código Terraform completo para provisionamento de um Cluster EKS na AWS. Ele contempla Rede, um Node Group, Policies, Roles, Load Balancer Controller e demais configurações necessárias para criação de um cluster 100% operacional. Espero que aproveitem e façam bom uso dessa estrutura.
Todo trabalho não teria sido possível sem o treinamento do [Mateus Muller](https://github.com/mateusmuller), que indico para todos que buscam entender mais sobre módulos no Terraform (https://www.udemy.com/course/terraform-para-aws).
Se precisar, pode contatar no Linkedin em: https://www.linkedin.com/in/mdellabeneta/, ficaria muito feliz com o seu contato e contribuição.
Com isso posto, vamos falar um pouco mais do que temos por aqui. Observe a saída do comando tree em meu terminal, para uma noção macro da estrutura de diretórios e arquivos:
```
della@desklin:~/projetos$ tree terraform-supermodule/
terraform-supermodule/
├── LICENSE
├── modules
│ ├── cluster
│ │ ├── cluster.tf
│ │ ├── iam.tf
│ │ ├── oidc.tf
│ │ ├── output.tf
│ │ ├── README.md
│ │ ├── sg-rule.tf
│ │ └── variables.tf
│ ├── loadbalancer
│ │ ├── data.tf
│ │ ├── helm.tf
│ │ ├── iam_policy.json
│ │ ├── iam.tf
│ │ ├── locals.tf
│ │ ├── policy.tf
│ │ ├── README.md
│ │ ├── serviceaccount.tf
│ │ └── variables.tf
│ ├── network
│ │ ├── igw.tf
│ │ ├── ngw.tf
│ │ ├── output.tf
│ │ ├── private.tf
│ │ ├── public.tf
│ │ ├── README.md
│ │ ├── region.tf
│ │ ├── variables.tf
│ │ └── vpc.tf
│ └── nodegroup
│ ├── iam.tf
│ ├── nodegroup.tf
│ ├── README.md
│ └── variables.tf
├── modules.tf
├── provider.tf
├── README.md
└── variables.tf6 directories, 34 files
```Nas tabelas abaixo (geradas com o [pre-commit](https://pre-commit.com/) e [terraform-docs](https://terraform-docs.io/)), podemos ver maiores detalhes como dependências, versionamento utilizado e os INPUTS que são **requisitos** para a utilização do projeto.
## Requirements
| Name | Version |
|------|---------|
| [aws](#requirement\_aws) | 5.37.0 |
| [helm](#requirement\_helm) | 2.12.1 |
| [kubernetes](#requirement\_kubernetes) | 2.26.0 |## Providers
No providers.
## Modules
| Name | Source | Version |
|------|--------|---------|
| [eks\_cluster](#module\_eks\_cluster) | ./modules/cluster | n/a |
| [eks\_load\_balancer](#module\_eks\_load\_balancer) | ./modules/loadbalancer | n/a |
| [eks\_network](#module\_eks\_network) | ./modules/network | n/a |
| [eks\_node\_group](#module\_eks\_node\_group) | ./modules/nodegroup | n/a |## Resources
No resources.
## Inputs
| Name | Description | Type | Default | Required |
|------|-------------|------|---------|:--------:|
| [aws\_profile](#input\_aws\_profile) | Nome do profile configurado na AWS CLI localmente em seu PC | `string` | n/a | yes |
| [cidr\_block](#input\_cidr\_block) | IP CIDR que sera usado na VPC | `string` | n/a | yes |
| [desired\_size](#input\_desired\_size) | Valor desejado de Nodes | `number` | n/a | yes |
| [eks\_version](#input\_eks\_version) | Versao do EKS que sera provisionada na AWS | `string` | n/a | yes |
| [instance\_types](#input\_instance\_types) | Tipo da instancia que sera usada para criacao dos Nodes | `string` | n/a | yes |
| [max\_size](#input\_max\_size) | Valor maximo de Nodes | `number` | n/a | yes |
| [min\_size](#input\_min\_size) | Valor minimo de Nodes | `number` | n/a | yes |
| [project\_name](#input\_project\_name) | Nome do projeto que pode ser usado nas tags de nome (Name tag) | `string` | n/a | yes |
| [region](#input\_region) | Regiao da AWS onde o projeto sera provisionado | `string` | n/a | yes |
| [tags](#input\_tags) | Tags para serem adicionadas aos recursos | `map(any)` | n/a | yes |## Outputs
No outputs.
Veja um exemplo de um "main.tf" que você poderia criar para utilizar este projeto de forma rápida, respeitando as variáveis, inputs necessários e com backend local:
```
module "eks" {
source = "[email protected]:dellabeneta/terraform-supermodule.git"# Variáveis necessárias (INPUTS)
aws_profile = "SEU_PROFILE"
region = "REGIÃO"
project_name = "NOME_DO_PROJETO"
eks_version = "VERSÃO_DO_EKS"
cidr_block = "CIDR_PARA_VPC" --> de acordo com as configurações estabelecidas no módulo de VPC, a rede deve ser necessariamente definida como /16.
instance_types = "SIZE_DA_EC2"
desired_size = "1"
min_size = "1"
max_size = "1"
# As tags também são variáveis, do tipo map(). Opcionalmente,
# pode ser criado um arquivo 'locals.tags', para organizar
# melhor a passagem dos valores. Neste exemplo, não optei por isso.tags = {
Departamento = "Devops"
Organizacao = "Dellabeneta S/A"
Projeto = "Automatização com IaC Cluster EKS"
Ambiente = "Desenvolvimento"
}
}
```https://linktr.ee/dellabeneta