Skip to content

License

A GitOps continuous deployment and delivery demonstrator using the Argo projects

image image

Description

This repository aims at presenting you a way to implement a complete, automated and GitOps continuous deployment and delivery platform combining together cloud-native opensource solutions: the Argo projects.

It will show you how you can easily deploy your application across different phases (test and production), automatically validate and promote an application version from one phase to the other, run canary testing in production to detect any defect and automatically rollback to the stable application version if that happens.

Let's meet the actors:

Argo CD

Argo CD delivery tool for Kubernetes workloads implementing the GitOps principles.

It's able to, declaratively, read definitions from a Git repository to deploy resources in many different target Kubernetes clusters, offering levels of abstraction allowing to keep the declarations as DRY as possible.

Documentation here: https://argo-cd.readthedocs.io/en/stable/

Argo Workflows

Argo Workflows is a workflow engine, allowing to define and orchestrate jobs on Kubernetes.

Documentation here: https://argo-workflows.readthedocs.io/en/latest/

Argo Events

Argo Events is an eventing platform allowing to connect various event sources and associate them to trigger actions.

Documentation here: https://argoproj.github.io/argo-events/

Argo Rollouts

Argo Rollouts provides extensions to the basic Kubernetes rollouts, allowing to implement complex progressive rollouts mechanisms like canary or blue/green. It includes plugins to perform various analysis to detect any issue happening during the deployment.

Documentation here: https://argo-rollouts.readthedocs.io/en/stable/

The project structure

The argo-projects folder contains all the manifests for the platform: the Argo CD application/applicationsets, the kubernetes resources for the Argo controllers, the infrastructure and the applications. For more informations, read the platform manifests documentation.

The demo-app folder contains the source code for the PetStore demo application, that we are using to demonstrate the deployment, promotion workflow and progressive rollouts mechanisms.

The ui folder contains the source code for the simple web page allowing to demonstrate the progressive rollout on the production version of the application.

The scripts folder contains a few usefull scripts that you will use in the next chapters.

The workflow-resources contains the source code for the steps run during the promotion workflow.

The docs folder contains the project documentation.

Installation

To setup this demonstrator, feel free to fork this repository and follow the installation instructions.

Understand the platform manifests

See the platform manifests documentation.

Promotion workflow

See the promotion workflow doc.

Progressive rollout

See the progressive rollout doc.

Run the Demo

See How to run the demo.

License

This project is licensed under the Apache License.