Merge branch '36-add-web-and-kratos-paths-in-nginx-configuration' into 'main'

Resolve "Add web and kratos paths in nginx configuration"

Closes #36

See merge request stackspin/dashboard!23
This commit is contained in:
Maarten de Waard 2022-04-20 14:23:12 +00:00
commit 49e6778c54
8 changed files with 134 additions and 49 deletions

View file

@ -1,6 +1,6 @@
dependencies: dependencies:
- name: common - name: common
repository: https://charts.bitnami.com/bitnami repository: https://charts.bitnami.com/bitnami
version: 1.11.1 version: 1.13.0
digest: sha256:a000bcd4d4cdd813c67d633b5523b4a4cd478fb95f1cae665d9b0ba5c45b40e2 digest: sha256:e83af41b39942278f8389623671732e624f28c6f1ad6ac2d937e210c5f354a18
generated: "2022-02-10T15:57:46.223230425+01:00" generated: "2022-04-04T14:32:41.194922427+02:00"

View file

@ -1,7 +1,7 @@
annotations: annotations:
category: Dashboard category: Dashboard
apiVersion: v2 apiVersion: v2
appVersion: 0.1.6 appVersion: 0.2.0
dependencies: dependencies:
- name: common - name: common
# https://artifacthub.io/packages/helm/bitnami/common # https://artifacthub.io/packages/helm/bitnami/common
@ -23,4 +23,4 @@ name: stackspin-dashboard
sources: sources:
- https://open.greenhost.net/stackspin/dashboard/ - https://open.greenhost.net/stackspin/dashboard/
- https://open.greenhost.net/stackspin/dashboard-backend/ - https://open.greenhost.net/stackspin/dashboard-backend/
version: 0.1.7 version: 0.2.0

View file

@ -16,8 +16,12 @@ data:
HYDRA_CLIENT_ID: {{ .Values.backend.oidc.clientId }} HYDRA_CLIENT_ID: {{ .Values.backend.oidc.clientId }}
HYDRA_AUTHORIZATION_BASE_URL: {{ .Values.backend.oidc.authorizationBaseUrl }} HYDRA_AUTHORIZATION_BASE_URL: {{ .Values.backend.oidc.authorizationBaseUrl }}
TOKEN_URL: {{ .Values.backend.oidc.tokenUrl }} TOKEN_URL: {{ .Values.backend.oidc.tokenUrl }}
HYDRA_URL: {{ .Values.backend.oidc.baseUrl }} KRATOS_PUBLIC_URL: {{ .Values.backend.kratos.publicUrl }}
KRATOS_ADMIN_URL: {{ .Values.backend.kratos.adminUrl }}
HYDRA_PUBLIC_URL: {{ .Values.backend.oidc.baseUrl }}
HYDRA_ADMIN_URL: {{ .Values.backend.hydra.adminUrl }}
LOGIN_PANEL_URL: {{ .Values.backend.loginPanelUrl }}
DATABASE_URL: {{ .Values.backend.databaseUrl }}
# {{- if .Values.backend.smtp.enabled }} # {{- if .Values.backend.smtp.enabled }}
# DASHBOARD_BACKEND_SMTP_HOST: {{ .Values.backend.smtp.host | quote }} # DASHBOARD_BACKEND_SMTP_HOST: {{ .Values.backend.smtp.host | quote }}
# DASHBOARD_BACKEND_SMTP_PORT: {{ .Values.backend.smtp.port | quote }} # DASHBOARD_BACKEND_SMTP_PORT: {{ .Values.backend.smtp.port | quote }}

View file

@ -138,7 +138,7 @@ spec:
name: {{ include "backend.secretName" . }} name: {{ include "backend.secretName" . }}
key: oidc-client-secret key: oidc-client-secret
- name: KRATOS_URL - name: KRATOS_URL
value: {{ .Values.backend.kratosUrl }} value: {{ .Values.backend.kratos.adminUrl }}
{{- if (include "backend.smtp.password.enabled" .) }} {{- if (include "backend.smtp.password.enabled" .) }}
- name: DASHBOARD_SMTP_PASSWORD - name: DASHBOARD_SMTP_PASSWORD
valueFrom: valueFrom:

View file

