Skip to content

Commit a413430

Browse files
Added new charts and keptn example (#394)
* Added new charts and keptn example - Added keptn-addons chart to orkestra. Addons include prometheus service and job executor services for keptn - Created a new bookinfo example with istio (WIP) TODO: - Add keptn resources to bookinfo info example with istio Signed-off-by: Nitish Malhotra <[email protected]> * Manual keptn testing and configurations Signed-off-by: Nitish Malhotra <[email protected]> * Fix parameter configmap flag for keptn executor Signed-off-by: Nitish Malhotra <[email protected]> * Add keptn configmap for bookinfo example Signed-off-by: Nitish Malhotra <[email protected]> * fix bug where reverse executor does not carry forward the task params Signed-off-by: Nitish Malhotra <[email protected]> * Add README.md Signed-off-by: Nitish Malhotra <[email protected]> * Address review comments Signed-off-by: Nitish Malhotra <[email protected]> * Address comments Signed-off-by: Nitish Malhotra <[email protected]> * Reorder README.md Signed-off-by: Nitish Malhotra <[email protected]> Co-authored-by: Jonathan Innis <[email protected]>
1 parent 6af0807 commit a413430

25 files changed

+554
-122
lines changed

README.md

+65-24
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
![GitHub commits since latest release (by SemVer)](https://img.shields.io/github/commits-since/azure/orkestra/latest)
88
[![GitHub contributors](https://img.shields.io/github/contributors/azure/orkestra)](https://github.com/Azure/orkestra/graphs/contributors)
99

10-
Orkestra is a cloud-native **Release Orchestration** and **Lifecycle Management (LCM)** platform for a related group of [Helm](https://helm.sh/) releases and their subcharts.
10+
Orkestra is a cloud-native **Release Orchestration** and **Lifecycle Management (LCM)** platform for a related group of [Helm](https://helm.sh/) releases and their subcharts
1111

1212
Orkestra is built on top of popular [CNCF](https://cncf.io/) tools and technologies like,
1313

@@ -17,7 +17,47 @@ Orkestra is built on top of popular [CNCF](https://cncf.io/) tools and technolog
1717
- [Chartmuseum](https://chartmuseum.com/)
1818
- [Keptn](https://keptn.sh)
1919

20-
<p align="center"><img src="./docs/assets/orkestra-core.png" width="750x" /></p>
20+
![Orkestra Core](docs/assets/orkestra-core.png)
21+
22+
## Table of Contents
23+
24+
- [Orkestra](#orkestra)
25+
- [Overview](#overview)
26+
- [How it works](#how-it-works)
27+
- [Background and Motivation](#background-and-motivation)
28+
- [Dependency Management in Helm](#dependency-management-in-helm)
29+
- [Features <g-emoji class="g-emoji" alias="star2" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f31f.png">🌟</g-emoji>](#features-)
30+
- [Architecture <g-emoji class="g-emoji" alias="building_construction" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3d7.png">🏗</g-emoji>](#architecture-)
31+
- [Executors <g-emoji class="g-emoji" alias="running_man" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f3c3-2642.png">🏃‍♂️</g-emoji>](#executors-️)
32+
- [Helmrelease Executor](#helmrelease-executor)
33+
- [Keptn Executor](#keptn-executor)
34+
- [Argo workflow dashboard](#argo-workflow-dashboard)
35+
- [Keptn dashboard - Success](#keptn-dashboard---success)
36+
- [Keptn dashboard - Failed](#keptn-dashboard---failed)
37+
- [Keptn Workflow](#keptn-workflow)
38+
- [Use Cases <g-emoji class="g-emoji" alias="briefcase" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f4bc.png">💼</g-emoji>](#use-cases-)
39+
- [5G Network Functions <g-emoji class="g-emoji" alias="iphone" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f4f1.png">📱</g-emoji>](#5g-network-functions-)
40+
- [Installation <g-emoji class="g-emoji" alias="toolbox" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f9f0.png">🧰</g-emoji>](#installation-)
41+
- [Using Helm](#using-helm)
42+
- [Argo Workflow Dashboard](#argo-workflow-dashboard-1)
43+
- [Developers <g-emoji class="g-emoji" alias="woman_technologist" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f4bb.png">👩‍💻</g-emoji>](#developers-)
44+
- [Community <g-emoji class="g-emoji" alias="people_holding_hands" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f91d-1f9d1.png">🧑‍🤝‍🧑</g-emoji>](#community-)
45+
- [Contributing <g-emoji class="g-emoji" alias="gift" fallback-src="https://github.githubassets.com/images/icons/emoji/unicode/1f381.png">🎁</g-emoji>](#contributing-)
46+
- [Reporting security issues and security bugs](#reporting-security-issues-and-security-bugs)
47+
48+
## Overview
49+
50+
Orkestra is one solution to introduce Helm release orchestration. Orkestra provides this by building on top of **Argo Workflows**, a workflow engine on top of Kubernetes for workflow orchestration, where each step in a workflow is executed by a Pod. As such, Argo Workflow engine is a more powerful, more flexible adaptation of what **Init Containers** and **Kubernetes Jobs** provide without the orchestration.
51+
52+
Argo enables a DAG based dependency graph with defined workflow steps and conditions to transition through the graph, as well as detailed insight into the graph and its state. Helm releases matching transitions in the graph are executed by the FluxCD Helm controller operator. The FluxCD Helm controller operator is a Kubernetes operator that is responsible for executing Helm releases in a consistent manner.
53+
54+
### How it works
55+
56+
The unit of deployment for Orkestra based Helm releases is based on a workflow definition with a custom resource type that models the relationship between individual Helm releases making up the whole. The workflow definition is a **DAG** with defined workflow steps and conditions.
57+
58+
The `ApplicationGroup` spec allows to structure an orchestrated set of releases through grouping Helm releases into an group, either through defining a sequence on non-related charts and/or charts with subcharts, where subcharts are not merged into a single release but are executed as a release of their own inside a workflow step. The `ApplicationGroup` spec also allows to define a set of conditions that are evaluated at the beginning of the workflow and if any of the conditions fail, the whole workflow is aborted.
59+
60+
This gives you the ability to define a set of Helm releases that are orchestrated in a way that is easy to understand and to debug without having to modify the Helm release itself.
2161

2262
## Background and Motivation
2363

@@ -33,21 +73,6 @@ Using **Helm Hooks**, **Kubernetes Jobs** and **Init Containers**, you might end
3373

3474
To manage a group of Helm releases with a parent/subchart relationship or using a dependency relation, you need to use a dependency relation at Helm release time and not a dependency relation at Helm package time.
3575

36-
## What is Orkestra?
37-
38-
Orkestra is one solution to introduce Helm release orchestration. Orkestra provides this by building on top of **Argo Workflows**, a workflow engine on top of Kubernetes for workflow orchestration, where each step in a workflow is executed by a Pod. As such, Argo Workflow engine is a more powerful, more flexible adaptation of what **Init Containers** and **Kubernetes Jobs** provide without the orchestration.
39-
40-
Argo enables a DAG based dependency graph with defined workflow steps and conditions to transition through the graph, as well as detailed insight into the graph and its state. Helm releases matching transitions in the graph are executed by the FluxCD Helm controller operator. The FluxCD Helm controller operator is a Kubernetes operator that is responsible for executing Helm releases in a consistent manner.
41-
42-
### How it works
43-
44-
The unit of deployment for Orkestra based Helm releases is based on a workflow definition with a custom resource type that models the relationship between individual Helm releases making up the whole. The workflow definition is a **DAG** with defined workflow steps and conditions.
45-
46-
The `ApplicationGroup` spec allows to structure an orchestrated set of releases through grouping Helm releases into an group, either through defining a sequence on non-related charts and/or charts with subcharts, where subcharts are not merged into a single release but are executed as a release of their own inside a workflow step. The `ApplicationGroup` spec also allows to define a set of conditions that are evaluated at the beginning of the workflow and if any of the conditions fail, the whole workflow is aborted.
47-
48-
This gives you the ability to define a set of Helm releases that are orchestrated in a way that is easy to understand and to debug without having to modify the Helm release itself.
49-
50-
5176
## Features 🌟
5277

5378
- **Layers** - Deploy and manage 'layers' on top of Kubernetes. Each layer is a collection of addons and can have dependencies established between the layers.
@@ -67,28 +92,28 @@ This gives you the ability to define a set of Helm releases that are orchestrate
6792
apiVersion: orkestra.azure.microsoft.com/v1alpha1
6893
kind: ApplicationGroup
6994
metadata:
70-
name: bookinfo
95+
name: bookinfo
7196
spec:
7297
applications:
7398
- name: ambassador
7499
dependencies: []
75100
spec:
76101
chart:
77102
url: "https://nitishm.github.io/charts"
78-
name: ambassador
103+
name: ambassador
79104
version: 6.6.0
80105
release:
81106
timeout: 10m
82-
targetNamespace: ambassador
107+
targetNamespace: ambassador
83108
values:
84109
service:
85110
type: ClusterIP
86-
- name: bookinfo
111+
- name: bookinfo
87112
dependencies: [ambassador]
88113
spec:
89114
chart:
90115
url: "https://nitishm.github.io/charts"
91-
name: bookinfo
116+
name: bookinfo
92117
version: v1
93118
subcharts:
94119
- name: productpage
@@ -100,7 +125,7 @@ spec:
100125
- name: details
101126
dependencies: []
102127
release:
103-
targetNamespace: bookinfo
128+
targetNamespace: bookinfo
104129
values:
105130
productpage:
106131
replicaCount: 1
@@ -127,12 +152,28 @@ The default executor is responsible for deploying the HelmRelease object passed
127152
128153
Source code for the HelmRelease executor is available [here](https://github.com/Azure/helmrelease-workflow-executor)
129154
130-
### Keptn Executor (Work in progress)
155+
### Keptn Executor
131156
132157
The Keptn executor is an evaluation executor responsible for running tests on the deployed helm release using the Keptn API and Keptn evaluations engine. The Keptn executor is a custom executor that is chained to the default HelmRelease executor. This allows each release to be evaluated against a set of SLOs/SLIs before it is deployed/updated.
133158
134159
Source code for the Keptn executor is available [here](https://github.com/Azure/keptn-workflow-executor)
135160
161+
#### Argo workflow dashboard
162+
163+
![Keptn Workflow](./docs/assets/keptn-executor.png)
164+
165+
#### Keptn dashboard - Success
166+
167+
> ⚠️ monitoring failed is a known, benign issue when submitting the `ApplicationGroup` multiple times.
168+
169+
![Keptn Dashboard](./docs/assets/keptn-dashboard.png)
170+
171+
#### Keptn dashboard - Failed
172+
173+
![Keptn Dashboard](./docs/assets/keptn-dashboard-failed.png)
174+
175+
#### Keptn Workflow
176+
136177
![Orkestra workflow](./docs/assets/orkestra-gif.gif)
137178

138179
## Use Cases 💼

chart/orkestra/Chart.lock

+8-2
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,11 @@ dependencies:
88
- name: helm-controller
99
repository: https://nitishm.github.io/charts
1010
version: 0.1.1
11-
digest: sha256:a80ce307816cb3fe933327638e8fb094e1b69bc779157b0165ff5c9ca4cd7398
12-
generated: "2021-06-14T00:24:33.898916-07:00"
11+
- name: keptn
12+
repository: https://storage.googleapis.com/keptn-installer
13+
version: 0.8.6
14+
- name: keptn-addons
15+
repository: https://nitishm.github.io/charts
16+
version: 0.1.0
17+
digest: sha256:6ad307ffa17440e76db1de3631fd1ac331c6963ff5ec78f2faac0cda04989d9f
18+
generated: "2021-09-28T17:37:51.415157-07:00"

chart/orkestra/Chart.yaml

+5-5
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,14 @@ dependencies:
2828
condition: helm-controller.enabled
2929
version: "0.1.1"
3030
repository: "https://nitishm.github.io/charts"
31-
- name: gitea
32-
condition: plugins.keptn.enabled
33-
version: "3.1.4"
34-
repository: "https://dl.gitea.io/charts/"
3531
- name: keptn
36-
condition: plugins.keptn.enabled
32+
condition: keptn.enabled
3733
version: "0.8.6"
3834
repository: "https://storage.googleapis.com/keptn-installer"
35+
- name: keptn-addons
36+
condition: keptn-addons.enabled
37+
version: "0.1.0"
38+
repository: "https://nitishm.github.io/charts"
3939

4040
keywords:
4141
- helmops

chart/orkestra/charts/gitea-3.1.4.tgz

-121 KB
Binary file not shown.
Binary file not shown.
2.42 KB
Binary file not shown.

chart/orkestra/values.yaml

+10-20
Original file line numberDiff line numberDiff line change
@@ -101,28 +101,18 @@ helm-controller:
101101
create: false
102102
name: *serviceAccount
103103

104-
plugins:
105-
keptn:
106-
enabled: &keptnEnabled false
107-
git:
108-
service:
109-
type: &gitServiceType LoadBalancer
110-
api-gateway:
111-
service:
112-
type: &apiGWServiceType LoadBalancer
113-
# Keptn plugin component default values
114-
# DO NOT MODIFY DIRECTLY
115-
# USE plugins.keptn to configure these values
116-
gitea:
117-
enabled: *keptnEnabled
118-
service:
119-
http:
120-
type: *gitServiceType
121-
122104
keptn:
123-
enabled: *keptnEnabled
105+
enabled: false
124106
continuous-delivery:
125107
enabled: true
126108
control-plane:
127109
apiGatewayNginx:
128-
type: *apiGWServiceType
110+
type: LoadBalancer
111+
112+
keptn-addons:
113+
enabled: false
114+
prometheus:
115+
namespace: istio-system
116+
server:
117+
name: prometheus-server
118+
port: 80
306 KB
Loading

docs/assets/keptn-dashboard.png

401 KB
Loading

docs/assets/keptn-executor.png

200 KB
Loading

0 commit comments

Comments
 (0)