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
22
charts/tekton-dashboard/.helmignore
Normal file
22
charts/tekton-dashboard/.helmignore
Normal file
@ -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/
|
14
charts/tekton-dashboard/Chart.yaml
Normal file
14
charts/tekton-dashboard/Chart.yaml
Normal file
@ -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).
|
47
charts/tekton-dashboard/crds/crd_extension-dashboard.yaml
Normal file
47
charts/tekton-dashboard/crds/crd_extension-dashboard.yaml
Normal file
@ -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" ) }}
|
71
charts/tekton-dashboard/templates/deployment-dashboard.yaml
Normal file
71
charts/tekton-dashboard/templates/deployment-dashboard.yaml
Normal file
@ -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" ) }}
|
61
charts/tekton-dashboard/templates/helpers/_label.tpl
Normal file
61
charts/tekton-dashboard/templates/helpers/_label.tpl
Normal file
@ -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 -}}
|
21
charts/tekton-dashboard/templates/helpers/_pod.tpl
Normal file
21
charts/tekton-dashboard/templates/helpers/_pod.tpl
Normal file
@ -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 -}}
|
107
charts/tekton-dashboard/templates/helpers/_template.tpl
Normal file
107
charts/tekton-dashboard/templates/helpers/_template.tpl
Normal file
@ -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" ) }}
|
17
charts/tekton-dashboard/templates/service-dashboard.yaml
Normal file
17
charts/tekton-dashboard/templates/service-dashboard.yaml
Normal file
@ -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" ) }}
|
117
charts/tekton-dashboard/values.schema.json
Normal file
117
charts/tekton-dashboard/values.schema.json
Normal file
@ -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"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
35
charts/tekton-dashboard/values.yaml
Normal file
35
charts/tekton-dashboard/values.yaml
Normal file
@ -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…
x
Reference in New Issue
Block a user