Merge branch '2-add-helm-chart' into 'master'
Resolve "Add helm chart" Closes #2 See merge request openappstack/admin-frontend!2
This commit is contained in:
commit
95a054925f
19 changed files with 1355 additions and 6 deletions
2
.env
2
.env
|
@ -1,2 +0,0 @@
|
||||||
REACT_APP_API_URL=https://oas-api.initdevelopment.com/api/v1
|
|
||||||
EXTEND_ESLINT=true
|
|
7
.gitignore
vendored
7
.gitignore
vendored
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
.env
|
||||||
.env.local
|
.env.local
|
||||||
.env.development.local
|
.env.development.local
|
||||||
.env.test.local
|
.env.test.local
|
||||||
|
@ -25,3 +26,9 @@ yarn-error.log*
|
||||||
|
|
||||||
.eslintcache
|
.eslintcache
|
||||||
cypress/videos/
|
cypress/videos/
|
||||||
|
|
||||||
|
# Helm dependencies
|
||||||
|
deployment/helmchart/charts/
|
||||||
|
|
||||||
|
# Helm values
|
||||||
|
deployment/helmchart/values-local.yaml
|
||||||
|
|
|
@ -13,8 +13,8 @@ build-project:
|
||||||
script:
|
script:
|
||||||
- echo "Building app"
|
- echo "Building app"
|
||||||
- yarn install
|
- yarn install
|
||||||
# - echo "REACT_APP_API_URL=https://oas-api.initdevelopment.com/api/v1" > .env
|
- echo "REACT_APP_API_URL=/api/v1" > .env
|
||||||
# - echo "EXTEND_ESLINT=true" >> .env
|
- echo "EXTEND_ESLINT=true" >> .env
|
||||||
- yarn build
|
- yarn build
|
||||||
- mv build web-build
|
- mv build web-build
|
||||||
- echo "Build successful"
|
- echo "Build successful"
|
||||||
|
|
23
deployment/helmchart/.helmignore
Normal file
23
deployment/helmchart/.helmignore
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
# 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
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
6
deployment/helmchart/Chart.lock
Normal file
6
deployment/helmchart/Chart.lock
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
dependencies:
|
||||||
|
- name: common
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
version: 1.10.0
|
||||||
|
digest: sha256:d6f283322d34efda54721ddd67aec935f1bea501c7b45dfbe89814aed21ae5dc
|
||||||
|
generated: "2021-09-30T16:27:06.738339948+02:00"
|
25
deployment/helmchart/Chart.yaml
Normal file
25
deployment/helmchart/Chart.yaml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
annotations:
|
||||||
|
category: Dashboard
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: 0.1.1
|
||||||
|
dependencies:
|
||||||
|
- name: common
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
tags:
|
||||||
|
- bitnami-common
|
||||||
|
version: 1.x.x
|
||||||
|
description: A Helm chart for deploying the Stackspin Dashboard to Kubernetes
|
||||||
|
engine: gotpl
|
||||||
|
home: https://open.greenhost.net/openappstack/dashboard-frontend/
|
||||||
|
icon: https://open.greenhost.net/openappstack/dashboard-frontend/-/blob/master/public/assets/logo.svg
|
||||||
|
keywords:
|
||||||
|
- stackspin
|
||||||
|
- dashboard
|
||||||
|
maintainers:
|
||||||
|
- email: info@openappstack.net
|
||||||
|
name: Stackspin
|
||||||
|
name: stackspin-dashboard
|
||||||
|
sources:
|
||||||
|
- https://open.greenhost.net/openappstack/dashboard-frontend/
|
||||||
|
- https://open.greenhost.net/openappstack/dashboard-backend/
|
||||||
|
version: 0.1.0
|
134
deployment/helmchart/templates/_helpers.tpl
Normal file
134
deployment/helmchart/templates/_helpers.tpl
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "dashboard.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
{{ default (include "common.names.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Return the proper container image registry secret names
|
||||||
|
*/}}
|
||||||
|
{{- define "dashboard.imagePullSecrets" -}}
|
||||||
|
{{ include "common.images.pullSecrets" (dict "images" (list .Values.image) "global" .Values.global) }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Return true if a secret object for backend should be created
|
||||||
|
*/}}
|
||||||
|
{{- define "backend.createSecret" -}}
|
||||||
|
{{- if or (not .Values.backend.existingSecret) (and (not .Values.backend.smtp.existingSecret) .Values.backend.smtp.password .Values.backend.smtp.enabled) }}
|
||||||
|
{{- true -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Return the backend secret name
|
||||||
|
*/}}
|
||||||
|
{{- define "backend.secretName" -}}
|
||||||
|
{{- if .Values.backend.existingSecret }}
|
||||||
|
{{- printf "%s" .Values.backend.existingSecret -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-backend" (include "common.names.fullname" .) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Return the backend SMTP secret name
|
||||||
|
*/}}
|
||||||
|
{{- define "backend.smtp.secretName" -}}
|
||||||
|
{{- if .Values.backend.smtp.existingSecret }}
|
||||||
|
{{- printf "%s" .Values.backend.smtp.existingSecret -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-backend" (include "common.names.fullname" .) -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Return true if backend SMTP uses password authentication
|
||||||
|
*/}}
|
||||||
|
{{- define "backend.smtp.password.enabled" -}}
|
||||||
|
{{- if and (or .Values.backend.smtp.password .Values.backend.smtp.existingSecret) .Values.backend.smtp.enabled }}
|
||||||
|
{{- true -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Get the user defined LoadBalancerIP for this release
|
||||||
|
Note, returns 127.0.0.1 if using ClusterIP.
|
||||||
|
*/}}
|
||||||
|
{{- define "frontend.serviceIP" -}}
|
||||||
|
{{- if eq .Values.frontend.service.type "ClusterIP" -}}
|
||||||
|
127.0.0.1
|
||||||
|
{{- else -}}
|
||||||
|
{{- .Values.frontend.service.loadBalancerIP | default "" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Gets the host to be used for this application.
|
||||||
|
If not using ClusterIP, or if a host or LoadBalancerIP is not defined, the value will be empty
|
||||||
|
*/}}
|
||||||
|
{{- define "frontend.host" -}}
|
||||||
|
{{- $host := .Values.frontend.host | default "" -}}
|
||||||
|
{{- default (include "frontend.serviceIP" .) $host -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Service name for the backend service
|
||||||
|
*/}}
|
||||||
|
{{- define "backend.serviceName" -}}
|
||||||
|
{{ include "common.names.fullname" . }}-backend
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Service name for the frontend service
|
||||||
|
*/}}
|
||||||
|
{{- define "frontend.serviceName" -}}
|
||||||
|
{{ include "common.names.fullname" . }}-frontend
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Get the user defined LoadBalancerIP for this release
|
||||||
|
Note, returns 127.0.0.1 if using ClusterIP.
|
||||||
|
*/}}
|
||||||
|
{{- define "backend.serviceIP" -}}
|
||||||
|
{{- if eq .Values.backend.service.type "ClusterIP" -}}
|
||||||
|
127.0.0.1
|
||||||
|
{{- else -}}
|
||||||
|
{{- .Values.backend.service.loadBalancerIP | default "" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Gets the host to be used for this application.
|
||||||
|
If not using ClusterIP, or if a host or LoadBalancerIP is not defined, the value will be empty
|
||||||
|
*/}}
|
||||||
|
{{- define "backend.host" -}}
|
||||||
|
{{- $host := .Values.backend.host | default "" -}}
|
||||||
|
{{- default (include "backend.serviceIP" .) $host -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Return the proper frontend image name
|
||||||
|
*/}}
|
||||||
|
{{- define "frontend.image" -}}
|
||||||
|
{{ include "common.images.image" (dict "imageRoot" .Values.frontend.image "global" .Values.global) }}
|
||||||
|
{{- end -}}
|
||||||
|
{{/*
|
||||||
|
Return the proper backend image name
|
||||||
|
*/}}
|
||||||
|
{{- define "backend.image" -}}
|
||||||
|
{{ include "common.images.image" (dict "imageRoot" .Values.backend.image "global" .Values.global) }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Return the proper Storage Class
|
||||||
|
*/}}
|
||||||
|
{{- define "dashboard.storageClass" -}}
|
||||||
|
{{- include "common.storage.class" (dict "persistence" .Values.persistence "global" .Values.global) -}}
|
||||||
|
{{- end -}}
|
42
deployment/helmchart/templates/backend-service.yaml
Normal file
42
deployment/helmchart/templates/backend-service.yaml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "backend.serviceName" . }}
|
||||||
|
labels: {{- include "common.labels.standard" . | nindent 4 }}
|
||||||
|
{{- if .Values.commonLabels }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.backend.service.annotations .Values.commonAnnotations}}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.backend.service.annotations }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.backend.service.annotations "context" $) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.commonAnnotations }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.backend.service.type }}
|
||||||
|
{{- if (or (eq .Values.backend.service.type "LoadBalancer") (eq .Values.backend.service.type "NodePort")) }}
|
||||||
|
externalTrafficPolicy: {{ .Values.backend.service.externalTrafficPolicy | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if (and (eq .Values.backend.service.type "LoadBalancer") (not (empty .Values.backend.service.loadBalancerIP))) }}
|
||||||
|
loadBalancerIP: {{ .Values.backend.service.loadBalancerIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if (and (eq .Values.backend.service.type "LoadBalancer") .Values.backend.service.loadBalancerSourceRanges) }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.backend.service.loadBalancerSourceRanges | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ .Values.backend.service.port }}
|
||||||
|
targetPort: backend-http
|
||||||
|
{{- if (and (or (eq .Values.backend.service.type "NodePort") (eq .Values.backend.service.type "LoadBalancer")) (not (empty .Values.backend.service.nodePorts.http))) }}
|
||||||
|
nodePort: {{ .Values.backend.service.nodePorts.http }}
|
||||||
|
{{- else if eq .Values.backend.service.type "ClusterIP" }}
|
||||||
|
nodePort: null
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.backend.service.extraPorts }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.backend.service.extraPorts "context" $) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
selector: {{- include "common.labels.matchLabels" . | nindent 4 }}
|
31
deployment/helmchart/templates/configmaps.yaml
Normal file
31
deployment/helmchart/templates/configmaps.yaml
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ template "common.names.fullname" . }}
|
||||||
|
labels: {{- include "common.labels.standard" . | nindent 4 }}
|
||||||
|
{{- if .Values.commonLabels }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.commonAnnotations }}
|
||||||
|
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
data:
|
||||||
|
SECRET_KEY: {{ .Values.backend.secretKey }}
|
||||||
|
FLASK_APP: app.py
|
||||||
|
FLASK_ENV: {{ .Values.backend.flaskEnv }}
|
||||||
|
# Probably needed in the future:
|
||||||
|
# ADMIN_BACKEND_USERNAME: {{ .Values.backend.username | quote }}
|
||||||
|
# ADMIN_BACKEND_EMAIL: {{ .Values.backend.email | quote }}
|
||||||
|
# {{- if .Values.backend.smtp.enabled }}
|
||||||
|
# ADMIN_BACKEND_SMTP_HOST: {{ .Values.backend.smtp.host | quote }}
|
||||||
|
# ADMIN_BACKEND_SMTP_PORT: {{ .Values.backend.smtp.port | quote }}
|
||||||
|
# {{- if .Values.backend.smtp.user }}
|
||||||
|
# ADMIN_BACKEND_SMTP_USER: {{ .Values.backend.smtp.user | quote }}
|
||||||
|
# {{- end }}
|
||||||
|
# {{- if .Values.backend.smtp.protocol }}
|
||||||
|
# ADMIN_BACKEND_SMTP_PROTOCOL: {{ .Values.backend.smtp.protocol | quote }}
|
||||||
|
# {{- end }}
|
||||||
|
# {{- if .Values.backend.smtp.auth }}
|
||||||
|
# ADMIN_BACKEND_SMTP_AUTH: {{ .Values.backend.smtp.auth | quote }}
|
||||||
|
# {{- end }}
|
||||||
|
# {{- end }}
|
199
deployment/helmchart/templates/deployment.yaml
Normal file
199
deployment/helmchart/templates/deployment.yaml
Normal file
|
@ -0,0 +1,199 @@
|
||||||
|
apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }}
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ template "common.names.fullname" . }}
|
||||||
|
labels: {{- include "common.labels.standard" . | nindent 4 }}
|
||||||
|
component: dashboard
|
||||||
|
{{- if .Values.commonLabels }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.commonAnnotations }}
|
||||||
|
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }}
|
||||||
|
component: dashboard
|
||||||
|
{{- if .Values.updateStrategy }}
|
||||||
|
strategy: {{- toYaml .Values.updateStrategy | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels: {{- include "common.labels.standard" . | nindent 8 }}
|
||||||
|
component: dashboard
|
||||||
|
{{- if .Values.podLabels }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.podLabels "context" $) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.podAnnotations }}
|
||||||
|
annotations: {{- include "common.tplvalues.render" (dict "value" .Values.podAnnotations "context" $) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- include "dashboard.imagePullSecrets" . | nindent 6 }}
|
||||||
|
{{- if .Values.hostAliases }}
|
||||||
|
hostAliases: {{- include "common.tplvalues.render" (dict "value" .Values.hostAliases "context" $) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.affinity }}
|
||||||
|
affinity: {{- include "common.tplvalues.render" (dict "value" .Values.affinity "context" $) | nindent 8 }}
|
||||||
|
{{- else }}
|
||||||
|
affinity:
|
||||||
|
podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAffinityPreset "context" $) | nindent 10 }}
|
||||||
|
podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.podAntiAffinityPreset "context" $) | nindent 10 }}
|
||||||
|
nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.nodeAffinityPreset.type "key" .Values.nodeAffinityPreset.key "values" .Values.nodeAffinityPreset.values) | nindent 10 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.nodeSelector }}
|
||||||
|
nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.nodeSelector "context" $) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.tolerations }}
|
||||||
|
tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.tolerations "context" $) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "dashboard.serviceAccountName" . }}
|
||||||
|
securityContext: {{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
initContainers:
|
||||||
|
{{- if .Values.initContainers }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.initContainers "context" $) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: frontend
|
||||||
|
securityContext: {{- toYaml .Values.frontend.containerSecurityContext | nindent 12 }}
|
||||||
|
image: {{ template "frontend.image" . }}
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
|
||||||
|
{{- if .Values.frontend.command }}
|
||||||
|
command: {{- include "common.tplvalues.render" (dict "value" .Values.frontend.command "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.frontend.args }}
|
||||||
|
args: {{- include "common.tplvalues.render" (dict "value" .Values.frontend.args "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
{{- if .Values.frontend.extraEnvVars }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.frontend.extraEnvVars "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: {{ include "common.names.fullname" . }}
|
||||||
|
{{- if .Values.frontend.extraEnvVarsCM }}
|
||||||
|
- configMapRef:
|
||||||
|
name: {{ .Values.frontend.extraEnvVarsCM }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.frontend.extraEnvVarsSecret }}
|
||||||
|
- secretRef:
|
||||||
|
name: {{ .Values.frontend.extraEnvVarsSecret }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: frontend-http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
{{- if .Values.frontend.livenessProbe.enabled }}
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: frontend-http
|
||||||
|
initialDelaySeconds: {{ .Values.frontend.livenessProbe.initialDelaySeconds }}
|
||||||
|
periodSeconds: {{ .Values.frontend.livenessProbe.periodSeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.frontend.livenessProbe.timeoutSeconds }}
|
||||||
|
successThreshold: {{ .Values.frontend.livenessProbe.successThreshold }}
|
||||||
|
failureThreshold: {{ .Values.frontend.livenessProbe.failureThreshold }}
|
||||||
|
{{- else if .Values.frontend.customLivenessProbe }}
|
||||||
|
livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.frontend.customLivenessProbe "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.frontend.readinessProbe.enabled }}
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: frontend-http
|
||||||
|
initialDelaySeconds: {{ .Values.frontend.readinessProbe.initialDelaySeconds }}
|
||||||
|
periodSeconds: {{ .Values.frontend.readinessProbe.periodSeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.frontend.readinessProbe.timeoutSeconds }}
|
||||||
|
successThreshold: {{ .Values.frontend.readinessProbe.successThreshold }}
|
||||||
|
failureThreshold: {{ .Values.frontend.readinessProbe.failureThreshold }}
|
||||||
|
{{- else if .Values.frontend.customReadinessProbe }}
|
||||||
|
readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.frontend.customReadinessProbe "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
volumeMounts:
|
||||||
|
{{- if .Values.frontend.extraVolumeMounts }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.frontend.extraVolumeMounts "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.frontend.resources }}
|
||||||
|
resources: {{- toYaml .Values.frontend.resources | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
- name: backend
|
||||||
|
securityContext: {{- toYaml .Values.backend.containerSecurityContext | nindent 12 }}
|
||||||
|
image: {{ template "backend.image" . }}
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
|
||||||
|
{{- if .Values.backend.command }}
|
||||||
|
command: {{- include "common.tplvalues.render" (dict "value" .Values.backend.command "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.backend.args }}
|
||||||
|
args: {{- include "common.tplvalues.render" (dict "value" .Values.backend.args "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
env:
|
||||||
|
- name: ADMIN_PANEL_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "backend.secretName" . }}
|
||||||
|
key: backend-password
|
||||||
|
{{- if (include "backend.smtp.password.enabled" .) }}
|
||||||
|
- name: ADMIN_PANEL_SMTP_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "backend.smtp.secretName" . }}
|
||||||
|
key: smtp-password
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.backend.extraEnvVars }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.backend.extraEnvVars "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: {{ include "common.names.fullname" . }}
|
||||||
|
{{- if .Values.backend.extraEnvVarsCM }}
|
||||||
|
- configMapRef:
|
||||||
|
name: {{ .Values.backend.extraEnvVarsCM }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.backend.extraEnvVarsSecret }}
|
||||||
|
- secretRef:
|
||||||
|
name: {{ .Values.backend.extraEnvVarsSecret }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: backend-http
|
||||||
|
containerPort: 5000
|
||||||
|
protocol: TCP
|
||||||
|
{{- if .Values.backend.livenessProbe.enabled }}
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: backend-http
|
||||||
|
initialDelaySeconds: {{ .Values.backend.livenessProbe.initialDelaySeconds }}
|
||||||
|
periodSeconds: {{ .Values.backend.livenessProbe.periodSeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.backend.livenessProbe.timeoutSeconds }}
|
||||||
|
successThreshold: {{ .Values.backend.livenessProbe.successThreshold }}
|
||||||
|
failureThreshold: {{ .Values.backend.livenessProbe.failureThreshold }}
|
||||||
|
{{- else if .Values.backend.customLivenessProbe }}
|
||||||
|
livenessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.backend.customLivenessProbe "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.backend.readinessProbe.enabled }}
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: backend-http
|
||||||
|
initialDelaySeconds: {{ .Values.backend.readinessProbe.initialDelaySeconds }}
|
||||||
|
periodSeconds: {{ .Values.backend.readinessProbe.periodSeconds }}
|
||||||
|
timeoutSeconds: {{ .Values.backend.readinessProbe.timeoutSeconds }}
|
||||||
|
successThreshold: {{ .Values.backend.readinessProbe.successThreshold }}
|
||||||
|
failureThreshold: {{ .Values.backend.readinessProbe.failureThreshold }}
|
||||||
|
{{- else if .Values.backend.customReadinessProbe }}
|
||||||
|
readinessProbe: {{- include "common.tplvalues.render" (dict "value" .Values.backend.customReadinessProbe "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
volumeMounts:
|
||||||
|
{{- if .Values.backend.extraVolumeMounts }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.backend.extraVolumeMounts "context" $) | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.backend.resources }}
|
||||||
|
resources: {{- toYaml .Values.backend.resources | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.sidecars }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.sidecars "context" $) | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
{{- if .Values.extraVolumes }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.extraVolumes "context" $) | nindent 8 }}
|
||||||
|
{{- end }}
|
42
deployment/helmchart/templates/frontend-service.yaml
Normal file
42
deployment/helmchart/templates/frontend-service.yaml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "frontend.serviceName" . }}
|
||||||
|
labels: {{- include "common.labels.standard" . | nindent 4 }}
|
||||||
|
{{- if .Values.commonLabels }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.frontend.service.annotations .Values.commonAnnotations}}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.frontend.service.annotations }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.frontend.service.annotations "context" $) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.commonAnnotations }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.frontend.service.type }}
|
||||||
|
{{- if (or (eq .Values.frontend.service.type "LoadBalancer") (eq .Values.frontend.service.type "NodePort")) }}
|
||||||
|
externalTrafficPolicy: {{ .Values.frontend.service.externalTrafficPolicy | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if (and (eq .Values.frontend.service.type "LoadBalancer") (not (empty .Values.frontend.service.loadBalancerIP))) }}
|
||||||
|
loadBalancerIP: {{ .Values.frontend.service.loadBalancerIP }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if (and (eq .Values.frontend.service.type "LoadBalancer") .Values.frontend.service.loadBalancerSourceRanges) }}
|
||||||
|
loadBalancerSourceRanges:
|
||||||
|
{{ toYaml .Values.frontend.service.loadBalancerSourceRanges | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: {{ .Values.frontend.service.port }}
|
||||||
|
targetPort: frontend-http
|
||||||
|
{{- if (and (or (eq .Values.frontend.service.type "NodePort") (eq .Values.frontend.service.type "LoadBalancer")) (not (empty .Values.frontend.service.nodePorts.http))) }}
|
||||||
|
nodePort: {{ .Values.frontend.service.nodePorts.http }}
|
||||||
|
{{- else if eq .Values.frontend.service.type "ClusterIP" }}
|
||||||
|
nodePort: null
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.frontend.service.extraPorts }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.frontend.service.extraPorts "context" $) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
selector: {{- include "common.labels.matchLabels" . | nindent 4 }}
|
66
deployment/helmchart/templates/ingress.yaml
Normal file
66
deployment/helmchart/templates/ingress.yaml
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
apiVersion: {{ template "common.capabilities.ingress.apiVersion" . }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ template "common.names.fullname" . }}
|
||||||
|
labels: {{- include "common.labels.standard" . | nindent 4 }}
|
||||||
|
{{- if .Values.commonLabels }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.ingress.annotations .Values.ingress.certManager .Values.commonAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.commonAnnotations }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.annotations }}
|
||||||
|
{{- toYaml .Values.ingress.annotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.certManager }}
|
||||||
|
kubernetes.io/tls-acme: "true"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if or .Values.ingress.tls .Values.ingress.extraTls }}
|
||||||
|
tls:
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
- {{ .Values.ingress.hostname }}
|
||||||
|
secretName: {{ printf "%s-tls" .Values.ingress.hostname }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.extraTls }}
|
||||||
|
{{- toYaml .Values.ingress.extraTls | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- if .Values.ingress.hostname }}
|
||||||
|
- host: {{ .Values.ingress.hostname }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: {{ .Values.ingress.path }}
|
||||||
|
{{- if eq "true" (include "common.ingress.supportsPathType" .) }}
|
||||||
|
pathType: {{ .Values.ingress.pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "frontend.serviceName" .) "servicePort" "frontend-http" "context" $) | nindent 14 }}
|
||||||
|
# Forward API calls to the back-end container
|
||||||
|
- path: {{ .Values.ingress.path }}api/v1
|
||||||
|
{{- if eq "true" (include "common.ingress.supportsPathType" .) }}
|
||||||
|
pathType: {{ .Values.ingress.pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "backend.serviceName" .) "servicePort" "backend-http" "context" $) | nindent 14 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- range .Values.ingress.extraHosts }}
|
||||||
|
- host: {{ .name }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: {{ default "/" .path }}
|
||||||
|
{{- if eq "true" (include "common.ingress.supportsPathType" $) }}
|
||||||
|
pathType: {{ default "ImplementationSpecific" .pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "frontend.serviceName" $) "servicePort" "frontend-http" "context" $) | nindent 14 }}
|
||||||
|
- path: {{ default "/" .path }}api/v1
|
||||||
|
{{- if eq "true" (include "common.ingress.supportsPathType" $) }}
|
||||||
|
pathType: {{ default "ImplementationSpecific" .pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "backend.serviceName" .) "servicePort" "backend-http" "context" $) | nindent 14 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
24
deployment/helmchart/templates/pvc.yaml
Normal file
24
deployment/helmchart/templates/pvc.yaml
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# Disabled by default because the current dashboard does not need persistence
|
||||||
|
{{- if and (include "frontend.host" .) .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: {{ template "common.names.fullname" . }}
|
||||||
|
labels: {{- include "common.labels.standard" . | nindent 4 }}
|
||||||
|
{{- if .Values.commonLabels }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.commonAnnotations }}
|
||||||
|
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- {{ .Values.persistence.accessMode | quote }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.persistence.size | quote }}
|
||||||
|
{{ include "dashboard.storageClass" . }}
|
||||||
|
{{- if .Values.persistence.selector }}
|
||||||
|
selector: {{- include "common.tplvalues.render" (dict "value" .Values.persistence.selector "context" $) | nindent 4 }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
23
deployment/helmchart/templates/secrets-admin-panel.yaml
Normal file
23
deployment/helmchart/templates/secrets-admin-panel.yaml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{{- if (include "backend.createSecret" .) }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ include "backend.secretName" . }}
|
||||||
|
labels: {{- include "common.labels.standard" . | nindent 4 }}
|
||||||
|
{{- if .Values.commonLabels }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.commonAnnotations }}
|
||||||
|
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
{{- if and (.Values.backend.password) (not .Values.backend.existingSecret) }}
|
||||||
|
backend-password: {{ .Values.backend.password | b64enc | quote }}
|
||||||
|
{{- else if not .Values.backend.existingSecret }}
|
||||||
|
backend-password: {{ randAlphaNum 10 | b64enc | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if and (.Values.backend.smtp.password) (.Values.backend.smtp.enabled) (not .Values.backend.smtp.existingSecret) }}
|
||||||
|
smtp-password: {{ .Values.backend.smtp.password | b64enc | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
19
deployment/helmchart/templates/serviceaccount.yaml
Normal file
19
deployment/helmchart/templates/serviceaccount.yaml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "dashboard.serviceAccountName" . }}
|
||||||
|
labels: {{- include "common.labels.standard" . | nindent 4 }}
|
||||||
|
{{- if .Values.commonLabels }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if or .Values.serviceAccount.annotations .Values.commonAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- if .Values.serviceAccount.annotations }}
|
||||||
|
{{- toYaml .Values.serviceAccount.annotations | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.commonAnnotations }}
|
||||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
19
deployment/helmchart/templates/tls-secrets.yaml
Normal file
19
deployment/helmchart/templates/tls-secrets.yaml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range .Values.ingress.secrets }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ .name }}
|
||||||
|
labels: {{- include "common.labels.standard" $ | nindent 4 }}
|
||||||
|
{{- if $.Values.commonLabels }}
|
||||||
|
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if $.Values.commonAnnotations }}
|
||||||
|
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
type: kubernetes.io/tls
|
||||||
|
data:
|
||||||
|
tls.crt: {{ .certificate | b64enc }}
|
||||||
|
tls.key: {{ .key | b64enc }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
12
deployment/helmchart/values-local.yaml.example
Normal file
12
deployment/helmchart/values-local.yaml.example
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# Values you will likely want to override. See values.yaml for their meanings
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
host: dashboard.oas.example.com
|
||||||
|
|
||||||
|
backend:
|
||||||
|
secretKey: My random secret key
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
certManager: true
|
||||||
|
hostname: dashboard.oas.example.com
|
679
deployment/helmchart/values.yaml
Normal file
679
deployment/helmchart/values.yaml
Normal file
|
@ -0,0 +1,679 @@
|
||||||
|
## @section Global parameters
|
||||||
|
## Global container image parameters
|
||||||
|
## Please, note that this will override the image parameters, including dependencies, configured to use the global value
|
||||||
|
## Current available global container image parameters: imageRegistry, imagePullSecrets and storageClass
|
||||||
|
|
||||||
|
## @param global.imageRegistry Global container image registry
|
||||||
|
## @param global.imagePullSecrets Global container registry secret names as an array
|
||||||
|
## @param global.storageClass Global StorageClass for Persistent Volume(s)
|
||||||
|
##
|
||||||
|
global:
|
||||||
|
imageRegistry: ""
|
||||||
|
## E.g.
|
||||||
|
## imagePullSecrets:
|
||||||
|
## - myRegistryKeySecretName
|
||||||
|
##
|
||||||
|
imagePullSecrets: []
|
||||||
|
storageClass: ""
|
||||||
|
|
||||||
|
## @section Common parameters
|
||||||
|
|
||||||
|
## @param kubeVersion Force target Kubernetes version (using Helm capabilities if not set)
|
||||||
|
##
|
||||||
|
kubeVersion: ""
|
||||||
|
## @param nameOverride String to partially override dashboard.fullname template (will maintain the release name)
|
||||||
|
##
|
||||||
|
nameOverride: ""
|
||||||
|
## @param fullnameOverride String to fully override dashboard.fullname template
|
||||||
|
##
|
||||||
|
fullnameOverride: ""
|
||||||
|
## @param commonLabels Labels to be added to all deployed resources
|
||||||
|
##
|
||||||
|
commonLabels: {}
|
||||||
|
## @param commonAnnotations Annotations to be added to all deployed resources
|
||||||
|
##
|
||||||
|
commonAnnotations: {}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## @section Stackspin parameters
|
||||||
|
|
||||||
|
## @param imagePullSecrets Specify docker-registry secret names as an array
|
||||||
|
##
|
||||||
|
image:
|
||||||
|
imagePullSecrets: []
|
||||||
|
|
||||||
|
## Admin frontend configuration parameters
|
||||||
|
## ref: https://open.greenhost.net/openappstack/dashboard-frontend
|
||||||
|
##
|
||||||
|
frontend:
|
||||||
|
## Admin frontend image version
|
||||||
|
## ref: https://hub.docker.com/r/bitnami/frontend/tags/
|
||||||
|
## @param image.registry Stackspin image registry
|
||||||
|
## @param image.repository Stackspin image repository
|
||||||
|
## @param image.tag Stackspin image tag
|
||||||
|
## @param image.pullPolicy Stackspin image pull policy
|
||||||
|
## @param image.pullSecrets Stackspin image pull secrets
|
||||||
|
## @param image.debug Specify if debug logs should be enabled
|
||||||
|
##
|
||||||
|
image:
|
||||||
|
registry: open.greenhost.net:4567
|
||||||
|
repository: openappstack/admin-frontend/admin-frontend
|
||||||
|
tag: 0.1.1
|
||||||
|
## Specify a imagePullPolicy
|
||||||
|
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||||
|
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||||
|
##
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
## Optionally specify an array of imagePullSecrets.
|
||||||
|
## Secrets must be manually created in the namespace.
|
||||||
|
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||||
|
## e.g:
|
||||||
|
## pullSecrets:
|
||||||
|
## - myRegistryKeySecretName
|
||||||
|
##
|
||||||
|
pullSecrets: []
|
||||||
|
## @section Service parameters
|
||||||
|
|
||||||
|
## Kubernetes service configuration. For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP
|
||||||
|
##
|
||||||
|
service:
|
||||||
|
## @param service.type Kubernetes Service type
|
||||||
|
##
|
||||||
|
type: ClusterIP
|
||||||
|
## @param service.port Service HTTP port
|
||||||
|
##
|
||||||
|
port: 80
|
||||||
|
## @param service.nodePort Node Ports to expose
|
||||||
|
##
|
||||||
|
nodePort: ""
|
||||||
|
## @param service.loadBalancerIP Use loadBalancerIP to request a specific static IP
|
||||||
|
##
|
||||||
|
loadBalancerIP: ""
|
||||||
|
## @param service.externalTrafficPolicy Enable client source IP preservation
|
||||||
|
## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
|
||||||
|
##
|
||||||
|
externalTrafficPolicy: Cluster
|
||||||
|
## @param service.annotations Service annotations
|
||||||
|
##
|
||||||
|
annotations: {}
|
||||||
|
## @param service.loadBalancerSourceRanges Limits which cidr blocks can connect to service's load balancer
|
||||||
|
## Only valid if service.type: LoadBalancer
|
||||||
|
##
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
## @param service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
|
||||||
|
##
|
||||||
|
extraPorts: []
|
||||||
|
## @param service.nodePorts.http Kubernetes http node port
|
||||||
|
## Example:
|
||||||
|
## nodePorts:
|
||||||
|
## http: <to set explicitly, choose port between 30000-32767>
|
||||||
|
##
|
||||||
|
nodePorts:
|
||||||
|
http: ""
|
||||||
|
## @param frontend.extendEslint Whether to read .eslint.json rules
|
||||||
|
extendEslint: false
|
||||||
|
## @param frontend.host Stackspin host to create application URLs (include the port if =/= 80)
|
||||||
|
##
|
||||||
|
host: ""
|
||||||
|
## @param frontend.command Custom command to override image cmd
|
||||||
|
##
|
||||||
|
command: []
|
||||||
|
## @param frontend.args Custom args for the custom command
|
||||||
|
##
|
||||||
|
args: []
|
||||||
|
## @param frontend.containerSecurityContext Container security context specification
|
||||||
|
## Example:
|
||||||
|
## capabilities:
|
||||||
|
## drop:
|
||||||
|
## - ALL
|
||||||
|
## readOnlyRootFilesystem: true
|
||||||
|
## runAsNonRoot: true
|
||||||
|
## runAsUser: 1000
|
||||||
|
##
|
||||||
|
containerSecurityContext: {}
|
||||||
|
## Stackspin container's resource requests and limits
|
||||||
|
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||||
|
## We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
## choice for the user. This also increases chances charts run on environments with little
|
||||||
|
## resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
## @param frontend.resources.limits The resources limits for the container
|
||||||
|
## @param frontend.resources.requests The requested resources for the container
|
||||||
|
##
|
||||||
|
resources:
|
||||||
|
## Example:
|
||||||
|
## limits:
|
||||||
|
## cpu: 100m
|
||||||
|
## memory: 128Mi
|
||||||
|
limits: {}
|
||||||
|
## Examples:
|
||||||
|
## requests:
|
||||||
|
## cpu: 100m
|
||||||
|
## memory: 128Mi
|
||||||
|
requests: {}
|
||||||
|
## Stackspin extra options for liveness probe
|
||||||
|
## WARNING: Stackspin installation process may take up some time and
|
||||||
|
## setting inappropriate values here may lead to pods failure.
|
||||||
|
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
|
||||||
|
## @param frontend.livenessProbe.enabled Enable/disable livenessProbe
|
||||||
|
## @param frontend.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated
|
||||||
|
## @param frontend.livenessProbe.periodSeconds How often to perform the probe
|
||||||
|
## @param frontend.livenessProbe.timeoutSeconds When the probe times out
|
||||||
|
## @param frontend.livenessProbe.failureThreshold Minimum consecutive failures for the probe
|
||||||
|
## @param frontend.livenessProbe.successThreshold Minimum consecutive successes for the probe
|
||||||
|
##
|
||||||
|
livenessProbe:
|
||||||
|
enabled: true
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
failureThreshold: 6
|
||||||
|
successThreshold: 1
|
||||||
|
## Stackspin extra options for readiness probe
|
||||||
|
## WARNING: Stackspin installation process may take up some time and
|
||||||
|
## setting inappropriate values here may lead to pods failure.
|
||||||
|
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
|
||||||
|
## @param frontend.readinessProbe.enabled Enable/disable readinessProbe
|
||||||
|
## @param frontend.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated
|
||||||
|
## @param frontend.readinessProbe.periodSeconds How often to perform the probe
|
||||||
|
## @param frontend.readinessProbe.timeoutSeconds When the probe times out
|
||||||
|
## @param frontend.readinessProbe.failureThreshold Minimum consecutive failures for the probe
|
||||||
|
## @param frontend.readinessProbe.successThreshold Minimum consecutive successes for the probe
|
||||||
|
##
|
||||||
|
readinessProbe:
|
||||||
|
enabled: true
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
failureThreshold: 6
|
||||||
|
successThreshold: 1
|
||||||
|
## @param frontend.customLivenessProbe Custom liveness probe to execute (when the main one is disabled)
|
||||||
|
##
|
||||||
|
customLivenessProbe: {}
|
||||||
|
## @param frontend.customReadinessProbe Custom readiness probe to execute (when the main one is disabled)
|
||||||
|
##
|
||||||
|
customReadinessProbe: {}
|
||||||
|
## @param frontend.extraEnvVars An array to add extra env vars
|
||||||
|
## For example:
|
||||||
|
## extraEnvVars:
|
||||||
|
## frontend:
|
||||||
|
## - name: ADMIN_PANEL_ELASTICSEARCH_URL
|
||||||
|
## value: test
|
||||||
|
##
|
||||||
|
extraEnvVars: []
|
||||||
|
## @param frontend.extraEnvVarsCM Array to add extra configmaps
|
||||||
|
##
|
||||||
|
extraEnvVarsCM: []
|
||||||
|
## @param frontend.extraEnvVarsSecret Array to add extra environment variables from a secret
|
||||||
|
##
|
||||||
|
extraEnvVarsSecret: ""
|
||||||
|
## @param frontend.extraVolumeMounts Additional volume mounts (used along with `extraVolumes`)
|
||||||
|
## Example: Mount CA file
|
||||||
|
## extraVolumeMounts
|
||||||
|
## - name: ca-cert
|
||||||
|
## subPath: ca_cert
|
||||||
|
## mountPath: /path/to/ca_cert
|
||||||
|
##
|
||||||
|
extraVolumeMounts: []
|
||||||
|
## Admin backend configuration parameters
|
||||||
|
## ref: https://open.greenhost.net/openappstack/dashboard-backend
|
||||||
|
##
|
||||||
|
backend:
|
||||||
|
## Admin frontend image version
|
||||||
|
## ref: https://hub.docker.com/r/bitnami/frontend/tags/
|
||||||
|
## @param image.registry Stackspin image registry
|
||||||
|
## @param image.repository Stackspin image repository
|
||||||
|
## @param image.tag Stackspin image tag
|
||||||
|
## @param image.pullPolicy Stackspin image pull policy
|
||||||
|
## @param image.pullSecrets Stackspin image pull secrets
|
||||||
|
## @param image.debug Specify if debug logs should be enabled
|
||||||
|
##
|
||||||
|
image:
|
||||||
|
registry: open.greenhost.net:4567
|
||||||
|
repository: openappstack/admin-backend/admin-backend
|
||||||
|
tag: 0.1.0
|
||||||
|
## Specify a imagePullPolicy
|
||||||
|
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||||
|
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
|
||||||
|
##
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
## Optionally specify an array of imagePullSecrets.
|
||||||
|
## Secrets must be manually created in the namespace.
|
||||||
|
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
|
||||||
|
## e.g:
|
||||||
|
## pullSecrets:
|
||||||
|
## - myRegistryKeySecretName
|
||||||
|
##
|
||||||
|
pullSecrets: []
|
||||||
|
|
||||||
|
## Kubernetes service configuration. For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP
|
||||||
|
##
|
||||||
|
service:
|
||||||
|
## @param service.type Kubernetes Service type
|
||||||
|
##
|
||||||
|
type: ClusterIP
|
||||||
|
## @param service.port Service HTTP port
|
||||||
|
##
|
||||||
|
port: 80
|
||||||
|
## @param service.nodePort Node Ports to expose
|
||||||
|
##
|
||||||
|
nodePort: ""
|
||||||
|
## @param service.loadBalancerIP Use loadBalancerIP to request a specific static IP
|
||||||
|
##
|
||||||
|
loadBalancerIP: ""
|
||||||
|
## @param service.externalTrafficPolicy Enable client source IP preservation
|
||||||
|
## ref http://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
|
||||||
|
##
|
||||||
|
externalTrafficPolicy: Cluster
|
||||||
|
## @param service.annotations Service annotations
|
||||||
|
##
|
||||||
|
annotations: {}
|
||||||
|
## @param service.loadBalancerSourceRanges Limits which cidr blocks can connect to service's load balancer
|
||||||
|
## Only valid if service.type: LoadBalancer
|
||||||
|
##
|
||||||
|
loadBalancerSourceRanges: []
|
||||||
|
## @param service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
|
||||||
|
##
|
||||||
|
extraPorts: []
|
||||||
|
## @param service.nodePorts.http Kubernetes http node port
|
||||||
|
## Example:
|
||||||
|
## nodePorts:
|
||||||
|
## http: <to set explicitly, choose port between 30000-32767>
|
||||||
|
##
|
||||||
|
nodePorts:
|
||||||
|
http: ""
|
||||||
|
|
||||||
|
|
||||||
|
## @param backend.reactAppApiUrl URL to the dashboard-backend API
|
||||||
|
apiUrl: "/api/v1"
|
||||||
|
|
||||||
|
## Variables for future use {{{
|
||||||
|
|
||||||
|
## @param backend.username Admin user of the application
|
||||||
|
##
|
||||||
|
username: user
|
||||||
|
## @param backend.password password. WARNING: Minimum length of 10 characters
|
||||||
|
## Defaults to a random 10-character alphanumeric string if not set
|
||||||
|
##
|
||||||
|
password: ""
|
||||||
|
## @param backend.existingSecret Name of an existing secret containing the password (ignores previous password)
|
||||||
|
## The secret should contain the following key:
|
||||||
|
## backend-password
|
||||||
|
##
|
||||||
|
existingSecret: ""
|
||||||
|
## @param backend.email Admin user email of the application
|
||||||
|
##
|
||||||
|
email: user@example.com
|
||||||
|
|
||||||
|
## Admin panel SMTP settings
|
||||||
|
## @param backend.smtp.enabled Enable/disable SMTP
|
||||||
|
## @param backend.smtp.host SMTP host name
|
||||||
|
## @param backend.smtp.port SMTP port number
|
||||||
|
## @param backend.smtp.user SMTP account user name
|
||||||
|
## @param backend.smtp.password SMTP account password
|
||||||
|
## @param backend.smtp.protocol SMTP protocol (Allowed values: tls, ssl)
|
||||||
|
## @param backend.smtp.auth SMTP authentication method
|
||||||
|
## @param backend.smtp.existingSecret Name of an existing Kubernetes secret. The secret must have the following key configured: `smtp-password`
|
||||||
|
##
|
||||||
|
smtp:
|
||||||
|
enabled: false
|
||||||
|
host: ""
|
||||||
|
port: ""
|
||||||
|
user: ""
|
||||||
|
password: ""
|
||||||
|
protocol: ""
|
||||||
|
auth: ""
|
||||||
|
existingSecret: ""
|
||||||
|
|
||||||
|
## End variables for future use }}}
|
||||||
|
|
||||||
|
## @param backend.flaskEnv Overridable flask env for debugging
|
||||||
|
flaskEnv: production
|
||||||
|
|
||||||
|
## @param backend.secretKey Flask secret for generating JWT tokens
|
||||||
|
# secretKey: OVERRIDE_ME
|
||||||
|
|
||||||
|
## @param backend.command Custom command to override image cmd
|
||||||
|
##
|
||||||
|
command: []
|
||||||
|
## @param backend.args Custom args for the custom command
|
||||||
|
##
|
||||||
|
args: []
|
||||||
|
## @param backend.containerSecurityContext Container security context specification
|
||||||
|
## Example:
|
||||||
|
## capabilities:
|
||||||
|
## drop:
|
||||||
|
## - ALL
|
||||||
|
## readOnlyRootFilesystem: true
|
||||||
|
## runAsNonRoot: true
|
||||||
|
## runAsUser: 1000
|
||||||
|
##
|
||||||
|
containerSecurityContext: {}
|
||||||
|
## Stackspin container's resource requests and limits
|
||||||
|
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||||
|
## We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
## choice for the user. This also increases chances charts run on environments with little
|
||||||
|
## resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
## @param backend.resources.limits The resources limits for the container
|
||||||
|
## @param backend.resources.requests The requested resources for the container
|
||||||
|
##
|
||||||
|
resources:
|
||||||
|
## Example:
|
||||||
|
## limits:
|
||||||
|
## cpu: 100m
|
||||||
|
## memory: 128Mi
|
||||||
|
limits: {}
|
||||||
|
## Examples:
|
||||||
|
## requests:
|
||||||
|
## cpu: 100m
|
||||||
|
## memory: 128Mi
|
||||||
|
requests: {}
|
||||||
|
## Stackspin extra options for liveness probe
|
||||||
|
## WARNING: Stackspin installation process may take up some time and
|
||||||
|
## setting inappropriate values here may lead to pods failure.
|
||||||
|
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
|
||||||
|
## @param backend.livenessProbe.enabled Enable/disable livenessProbe
|
||||||
|
## @param backend.livenessProbe.initialDelaySeconds Delay before liveness probe is initiated
|
||||||
|
## @param backend.livenessProbe.periodSeconds How often to perform the probe
|
||||||
|
## @param backend.livenessProbe.timeoutSeconds When the probe times out
|
||||||
|
## @param backend.livenessProbe.failureThreshold Minimum consecutive failures for the probe
|
||||||
|
## @param backend.livenessProbe.successThreshold Minimum consecutive successes for the probe
|
||||||
|
##
|
||||||
|
livenessProbe:
|
||||||
|
enabled: true
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
failureThreshold: 6
|
||||||
|
successThreshold: 1
|
||||||
|
## Stackspin extra options for readiness probe
|
||||||
|
## WARNING: Stackspin installation process may take up some time and
|
||||||
|
## setting inappropriate values here may lead to pods failure.
|
||||||
|
## ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
|
||||||
|
## @param backend.readinessProbe.enabled Enable/disable readinessProbe
|
||||||
|
## @param backend.readinessProbe.initialDelaySeconds Delay before readiness probe is initiated
|
||||||
|
## @param backend.readinessProbe.periodSeconds How often to perform the probe
|
||||||
|
## @param backend.readinessProbe.timeoutSeconds When the probe times out
|
||||||
|
## @param backend.readinessProbe.failureThreshold Minimum consecutive failures for the probe
|
||||||
|
## @param backend.readinessProbe.successThreshold Minimum consecutive successes for the probe
|
||||||
|
##
|
||||||
|
readinessProbe:
|
||||||
|
enabled: true
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
timeoutSeconds: 5
|
||||||
|
failureThreshold: 6
|
||||||
|
successThreshold: 1
|
||||||
|
## @param backend.customLivenessProbe Custom liveness probe to execute (when the main one is disabled)
|
||||||
|
##
|
||||||
|
customLivenessProbe: {}
|
||||||
|
## @param backend.customReadinessProbe Custom readiness probe to execute (when the main one is disabled)
|
||||||
|
##
|
||||||
|
customReadinessProbe: {}
|
||||||
|
## @param backend.extraEnvVars An array to add extra env vars
|
||||||
|
## For example:
|
||||||
|
## extraEnvVars:
|
||||||
|
## backend:
|
||||||
|
## - name: ADMIN_PANEL_ELASTICSEARCH_URL
|
||||||
|
## value: test
|
||||||
|
##
|
||||||
|
extraEnvVars: []
|
||||||
|
## @param backend.extraEnvVarsCM Array to add extra configmaps
|
||||||
|
##
|
||||||
|
extraEnvVarsCM: []
|
||||||
|
## @param backend.extraEnvVarsSecret Array to add extra environment variables from a secret
|
||||||
|
##
|
||||||
|
extraEnvVarsSecret: ""
|
||||||
|
## @param backend.extraVolumeMounts Additional volume mounts (used along with `extraVolumes`)
|
||||||
|
## Example: Mount CA file
|
||||||
|
## extraVolumeMounts
|
||||||
|
## - name: ca-cert
|
||||||
|
## subPath: ca_cert
|
||||||
|
## mountPath: /path/to/ca_cert
|
||||||
|
##
|
||||||
|
extraVolumeMounts: []
|
||||||
|
|
||||||
|
## @param replicaCount Number of Stackspin & Sidekiq replicas
|
||||||
|
## (Note that you will need ReadWriteMany PVCs for this to work properly)
|
||||||
|
##
|
||||||
|
replicaCount: 1
|
||||||
|
## @param extraVolumes Array of extra volumes to be added deployment. Requires setting `extraVolumeMounts`
|
||||||
|
## Example: Add secret volume
|
||||||
|
## extraVolumes:
|
||||||
|
## - name: ca-cert
|
||||||
|
## secret:
|
||||||
|
## secretName: ca-cert
|
||||||
|
## items:
|
||||||
|
## - key: ca-cert
|
||||||
|
## path: ca_cert
|
||||||
|
##
|
||||||
|
extraVolumes: []
|
||||||
|
## @param sidecars Attach additional sidecar containers to the pod
|
||||||
|
## Example:
|
||||||
|
## sidecars:
|
||||||
|
## - name: your-image-name
|
||||||
|
## image: your-image
|
||||||
|
## imagePullPolicy: Always
|
||||||
|
## ports:
|
||||||
|
## - name: portname
|
||||||
|
## containerPort: 1234
|
||||||
|
##
|
||||||
|
sidecars: []
|
||||||
|
## @param initContainers Additional init containers to add to the pods
|
||||||
|
##
|
||||||
|
## e.g.
|
||||||
|
## initContainers:
|
||||||
|
## - name: your-image-name
|
||||||
|
## image: your-image
|
||||||
|
## imagePullPolicy: Always
|
||||||
|
## ports:
|
||||||
|
## - name: portname
|
||||||
|
## containerPort: 1234
|
||||||
|
##
|
||||||
|
initContainers: []
|
||||||
|
## @param serviceAccount.create Whether the service account should be created
|
||||||
|
## @param serviceAccount.annotations Annotations to add to the service account
|
||||||
|
## @param serviceAccount.name Name to be used for the service account
|
||||||
|
##
|
||||||
|
serviceAccount:
|
||||||
|
create: false
|
||||||
|
annotations: {}
|
||||||
|
## If not set and create is true, a name is generated using the fullname template
|
||||||
|
##
|
||||||
|
name: ""
|
||||||
|
## @param podSecurityContext Pod security context specification
|
||||||
|
## Example:
|
||||||
|
## fsGroup: 2000
|
||||||
|
##
|
||||||
|
##
|
||||||
|
podSecurityContext: {}
|
||||||
|
## @param hostAliases Add deployment host aliases
|
||||||
|
## https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/
|
||||||
|
##
|
||||||
|
hostAliases: []
|
||||||
|
## Enable persistence using Persistent Volume Claims
|
||||||
|
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
|
||||||
|
##
|
||||||
|
persistence:
|
||||||
|
## @param persistence.enabled Whether to enable persistence based on Persistent Volume Claims
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
## @param persistence.storageClass dashboard & sidekiq data Persistent Volume Storage Class
|
||||||
|
## If defined, storageClassName: <storageClass>
|
||||||
|
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||||
|
## If undefined (the default) or set to null, no storageClassName spec is
|
||||||
|
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
||||||
|
## GKE, AWS & OpenStack)
|
||||||
|
##
|
||||||
|
storageClass: ""
|
||||||
|
## @param persistence.existingClaim Use a existing PVC which must be created manually before bound
|
||||||
|
##
|
||||||
|
existingClaim: ""
|
||||||
|
## @param persistence.accessMode PVC Access Mode (RWO, ROX, RWX)
|
||||||
|
##
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
## @param persistence.size Size of the PVC to request
|
||||||
|
##
|
||||||
|
size: 10Gi
|
||||||
|
## @param persistence.selector Selector to match an existing Persistent Volume (this value is evaluated as a template)
|
||||||
|
## selector:
|
||||||
|
## matchLabels:
|
||||||
|
## app: my-app
|
||||||
|
selector: {}
|
||||||
|
## @param updateStrategy.type Update strategy type. Only really applicable for deployments with RWO PVs attached
|
||||||
|
## If replicas = 1, an update can get "stuck", as the previous pod remains attached to the
|
||||||
|
## PV, and the "incoming" pod can never start. Changing the strategy to "Recreate" will
|
||||||
|
## terminate the single previous pod, so that the new, incoming pod can attach to the PV
|
||||||
|
## Example:
|
||||||
|
## updateStrategy:
|
||||||
|
## type: RollingUpdate
|
||||||
|
## rollingUpdate:
|
||||||
|
## maxSurge: 25%
|
||||||
|
## maxUnavailable: 25%
|
||||||
|
updateStrategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
## @param podAnnotations Additional pod annotations
|
||||||
|
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
|
||||||
|
##
|
||||||
|
podAnnotations: {}
|
||||||
|
## @param podLabels Additional pod labels
|
||||||
|
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
|
||||||
|
##
|
||||||
|
podLabels: {}
|
||||||
|
## @param podAffinityPreset Pod affinity preset. Allowed values: soft, hard
|
||||||
|
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
|
||||||
|
##
|
||||||
|
podAffinityPreset: ""
|
||||||
|
## @param podAntiAffinityPreset Pod anti-affinity preset. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
|
||||||
|
##
|
||||||
|
podAntiAffinityPreset: soft
|
||||||
|
## Node affinity preset
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
|
||||||
|
## @param nodeAffinityPreset.type Node affinity preset type. Ignored if `affinity` is set. Allowed values: `soft` or `hard`
|
||||||
|
## @param nodeAffinityPreset.key Node label key to match Ignored if `affinity` is set.
|
||||||
|
## @param nodeAffinityPreset.values Node label values to match. Ignored if `affinity` is set.
|
||||||
|
##
|
||||||
|
nodeAffinityPreset:
|
||||||
|
type: ""
|
||||||
|
## E.g.
|
||||||
|
## key: "kubernetes.io/e2e-az-name"
|
||||||
|
##
|
||||||
|
key: ""
|
||||||
|
## E.g.
|
||||||
|
## values:
|
||||||
|
## - e2e-az1
|
||||||
|
## - e2e-az2
|
||||||
|
##
|
||||||
|
values: []
|
||||||
|
## @param affinity Affinity for pod assignment
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
|
||||||
|
## Note: podAffinityPreset, podAntiAffinityPreset, and nodeAffinityPreset will be ignored when it's set
|
||||||
|
##
|
||||||
|
affinity: {}
|
||||||
|
## @param nodeSelector Node labels for pod assignment.
|
||||||
|
## Ref: https://kubernetes.io/docs/user-guide/node-selection/
|
||||||
|
##
|
||||||
|
nodeSelector: {}
|
||||||
|
## @param tolerations Tolerations for pod assignment.
|
||||||
|
## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
||||||
|
##
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
|
||||||
|
## @section Volume Permissions parameters (currently disabled because there is
|
||||||
|
## no persistence in the app)
|
||||||
|
|
||||||
|
## Init containers parameters:
|
||||||
|
## volumePermissions: Change the owner and group of the persistent volume mountpoint to runAsUser:fsGroup
|
||||||
|
## values from the securityContext section.
|
||||||
|
##
|
||||||
|
volumePermissions:
|
||||||
|
## @param volumePermissions.enabled Enable init container that changes volume permissions in the data directory (for cases where the default k8s `runAsUser` and `fsUser` values do not work)
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
## Init containers' resource requests and limits
|
||||||
|
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
|
||||||
|
## We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
## choice for the user. This also increases chances charts run on environments with little
|
||||||
|
## resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
## lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
## @param volumePermissions.resources.limits The resources limits for the init container
|
||||||
|
## @param volumePermissions.resources.requests The requested resources for the init container
|
||||||
|
##
|
||||||
|
resources:
|
||||||
|
## Example:
|
||||||
|
## limits:
|
||||||
|
## cpu: 100m
|
||||||
|
## memory: 128Mi
|
||||||
|
limits: {}
|
||||||
|
## Examples:
|
||||||
|
## requests:
|
||||||
|
## cpu: 100m
|
||||||
|
## memory: 128Mi
|
||||||
|
requests: {}
|
||||||
|
|
||||||
|
## @section Ingress parameters
|
||||||
|
|
||||||
|
## Ingress parameters
|
||||||
|
##
|
||||||
|
ingress:
|
||||||
|
## @param ingress.enabled Enable ingress controller resource
|
||||||
|
##
|
||||||
|
enabled: false
|
||||||
|
## @param ingress.certManager Add annotations for cert-manager
|
||||||
|
##
|
||||||
|
certManager: false
|
||||||
|
## @param ingress.hostname Default host for the ingress resource
|
||||||
|
##
|
||||||
|
hostname: dashboard.local
|
||||||
|
## @param ingress.apiVersion Force Ingress API version (automatically detected if not set)
|
||||||
|
##
|
||||||
|
apiVersion: ""
|
||||||
|
## @param ingress.path Ingress path
|
||||||
|
##
|
||||||
|
path: /
|
||||||
|
## @param ingress.pathType Ingress path type
|
||||||
|
##
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
## @param ingress.annotations Ingress annotations done as key:value pairs
|
||||||
|
## For a full list of possible ingress annotations, please see
|
||||||
|
## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
|
||||||
|
##
|
||||||
|
## If certManager is set to true, annotation kubernetes.io/tls-acme: "true" will automatically be set
|
||||||
|
##
|
||||||
|
annotations: {}
|
||||||
|
## @param ingress.tls Enable TLS configuration for the hostname defined at ingress.hostname parameter
|
||||||
|
## TLS certificates will be retrieved from a TLS secret with name: {{- printf "%s-tls" .Values.ingress.hostname }}
|
||||||
|
## You can use the ingress.secrets parameter to create this TLS secret or relay on cert-manager to create it
|
||||||
|
##
|
||||||
|
tls: false
|
||||||
|
## @param ingress.extraHosts The list of additional hostnames to be covered with this ingress record.
|
||||||
|
## Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array
|
||||||
|
## extraHosts:
|
||||||
|
## - name: dashboard.local
|
||||||
|
## path: /
|
||||||
|
extraHosts: []
|
||||||
|
## @param ingress.extraTls The tls configuration for additional hostnames to be covered with this ingress record.
|
||||||
|
## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
|
||||||
|
## extraTls:
|
||||||
|
## - hosts:
|
||||||
|
## - dashboard.local
|
||||||
|
## secretName: dashboard.local-tls
|
||||||
|
extraTls: []
|
||||||
|
## @param ingress.secrets If you're providing your own certificates, please use this to add the certificates as secrets
|
||||||
|
## key and certificate should start with -----BEGIN CERTIFICATE----- or
|
||||||
|
## -----BEGIN RSA PRIVATE KEY-----
|
||||||
|
##
|
||||||
|
## name should line up with a tlsSecret set further up
|
||||||
|
## If you're using cert-manager, this is unneeded, as it will create the secret for you if it is not set
|
||||||
|
##
|
||||||
|
## It is also possible to create and manage the certificates outside of this helm chart
|
||||||
|
## Please see README.md for more information
|
||||||
|
## Example:
|
||||||
|
## - name: dashboard.local-tls
|
||||||
|
## key:
|
||||||
|
## certificate:
|
||||||
|
secrets: []
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "open-app-stack",
|
"name": "stackspin-dashboard",
|
||||||
"version": "0.1.0",
|
"version": "0.1.1",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@craco/craco": "^6.2.0",
|
"@craco/craco": "^6.2.0",
|
||||||
|
|
Loading…
Reference in a new issue