Get startedSign in

Setup a dev -> prod pipeline

Using Plural PR-based Pipelines to automate Dev -> Staging -> Prod Promotions

Overview

We've already gone over provisioning clusters, deploying a basic cluster runtime, and setting up a microservice. You can use almost all those tools for a general deployment process if you wanted to and still maintain good velocity overall. But any robust organization is going to split their environments into at least a dev and a prod stage, and start wasting cycles on promotions between them. Plural Pipelines are meant to solve for that.

This tutorial will cover:

  • Using the cluster-creator PR Automation (PRA) to setup a prod cluster.
  • Using the same technique as in the Deploying a Microservice tutorial to set up an example prod service
  • Setting up a PrAutomation for generating the promotion related GitOps codechanges needed
  • Setting up a Pipeline to orchestrate our promotion process.

Setup Your Prod Cluster

Go through the Setting Up Your First Workload Cluster tutorial again to create another cluster which will serve as the prod cluster. This will involve:

  1. Call the cluster-creator PRA to generate a PR to create your cluster. Approve and merge it.
  2. Wait for the new stack to be spawned, and approve its run.
  3. Wait 10-20m for EKS to provision fully and be registered in Plural.

Setup the Prod Instance of the cd-demo Service

Imitating the Setting Up a Microservice tutorial, write a new ServiceDeployment to bootstrap/cd-demo/prod.yaml:

yaml
apiVersion: deployments.plural.sh/v1alpha1
kind: ServiceDeployment
metadata:
  name: cd-demo-prod
  namespace: infra
spec:
  namespace: cd-demo
  git:
    folder: helm # this is where the helm chart is located in the git repository
    ref: main
  repositoryRef:
    kind: GitRepository
    name: cd-demo
    namespace: infra
  helm:
    values:
      image:
        repository: ghcr.io/pluralsh/plrl-cd-test
        tag: latest # VERSION
  clusterRef:
    kind: Cluster
    name: REPLACE_ME_WITH_PROD_CLUSTER_NAME # replace this with whatever you might have named your prod cluster
    namespace: infra