This Repository contains the complete source code of the demo used for Global Azure Boot Camp 2018 at Singapore. The event was held on
21 April 2018. The slidedeck used during the talk is available at Speakerdeck. The codebase is useful for building a multi-container application with deployment to Kubernetes cluster.
The goal of the demo is to build an application for managing tech talks. There are multiple components which are added progressively to scale the application. All the components are deployed to
Kubernetes cluster using
Docker containers. The Kubernetes cluster is deployed to
Azure Container Service (AKS).
Initially it starts with a web front end named
TechTalksWeb. This interacts with a backend API named
TechTalksAPI. The persistence part is handled using
TechTalksDB. A single node Kubernetes cluster is used to test the application locally using
RabbitMQ provides the messaging capabilities. Elastic Search is used to Index data in denormalized form for reporting and visualization purposes. Kibana provides the UI to build dashboard using Elastic Search Index.
The codebase is organized into following structure
Contains the Azure CLI commands and syntax for invoking different powershell commands.
Contains the docker compose file which describes the services. This is helpful in building and pushing Docker images with single docker-compose command.
Contains all the Kubernetes manifest files required for deploying services to the cluster. The manifest files contains required files for deploying application specific services like web front end, API nad database as well as infrastructure services like RabbitMQ, ELK cluster, OMS agents for
Container Monitoring Solution.
Contains the Kubernetes manifest for Minikube related deployments. These menifest files are similar to the ones in Kubernetes directory. The main difference is that the Minikube version uses
NodePort for exposing the services outside of the cluster. While in the AKS Kubernetes cluster, services are exposed using
LoadBalancer. LoadBalancer privisions a public IP.
Contains all the Powershell scripts. These are helper scripts which are useful for deploying the application to Minikube or Kubernetes cluster. There are couple of scripts which are used for initializing the Kubernetes cluster and to tear down the resources after completing the tests.
Contains source code for the API module. API interacts with SQL server and the RabbitMQ server. The project type is .Net Core exe.
Contains the Initialization script used to bootstrap TechTalksDB with static data.
Contains source code for message consumer which pulls data from RabbitMQ and populates the Index in Elastic Search. The project type is .Net Core exe.
Contains source code for
Domain objects and
Data Transfer Objects (DTO) which are shared across multiple projects. The project type is .Net Core library.
Contains source code for RabbitMQ consumer which pulls data from RabbitMQ and inserts a record into database. The project type is .Net Core exe.
Contains source code for web front end of the TechTalks application built using ASP.Net Core MVC framework.