@ -19,6 +19,7 @@ metadata:
kubernetes.io/tls-acme: "true" kubernetes.io/tls-acme: "true"
{{- end }} {{- end }}
{{- end }} {{- end }}
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec: spec:
{{- if or .Values.ingress.tls .Values.ingress.extraTls }} {{- if or .Values.ingress.tls .Values.ingress.extraTls }}
tls: tls:
@ -36,31 +37,28 @@ spec:
- host: {{ .Values.ingress.hostname }} - host: {{ .Values.ingress.hostname }}
http: http:
paths: paths:
- path: {{ .Values.ingress.path }} - path: {{ .Values.ingress.path }}(.*)
{{- if eq "true" (include "common.ingress.supportsPathType" .) }} {{- if eq "true" (include "common.ingress.supportsPathType" .) }}
pathType: {{ .Values.ingress.pathType }} pathType: {{ .Values.ingress.pathType }}
{{- end }} {{- end }}
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "dashboard.serviceName" .) "servicePort" "dashboard-http" "context" $) | nindent 14 }} backend: {{- include "common.ingress.backend" (dict "serviceName" (include "dashboard.serviceName" .) "servicePort" "dashboard-http" "context" $) | nindent 14 }}
# Forward API calls to the back-end container # Forward API calls to the back-end container
- path: {{ .Values.ingress.path }}api/v1 - path: {{ .Values.ingress.path }}(api/v1.*)
{{- if eq "true" (include "common.ingress.supportsPathType" .) }} {{- if eq "true" (include "common.ingress.supportsPathType" .) }}
pathType: {{ .Values.ingress.pathType }} pathType: {{ .Values.ingress.pathType }}
{{- end }} {{- end }}
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "backend.serviceName" .) "servicePort" "backend-http" "context" $) | nindent 14 }} backend: {{- include "common.ingress.backend" (dict "serviceName" (include "backend.serviceName" .) "servicePort" "backend-http" "context" $) | nindent 14 }}
{{- end }} - path: {{ .Values.ingress.path }}(web.*)
{{- range .Values.ingress.extraHosts }} {{- if eq "true" (include "common.ingress.supportsPathType" .) }}
- host: {{ .name }} pathType: {{ .Values.ingress.pathType }}
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 "dashboard.serviceName" $) "servicePort" "dashboard-http" "context" $) | nindent 14 }}
- path: {{ default "/" .path }}api/v1
{{- if eq "true" (include "common.ingress.supportsPathType" $) }}
pathType: {{ default "ImplementationSpecific" .pathType }}
{{- end }} {{- end }}
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "backend.serviceName" .) "servicePort" "backend-http" "context" $) | nindent 14 }} backend: {{- include "common.ingress.backend" (dict "serviceName" (include "backend.serviceName" .) "servicePort" "backend-http" "context" $) | nindent 14 }}
- path: {{ .Values.ingress.path }}kratos/(.*)
pathType: {{ .Values.ingress.pathType }}
backend:
service:
name: kratos-public
port:
number: 80
{{- end }} {{- end }}
{{- end }} {{- end }}

View file

