feat(chart): adds tekton-dashboard chart
This introduces the tekton-dashboard [0] as chart into the repository. [0] https://github.com/tektoncd/dashboard Change-Id: I43156eb5fd67a15fc24092ad03b62215bcbf2386 Signed-off-by: Tin Lam <tin@irrational.io>
This commit is contained in:
parent
e6fb23f8ea
commit
17bcc630b3
|
@ -0,0 +1,22 @@
|
||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
|
@ -0,0 +1,14 @@
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: v0.10.1
|
||||||
|
description: Tekton Dashboard
|
||||||
|
name: tekton-dashboard
|
||||||
|
version: 0.1.0
|
||||||
|
icon: https://tekton.dev/images/tekton-horizontal-color.png
|
||||||
|
home: https://github.com/tektoncd/dashboard
|
||||||
|
keywords:
|
||||||
|
- helm
|
||||||
|
- tekton
|
||||||
|
- tektoncd
|
||||||
|
- dashboard
|
||||||
|
description: |
|
||||||
|
This chart bootstraps installation of [tekton dashboard](https://github.com/tektoncd/dashboard).
|
|
@ -0,0 +1,47 @@
|
||||||
|
---
|
||||||
|
apiVersion: apiextensions.k8s.io/v1
|
||||||
|
kind: CustomResourceDefinition
|
||||||
|
metadata:
|
||||||
|
name: extensions.dashboard.tekton.dev
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: tekton
|
||||||
|
app.kubernetes.io/name: extensions
|
||||||
|
app.kubernetes.io/part-of: tekton-dashboard
|
||||||
|
spec:
|
||||||
|
group: dashboard.tekton.dev
|
||||||
|
names:
|
||||||
|
categories:
|
||||||
|
- tekton
|
||||||
|
- tekton-dashboard
|
||||||
|
kind: Extension
|
||||||
|
plural: extensions
|
||||||
|
singular: extension
|
||||||
|
shortNames:
|
||||||
|
- ext
|
||||||
|
- exts
|
||||||
|
preserveUnknownFields: false
|
||||||
|
scope: Namespaced
|
||||||
|
versions:
|
||||||
|
- name: v1alpha1
|
||||||
|
served: true
|
||||||
|
storage: true
|
||||||
|
additionalPrinterColumns:
|
||||||
|
- jsonPath: .spec.apiVersion
|
||||||
|
name: API version
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.name
|
||||||
|
name: Kind
|
||||||
|
type: string
|
||||||
|
- jsonPath: .spec.displayname
|
||||||
|
name: Display name
|
||||||
|
type: string
|
||||||
|
- jsonPath: .metadata.creationTimestamp
|
||||||
|
name: Age
|
||||||
|
type: date
|
||||||
|
schema:
|
||||||
|
openAPIV3Schema:
|
||||||
|
type: object
|
||||||
|
x-kubernetes-preserve-unknown-fields: true
|
||||||
|
subresources:
|
||||||
|
status: {}
|
||||||
|
...
|
|
@ -0,0 +1,70 @@
|
||||||
|
{{- define "clusterrole_backend-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-backend
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- apiextensions.k8s.io
|
||||||
|
resources:
|
||||||
|
- customresourcedefinitions
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- apiGroups:
|
||||||
|
- security.openshift.io
|
||||||
|
resources:
|
||||||
|
- securitycontextconstraints
|
||||||
|
verbs:
|
||||||
|
- use
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- clustertasks
|
||||||
|
- clustertasks/status
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- triggers.tekton.dev
|
||||||
|
resources:
|
||||||
|
- clustertriggerbindings
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- dashboard.tekton.dev
|
||||||
|
resources:
|
||||||
|
- extensions
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- clustertasks
|
||||||
|
- clustertasks/status
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- triggers.tekton.dev
|
||||||
|
resources:
|
||||||
|
- clustertriggerbindings
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- add
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "clusterrole_backend-dashboard" ) }}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{{- define "clusterrole_dashboard-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-dashboard
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- apps
|
||||||
|
resources:
|
||||||
|
- deployments
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "clusterrole_dashboard-dashboard" ) }}
|
|
@ -0,0 +1,14 @@
|
||||||
|
{{- define "clusterrole_extensions-dashboard" -}}
|
||||||
|
---
|
||||||
|
aggregationRule:
|
||||||
|
clusterRoleSelectors:
|
||||||
|
- matchLabels:
|
||||||
|
rbac.dashboard.tekton.dev/aggregate-to-dashboard: "true"
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-extensions
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "clusterrole_extensions-dashboard" ) }}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{{- define "clusterrole_pipelines-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-pipelines
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- apps
|
||||||
|
resources:
|
||||||
|
- deployments
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "clusterrole_pipelines-dashboard" ) }}
|
|
@ -0,0 +1,116 @@
|
||||||
|
{{- define "clusterrole_tenant-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-tenant
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- services
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- dashboard.tekton.dev
|
||||||
|
resources:
|
||||||
|
- extensions
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- serviceaccounts
|
||||||
|
- pods/log
|
||||||
|
- namespaces
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- tasks
|
||||||
|
- taskruns
|
||||||
|
- pipelines
|
||||||
|
- pipelineruns
|
||||||
|
- pipelineresources
|
||||||
|
- conditions
|
||||||
|
- tasks/status
|
||||||
|
- taskruns/status
|
||||||
|
- pipelines/status
|
||||||
|
- pipelineruns/status
|
||||||
|
- taskruns/finalizers
|
||||||
|
- pipelineruns/finalizers
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- triggers.tekton.dev
|
||||||
|
resources:
|
||||||
|
- eventlisteners
|
||||||
|
- triggerbindings
|
||||||
|
- triggertemplates
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- serviceaccounts
|
||||||
|
verbs:
|
||||||
|
- update
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- ""
|
||||||
|
resources:
|
||||||
|
- secrets
|
||||||
|
verbs:
|
||||||
|
- get
|
||||||
|
- list
|
||||||
|
- watch
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- apiGroups:
|
||||||
|
- tekton.dev
|
||||||
|
resources:
|
||||||
|
- tasks
|
||||||
|
- taskruns
|
||||||
|
- pipelines
|
||||||
|
- pipelineruns
|
||||||
|
- pipelineresources
|
||||||
|
- conditions
|
||||||
|
- taskruns/finalizers
|
||||||
|
- pipelineruns/finalizers
|
||||||
|
- tasks/status
|
||||||
|
- taskruns/status
|
||||||
|
- pipelines/status
|
||||||
|
- pipelineruns/status
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- apiGroups:
|
||||||
|
- triggers.tekton.dev
|
||||||
|
resources:
|
||||||
|
- eventlisteners
|
||||||
|
- triggerbindings
|
||||||
|
- triggertemplates
|
||||||
|
verbs:
|
||||||
|
- create
|
||||||
|
- update
|
||||||
|
- delete
|
||||||
|
- patch
|
||||||
|
- add
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "clusterrole_tenant-dashboard" ) }}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{{- define "clusterrole_triggers-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRole
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-triggers
|
||||||
|
rules:
|
||||||
|
- apiGroups:
|
||||||
|
- apps
|
||||||
|
resources:
|
||||||
|
- deployments
|
||||||
|
verbs:
|
||||||
|
- list
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "clusterrole_triggers-dashboard" ) }}
|
|
@ -0,0 +1,18 @@
|
||||||
|
{{- define "clusterrolebinding_backend-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-backend
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-dashboard-backend
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "clusterrolebinding_backend-dashboard" ) }}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{{- define "clusterrolebinding_extensions-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-extensions
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-dashboard-extensions
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "clusterrolebinding_extensions-dashboard" ) }}
|
|
@ -0,0 +1,18 @@
|
||||||
|
{{- define "clusterrolebinding_tenant-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-tenant
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-dashboard-tenant
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "clusterrolebinding_tenant-dashboard" ) }}
|
|
@ -0,0 +1,71 @@
|
||||||
|
{{- define "deployment-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ template "helpers.labels.fullname" $ }}
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "dashboard") | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels: {{- include "helpers.labels.matchLabels" (dict "Global" $) | nindent 6 }}
|
||||||
|
revisionHistoryLimit: 3
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 1
|
||||||
|
maxSurge: 3
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "dashboard") | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ template "helpers.labels.fullname" . }}
|
||||||
|
securityContext:
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 65532
|
||||||
|
nodeSelector: {{- include "helpers.pod.node_selector" ( dict "Global" $ "Application" "tekton_dashboard" ) | nindent 8 }}
|
||||||
|
terminationGracePeriodSeconds: 30
|
||||||
|
containers:
|
||||||
|
- name: tekton-dashboard
|
||||||
|
image: {{ include "helpers.pod.container.image" ( dict "Global" $ "Application" "tekton_dashboard" ) }}
|
||||||
|
imagePullPolicy: {{ $.Values.images.pull.policy | quote }}
|
||||||
|
args:
|
||||||
|
- --port={{ $.Values.params.endpoints.ports.web.port }}
|
||||||
|
- --logout-url={{ $.Values.config.args.logout_url }}
|
||||||
|
- --pipelines-namespace={{ $.Release.Namespace }}
|
||||||
|
- --triggers-namespace={{ $.Release.Namespace }}
|
||||||
|
- --read-only={{ $.Values.config.args.read_only }}
|
||||||
|
- --csrf-secure-cookie={{ $.Values.config.args.csrf_secure_cookie }}
|
||||||
|
- --log-level={{ $.Values.config.args.log_level }}
|
||||||
|
- --log-format={{ $.Values.config.args.log_format }}
|
||||||
|
- --namespace={{ $.Values.config.args.namespace }}
|
||||||
|
- --openshift={{ $.Values.config.args.openshift }}
|
||||||
|
- --stream-logs={{ $.Values.config.args.stream_logs }}
|
||||||
|
- --external-logs={{ $.Values.config.args.external_logs }}
|
||||||
|
env:
|
||||||
|
- name: INSTALLED_NAMESPACE
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: metadata.namespace
|
||||||
|
ports:
|
||||||
|
- name: web
|
||||||
|
containerPort: {{ $.Values.params.endpoints.ports.web.port }}
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
scheme: {{ $.Values.params.endpoints.ports.web.scheme | upper }}
|
||||||
|
path: /readiness
|
||||||
|
port: {{ $.Values.params.endpoints.ports.web.port }}
|
||||||
|
initialDelaySeconds: 15
|
||||||
|
periodSeconds: 10
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
scheme: {{ $.Values.params.endpoints.ports.web.scheme | upper }}
|
||||||
|
path: /health
|
||||||
|
port: {{ $.Values.params.endpoints.ports.web.port }}
|
||||||
|
initialDelaySeconds: 50
|
||||||
|
periodSeconds: 20
|
||||||
|
timeoutSeconds: 5
|
||||||
|
volumes: []
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "deployment-dashboard" ) }}
|
|
@ -0,0 +1,61 @@
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "helpers.labels.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).
|
||||||
|
*/}}
|
||||||
|
{{- define "helpers.labels.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 "helpers.labels.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Labels to use on {deploy|sts}.spec.selector.matchLabels and svc.spec.selector
|
||||||
|
*/}}
|
||||||
|
{{- define "helpers.labels.matchLabels" -}}
|
||||||
|
{{- $Global := index . "Global" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "helpers.labels.name" $Global }}
|
||||||
|
app.kubernetes.io/instance: {{ $Global.Values.release_group | default $Global.Release.Name }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "helpers.labels.labels" -}}
|
||||||
|
{{- $Global := index . "Global" -}}
|
||||||
|
{{- $PartOf := index . "PartOf" -}}
|
||||||
|
{{- $Component := index . "Component" -}}
|
||||||
|
{{- $Version := index . "Version" -}}
|
||||||
|
{{ include "helpers.labels.matchLabels" (dict "Global" $Global )}}
|
||||||
|
app.kubernetes.io/managed-by: {{ $Global.Release.Service }}
|
||||||
|
{{- if $PartOf }}
|
||||||
|
app.kubernetes.io/part-of: {{ $PartOf }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $Component }}
|
||||||
|
app.kubernetes.io/component: {{ $Component }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $Version }}
|
||||||
|
app.kubernetes.io/version: {{ $Version }}
|
||||||
|
{{- end }}
|
||||||
|
helm.sh/chart: {{ include "helpers.labels.chart" $Global }}
|
||||||
|
{{- end -}}
|
|
@ -0,0 +1,21 @@
|
||||||
|
{{- define "helpers.pod.container.image" -}}
|
||||||
|
{{- $Global := index . "Global" -}}
|
||||||
|
{{- $Application := index . "Application" -}}
|
||||||
|
{{- with index $.Global.Values.images.applications $Application -}}
|
||||||
|
{{- printf "%s/%s:%s" .repo .name ( .tag | toString ) | quote -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "helpers.pod.node_selector" -}}
|
||||||
|
{{- $Global := index . "Global" -}}
|
||||||
|
{{- $Application := index . "Application" -}}
|
||||||
|
{{- with index $.Global.Values.node_labels $Application -}}
|
||||||
|
{{- if kindIs "slice" . -}}
|
||||||
|
{{- range $k, $item := . }}
|
||||||
|
{{ $item.key }}: {{ $item.value | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ .key }}: {{ .value | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
|
@ -0,0 +1,107 @@
|
||||||
|
{{- define "helpers.template.overlay" -}}
|
||||||
|
{{- $local := dict -}}
|
||||||
|
{{/*
|
||||||
|
By default we merge lists with a 'name' key's values
|
||||||
|
*/}}
|
||||||
|
{{- $_ := set $local "merge_same_named" true -}}
|
||||||
|
{{- if kindIs "map" $ -}}
|
||||||
|
{{- if hasKey $ "merge_same_named" -}}
|
||||||
|
{{- $_ := set $local "merge_same_named" $.merge_same_named -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $_ := set $local "input" ( fromYaml ( toString ( include $.template_definition $.Global ) ) ) -}}
|
||||||
|
{{- $target := dict -}}
|
||||||
|
{{- $overlay_keys := regexSplit "-+" ( trimSuffix ".yaml" ( lower ( base $.Global.Template.Name ) ) ) 2 }}
|
||||||
|
{{- $_ := set $local "overlay" dict -}}
|
||||||
|
{{- if hasKey $.Global.Values.over_rides ( index $overlay_keys 0 ) -}}
|
||||||
|
{{- if hasKey ( index $.Global.Values.over_rides ( index $overlay_keys 0 ) ) ( index $overlay_keys 1 ) -}}
|
||||||
|
{{- $_ := set $local "overlay" ( index $.Global.Values.over_rides ( index $overlay_keys 0 ) ( index $overlay_keys 1 ) ) -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range $item := tuple $local.input $local.overlay -}}
|
||||||
|
{{- $call := dict "target" $target "source" . "merge_same_named" $local.merge_same_named -}}
|
||||||
|
{{- $_ := include "helpers._merge" $call -}}
|
||||||
|
{{- $_ := set $local "result" $call.result -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if kindIs "map" $ -}}
|
||||||
|
{{- $_ := set $ "result" $local.result -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{ $target | toYaml }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "helpers._merge" -}}
|
||||||
|
{{- $local := dict -}}
|
||||||
|
{{- $_ := set $ "result" $.source -}}
|
||||||
|
{{/*
|
||||||
|
TODO: Should we `fail` when trying to merge a collection (map or slice) with
|
||||||
|
either a different kind of collection or a scalar?
|
||||||
|
*/}}
|
||||||
|
{{- if and (kindIs "map" $.target) (kindIs "map" $.source) -}}
|
||||||
|
{{- range $key, $sourceValue := $.source -}}
|
||||||
|
{{- if not (hasKey $.target $key) -}}
|
||||||
|
{{- $_ := set $local "newTargetValue" $sourceValue -}}
|
||||||
|
{{- if kindIs "map" $sourceValue -}}
|
||||||
|
{{- $copy := dict -}}
|
||||||
|
{{- $call := dict "target" $copy "source" $sourceValue -}}
|
||||||
|
{{- $_ := include "helpers._merge.shallow" $call -}}
|
||||||
|
{{- $_ := set $local "newTargetValue" $copy -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $targetValue := index $.target $key -}}
|
||||||
|
{{- $call := dict "target" $targetValue "source" $sourceValue "merge_same_named" $.merge_same_named -}}
|
||||||
|
{{- $_ := include "helpers._merge" $call -}}
|
||||||
|
{{- $_ := set $local "newTargetValue" $call.result -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $_ := set $.target $key $local.newTargetValue -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $_ := set $ "result" $.target -}}
|
||||||
|
{{- else if and (kindIs "slice" $.target) (kindIs "slice" $.source) -}}
|
||||||
|
{{- $call := dict "target" $.target "source" $.source -}}
|
||||||
|
{{- $_ := include "helpers._merge.append_slice" $call -}}
|
||||||
|
{{- if $.merge_same_named -}}
|
||||||
|
{{- $_ := set $local "result" list -}}
|
||||||
|
{{- $_ := set $local "named_items" dict -}}
|
||||||
|
{{- range $item := $call.result -}}
|
||||||
|
{{- $_ := set $local "has_name_key" false -}}
|
||||||
|
{{- if kindIs "map" $item -}}
|
||||||
|
{{- if hasKey $item "name" -}}
|
||||||
|
{{- $_ := set $local "has_name_key" true -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if $local.has_name_key -}}
|
||||||
|
{{- if hasKey $local.named_items $item.name -}}
|
||||||
|
{{- $named_item := index $local.named_items $item.name -}}
|
||||||
|
{{- $call := dict "target" $named_item "source" $item "merge_same_named" $.merge_same_named -}}
|
||||||
|
{{- $_ := include "helpers._merge" $call -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $copy := dict -}}
|
||||||
|
{{- $copy_call := dict "target" $copy "source" $item -}}
|
||||||
|
{{- $_ := include "helpers._merge.shallow" $copy_call -}}
|
||||||
|
{{- $_ := set $local.named_items $item.name $copy -}}
|
||||||
|
{{- $_ := set $local "result" (append $local.result $copy) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $_ := set $local "result" (append $local.result $item) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $_ := set $local "result" $call.result -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $_ := set $ "result" (uniq $local.result) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "helpers._merge.shallow" -}}
|
||||||
|
{{- range $key, $value := $.source -}}
|
||||||
|
{{- $_ := set $.target $key $value -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "helpers._merge.append_slice" -}}
|
||||||
|
{{- $local := dict -}}
|
||||||
|
{{- $_ := set $local "result" $.target -}}
|
||||||
|
{{- range $value := $.source -}}
|
||||||
|
{{- $_ := set $local "result" (append $local.result $value) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- $_ := set $ "result" $local.result -}}
|
||||||
|
{{- end -}}
|
|
@ -0,0 +1,19 @@
|
||||||
|
{{- define "rolebinding_dashboard-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-dashboard
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-dashboard-dashboard
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "rolebinding_dashboard-dashboard" ) }}
|
|
@ -0,0 +1,19 @@
|
||||||
|
{{- define "rolebinding_pipelines-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-pipelines
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-dashboard-pipelines
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "rolebinding_pipelines-dashboard" ) }}
|
|
@ -0,0 +1,19 @@
|
||||||
|
{{- define "rolebinding_triggers-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: tekton-dashboard-triggers
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: tekton-dashboard-triggers
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: tekton-dashboard
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "rolebinding_triggers-dashboard" ) }}
|
|
@ -0,0 +1,17 @@
|
||||||
|
{{- define "service-deployment" -}}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: tekton-dashboard
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "dashboard") | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
selector: {{- include "helpers.labels.matchLabels" (dict "Global" $) | nindent 4 }}
|
||||||
|
ports:
|
||||||
|
- name: web
|
||||||
|
protocol: TCP
|
||||||
|
port: {{ $.Values.params.endpoints.ports.web.port }}
|
||||||
|
targetPort: {{ $.Values.params.endpoints.ports.web.port }}
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "service-deployment" ) }}
|
|
@ -0,0 +1,11 @@
|
||||||
|
{{- define "serviceaccount-dashboard" -}}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "helpers.labels.labels" (dict "Global" $ "Component" "tekton" "PartOf" "tekton-dashboard") | nindent 4 }}
|
||||||
|
name: {{ template "helpers.labels.fullname" . }}
|
||||||
|
namespace: {{ $.Release.Namespace }}
|
||||||
|
...
|
||||||
|
{{- end -}}
|
||||||
|
{{- include "helpers.template.overlay" ( dict "Global" $ "template_definition" "serviceaccount-dashboard" ) }}
|
|
@ -0,0 +1,117 @@
|
||||||
|
{
|
||||||
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||||
|
"$id": "https://example.com/values.schema.json",
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"config",
|
||||||
|
"images",
|
||||||
|
"node_labels",
|
||||||
|
"params",
|
||||||
|
"over_rides"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"config": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"images": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": false,
|
||||||
|
"required": [
|
||||||
|
"applications",
|
||||||
|
"pull"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"applications": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"name",
|
||||||
|
"repo",
|
||||||
|
"tag"
|
||||||
|
],
|
||||||
|
"additionalProperties": false,
|
||||||
|
"properties": {
|
||||||
|
"name": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"repo": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"tag": {
|
||||||
|
"anyOf": [
|
||||||
|
{
|
||||||
|
"type": "object"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"pull": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": false,
|
||||||
|
"required": [
|
||||||
|
"policy"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"policy": {
|
||||||
|
"type": "string",
|
||||||
|
"enum": [
|
||||||
|
"Always",
|
||||||
|
"IfNotPresent",
|
||||||
|
"Never"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_labels": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"key",
|
||||||
|
"value"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"key": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"value": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"over_rides": {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": {
|
||||||
|
"type": "object"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,35 @@
|
||||||
|
---
|
||||||
|
config:
|
||||||
|
args:
|
||||||
|
csrf_secure_cookie: false
|
||||||
|
external-logs: ''
|
||||||
|
log_format: json
|
||||||
|
log_level: info
|
||||||
|
logout_url: ''
|
||||||
|
namespace: ''
|
||||||
|
openshift: false
|
||||||
|
read_only: false
|
||||||
|
stream_logs: false
|
||||||
|
|
||||||
|
images:
|
||||||
|
applications:
|
||||||
|
tekton_dashboard:
|
||||||
|
name: tektoncd/dashboard/cmd/dashboard
|
||||||
|
repo: gcr.io/tekton-releases/github.com
|
||||||
|
tag: v0.10.1
|
||||||
|
pull:
|
||||||
|
policy: IfNotPresent
|
||||||
|
|
||||||
|
node_labels:
|
||||||
|
tekton_dashboard:
|
||||||
|
- key: node-role.kubernetes.io/master
|
||||||
|
value: ''
|
||||||
|
|
||||||
|
params:
|
||||||
|
endpoints:
|
||||||
|
ports:
|
||||||
|
web:
|
||||||
|
port: 9097
|
||||||
|
scheme: http
|
||||||
|
|
||||||
|
over_rides: {}
|
Loading…
Reference in New Issue