- Descrição do projeto
- Pré-requisitos
- Tecnologias
- Iniciando o uso deste projeto
- Arquitetura do projeto
- Banco de dados
- Sobre padrões no versionamento do código
Implementação do Backstage demonstrando a utilização das core features:
- Backstage TechDocs
- Backstage Software catalog
- Backstage Kubernetes
- Backstage Search
- Backstage Software Templates
Como pré requisitos temos os seguintes itens:
- Minikube
- Docker
- NodeJS
- ArgoCD
Name | Where to get? |
---|---|
GITHUB_TOKEN | Gere um novo personal access token em GIthub Secure page |
GITHUB_CLIENT_ID | Obtenha em Github app ID |
GITHUB_CLIENT_SECRET | Abra um ticker com os owners da DbServer |
SONARQUBE_TOKEN | Crie um Sonarqube token usando isso documentation |
Todos os ambientes acima de DEVEM
ser exportados em seu contexto bash como abaixo:
# .bashrc or .zshrc
export GITHUB_TOKEN='YOUR-TOKEN-HERE'
export GITHUB_CLIENT_ID='YOUR-TOKEN-HERE'
export GITHUB_CLIENT_SECRET='YOUR-TOKEN-HERE'
export SONARQUBE_TOKEN='YOUR-TOKEN-HERE'
Você precisará criar uma entrada em seu /etc/hosts
para especificar backstage.local
como abaixo:
# /etc/hosts
# ...
127.0.0.1 backstage.local
#...
As seguintes ferramentas foram usadas na construção do projeto:
git clone [email protected]:dbserver/internal-developer-platform.git
cd internal-developer-platform
make install-dependencies
make run-infra
make docker-techdocs
O servidor do backstage iniciará na porta:7007 - acesse http://localhost:7007
Para acessar a TechDocs acesse o link abaixo;
http://localhost:8000
A arquitetura do projeto é dividida em aplicações com responsabilidades distintas:
A aplicação é apartada e de acordo com suas customizações deve-se buildar a imagem e alocar recursos conforme a demanda, seu frontend e backend são dividos em pastas no repositório src/backstage_io, incluindo seus plugins e tudo pertinente ao Projeto Backstage
Visando orquestrar os serviços de maneira homogênea o ArgoCD nos dará flexibilidade necessária diminuindo esforço administrativo.
A responsabilidade dessa camada é limitada às operações Criar, Recuperar, Atualizar e Excluir (CRUD) em uma fonte de dados, que geralmente é um banco de dados relacional ou não relacional. As classes de repositório geralmente são colocadas em um pacote de repositório.
- Visando abstrair o processo de infraestrutura foi criado no Makefile na raiz do projeto o processo de instalação e instanciação do banco da dados PostgreSQL
# Para sistemas unix
make docker-postgres
docker-compose --env-file ./global-variables.env --file ./src/postgres/docker-compose.yml up -d --build -V
No comando dado acima,
- postgres-idp é o nome do Docker Container.
- --env-file Contém as variáveis necessárias para deployment
- -p 5432:5432 é o parâmetro que estabelece uma conexão entre a porta do host e a porta do contêiner do Docker. Nesse caso, ambas as portas são fornecidas como 5432, o que indica que as solicitações enviadas às portas do host serão redirecionadas automaticamente para a porta do contêiner do Docker. Além disso, 5432 também é a mesma porta onde o PostgreSQL estará aceitando requisições do cliente.
- --file é o parâmetro que invoca o arquivo yaml do docker compose para orquestrar seus containers.
docker ps --filter "name=postgres-idp"
Deve ser exibido algo similar o abaixo
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f33be708db53 postgres "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 0.0.0.0:5432->5432/tcp postgres-idp
Para gerenciar, executar scripts sugerimos a utilização do DBeaver
É desejado que seja utilizado o padrão de Commits Semânticos. Pode entender melhor nesse link