mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-12 15:25:57 +00:00
* feat(other): major improvement of deployment Motivation ---------- Kubernetes: * backend becomes a statefulset (exclusive volume mount) See: https://spacelift.io/blog/statefulset-vs-deployment * implement neo4j backup with job Docker: * consistent targets across all dockerfiles * remove redundant labels * remove unnecessary build args * remove obsolete networks * remove development dependencies for production Rebranding: * add image tags for local tagging and pulling * use Github's docker build workflows * use Github container registry * ONBUILD to simplify caller Dockerfiles * docker compose for branding Tooling: * same node --version as in dockerfile Docs: * missing step in README.md * refactor: remove submodules It's better to keep them all in a separate repository * improve kubernetes chart * better image tag defaults * split neo4j into its own chart (for re-use) * use application defaults where possible * optional resources for all pods * remove obsolete key/value pair from secrets * remove obsolete build argsand and add labels for neo4j enterprise * env vars for webapp * allow to define redirect domains Define a list of Domains that redirect to the domain of the project. The idea is to provide the ability to redirect eg. www.domain.tld to domain.tld * remove maintenance part regarding database * move backup job outside template folder * name the ingress * updated ingress * handle empty case of middlewares * try to default the ingress * use quote * restore todo-next-update * fix docu check * fix naming * try using prod:migrate * try using override config * copy src folder * try using base as image instead of build * fix test build * force build * comment for the problem * fix webapp tests (potentially) --------- Co-authored-by: Ulf Gebhardt <ulf.gebhardt@webcraft-media.de>
65 lines
1.9 KiB
YAML
65 lines
1.9 KiB
YAML
---
|
|
{{- define "joinRedirectMiddlewares" -}}
|
|
{{- $local := dict "first" true -}}
|
|
{{- range $k, $v := .Values.redirect_domains -}}{{- if not $local.first -}},{{- end -}}{{$.Release.Namespace}}-redirect-{{- $v | replace "." "-" -}}@kubernetescrd{{- $_ := set $local "first" false -}}{{- end -}}
|
|
{{- end -}}
|
|
---
|
|
apiVersion: networking.k8s.io/v1
|
|
kind: Ingress
|
|
metadata:
|
|
name: {{ .Release.Name }}-ocelot
|
|
annotations:
|
|
cert-manager.io/issuer: {{ .Values.cert_manager.issuer | default (printf "%s-letsencrypt-staging" .Release.Name) }}
|
|
traefik.ingress.kubernetes.io/router.middlewares: {{ quote (include "joinRedirectMiddlewares" $)}}
|
|
spec:
|
|
tls:
|
|
- hosts:
|
|
- {{ quote .Values.domain }}
|
|
{{- range .Values.redirect_domains }}
|
|
- {{ quote . }}
|
|
{{- end }}
|
|
secretName: {{ .Release.Name }}-letsencrypt-tls
|
|
|
|
rules:
|
|
- host: {{ quote .Values.domain }}
|
|
http:
|
|
paths:
|
|
- path: /
|
|
pathType: ImplementationSpecific
|
|
backend:
|
|
service:
|
|
{{- if .Values.underMaintenance }}
|
|
name: {{ .Release.Name }}-maintenance
|
|
port:
|
|
number: 80
|
|
{{- else }}
|
|
name: {{ .Release.Name }}-webapp
|
|
port:
|
|
number: 3000
|
|
{{- end }}
|
|
{{- range .Values.redirect_domains }}
|
|
- host: {{ quote . }} # the service must be defined, else the redirect is not working
|
|
http:
|
|
paths:
|
|
- path: /
|
|
pathType: ImplementationSpecific
|
|
backend:
|
|
service:
|
|
name: {{ $.Release.Name }}-maintenance
|
|
port:
|
|
number: 80
|
|
{{- end }}
|
|
|
|
{{- range .Values.redirect_domains }}
|
|
---
|
|
# Redirect with domain replacement
|
|
apiVersion: traefik.io/v1alpha1
|
|
kind: Middleware
|
|
metadata:
|
|
name: redirect-{{ . | replace "." "-" }}
|
|
spec:
|
|
redirectRegex:
|
|
regex: ^https://{{ . }}(.*)
|
|
replacement: https://{{ $.Values.domain }}${1}
|
|
permanent: true
|
|
{{- end }} |