Debe configurar la inicializacion de todas las soluciones
Construir una solucion con el nombre AFORO255.MS.TEST y crear dentro de esta los siguientes proyectos:
- AFORO255.MS.TEST.Security: Responsable del token de acceso
- AFORO255.MS.TEST.Invoice: Responsable de listar las facturas de clientes
- AFORO255.MS.TEST.Pay: Responsable de pagar una factura
- AFORO255.MS.TEST.Transaction: Responsable de listar las transacciones de una factura
- AFORO255.MS.TEST.Gateway: Responsable de enmascarar las rutas del proyecto
- SQL SERVER: Para seguridad.
- POSTGRES: Para las facturas
- MYSQL: Para pagos
- MONGO: Para transacciones
Las bases de datos tendrán estos modelos
- BD: db_security
- CAMPOS:
- id_user int primary key
- username varchar
- password varchar
- BD: db_invoice
- CAMPOS:
- id_invoice int primary key
- amount decimal
- state int
- BD: db_operation
- CAMPOS:
- id_operation int primary key
- id_invoice int
- amount decimal
- date DateTime
- BD: db_transaction
- CAMPOS:
- id ObjectId
- id_transaccion int
- id_invoice int
- amount decimal
- date DateTime
- Una red de Docker llamada: aforo255-test
- Un servicio de configuración centralizada llamado: config-service-test
- Un servicio de colas llamado: bus-service-test
- Un servicio de registro y descubrimiento llamado: consul-service-test
- Un servicio de balanceo llamado: balancer-service-test
- El microservicio de seguridad dockerizado se llamará: app-security
- El microservicio de invoces dockerizado se llamará: app-invoices
- El microservicio de pagos dockerizado se llamará: app-pay
- El microservicio de transacciones dockerizado se llamará: app-transaction
- El Gateway dockerizado se llamará: app-gateway
Todos los servicios deben correr sobre la red aforo255-test
- El microservicio de seguridad debe proporcionar un token de acceso para los microservicios de invoices, pay y transacciones.
- El Gateway debe enmascarar las rutas de los servicios y debe sobrecargar la seguridad, además de enviar la solicitud al balanceador de carga para que este determine a que contenedor enviara la información, según su carga y disponibilidad. Todas las rutas deben trabajarse con el balanceador.
- El microservicio de invoices, debe listar las facturas de clientes y además debe consumir una cola para cambiar el estado de la factura cuando esta se paga a través del microservicio de pago.
- El microservicio de pago debe registrar el pago en su respectiva bd y además debe dejar un mensaje en una cola para actualizar la factura en el microservicio de facturas y además debe dejar un mensaje en una cola para registrar el movimiento en el microservicio de transacciones.
- El microservicio de transacciones debe listar las transacciones de una factura, además debe consumir una cola para obtener las transacciones de pago del microservicio de pago.
- Todos los microservicios deben consumir la cadena de conexión desde el servicio de configuración centralizada.
- Correr los Contenedores de Bases de Datos
docker-compose -f ./docker-compose-databases.yml up -d
- Correr los Contenedores de los servicios
docker-compose -f ./docker-compose-services.yml up -d
- Ingresar a RabbitMQ http://localhost:15672/
username: Mellizo55
password: Mellizo55
- Api Gateway
docker-compose -f docker-compose-gateway.yml up -d
- Ingresar a: http://localhost:8001/consumers/login_fermelli_issuer/jwt/ para obtener el
issuer
para autenticar al usuario.
{
"next": null,
"data": [
{
"key": "ma2kAa5K5Rrf2YWiaiYNvK2yrRjN4Hb9", // este es el issuer
"algorithm": "HS256",
"secret": "Mellizo55Mellizo55",
"id": "8d021185-fc35-4230-960b-505fb15f0610",
"tags": null,
"consumer": {
"id": "b64ddbca-4ff6-599c-bb46-cf1059e1196b"
},
"created_at": 1692088440,
"rsa_public_key": null
}
]
}
y se lo agrega en el archivo appsettings.local
de Security
{
// ...
"jwt": {
"enabled": true,
"issuer": "ma2kAa5K5Rrf2YWiaiYNvK2yrRjN4Hb9",
"audience": "web",
"key": "Mellizo55Mellizo55",
"expiration": "300"
},
// ...
}
al realizar los cambios se debe reiniciar el contenedor de gateway
docker-compose -f docker-compose-gateway.yml down
docker-compose -f docker-compose-gateway.yml up -d
-
Ingresar a: http://localhost:8001/consumers/anonymous_users
-
Para ingresar a Consul: http://localhost:8500/
-
Las instancias de aplicaciones en http://localhost:9998/routes
-
Y para ver la configuraciones desentralizadas: http://localhost:8848/nacos
ingresar con:
username: nacos
password: nacos
- crear el namespace:
fermelli
- y establecer las configuraciones en ese namespace con el DATA ID:
LOCAL