Skip to content

Desenvolvimento

Vinicius Aguiar edited this page May 21, 2024 · 1 revision

Caso deseja contribuir neste projeto, siga as sessões desta página para melhor compreensão e configuração do ambiente de desenvolvimento.

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

Logo abaixo está a estrutura do projeto em seu primeiro nível, estão organizados por ferramentas utilizadas e, os diretórios serão detalhados em suas respectivas páginas. Acesse através do menu lateral.

.
├── .github/                    # Diretório com automações do ambiente via GitHub Actions
├── k8s/                        # Diretório por namespace (aplicação) disponível no k8s e seus manifestos
├── terraform/                  # Diretório por módulos utilizados do projeto via Terraform
├── utils/                      # Diretório com scripts úteis para o projeto
├── .gitignore                  # Arquivo de configuração do git (Arquivos/Diretórios não versionados)
├── .mergify.yaml               # Arquivo de configuração do mergify
├── .pre-commit-config.yaml     # Arquivo de configuração do pre-commit
├── Makefile                    # Arquivo de alias de comandos úteis para o projeto
├── README.md                   # Arquivo de texto com a descrição inicial do projeto
└── docker-compose.yaml         # Arquivo de configuração do Docker Compose para apoiar as tarefas no ambiente de desenvolvimento

Procedimentos

Terraform

Passo a passo da configuração inicial
  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 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.

    bd_terraform    | Initializing modules...
    bd_terraform    |
    bd_terraform    | Initializing the backend...
    bd_terraform    |
    bd_terraform    | Initializing provider plugins...
    bd_terraform    | - terraform.io/builtin/terraform is built in to Terraform
    bd_terraform    | - Reusing previous version of hashicorp/google from the dependency lock file
    bd_terraform    | - Using previously-installed hashicorp/google v3.89.0
    bd_terraform    |
    bd_terraform    | Terraform has been successfully initialized!
    bd_terraform    |
    bd_terraform    | You may now begin working with Terraform. Try running "terraform plan" to see
    bd_terraform    | any changes that are required for your infrastructure. All Terraform commands
    bd_terraform    | should now work.
    bd_terraform    |
    bd_terraform    | If you ever set or change modules or backend configuration for Terraform,
    bd_terraform    | rerun this command to reinitialize your working directory. If you forget, other
    bd_terraform    | commands will detect it and remind you to do so if necessary.
    

Kubernetes

Passo a passo da configuração inicial
  1. Instale e configure a gcloud cli
  2. Instale e configure o kubectl