In this course we will take a simple Angular Client application that talks to a Node.JS server and deploy and run it as Docker containers. We will learn how to build both development and production Docker images for these types of applications. We will then be introduced to basic container orchestration with Docker Compose.
After this we will refactor the application to be more decoupled, resilient and scalable by using a Microservice architecture, making the app more Cloud native. We will learn how we can build Docker images and publish them to Docker hub automatically with Travis CI. We will deploy the containerized application to the Cloud with the help of Amazon Elastic Beanstalk service. We will also look at automating the deployment to Elastic Beanstalk with Travis CI. When we deploy the application to Elastic Beanstalk we will also see how we can use AWS services such as AWS RDS, AWS Elasticsearch and AWS Elasticache instead of running these as our own containers.
Then it's time for Kubernetes. We will spend a lot of time on Kubernetes as it is the preferred choice for most people when they want to run a container workload in Production. We will write Kubernetes manifest files (YAML) to deploy the application to a Kubernetes cluster. We will look at deploying both to a local Docker for Desktop single node Kubernetes cluster and to a multi node Kubernetes cluster in the Cloud (Google GKE, Amazon Kops, Amazon EKS).
Then we will look at Kubernetes Helm that can be used to package the Kubernetes manifest files so they can be versioned and released as one entity. Learn how to use Travis CI to build docker images and deploy automatically to Kubernetes clusters. Finally see how you can manage multiple Kubernetes clusters with Rancher.