add application of applications example (#29)

* add application of applications example

* Add a link in the readme
This commit is contained in:
Omer Kahani 2019-06-13 20:43:03 +03:00 committed by Alexander Matyushentsev
parent 454cc52962
commit 08836bd970
10 changed files with 246 additions and 0 deletions

View File

@ -19,3 +19,4 @@ to explore ArgoCD and GitOps!
| [plugins](plugins/) | Applications which demonstrate config management plugins usage |
| [blue-green](blue-green/) | Demonstrates how to implement blue-green deployment using [Argo Rollouts](https://github.com/argoproj/argo-rollouts)
| [applications](applications/) | An application composed of other applications |
| [applications-helm](applications-helm/) | Demonstrates application composed of other applications using Helm chart and value files |

View File

@ -0,0 +1,10 @@
apiVersion: v1
version: 1
appVersion: "0.12"
description: application of applications example
name: application-of-applications
keywords:
- argocd
maintainers:
- name: Omer Kahani
email: omer@riskified.com

View File

@ -0,0 +1,32 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "argo-cd.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "argo-cd.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "argo-cd.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

View File

@ -0,0 +1,30 @@
{{- $namespace := .Values.argo_namespace -}}
{{- $chart_name := include "argo-cd.name" . -}}
{{- $chart := include "argo-cd.chart" . -}}
{{- range .Values.applications }}
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: {{ .name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/name: {{ $chart_name }}
helm.sh/chart: {{ $chart }}
app.kubernetes.io/instance: {{ $.Release.Name }}
app.kubernetes.io/managed-by: {{ $.Release.Service }}
app.kubernetes.io/part-of: {{ $chart_name }}
spec:
project: {{ .project }}
source:
repoURL: {{ .git.url }}
targetRevision: {{ .git.branch }}
path: {{ .git.path }}
helm:
valueFiles:
{{ toYaml .value_files | indent 6 }}
destination:
server: {{ .destination.server | default "https://kubernetes.default.svc"}}
namespace: {{ .destination.namespace }}
---
{{- end }}

View File

@ -0,0 +1,25 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-cm
namespace: {{ .Values.argo_namespace}}
labels:
app.kubernetes.io/name: {{ include "argo-cd.name" . }}
helm.sh/chart: {{ include "argo-cd.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/part-of: {{ include "argo-cd.name" . }}
data:
url: {{ .Values.config.url }}
{{- if .Values.config.helmRepositories }}
helm.repositories: |
{{ toYaml .Values.config.helmRepositories | indent 4 }}
{{- end }}
{{- if .Values.config.repositories }}
repositories: |
{{ toYaml .Values.config.repositories | indent 4 }}
{{- end }}
{{- if .Values.config.oidcConfig }}
oidc.config: |
{{ toYaml .Values.config.oidcConfig | indent 4 }}
{{- end }}

View File

@ -0,0 +1,19 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: argocd-rbac-cm
namespace: {{ .Values.argo_namespace}}
labels:
app.kubernetes.io/name: {{ include "argo-cd.name" . }}
helm.sh/chart: {{ include "argo-cd.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/part-of: {{ include "argo-cd.name" . }}
data:
{{- if .Values.rbac.policyDefault }}
policy.default: {{ .Values.rbac.policyDefault }}
{{- end }}
{{- if .Values.rbac.policyCsv }}
policy.csv:
{{- toYaml .Values.rbac.policyCsv | indent 4 }}
{{- end }}

View File

@ -0,0 +1,45 @@
{{- $namespace := .Values.argo_namespace -}}
{{- $chart_name := include "argo-cd.name" . -}}
{{- $chart := include "argo-cd.chart" . -}}
{{- range .Values.projects }}
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
name: {{ .name }}
namespace: {{ $namespace }}
labels:
app.kubernetes.io/name: {{ $chart_name }}
helm.sh/chart: {{ $chart }}
app.kubernetes.io/instance: {{ $.Release.Name }}
app.kubernetes.io/managed-by: {{ $.Release.Service }}
app.kubernetes.io/part-of: {{ $chart_name }}
spec:
description: {{ .description }}
sourceRepos:
{{ toYaml .sourceRepos | indent 2 -}}
destinations:
{{- range .destinations }}
- namespace: {{ .namespaces }}
server: {{.server | default "https://kubernetes.default.svc" }}
{{- end }}
{{- if .clusterResourceWhitelist }}
clusterResourceWhitelist:
{{ toYaml .clusterResourceWhitelist| indent 2 }}
{{- end }}
roles:
{{- range .roles }}
- name: {{ .name }}
description: {{ .description }}
policies:
{{ toYaml .policies| indent 6 }}
jwtTokens:
{{ toYaml .jwtTokens| indent 6 }}
groups:
{{ toYaml .oidcGroups| indent 6 -}}
{{- end }}
---
{{- end }}

View File

@ -0,0 +1,46 @@
argo_namespace: argocd
config:
helmRepositories:
- name: private-helm-repo
url: https://private.repo/
usernameSecret:
name: secret_name
key: key_name
passwordSecret:
name: secret_name
key: key_name
- name: incubator
url: https://kubernetes-charts-incubator.storage.googleapis.com/
repositories:
- url: repo_url
sshPrivateKeySecret: #the chart doesn't install the secert
name: secret_name
key: key_name
rbac:
# See https://github.com/argoproj/argo-cd/blob/master/docs/rbac.md on how to write RBAC policies.
# This will effacte on all argocd instances
policyCsv: |
g, role_name, role:admin
policyDefault: role:readonly
projects:
- name: project_name
destinations:
- namespaces: [namespace]
#server: https://kubernetes.default.svc
description: description
sourceRepos:
- 'repo_url'
#clusterResourceWhitelist:
#- group: '*'
# kind: '*'
roles:
- name: role_name
description: role_description
oidcGroups: [' grop_name']
policies: |
jwtTokens:
- iat: 123

View File

@ -0,0 +1,19 @@
config:
url: https://argocd_url
#idcConfig:
# name: Okta
# clientID:
# clientSecret:
# issuer:
applications:
- name: app_name
project: project
destination:
namespace: namespace
git:
url: url
branch: branch
path: path #path to the value file
value_files:
- values-production.yaml

View File

@ -0,0 +1,19 @@
config:
url: https://argocd_url
#idcConfig:
# name: Okta
# clientID:
# clientSecret:
# issuer:
applications:
- name: app_name
project: project
destination:
namespace: namespace
git:
url: url
branch: branch
path: path #path to the value file
value_files:
- values-staging.yaml