Browse Source

add application of applications example (#29)

* add application of applications example

* Add a link in the readme
pull/31/head
Omer Kahani 6 years ago
committed by Alexander Matyushentsev
parent
commit
08836bd970
  1. 1
      README.md
  2. 10
      applications-helm/Chart.yaml
  3. 32
      applications-helm/templates/_helpers.tpl
  4. 30
      applications-helm/templates/applications.yaml
  5. 25
      applications-helm/templates/argocd-cm.yaml
  6. 19
      applications-helm/templates/argocd-rbac-cm.yaml
  7. 45
      applications-helm/templates/project.yaml
  8. 46
      applications-helm/values-global.yaml
  9. 19
      applications-helm/values-production.yaml
  10. 19
      applications-helm/values-staging.yaml

1
README.md

@ -19,3 +19,4 @@ to explore ArgoCD and GitOps!
| [plugins](plugins/) | Applications which demonstrate config management plugins usage | | [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) | [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](applications/) | An application composed of other applications |
| [applications-helm](applications-helm/) | Demonstrates application composed of other applications using Helm chart and value files |

10
applications-helm/Chart.yaml

@ -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

32
applications-helm/templates/_helpers.tpl

@ -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 -}}

30
applications-helm/templates/applications.yaml

@ -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 }}

25
applications-helm/templates/argocd-cm.yaml

@ -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 }}

19
applications-helm/templates/argocd-rbac-cm.yaml

@ -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 }}

45
applications-helm/templates/project.yaml

@ -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 }}

46
applications-helm/values-global.yaml

@ -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

19
applications-helm/values-production.yaml

@ -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

19
applications-helm/values-staging.yaml

@ -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
Loading…
Cancel
Save