Azure / orkestra

Orkestra is a cloud-native release orchestration and lifecycle management (LCM) platform for the fine-grained orchestration of inter-dependent helm charts and their dependencies
https://azure.github.io/orkestra
Other
105 stars 16 forks source link

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

Open nitishm opened 3 years ago

nitishm commented 3 years ago

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]