Lately I’ve been working on a Proof of Concept of Azure Kubernetes Service (AKS) to learn more about Kubernetes — link to repo. Naturally, because of my love for Azure Application Gateway (AppGW), I wanted the Proof of Concept to include the Application Gateway Ingress Controller (AGIC) for AKS.
I was able to write Azure Bicep code to build the entire environment thanks to the documentation of individual Bicep resources, and by looking at various (mostly ARM) samples provided both by the community and Microsoft themselves.
GitHub Actions also enabled seamless deployment of the Bicep configuration, Docker build and push to an Azure Container Registry, and manifest deployment to the freshly created cluster.
However, there were some challenges, especially as there weren’t many great Bicep examples around. I’ve therefore decided to share the code publicly, with some small adjustments (which hopefully didn’t break the whole project).
I put effort into covering all the details in the README, but the summary is that a GitHub Actions deploys AppGW and AKS with Bicep, while another workflow builds the Docker image, and pushes it to ACR, until finally the manifest is deployed to AKS.
I had a lot of cool discoveries while testing this, but the one I liked the most is how powerful AGIC is. AGIC automatically updates the AppGW when a new Ingress API-object is deployed to k8s. If you also configure a wildcard domain in your DNS pointing to the public IP of the AppGW, you enable developers to seamlessly deploy applications without having to consider networking, DNS etc. It just works.
If you’re interested, please head over to the repo and try out for yourself. The best learning exercise would be to use it as a reference for a test of your own.