Testing Kubernetes Blue/Green Deployment on EKS.

The Goal

  • Create a simple node site
  • Create an docker image and host it on ECR
  • Create and host 3 different versions
  • Use Terraform to create the EKS cluster
  • Publish version 1.0.0 to version 1.2.0 using the Blue/Green Deployment pattern

Install and setup the project

Get the code from this github repository :

To setup the project, run the following command :

# npm install + terraform init + create ecr repository
$ make setup

This command will :

  • Install the npm packages of the website.
  • Setup Terraform.
  • Create an ECR repository.

An .ecr file contains the address…


Using Gitlab CI/CD to automatically build and push a new docker image on ECR and deploy it to ECS.

The Goal

  • Create a simple node site
  • Create an docker image and host it on ECR
  • Use ECS to put this image online
  • Use Terraform to create the AWS infrastructure
  • The Terraform states are stored on terraform.io
  • The source files are hosted on gitlab
  • Use Gitlab CI/CD to automatically update the site online after a commit
  • A new docker image will be automatically generated and hosted on ECR
  • This new image will be automatically deployed on ECS

Install and setup the project

Get the code from…


Building a continuous deployment for Lambda functions in a multi-stage environment.

The Goal

  • Create a deployment pipeline for a Lambda function with Terraform
  • Use Lambda versions and aliases to define two environments for development and production
  • Use the API Gateway stageVariables to target one of these 2 environments
  • Use Gihub Actions to automatically update the Lambda function
  • A git push on the develop branch will update the dev version of the Lambda function
  • A git push on the master branch will update the prod version of the Lambda function

Install and setup the project

Get the code from this github repository :

To setup…


Playing with RabbitMQ. Publish and consume messages. Using RabbitMQ in single or cluster mode.

The Goal

  • Running an instance of RabbitMQ with Docker
  • Publish a message from a node application
  • Post a message from a go application
  • Consume these messages from another node application
  • Create a cluster of 3 instances with automatic replication
  • Test the cluster by simulating an instance crash

Install and setup

Get the code from this github repository :

To setup the project, run the following command :

# docker pull, npm install, docker network
$ make setup

This project will make several docker containers communicate together :

  • 2…


Install Prometheus and Grafana on Kubernetes. Perform a CPU stress test to see the evolution of Prometheus metrics and Kubernetes autoscaling.

The Goal

  • Install Prometheus and Grafana on Kubernetes
  • Set up a website to perform a CPU stress test
  • See the evolution of Prometheus metrics and Kubernetes autoscaling

Install, setup and explore the project

Get the code from this github repository :

To setup the project, run the following command :

# install eksctl + kubectl, download kube-prometheus
$ make setup

This command will :


Playing with Prometheus and Grafana. Testing Node Exporter, Alertmanager and Slack notifications.

The Goal

  • Create a website with node
  • Export personal metrics from the site to Prometheus
  • Export also system metrics with Node Exporter
  • Display metrics in Grafana
  • Create alerts rules on specific metric
  • Receive Slack notification when an alert is fired
  • Redo everything with docker-compose

Install, setup and explore the project

Get the code from this github repository :

To setup the project, run the following command :

# install stress + docker pull prometheus + node-exporter + alertmanager + grafana ...
$ make setup

Configuring slack notifications

The project uses Slack notifications.

In my Slack account…


Creation of a website, hosted on a Kubernetes cluster. Use Kubectl, Kustomize and Github actions to deploy it in a GitOps way..

The Goal

Install, setup and explore the project

Get the code from this github repository :

To setup the project, run the following command :

# install eksctl + kubectl + yq, create…


Creation of a website, hosted on a Kubernetes cluster. Use Kubectl, Kustomize and Github actions to deploy it in a GitOps way.

The Goal

  • Create a website to convert our images to black and white
  • Create 3 microservices : the website, the black and white image converter, the uploader to S3
  • Use Docker-compose to orchestrate these microservices locally
  • Create a Kubernetes cluster on EKS with eksctl
  • Create 3 ECR registries and push the production docker images of our services
  • Putting the application online with kubectl

Install, setup and explore the project

Get the code from this github repository :

To setup the project, run the…


Creation of a static website with Hugo. Host it on S3 with CloudFront. Use Terraform and Github actions to deploy it in a GitOps way.

The Goal

  • Create a static blog with Hugo
  • Host it on S3 using a CloudFront CDN and a domain name managed by Route 53
  • Doing this manually from the web browser interface
  • Redoing the same thing with Terraform
  • Redoing it using Github Actions to automate the deployment of new posts
  • The GitOps approach makes it possible to update the site or the infrastructure according to the path of the commited files
architecture
architecture

Install, explore and build the project

Get the code from…

jerome.decoster

Cloud Engineer — Cloud Architecture — DevOps — 3x AWS Certified — http://jeromedecoster.github.io

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store