@ -0,0 +1,55 @@
apiVersion: batch/v1
kind: Job
metadata:
name: {{ template "common.names.fullname" . }}-initialize-user
labels: {{- include "common.labels.standard" . | nindent 4 }}
component: dashboard
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- end }}
annotations:
"helm.sh/hook": post-install,post-upgrade
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": before-hook-creation
{{- if .Values.commonAnnotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
template:
metadata:
labels: {{- include "common.labels.standard" . | nindent 8 }}
component: dashboard
spec:
restartPolicy: Never
containers:
- name: {{ .Chart.Name }}-login-create-admin
image: {{ template "backend.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
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 }}
env:
- name: SETUP_EMAIL
value: {{ .Values.backend.initialUser.email }}
- name: SETUP_PASSWORD
value: {{ .Values.backend.initialUser.password }}
- name: KRATOS_PUBLIC_URL
value: http://kratos-public:80
command: ["/bin/bash", "-c"]
args:
- flask db upgrade;
{{- if .Release.IsInstall }}
flask cli user create $SETUP_EMAIL;
flask cli user setpassword $SETUP_EMAIL $SETUP_PASSWORD;
flask cli app create dashboard Dashboard;
flask cli user setrole $SETUP_EMAIL dashboard admin;
{{- end }}

View file

@ -1,17 +1,38 @@
# Values you will likely want to override. See values.yaml for their meanings # Values you will likely want to override. See values.yaml for their meanings
dashboard: dashboard:
host: dashboard.oas.example.com host: dashboard.stackspin.example.com
backend: backend:
secretKey: My random secret key secretKey: My random secret key
# OIDC connection details
#
# oidc:
# clientSecret: ReplaceWithSecret
# baseUrl: https://sso.stackspin.example.org
# authorizationBaseUrl: https://sso.stackspin.example.org/oauth2/auth
# tokenUrl: https://sso.stackspin.example.org/oauth2/token
# Where to find the Kratos public url
kratos:
publicUrl: https://sso.stackspin.example.org/kratos
# Public URL of login panel
loginPanelUrl: https://dashboard.stackspin.example.org/web/
# Database connection
# databaseUrl: mysql+pymysql://stackspin:password@single-sign-on-database-mariadb/stackspin
initialUser:
email: admin@example.com
# password: Set a pasword for the initial user!
ingress: ingress:
enabled: true enabled: true
hostname: dashboard.oas.example.com hostname: dashboard.stackspin.example.com
# Get certificates with cert-manager # Get certificates with cert-manager
certManager: true certManager: true
tls: tls:
- hosts: - hosts:
- dashboard.oas.example.com - dashboard.stackspin.example.com
secretName: oas-dashboard secretName: stackspin-dashboard

View file

@ -39,10 +39,19 @@ commonAnnotations: {}
## @section Stackspin parameters ## @section Stackspin parameters
## @param imagePullSecrets Specify docker-registry secret names as an array ## @param imagePullSecrets Specify docker-registry secret names as an array
## @param imagePullPolicy Policy on pulling images on container start
## ##
image: image:
imagePullSecrets: [] imagePullSecrets: []
## 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
##
## Same policy for all containers is used.
##
pullPolicy: IfNotPresent
## Dashboard configuration parameters ## Dashboard configuration parameters
## ref: https://open.greenhost.net/stackspin/dashboard ## ref: https://open.greenhost.net/stackspin/dashboard
## ##
@ -59,12 +68,7 @@ dashboard:
image: image:
registry: open.greenhost.net:4567 registry: open.greenhost.net:4567
repository: stackspin/dashboard/dashboard repository: stackspin/dashboard/dashboard
tag: 0-1-6 tag: 0-1-7
## 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. ## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace. ## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
@ -225,19 +229,13 @@ backend:
## @param image.registry Stackspin image registry ## @param image.registry Stackspin image registry
## @param image.repository Stackspin image repository ## @param image.repository Stackspin image repository
## @param image.tag Stackspin image tag ## @param image.tag Stackspin image tag
## @param image.pullPolicy Stackspin image pull policy
## @param image.pullSecrets Stackspin image pull secrets ## @param image.pullSecrets Stackspin image pull secrets
## @param image.debug Specify if debug logs should be enabled ## @param image.debug Specify if debug logs should be enabled
## ##
image: image:
registry: open.greenhost.net:4567 registry: open.greenhost.net:4567
repository: stackspin/dashboard-backend/dashboard-backend repository: stackspin/dashboard-backend/dashboard-backend
tag: 0-1-4 tag: 0-2-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. ## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace. ## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
@ -247,8 +245,6 @@ backend:
## ##
pullSecrets: [] pullSecrets: []
# URL to the Ory Kratos API
kratosUrl: http://127.0.0.1:8000
oidc: oidc:
clientId: dashboard clientId: dashboard
clientSecret: ReplaceWithSecret clientSecret: ReplaceWithSecret
@ -256,6 +252,23 @@ backend:
authorizationBaseUrl: https://sso.stackspin.example.org/oauth2/auth authorizationBaseUrl: https://sso.stackspin.example.org/oauth2/auth
tokenUrl: https://sso.stackspin.example.org/oauth2/token tokenUrl: https://sso.stackspin.example.org/oauth2/token
# Where to find the Kratos ADMIN and PUBLIC url
kratos:
publicUrl: https://dashboard.stackspin.example.org/kratos
adminUrl: http://kratos-admin:80
# Where to find the Hydra ADMIN url
hydra:
adminUrl: http://hydra-admin:4445
# Public URL of login panel
loginPanelUrl: https://dashboard.stackspin.example.org/web/
databaseUrl: mysql+pymysql://stackspin:stackspin@single-sign-on-database-mariadb/stackspin
initialUser:
email: admin@example.com
# password: Set a pasword for the initial user!
## Kubernetes service configuration. For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP ## Kubernetes service configuration. For minikube, set this to NodePort, elsewhere use LoadBalancer or ClusterIP
## ##
service: service:
@ -646,7 +659,7 @@ ingress:
path: / path: /
## @param ingress.pathType Ingress path type ## @param ingress.pathType Ingress path type
## ##
pathType: ImplementationSpecific pathType: Prefix
## @param ingress.annotations Ingress annotations done as key:value pairs ## @param ingress.annotations Ingress annotations done as key:value pairs
## For a full list of possible ingress annotations, please see ## 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 ## ref: https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md
@ -659,12 +672,6 @@ ingress:
## You can use the ingress.secrets parameter to create this TLS secret or relay on cert-manager to create it ## You can use the ingress.secrets parameter to create this TLS secret or relay on cert-manager to create it
## ##
tls: false 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. ## @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 ## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
## extraTls: ## extraTls: