lemmy: Add an early-stage lemmy chart
This commit is contained in:
parent
92088b7e94
commit
e058372c9f
20 changed files with 1188 additions and 0 deletions
23
charts/lemmy/.helmignore
Normal file
23
charts/lemmy/.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/
|
19
charts/lemmy/Chart.yaml
Normal file
19
charts/lemmy/Chart.yaml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
---
|
||||||
|
apiVersion: v2
|
||||||
|
name: lemmy
|
||||||
|
description: A link aggregator and forum for the fediverse
|
||||||
|
icon: https://join-lemmy.org/static/assets/images/lemmy.svg
|
||||||
|
appVersion: 0.17.3
|
||||||
|
|
||||||
|
type: application
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- name: Alexander Olofsson
|
||||||
|
email: ace@haxalot.com
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
- name: postgresql
|
||||||
|
version: ^12.5
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
condition: postgresql.enabled
|
36
charts/lemmy/templates/NOTES.txt
Normal file
36
charts/lemmy/templates/NOTES.txt
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
http{{ if $.Values.config.tls }}s{{ end }}://{{ .Values.serverName }}/
|
||||||
|
{{- else if .Values.proxy.enabled }}
|
||||||
|
{{- if contains "NodePort" .Values.proxy.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "lemmy.proxyname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.proxy.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "lemmy.proxyname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "lemmy.proxyname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.proxy.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.proxy.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "lemmy.name" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=proxy" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
{{- if contains "NodePort" .Values.ui.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "lemmy.uiname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.ui.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "lemmy.uiname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "lemmy.uiname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.ui.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.ui.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "lemmy.name" . }},app.kubernetes.io/instance={{ .Release.Name }},app.kubernetes.io/component=frontend" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
154
charts/lemmy/templates/_helpers.tpl
Normal file
154
charts/lemmy/templates/_helpers.tpl
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "lemmy.uiname" -}}
|
||||||
|
{{- printf "%s-%s" (include "lemmy.fullname" $) "ui" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "lemmy.proxyname" -}}
|
||||||
|
{{- printf "%s-%s" (include "lemmy.fullname" $) "proxy" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "lemmy.pictrsname" -}}
|
||||||
|
{{- printf "%s-%s" (include "lemmy.fullname" $) "pictrs" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "lemmy.chart" . }}
|
||||||
|
{{ include "lemmy.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "lemmy.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "lemmy.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.postgresql.fullname" -}}
|
||||||
|
{{- $name := .Values.postgresql.nameOverride | default "postgresql" -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgres host
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.postgresql.host" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- template "lemmy.postgresql.fullname" . -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{ required "A valid postgresql.host is required" .Values.postgresql.host }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgres secret
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.postgresql.secret" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- template "lemmy.postgresql.fullname" . -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- template "lemmy.fullname" . -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgres port
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.postgresql.port" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- if .Values.postgresql.service -}}
|
||||||
|
{{- .Values.postgresql.service.port | default 5432 }}
|
||||||
|
{{- else -}}
|
||||||
|
5432
|
||||||
|
{{- end -}}
|
||||||
|
{{- else -}}
|
||||||
|
5432
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgresql username
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.postgresql.username" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- .Values.postgresql.auth.username | default "postgres" }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ required "A valid postgresql.auth.username is required" .Values.postgresql.auth.username }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgresql password
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.postgresql.password" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- .Values.postgresql.auth.password | default "" }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ required "A valid postgresql.auth.password is required" .Values.postgresql.auth.password }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Set postgresql database
|
||||||
|
*/}}
|
||||||
|
{{- define "lemmy.postgresql.database" -}}
|
||||||
|
{{- if .Values.postgresql.enabled -}}
|
||||||
|
{{- .Values.postgresql.auth.database | default "lemmy" }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ required "A valid postgresql.auth.database is required" .Values.postgresql.auth.database }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
76
charts/lemmy/templates/configmap-proxy.yaml
Normal file
76
charts/lemmy/templates/configmap-proxy.yaml
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
{{- if .Values.proxy.enabled -}}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.proxyname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: proxy
|
||||||
|
data:
|
||||||
|
nginx.conf: |
|
||||||
|
worker_processes 1;
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
http {
|
||||||
|
upstream lemmy {
|
||||||
|
# this needs to map to the lemmy (server) docker service hostname
|
||||||
|
server "{{ include "lemmy.fullname" . }}:{{ .Values.backend.service.port }}";
|
||||||
|
}
|
||||||
|
upstream lemmy-ui {
|
||||||
|
# this needs to map to the lemmy-ui docker service hostname
|
||||||
|
server "{{ include "lemmy.uiname" . }}:{{ .Values.frontend.service.port }}";
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 8536;
|
||||||
|
|
||||||
|
server_name {{ .Values.serverName }};
|
||||||
|
server_tokens off;
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_types text/css application/javascript image/svg+xml;
|
||||||
|
gzip_vary on;
|
||||||
|
|
||||||
|
client_max_body_size 20M;
|
||||||
|
|
||||||
|
add_header X-Frame-Options SAMEORIGIN;
|
||||||
|
add_header X-Content-Type-Options nosniff;
|
||||||
|
add_header X-XSS-Protection "1; mode=block";
|
||||||
|
|
||||||
|
location / {
|
||||||
|
set $proxpass "http://lemmy-ui";
|
||||||
|
|
||||||
|
if ($http_accept = "application/activity+json") {
|
||||||
|
set $proxpass "http://lemmy";
|
||||||
|
}
|
||||||
|
if ($http_accept = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"") {
|
||||||
|
set $proxpass "http://lemmy";
|
||||||
|
}
|
||||||
|
if ($request_method = POST) {
|
||||||
|
set $proxpass "http://lemmy";
|
||||||
|
}
|
||||||
|
proxy_pass $proxpass;
|
||||||
|
|
||||||
|
rewrite ^(.+)/+$ $1 permanent;
|
||||||
|
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ ^/(api|pictrs|feeds|nodeinfo|.well-known) {
|
||||||
|
proxy_pass "http://lemmy";
|
||||||
|
|
||||||
|
proxy_http_version 1.1;
|
||||||
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
|
proxy_set_header Connection "upgrade";
|
||||||
|
|
||||||
|
proxy_set_header X-Real-IP $remote_addr;
|
||||||
|
proxy_set_header Host $host;
|
||||||
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
{{- end }}
|
83
charts/lemmy/templates/deployment-backend.yaml
Normal file
83
charts/lemmy/templates/deployment-backend.yaml
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: backend
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.backend.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 6 }}
|
||||||
|
app.kubernetes.io/component: backend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
checksum/config: {{ include (print $.Template.BasePath "/secret-configuration.yaml") . | sha256sum }}
|
||||||
|
{{- with .Values.backend.podAnnotations }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 8 }}
|
||||||
|
app.kubernetes.io/component: backend
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "lemmy.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.backend.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.backend.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.backend.image.repository | default .Values.image.repository }}:{{ .Values.backend.image.tag | default .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.backend.image.pullPolicy | default .Values.image.pullPolicy }}
|
||||||
|
{{- with .Values.backend.env }}
|
||||||
|
env:
|
||||||
|
{{- range $key, $value := . }}
|
||||||
|
- name: {{ $key }}
|
||||||
|
value: {{ $value | toString | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.backend.envFrom }}
|
||||||
|
envFrom:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8536
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.backend.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /config/config.hjson
|
||||||
|
subPath: config.hjson
|
||||||
|
{{- with .Values.backend.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.backend.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.backend.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
secret:
|
||||||
|
secretName: {{ include "lemmy.fullname" . }}
|
80
charts/lemmy/templates/deployment-frontend.yaml
Normal file
80
charts/lemmy/templates/deployment-frontend.yaml
Normal file
|
@ -0,0 +1,80 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.uiname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: frontend
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.frontend.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 6 }}
|
||||||
|
app.kubernetes.io/component: frontend
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.frontend.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 8 }}
|
||||||
|
app.kubernetes.io/component: frontend
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "lemmy.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.frontend.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: frontend
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.frontend.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.frontend.image.repository }}:{{ .Values.frontend.image.tag | default .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.frontend.image.pullPolicy | default .Values.image.pullPolicy }}
|
||||||
|
env:
|
||||||
|
- name: LEMMY_UI_LEMMY_INTERNAL_HOST
|
||||||
|
value: "{{ include "lemmy.fullname" . }}:{{ .Values.backend.service.port }}"
|
||||||
|
- name: LEMMY_UI_LEMMY_EXTERNAL_HOST
|
||||||
|
value: {{ .Values.serverName | quote }}
|
||||||
|
- name: LEMMY_UI_HTTPS
|
||||||
|
value: {{ printf "%t" .Values.config.tls | quote }}
|
||||||
|
{{- with .Values.frontend.env }}
|
||||||
|
{{- range $key, $value := . }}
|
||||||
|
- name: {{ $key }}
|
||||||
|
value: {{ $value | toString | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.frontend.envFrom }}
|
||||||
|
envFrom:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 1234
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.frontend.resources | nindent 12 }}
|
||||||
|
{{- with .Values.frontend.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.frontend.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.frontend.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
97
charts/lemmy/templates/deployment-pictrs.yaml
Normal file
97
charts/lemmy/templates/deployment-pictrs.yaml
Normal file
|
@ -0,0 +1,97 @@
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.pictrsname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: pictrs
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.pictrs.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 6 }}
|
||||||
|
app.kubernetes.io/component: pictrs
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
checksum/config: {{ include (print $.Template.BasePath "/secret-pictrs.yaml") . | sha256sum }}
|
||||||
|
{{- with .Values.pictrs.podAnnotations }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 8 }}
|
||||||
|
app.kubernetes.io/component: pictrs
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "lemmy.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.pictrs.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: pictrs
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.pictrs.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.pictrs.image.repository }}:{{ .Values.pictrs.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.pictrs.image.pullPolicy }}
|
||||||
|
env:
|
||||||
|
- name: PICTRS__API_KEY
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: {{ include "lemmy.fullname" . }}
|
||||||
|
key: pictrs_apikey
|
||||||
|
{{- with .Values.pictrs.env }}
|
||||||
|
{{- range $key, $value := . }}
|
||||||
|
- name: {{ $key }}
|
||||||
|
value: {{ $value | toString | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: {{ include "lemmy.pictrsname" . }}
|
||||||
|
{{- with .Values.pictrs.envFrom }}
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: http
|
||||||
|
volumeMounts:
|
||||||
|
- name: data
|
||||||
|
mountPath: /mnt/database
|
||||||
|
subPath: database
|
||||||
|
- name: data
|
||||||
|
mountPath: /mnt/media
|
||||||
|
subPath: media
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.pictrs.resources | nindent 12 }}
|
||||||
|
volumes:
|
||||||
|
- name: data
|
||||||
|
{{- if .Values.pictrs.persistence.enabled }}
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ .Values.pictrs.persistence.existingClaim | default (include "lemmy.pictrsname" $) }}
|
||||||
|
{{- else }}
|
||||||
|
emptyDir: {}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.pictrs.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.pictrs.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.pictrs.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
74
charts/lemmy/templates/deployment-proxy.yaml
Normal file
74
charts/lemmy/templates/deployment-proxy.yaml
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
{{- if .Values.proxy.enabled -}}
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.proxyname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: proxy
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.proxy.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 6 }}
|
||||||
|
app.kubernetes.io/component: proxy
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
checksum/config: {{ include (print $.Template.BasePath "/configmap-proxy.yaml") . | sha256sum }}
|
||||||
|
{{- with .Values.proxy.podAnnotations }}
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 8 }}
|
||||||
|
app.kubernetes.io/component: proxy
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "lemmy.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.proxy.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: proxy
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.proxy.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.proxy.image.repository }}:{{ .Values.proxy.image.tag }}"
|
||||||
|
imagePullPolicy: {{ .Values.proxy.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8536
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.proxy.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: config
|
||||||
|
mountPath: /etc/nginx/nginx.conf
|
||||||
|
subPath: nginx.conf
|
||||||
|
{{- with .Values.proxy.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.proxy.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.proxy.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: {{ include "lemmy.proxyname" . }}
|
||||||
|
{{- end }}
|
61
charts/lemmy/templates/ingress.yaml
Normal file
61
charts/lemmy/templates/ingress.yaml
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
{{- if and .Values.ingress.enabled .Values.proxy.enabled -}}
|
||||||
|
{{- $fullName := include "lemmy.fullname" . -}}
|
||||||
|
{{- $proxyName := include "lemmy.proxyname" . -}}
|
||||||
|
{{- $proxyPort := .Values.proxy.service.port -}}
|
||||||
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
|
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- $hosts := concat (list .Values.serverName) (.Values.ingress.hosts | default list) }}
|
||||||
|
{{- range $hosts }}
|
||||||
|
- host: {{ . | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
{{- if semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
pathType: Prefix
|
||||||
|
{{- end }}
|
||||||
|
backend:
|
||||||
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
service:
|
||||||
|
name: {{ $proxyName }}
|
||||||
|
port:
|
||||||
|
number: {{ $proxyPort }}
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $proxyName }}
|
||||||
|
servicePort: {{ $proxyPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
23
charts/lemmy/templates/pvc.yaml
Normal file
23
charts/lemmy/templates/pvc.yaml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{{- if and .Values.pictrs.persistence.enabled (not .Values.pictrs.persistence.existingClaim) -}}
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
apiVersion: v1
|
||||||
|
metadata:
|
||||||
|
name: {{ template "lemmy.pictrsname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: pictrs
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- {{ .Values.pictrs.persistence.accessMode | quote }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.pictrs.persistence.size | quote }}
|
||||||
|
{{- if .Values.pictrs.persistence.storageClass }}
|
||||||
|
{{- if (eq "-" .Values.pictrs.persistence.storageClass) }}
|
||||||
|
storageClassName: ""
|
||||||
|
{{- else }}
|
||||||
|
storageClassName: "{{ .Values.pictrs.persistence.storageClass }}"
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
56
charts/lemmy/templates/secret-configuration.yaml
Normal file
56
charts/lemmy/templates/secret-configuration.yaml
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
{{- $adminPassword := randAlphaNum 32 }}
|
||||||
|
{{- $pictrsApikey := randAlphaNum 64 }}
|
||||||
|
|
||||||
|
{{- $existing := (lookup "v1" "Secret" .Release.Namespace (include "lemmy.fullname" .)) -}}
|
||||||
|
{{- if and $existing $existing.data.admin_password }}
|
||||||
|
{{- $adminPassword := b64dec $existing.data.admin_password }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if and $existing $existing.data.pictrs_apikey }}
|
||||||
|
{{- $pictrsApikey := b64dec $existing.data.pictrs_apikey }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- $config := dict
|
||||||
|
"database"
|
||||||
|
(dict
|
||||||
|
"user" (include "lemmy.postgresql.username" .)
|
||||||
|
"password" (include "lemmy.postgresql.password" .)
|
||||||
|
"host" (include "lemmy.postgresql.host" .)
|
||||||
|
"port" (include "lemmy.postgresql.port" . | int)
|
||||||
|
"database" (include "lemmy.postgresql.database" .)
|
||||||
|
)
|
||||||
|
"pictrs"
|
||||||
|
(dict
|
||||||
|
"url" (printf "http://%s:%d" (include "lemmy.pictrsname" .) (int .Values.pictrs.service.port))
|
||||||
|
"api_key" (.Values.pictrs.apikey | default $pictrsApikey)
|
||||||
|
)
|
||||||
|
"email"
|
||||||
|
(dict
|
||||||
|
"smtp_server" .Values.smtp.server
|
||||||
|
"smtp_login" .Values.smtp.username
|
||||||
|
"smtp_password" .Values.smtp.password
|
||||||
|
"smtp_from_address" .Values.smtp.from
|
||||||
|
"tls_type" .Values.smtp.tls
|
||||||
|
)
|
||||||
|
"setup"
|
||||||
|
(dict
|
||||||
|
"admin_username" (.Values.admin.username | default "lemmy")
|
||||||
|
"admin_password" (.Values.admin.password | default $adminPassword)
|
||||||
|
"admin_email" .Values.admin.email
|
||||||
|
"site_name" .Values.config.siteName
|
||||||
|
)
|
||||||
|
"hostname" .Values.serverName
|
||||||
|
"bind" "0.0.0.0"
|
||||||
|
"port" 8536
|
||||||
|
"tls_enabled" (.Values.config.tls | default true)
|
||||||
|
}}
|
||||||
|
data:
|
||||||
|
admin_password: {{ $adminPassword | b64enc }}
|
||||||
|
pictrs_apikey: {{ $pictrsApikey | b64enc }}
|
||||||
|
config.hjson: {{ $config | toPrettyJson | b64enc }}
|
27
charts/lemmy/templates/secret-pictrs.yaml
Normal file
27
charts/lemmy/templates/secret-pictrs.yaml
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.pictrsname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: pictrs
|
||||||
|
data:
|
||||||
|
PICTRS__REPO__PATH: {{ "/mnt/database" | b64enc }}
|
||||||
|
PICTRS__STORE__TYPE: {{ .Values.pictrs.storage.method | b64enc }}
|
||||||
|
|
||||||
|
{{- if (eq .Values.pictrs.storage.method "object_storage") }}
|
||||||
|
{{- $s3 := .Values.pictrs.storage.objectStorage }}
|
||||||
|
{{- if $s3.endpoint }}
|
||||||
|
PICTRS__STORE__ENDPOINT: {{ $s3.endpoint | b64enc }}
|
||||||
|
{{- end }}
|
||||||
|
PICTRS__STORE__USE_PATH_STYLE: {{ $s3.usePathStyle | default false | toString | b64enc }}
|
||||||
|
PICTRS__STORE__BUCKET_NAME: {{ required "S3 bucket must be specified" $s3.bucketName | b64enc }}
|
||||||
|
PICTRS__STORE__REGION: {{ required "S3 region must be specified" $s3.region | b64enc }}
|
||||||
|
PICTRS__STORE__ACCESS_KEY: {{ required "S3 access key must be specified" $s3.accessKey | b64enc }}
|
||||||
|
PICTRS__STORE__SECRET_KEY: {{ required "S3 secret key must be specified" $s3.secretKey | b64enc }}
|
||||||
|
{{- if $s3.sessionToken }}
|
||||||
|
PICTRS__STORE__SESSION_TOKEN: {{ $s3.sessionToken | b64enc }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else }}
|
||||||
|
PICTRS__STORE__PATH: {{ "/mnt/media" | b64enc }}
|
||||||
|
{{- end }}
|
17
charts/lemmy/templates/service-backend.yaml
Normal file
17
charts/lemmy/templates/service-backend.yaml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: backend
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.backend.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.backend.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: backend
|
17
charts/lemmy/templates/service-frontend.yaml
Normal file
17
charts/lemmy/templates/service-frontend.yaml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.uiname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: frontend
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.backend.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.backend.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: frontend
|
17
charts/lemmy/templates/service-pictrs.yaml
Normal file
17
charts/lemmy/templates/service-pictrs.yaml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.pictrsname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: pictrs
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.backend.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.backend.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: pictrs
|
19
charts/lemmy/templates/service-proxy.yaml
Normal file
19
charts/lemmy/templates/service-proxy.yaml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
{{- if .Values.proxy.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.proxyname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: proxy
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.backend.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.backend.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "lemmy.selectorLabels" . | nindent 4 }}
|
||||||
|
app.kubernetes.io/component: proxy
|
||||||
|
{{- end }}
|
12
charts/lemmy/templates/serviceaccount.yaml
Normal file
12
charts/lemmy/templates/serviceaccount.yaml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "lemmy.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
19
charts/lemmy/templates/tests/test-connection.yaml
Normal file
19
charts/lemmy/templates/tests/test-connection.yaml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: "{{ include "lemmy.fullname" . }}-test-connection"
|
||||||
|
labels:
|
||||||
|
{{- include "lemmy.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": test
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: wget
|
||||||
|
image: busybox
|
||||||
|
command: ['wget']
|
||||||
|
{{- if .Values.proxy.enabled }}
|
||||||
|
args: ['{{ include "lemmy.proxyname" . }}:{{ .Values.proxy.service.port }}']
|
||||||
|
{{- else }}
|
||||||
|
args: ['{{ include "lemmy.fullname" . }}:{{ .Values.backend.service.port }}']
|
||||||
|
{{- end }}
|
||||||
|
restartPolicy: Never
|
278
charts/lemmy/values.yaml
Normal file
278
charts/lemmy/values.yaml
Normal file
|
@ -0,0 +1,278 @@
|
||||||
|
---
|
||||||
|
image:
|
||||||
|
repository: dessalines/lemmy
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
|
#tag: latest
|
||||||
|
|
||||||
|
## The domain of the Lemmy instance
|
||||||
|
serverName: "localhost"
|
||||||
|
|
||||||
|
smtp:
|
||||||
|
server: smtp.example.com
|
||||||
|
# username: lemmy
|
||||||
|
# password:
|
||||||
|
from: lemmy@example.com
|
||||||
|
tls: none
|
||||||
|
|
||||||
|
admin:
|
||||||
|
username: lemmy
|
||||||
|
## Will be generated on first install if left empty
|
||||||
|
# password:
|
||||||
|
email: lemmy@example.com
|
||||||
|
|
||||||
|
config:
|
||||||
|
siteName: Lemmy on Kubernetes
|
||||||
|
## Requires valid certificates, but is also required for federation support
|
||||||
|
tls: true
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: false
|
||||||
|
# Annotations to add to the service account
|
||||||
|
annotations: {}
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
backend:
|
||||||
|
image:
|
||||||
|
_keep: true
|
||||||
|
# repository: dessalines/lemmy
|
||||||
|
# pullPolicy: IfNotPresent
|
||||||
|
# tag:
|
||||||
|
|
||||||
|
env:
|
||||||
|
# RUST_BACKTRACE: 1
|
||||||
|
|
||||||
|
envFrom:
|
||||||
|
# - secretRef:
|
||||||
|
# name: my-extra-secrets
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
image:
|
||||||
|
repository: dessalines/lemmy-ui
|
||||||
|
#pullPolicy: IfNotPresent
|
||||||
|
#tag:
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
env:
|
||||||
|
# LEMMY_UI_DEBUG: true
|
||||||
|
|
||||||
|
envFrom:
|
||||||
|
# - secretRef:
|
||||||
|
# name: my-extra-secrets
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
pictrs:
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
## Generated on first install if left empty
|
||||||
|
# apiKey:
|
||||||
|
|
||||||
|
storage:
|
||||||
|
## Storage method for media, can be filesystem or object_storage
|
||||||
|
method: filesystem
|
||||||
|
|
||||||
|
objectStorage:
|
||||||
|
## For self-hosted S3
|
||||||
|
# endpoint: https://minio.example.com
|
||||||
|
usePathStyle: false
|
||||||
|
|
||||||
|
bucketName: lemmy-pictrs
|
||||||
|
# region:
|
||||||
|
# accessKey:
|
||||||
|
# secretKey:
|
||||||
|
# sessionToken:
|
||||||
|
|
||||||
|
# existingSecret: pictrs-secret
|
||||||
|
# existingSecretAccessKey: access-key
|
||||||
|
# existingSecretSecretKey: secret-key
|
||||||
|
|
||||||
|
env:
|
||||||
|
PICTRS__MEDIA__VIDEO_CODEC: vp9
|
||||||
|
PICTRS__MEDIA__GIF__MAX_WIDTH: 256
|
||||||
|
PICTRS__MEDIA__GIF__MAX_HEIGHT: 256
|
||||||
|
PICTRS__MEDIA__GIF__MAX_AREA: 65536
|
||||||
|
PICTRS__MEDIA__GIF__MAX_FRAME_COUNT: 400
|
||||||
|
|
||||||
|
envFrom:
|
||||||
|
# - secretRef:
|
||||||
|
# name: my-extra-secrets
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: asonix/pictrs
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: 0.4.0-beta.19
|
||||||
|
|
||||||
|
## Used by both the sled database and also media itself if using the filesystem storage method
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 16Gi
|
||||||
|
# existingClaim:
|
||||||
|
# storageClass:
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
proxy:
|
||||||
|
enabled: true
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: nginx
|
||||||
|
pullPolicy: Always
|
||||||
|
tag: 1-alpine
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
# host:
|
||||||
|
|
||||||
|
auth:
|
||||||
|
username: lemmy
|
||||||
|
database: lemmy
|
||||||
|
# password:
|
||||||
|
|
||||||
|
service:
|
||||||
|
port: 5432
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
className: ""
|
||||||
|
annotations: {}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
Loading…
Reference in a new issue