aks-baseline-automation/workloads/docs
janitairfan 3ed651396a fixing the typo 2022-11-15 08:54:26 +00:00
..
media Added the creation of the namespace if it does not already exist 2022-09-26 19:08:17 -07:00
other-app-scenarios docs -> learn & and remove locale 2022-09-16 13:48:24 -05:00
README.md Updated the documentation after testing the flask app using the push and pull methods on an AKS cluster deployed using the Construction Helper 2022-09-26 15:21:19 -07:00
app-flask-pull-gitops.md Update key vault module to latest CARML version (#85) 2022-09-29 11:46:12 -07:00
app-flask-push-dockerbuild.md fixing the typo 2022-11-15 08:54:26 +00:00

README.md

Overview

In the CI/CD pipeline for container-based workloads document we explore the options of push and pull based deployment methods along with the pros and cons of each. In this section we are going deploy a scenario that explains these two options further. To explore the architecture in more detail, please check out the article above.

Option #1 Push-based CI/CD Architecture and Dataflow

Figure 1 - Option 1 Push based Architecture with GitHub Actions for CI and CD

This scenario covers a push-based DevOps pipeline for a web application with a front-end component. This pipeline uses GitHub Actions for build push and deployment. The data flows through the scenario as follows:

  1. The App code is developed.
  2. The App code is committed to the GitHub git repository.
  3. GitHub Actions Builds a container image from the App code and pushes the container image to Azure Container Registry.
  4. A GitHub Actions job deploys (pushes) the App to the AKS cluster via kubectl deployment of the App Kubernetes manifest files.

Option #2 Pull-based CI/CD Architecture and Dataflow

Figure 2 - Option 2 Pull based Architecture with GitHub Actions for CI and Argo CD for CD

This scenario covers a pull-based DevOps pipeline for a web application with a front-end component. This pipeline uses GitHub Actions for build and push it uses Argo CD a GitOps operator pull/sync for deployment. The data flows through the scenario as follows:

  1. The App code is developed.
  2. The App code is committed to the GitHub git repository.
  3. GitHub Actions Builds a container image from the App code and pushes the container image to Azure Container Registry.
  4. GitHub Actions Updates a Kubernetes Manifest Deployment file with the current image version based on the version number of the container image in the Azure Container Registry.
  5. The GitOps Operator Argo CD syncs / pulls with the Git repository.
  6. The GitOps Operator Argo CD deploys the app to the AKS cluster.

Deploy this scenario

Before deploying the push or pull based end to end scenario you need to ensure you have met the prerequisites for this scenario. These prerequisites are listed in this section:

Prerequisites for these scenarios

  1. An existing Azure account. If you don't have an Azure subscription, create a free account before you begin.
  2. A GitHub account. To setup a GitHub account, follow the steps in Getting started with your GitHub account.
  3. A fork of this repo AKS Baseline Automation. Note: be sure to uncheck "Copy the main branch only".
  4. An AKS cluster. It is highly recommended that you follow one of the two options below to deploy the cluster:
    • Quick option: use the AKS Construction helper to deploy your Azure Kubernetes Service (AKS) cluster and the supporting services. You can use this pre-configured link: AKS Construction helper (pre-configured) to create an AKS cluster that is Azure AD integrated to use with this CI/CD scenario. This will also create the supporting services such as Azure Container Registry (ACR), Azure Key vault, Application Gateway, and other required Azure resources.
    • IaC workflows option: the IaC workflows in this repo will walk you through the process of creating your infrastructure through automation using bicep or terraform. This option will deploy the Baseline architecture for an Azure Kubernetes Service (AKS) cluster.

Next

Pick one of the following options to deploy a workload using automation

▶️ Push option

▶️ Pull option

▶️ Other app scenarios