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:


Requisitos

  • 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

Estrutura do Projeto

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

Procedimentos

Terraform

Passo a passo para realizar a configuração necessária para a utilização do Terraform:
  1. Adicione a credencial do Terraform dentro do diretório terraform.

  2. Note a existência do arquivo .env.example dentro do diretório terraform. 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.

  3. 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 comando make <alias>. Consulte o arquivo Makefile 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.
    

Kubernetes

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.

⚠️ **GitHub.com Fallback** ⚠️