Development - basedosdados/iac GitHub Wiki
Caso deseja contribuir neste projeto, siga as sessões desta página para melhor compreensão e configuração do ambiente de desenvolvimento.
Conteúdo:
- Docker
- Docker Compose
- kubectl
- Credenciais:
- Terraform: Uma conta de serviço do ambiente GCP com o papel de "Editor"
- Kubernetes: Utilizada para a gestão do cluster
Logo abaixo está a estrutura do projeto em seu primeiro level, estão organizados por ferramentas utilizadas e, os diretórios serão detalhados em suas respectivas páginas. Acesse através do menu lateral.
.
├── docker-compose.yaml # Arquivo de configuração do Docker Compose para apoiar as tarefas no ambiente de desenvolvimento
├── .github/ # Diretório com automações do ambiente via GitHub Actions
├── .gitignore # Arquivo de configuração do git (Arquivos/Diretórios não versionados)
├── k8s/ # Diretório por namespace (aplicação) disponível no k8s e seus manifestos
├── Makefile # Arquivo de alias de comandos úteis para o projeto
├── .mergify.yaml # Arquivo de configuração do mergify
├── .pre-commit-config.yaml # Arquivo de configuração do pre-commit
├── README.md # Descrição inicial do projeto
├── terraform/ # Diretório por módulos utilizados do projeto via Terraform
└── utils # Diretório com scripts úteis para o projeto
Passo a passo para realizar a configuração necessária para a utilização do Terraform:
-
Adicione a credencial do Terraform dentro do diretório
terraform
. -
Note a existência do arquivo
.env.example
dentro do diretórioterraform
. Faça uma cópia do mesmo para um novo arquivo de nome.env
, substituindo os valores de acordo com o ambiente de desenvolvimento.-
Por padrão o ambiente da Base dos Dados carrega as seguintes configurações:
GOOGLE_APPLICATION_CREDENTIALS=<nome_da_conta_de_serviço_do_terraform.json> TF_VAR_bucket_name=terraform-data-basedosdados-dev TF_VAR_project_id=basedosdados-dev
No caso do desenvolvimento local é criado um container docker que faz uso do arquivo
.env
, baseado na imagem do Terraform. Assim não existe a necessidade de configurar o Terraform em seu ambiente local e controlamos a versão utilizada. -
-
Execute
make docker-up
para criar o container docker e validar as configurações.O alias em questão executa o comando
docker-compose up
.Este e outros alias estão contidos no arquivo
Makefile
e podem ser executados através do comandomake <alias>
. Consulte o arquivoMakefile
para mais informações.Caso a saída seja semelhante ao exemplo abaixo, a configuração foi realizada com sucesso.
bdd_terraform | Initializing modules... bdd_terraform | bdd_terraform | Initializing the backend... bdd_terraform | bdd_terraform | Initializing provider plugins... bdd_terraform | - terraform.io/builtin/terraform is built in to Terraform bdd_terraform | - Reusing previous version of hashicorp/google from the dependency lock file bdd_terraform | - Using previously-installed hashicorp/google v3.89.0 bdd_terraform | bdd_terraform | Terraform has been successfully initialized! bdd_terraform | bdd_terraform | You may now begin working with Terraform. Try running "terraform plan" to see bdd_terraform | any changes that are required for your infrastructure. All Terraform commands bdd_terraform | should now work. bdd_terraform | bdd_terraform | If you ever set or change modules or backend configuration for Terraform, bdd_terraform | rerun this command to reinitialize your working directory. If you forget, other bdd_terraform | commands will detect it and remind you to do so if necessary.
Para interagir com o cluster k8s em questão, além das permissões necessárias, é necessário ter o kubectl instalado. Siga os passos conforme a documentação oficial do Google.