Coder Social home page Coder Social logo

ifmt-devops-amc-kong-gateway's Introduction

Projeto para conclusão da matéria Arquitetura de Microserviços e Containers @ IFMT - 2023/2024

Utilizando Kong Gateway como middleare para comunicação com as API's

Integrantes:

  • Bruno de Oliveira Figueiredo
  • Edinei Nissola
  • Eduardo Ormond dos Santos
  • Francisco Jose Prata Vidal
  • Jefferson Gonçalves de Oliveira Reis

Tecnologias utlizadas:

Estrutura de Pastas

repository
│
├── app
│   │
|   ├── .devcontainer
|   |   ├── devcontainer.json         [Arquivo de configuração da extensão do VSC]
|   |   └── docker-compose.yml              [Compose para subir o ambiente de dev]
|   |
|   │
|   ├── backend
|   │   └── database               [Tabelas de Dados do Projeto - Simple JSObject]
|   ├── express.server.ts              [Backend server com o conector do Keycloak]
|   ├── ...
|   │
│   │
|   └── frontend
|       └── src
|           └── app
|               ├── consumer
|               │   ├── devops.service.ts     [Service - retorna dados do backend]
|               │   ├── generic.model.ts       [Model - mapeia dados dos services]
|               │   └── ia.service.ts         [Service - retorna dados do backend]
|               ├── keycloak
|               │   ├── auth.guard.ts      [KeycloakAuthGuard - proteger as rotas]
|               │   ├── auth.service.ts   [KeycloakService - servicos do keycloak]
|               │   └── keycloak-service-factory.ts   [Config - realm do keycloak]
|               ├── pages
|               ├── app.config.ts    [Config - bind factory e add providers a app]     
|               ├── app.routes.ts     [Rote - restringe as rotas com o auth.guard]
|               └── ...
|
|
├─ kong-api
|  ├── kong-gateway.postman_collection.json      [Collecttion - Import no Postman]
|  ├── rate-limiting.sh                        [Test - Realiza várias requisições]
|  └── requests.http                        [REST Client - Alternativa ao Postman]  
|
|
├── build.sh                                        [Script para criar o ambiente]
└── docker-compose.yml

Levantando o Ambiente

Pré-requisitos

Você precisará ter instalado na sua maquina:

  • Docker
  • Visual Studio Code
    • [Extensão] Dev Container - Microsoft
    • [Extensão] REST Client - Huachao Mao ou Postman/Insomnia

Iniciando os containers

  1. Execute o script "./build.sh"

    [!ATENÇÃO!] - O script deverá ser executado apenas na primeira vez, pois ele irá criar os volumes, rede e executar o migrations do Kong Gateway

    • Executar novamente o script irá apagar o ambiente e criá-lo novamente.
  2. Iniciando os containers com o docker compose

    docker compose up -d
    
  3. Abra a pasta "./app/" no Visual Studio Code

  4. Pressino <F1> e busque a ação: "Dev Containers: Reopen in Container"

  5. Abra dois terminais dentro do Visual Studio Code

    5.1 Será preciso alterar dois arquivos para apontar para o ip da sua maquina local

    • backend/express.server.ts (linha 16)
    • frontend/src/app/keycloak/keycloak-service-factory.ts (linha 7)

    5.2 Iniciando o ambiente

    No primeiro entre na pasta "backend", instale as dependencias e start:

    cd backend 
    npm install 
    npm start
    
    • No segundo repita o processo mas na pasta "frontend":
    cd backend 
    npm install 
    npm start
    
  6. Utilize os Links na sessão abaixo(Mapeamento de Portas) para acessar os serviços

  7. Através do Kong Manager manipule os serviços, rotas e plugins

    • Está disponível aqui no projeto chamadas a API para administrar o kong em:
      • Postman Collection - ./kong-api/kong-gateway.postman_collection.json
      • REST Client (need VSCode Plugin) - ./kong-api/requests.http

Mapeamento de Portas

# Host Port Container Port Obs
kong-db-postgres (5432)
keycloak-db-postgres (5432)
keycloak 8081 8080 Keycloak
pgadmin 8082 80 pgadmin
kong-gateway 8000 8000 Roteamento HTTP
8443 8443 Roteamento HTTPS
8001 8001 Admin API
8444 8444 Admin API (HTTPS)
8002 8002 Kong Manager
8445 8445 Kong Manager (HTTPS)
8003 8003
8004 8004
# Host Port Container Port Obs
backend 9090 9090 API NodeJS + Express
frontend 4200 4200 Angular App

Plugins

Material de apoio

Links de Referência

Angular and Express vs KeyCloak

Outros API Gateway/Manager

ifmt-devops-amc-kong-gateway's People

Contributors

bofigueiredo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.