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:
Varac 2021-10-06 14:21:08 +00:00
commit 95a054925f
19 changed files with 1355 additions and 6 deletions

2
.env
View file

@ -1,2 +0,0 @@
REACT_APP_API_URL=https://oas-api.initdevelopment.com/api/v1
EXTEND_ESLINT=true

7
.gitignore vendored
View file

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

View file

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

View 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/

View 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"

View 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

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

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

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

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

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

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

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

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

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

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

View 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

View 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: []

View file

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