orkestra icon indicating copy to clipboard operation
orkestra copied to clipboard

Add new type(s) and controller to define pipelines to run pre and post flight workflows before and after deploying an Application Group

Open nitishm opened this issue 4 years ago • 0 comments

The existing and only ApplicationGroup Custom Resource provided by Orkestra is used to generate a workflow for deploying helm releases using a dependency graph. While orkestra with the introduction of Keptn executor plugin allows for tests and validations to be executed during the release (install/upgrade) of each application in the “Application Group”, it does not provide a mechanism to run any system-level validation or check before and after the successful deploy/upgrade of the “Application Group” Releases.

This feature request proposes a new custom resource type that instruments a pre-flight and post-deploy steps (workflow) to execute a myriad of checks/validations before and/or after the release of an application group.

image

Proposed Type Specs

ApplicationGroupTemplate

apiVersion: orkestra.azure.microsoft.com/v1alpha1
kind: ApplicationGroupTemplate
metadata:
  name: bookinfo 
spec:
  template:
    applications:
      - name: ambassador
        dependencies: []
        spec:
          chart:
            url: "https://nitishm.github.io/charts"
            name: ambassador 
            version: 6.6.0
          release:
            timeout: 10m
            targetNamespace: ambassador 
            values:
              service:
                type: ClusterIP
      - name: bookinfo 
        dependencies: [ambassador]
        spec:
          chart:
            url: "https://nitishm.github.io/charts"
            name: bookinfo 
            version: v1
          subcharts:
          - name: productpage
            dependencies: [reviews]
          - name: reviews
            dependencies: [details, ratings]
          - name: ratings
            dependencies: []
          - name: details
            dependencies: []
          release:
            targetNamespace: bookinfo 
            values:
              productpage:
                replicaCount: 1
              details:
                replicaCount: 1
              reviews:
                replicaCount: 1
              ratings:
                replicaCount: 1

Pipeline

apiVersion: orkestra.azure.microsoft.com/v1alpha1
kind: Pipeline
metadata:
  name: bookinfo 
spec:
  preFlight:
    tasks:
    - name: clusterHealthCheck
      dependencies: []
      container:
        image: alpine:3.7
        command: [kubectl, cluster-info, dump]
    - name: initTestHarness
      dependencies: ["clusterHealthCheck"]
      container:
        image: alpine:3.7
        command: [echo, "initializing test harness"]
  applicationGroup:
    templateRef:
      name: bookinfo-template
  postFlight:
    tasks:
    - name: e2e
      dependencies: []
      container:
        image: alpine:3.7
        command: [python, e2e.py]

nitishm avatar Oct 25 '21 19:10 nitishm