A Starter Guide for full stack development on Kubernetes
This article goes out to those, who would like to get all pieces together for a full stack development on Kubernetes. Focus is here on integrating essential pieces together.
There are great tutorials out there on this topic, but I was lacking a comprehensive oversight onto all items to be performed. So, I decided to give back to the community and put my notes online here. I will refer to the tutorials, which helped me for getting started and combine them with those pieces, which I found scattered around. I hope this will be not only of use for me, but even more that those trying will enjoy.
The tutorial is split up into three parts:
- Part 1: Here we will create a webapi using .NET 5.0. We will remove code, which we will handle by Kubernetes or API management and we will add some to ease deployment in an “Infrastructure as a Code” manner. https://thomas-scherer.medium.com/how-to-prepare-a-net-5-0-webapi-for-kubernetes-based-deployment-d973cf0b92a8
- Part 2 will deal with deploying the webapi and publishing it using API management. As API manager we will use Gravitee. At the end you will obtain token based access to the webapi plus Swagger documentation and test capabilities to the API:
https://thomas-scherer.medium.com/gravitee-io-api-management-c09e116e4f07 - Part 3 will augment access to the webapi using Oauth2/OIDC. We will allow user based login to access the API using own or third party identity provider, and will control access to API functions relative to user permissions.
https://thomas-scherer.medium.com/gravitee-io-access-management-d4f0cb9bd03c - Part 4:In this part we will develop a React.js based web application in Visual Studio code, we will wrap it in a docker container and deploy it onto the Kubernetes cluster. The App will redirect to the access manager for login, and if successful consume the API using a bearer token:
https://thomas-scherer.medium.com/frontend-development-with-react-js-for-oidc-controlled-api-access-3d70d9e0e387
The code is published on Github.
Don’t hesitate to contact me in case of unclarities; happy to fine tune this initial version for better readability and completeness (I might have missed something essential).
Cheers,