My Stacks for the clients
I will try to make my best effort to have more metrics, trace, logs and information available for the apps of my clients and is really frustrating don't have all tools when i need resolve a production issue.
So, this is my stack and suggestions for the clients when deploying:
- .Net Aspire (Development)
- Aspir8 (Development)
- Docker (for containers)
- Kong Api Gateway
- Seq Data Lust
- Portainer
- Watchtower
- Ngnix Proxy Manager
I will add details for use every tool and library in my stack .
.NET ASPIRE
With the integration of the .net Aspire the microservice development and deployment and have more logs, trace and metrics is more easy to debug and setup the infrastructure of the projects also aspire is not limited to execute docker projects or container is have the possibility to execute .net Framework projects in this case for now is very limited the things that can do from aspire but we can add extension for management in the future, for every person to with begin in Aspire microsoft have a good learning path and documentation and the team is very active in github project:
https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview
ASPIR8 (ASPIRATE)
Great tool for generate from manifest.json builds of aspire this tools is great for make outputs differents like Helms, docker-compose this is example to the easy create a docker compose based in the aspire project:
aspirate generate --output-format compose
if require more information this the link for the tool:
https://prom3theu5.github.io/aspirational-manifests/build-command.html
Docker
This obvious tool in this time so i don't add anything about it.
Kong Api Gateway
This is the first time i use a gateway like Kong and is really useful for manage multiples services in the same domains this have a several options a Open Source without UI configuration and the Open Source options tha can we add service using curl request for setup like this:
curl -i -X POST http://localhost:8001/services/
--data name=name-service
--data url=http://microservice:8080
--data 'paths[]=/v1' curl -i -X POST http://localhost:8001/services/name-service/routes
--data 'paths[]=/v1'
--data 'name=name-service'
Seq
Always i see we have this bugs the client make this and this but for us is not always enough and more when the client only said i have a error this is the screen and when you saw the only thinks ok so this is nothing we can't see the url or even the parameters or id or something we figure out why happens so package like serilog with sinks for database or sent to seq of datalust is very help for really see what happen i prefer grafana solutions but for applications is not bigger is not need to use seq is perfectly for this work.
Portainer
This tool for me was like finally i can save all my stack like a template and see the resources of my clients for docker composes, kubernetes administrative without need to touch the server (of course later installed the portainer agent) I can replicate the stack and enviroments variable from my own server portainer this tool is free of course the business option has webhook and somethings feature userful but for know is not need this way if i have a company with products with multiples versions i can deployed the versions on demand without complications also working with the cloud like AWS, Azure, Google and others
Watchtower
This tools is the piece of works that i need for setup automatically pull images when is available in the private repository this is perfect if we don't have the business plan of portainer, we install the agent and set the labels required to watch a change of the image this is not complicated.
Ngnix Proxy Manager
The last of tools who merge all the containers is proxy manager in this specific stack I use reverse proxy against port 8000 of Kong for only expose all endpoints of gateway.
If require expose the anothers containers for example Seq i can configurate a virtual application o specify subdomain for the access also the ngnix proxy manager give me the option to get my SSL certificate of Let Encrypt without need to use certbots o complicated for install directly in ngnix.