peertube: Add preliminary chart

This commit is contained in:
Alexander Olofsson 2022-07-06 16:45:22 +02:00
parent 5ca12917b1
commit e96c583292
No known key found for this signature in database
GPG key ID: D439C9470CB04C73
13 changed files with 819 additions and 0 deletions

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,22 @@
---
apiVersion: v2
name: peertube
description: Free software to take back control of your videos
icon: https://upload.wikimedia.org/wikipedia/commons/2/2b/Logo_de_PeerTube.svg
type: application
version: 0.1.0
appVersion: "4.2.2"
maintainers:
- name: Alexander Olofsson
email: ace@haxalot.com
dependencies:
- name: postgresql
version: ^11.6.14
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- name: redis
version: ^16.13.2
repository: https://charts.bitnami.com/bitnami
condition: redis.enabled

View file

@ -0,0 +1,22 @@
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range $host := .Values.ingress.hosts }}
{{- range .paths }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
{{- end }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "peertube.fullname" . }})
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.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 "peertube.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "peertube.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "peertube.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -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 }}

View file

@ -0,0 +1,164 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "peertube.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 "peertube.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 }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "peertube.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Build a valid peertube image tag
*/}}
{{- define "peertube.imageTag" -}}
{{- if .Values.image.tag }}
{{- .Values.image.tag }}
{{- else }}
{{- printf "v%s-bullseye" .Chart.AppVersion }}
{{- end }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "peertube.labels" -}}
helm.sh/chart: {{ include "peertube.chart" . }}
{{ include "peertube.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "peertube.selectorLabels" -}}
app.kubernetes.io/name: {{ include "peertube.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "peertube.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "peertube.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{/*
Replicate the Postgres fullname
*/}}
{{- define "peertube.postgresql.fullname" -}}
{{- printf "%s-%s" .Release.Name "postgresql" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Get the postgres hostname
*/}}
{{- define "peertube.postgresql.host" -}}
{{- if .Values.postgresql.enabled -}}
{{- template "peertube.postgresql.fullname" . -}}
{{- else -}}
{{ required "A valid externalPostgresql.host is required" .Values.externalPostgresql.host }}
{{- end -}}
{{- end -}}
{{/*
Get the postgres port
*/}}
{{- define "peertube.postgresql.port" -}}
{{- if .Values.postgresql.enabled -}}
{{- .Values.postgresql.port | default 5432 }}
{{- else -}}
{{- .Values.externalPostgresql.port | default 5432 }}
{{- end -}}
{{- end -}}
{{/*
Get the postgres SSL capability
*/}}
{{- define "peertube.postgresql.ssl" -}}
{{- if .Values.postgresql.enabled -}}
{{- true }}
{{- else -}}
{{- .Values.externalPostgresql.ssl | default true }}
{{- end -}}
{{- end -}}
{{/*
Get the postgres database
*/}}
{{- define "peertube.postgresql.database" -}}
{{- if .Values.postgresql.enabled -}}
{{- .Values.postgresql.auth.database | default "peertube" }}
{{- else -}}
{{- .Values.externalPostgresql.database | default "peertube" }}
{{- end -}}
{{- end -}}
{{/*
Get the postgres username
*/}}
{{- define "peertube.postgresql.username" -}}
{{- if .Values.postgresql.enabled -}}
{{- .Values.postgresql.auth.username | default "peertube" }}
{{- else -}}
{{- .Values.externalPostgresql.username | default "peertube" }}
{{- end -}}
{{- end -}}
{{/*
Replicate the Redis fullname
*/}}
{{- define "peertube.redis.fullname" -}}
{{- printf "%s-%s" .Release.Name "redis" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Get the redis hostname
*/}}
{{- define "peertube.redis.host" -}}
{{- if .Values.redis.enabled -}}
{{- printf "%s-%s" (include "peertube.redis.fullname" .) "master" | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{ required "A valid externalRedis.host is required" .Values.externalRedis.host }}
{{- end -}}
{{- end -}}
{{/*
Get the redis port
*/}}
{{- define "peertube.redis.port" -}}
{{- if .Values.redis.enabled -}}
{{- .Values.redis.master.port | default 6379 }}
{{- else -}}
{{- .Values.externalRedis.port | default 6379 }}
{{- end -}}
{{- end -}}

View file

@ -0,0 +1,76 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "peertube.fullname" . }}
labels:
{{- include "peertube.labels" . | nindent 4 }}
data:
production.yaml: |
listen:
hostname: null
port: 9000
webserver:
hostname: {{ .Values.config.serverName }}
port: 443
https: true
admin:
email: {{ required "You need to specify an admin email" .Values.config.admin.email | quote }}
database:
name: {{ (include "peertube.postgresql.database" .) | quote }}
hostname: {{ (include "peertube.postgresql.host" .) | quote }}
port: {{ include "peertube.postgresql.port" . }}
username: {{ (include "peertube.postgresql.database" .) | quote }}
ssl: {{ include "peertube.postgresql.ssl" . }}
redis:
{{- if not .Values.redis.enabled }}
{{- if .Values.externalRedis.db }}
db: {{ .Values.externalRedis.db }}
{{- end }}
{{- end }}
hostname: {{ (include "peertube.redis.host" .) | quote }}
port: {{ include "peertube.redis.port" . }}
smtp:
transport: {{ .Values.config.mail.transport }}
{{- if (eq "smtp" .Values.config.mail.transport) }}
hostname: {{ required "You need to specify a SMTP hostname for the SMTP mail transport" .Values.config.mail.hostname | quote }}
{{- else }}
sendmail: {{ .Values.config.mail.sendmail }}
{{- end }}
port: {{ .Values.config.mail.port | default 465 }}
{{- if .Values.config.mail.username }}
username: {{ .Values.config.mail.username | quote }}
{{- end }}
{{- if .Values.config.mail.fromAddress }}
from_address: {{ .Values.config.mail.fromAddress | quote }}
{{- end }}
object_storage:
enabled: {{ .Values.config.objectStorage.enabled }}
{{- if .Values.config.objectStorage.endpoint }}
endpoint: {{ .Values.config.objectStorage.endpoint | quote }}
{{- end }}
{{- if .Values.config.objectStorage.region }}
region: {{ .Values.config.objectStorage.region | quote }}
{{- end }}
{{- if .Values.config.objectStorage.uploadACL }}
upload_acl: {{ .Values.config.objectStorage.uploadACL | quote }}
{{- end }}
{{- if .Values.config.objectStorage.maxUploadPart }}
max_upload_part: {{ .Values.config.objectStorage.maxUploadPart | quote }}
{{- end }}
streaming_playlists:
{{- .Values.config.objectStorage.streaming | toYaml | nindent 8 }}
videos:
{{- .Values.config.objectStorage.videos | toYaml | nindent 8 }}
# Extra config
{{- .Values.extraConfig | toYaml | nindent 4 }}

View file

@ -0,0 +1,137 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "peertube.fullname" . }}
labels:
{{- include "peertube.labels" . | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "peertube.selectorLabels" . | nindent 6 }}
template:
metadata:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/configuration.yaml") . | sha256sum }}
checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }}
{{- with .Values.podAnnotations }}
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "peertube.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "peertube.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ include "peertube.imageTag" . }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command:
- sh
- -c
- |
mkdir -p /data/config/
exec node dist/server
ports:
- name: http
containerPort: 9000
protocol: TCP
- name: rtmp
containerPort: 1935
protocol: TCP
livenessProbe:
{{- toYaml .Values.livenessProbe | nindent 12 }}
readinessProbe:
{{- toYaml .Values.readinessProbe | nindent 12 }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
env:
- name: NODE_ENV
value: production
- name: NODE_CONFIG_DIR
value: "/app/config:/app/support/docker/production/config:/config:/data/config"
- name: PEERTUBE_LOCAL_CONFIG
value: /data/config
{{- if (or .Values.postgresql.enabled .Values.externalPostgresql.existingSecret) }}
- name: PEERTUBE_DB_PASSWORD
valueFrom:
secretKeyRef:
{{- if .Values.postgresql.enabled }}
key: {{ .Values.postgresql.auth.secretKeys.userPasswordKey | default "password" }}
name: {{ .Values.postgresql.auth.existingSecret | default (include "peertube.postgresql.fullname" .) }}
{{- else }}
key: {{ .Values.externalPostgresql.existingSecretKey | default "postgres-password" }}
name: {{ .Values.externalPostgresql.existingSecret }}
{{- end }}
{{- end }}
{{- if (or .Values.redis.enabled .Values.externalRedis.existingSecret) }}
- name: PEERTUBE_REDIS_AUTH
valueFrom:
secretKeyRef:
{{- if .Values.redis.enabled }}
key: redis-password
name: {{ .Values.redis.auth.existingSecret | default (include "peertube.redis.fullname" .) }}
{{- else }}
key: {{ .Values.externalRedis.existingSecretKey | default "redis-peassword" }}
name: {{ .Values.externalRedis.existingSecret }}
{{- end }}
{{- end }}
{{- if .Values.config.mail.externalSecret }}
- name: PEERTUBE_SMTP_PASSWORD
valueFrom:
secretKeyRef:
key: {{ .Values.config.mail.externalSecretKey | default "smtp-password" }}
name: {{ .Values.config.mail.externalSecret }}
{{- end }}
{{- with .Values.extraEnv }}
{{- . | toYaml | nindent 12 }}
{{- end }}
envFrom:
- secretRef:
name: {{ include "peertube.fullname" . }}
volumeMounts:
- mountPath: /home/peertube
name: empty
subPath: home
- mountPath: /tmp
name: empty
subPath: tmp
- mountPath: /data
name: data
- mountPath: /config/production.yaml
subPath: production.yaml
name: configmap
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
volumes:
- name: configmap
configMap:
name: {{ include "peertube.fullname" . }}
- name: empty
emptyDir: {}
- name: data
{{- if (or .Values.config.persistence.enabled .Values.config.persistence.existingClaim) }}
persistentVolumeClaim:
claimName: {{ .Values.config.persistence.existingClaim | default (include "peertube.fullname" .) }}
{{- else }}
emptyDir: {}
{{- end }}

View file

@ -0,0 +1,59 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "peertube.fullname" . -}}
{{- $svcPort := .Values.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 "peertube.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:
- host: {{ .Values.config.serverName | quote }}
http:
paths:
{{- range .Values.ingress.paths }}
- path: {{ .path }}
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
pathType: {{ .pathType }}
{{- end }}
backend:
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
service:
name: {{ $fullName }}
port:
number: {{ $svcPort }}
{{- else }}
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}
{{- end }}

View file

@ -0,0 +1,22 @@
{{- if (and (not .Values.config.persistence.existingClaim) .Values.config.persistence.enabled) }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "peertube.fullname" . }}
labels:
{{- include "peertube.labels" . | nindent 4 }}
spec:
accessModes:
{{- .Values.config.persistence.accessModes | default (list "ReadWriteOnce") | toYaml | nindent 4 }}
resources:
requests:
storage: {{ .Values.config.persistence.size | quote }}
{{- if .Values.config.persistence.storageClass }}
{{- if (eq "-" .Values.config.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: {{ .Values.config.persistence.storageClass | quote }}
{{- end }}
{{- end }}
{{- end }}

View file

@ -0,0 +1,23 @@
---
apiVersion: v1
kind: Secret
metadata:
name: {{ include "peertube.fullname" . }}
labels:
{{- include "peertube.labels" . | nindent 4 }}
data:
{{- if (and .Values.externalPostgresql.password (not .Values.externalPostgresql.existingSecret)) }}
PEERTUBE_DB_PASSWORD: {{ .Values.externalPostgresql.password | b64enc }}
{{- end }}
{{- if (and (not .Values.redis.enabled) .Values.externalRedis.password) }}
PEERTUBE_REDIS_AUTH: {{ .Values.externalRedis.password | b64enc }}
{{- end }}
{{- if .Values.config.mail.password }}
PEERTUBE_SMTP_PASSWORD: {{ .Values.config.mail.password | b64enc }}
{{- end }}
{{- if .Values.config.objectStorage.enabled }}
PEERTUBE_OBJECT_STORAGE_CREDENTIALS_ACCESS_KEY_ID: {{ required "An access key must be provided for object storage" .Values.config.objectStorage.accessKey | b64enc }}
PEERTUBE_OBJECT_STORAGE_CREDENTIALS_SECRET_ACCESS_KEY: {{ required "A secret key must be provided for object storage" .Values.config.objectStorage.secretKey | b64enc }}
{{- end }}

View file

@ -0,0 +1,19 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "peertube.fullname" . }}
labels:
{{- include "peertube.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
- port: {{ .Values.service.rtmpPort }}
targetPort: rtmp
protocol: TCP
name: rtmp
selector:
{{- include "peertube.selectorLabels" . | nindent 4 }}

View file

@ -0,0 +1,12 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "peertube.serviceAccountName" . }}
labels:
{{- include "peertube.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}

View file

@ -0,0 +1,15 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ include "peertube.fullname" . }}-test-connection"
labels:
{{- include "peertube.labels" . | nindent 4 }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ include "peertube.fullname" . }}:{{ .Values.service.port }}']
restartPolicy: Never

225
charts/peertube/values.yaml Normal file
View file

@ -0,0 +1,225 @@
---
replicaCount: 1
image:
repository: chocobozzz/peertube
pullPolicy: IfNotPresent
## Overrides the image tag whose default is the chart appVersion.
# tag: production-bullseye
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
## Main Peertube configuration
##
config:
## Public server name, will be used to configure both Peertube and the Ingress
## resource if enabled.
serverName: peertube.example.com
admin:
email:
## Mail transfer setup, need to provide a hostname for SMTP
mail:
transport: smtp
# sendmail:
# hostname:
# port: 465
# username:
# fromAddress: admin@example.com
## Password can be set either directly or with an existing secret.
# password:
# existingSecret:
# existingSecretKey: smtp-password
## Data storage on S3 - will still require persistence even if enabled.
objectStorage:
enabled: false
# endpoint:
# region: us-east-1
# uploadACL: public-read
# maxUploadPart: 2GB
# accessKey: ""
# secretKey: ""
streaming:
bucket_name: peertube-streaming
# prefix:
# base_url:
videos:
bucket_name: peertube-videos
# prefix:
# base_url:
## Main persistent store, will be used for uploads, processing, plugins, etc.
persistence:
enabled: true
size: 16Gi
# storageClass: "-"
# accessModes: [ReadWriteOnce]
## Additional configuration to set on the main production.yaml configuration.
## See https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example
##
extraConfig:
## It's recommended to limit this to only your internal cluster network
trust_proxy:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/24
- fc00::/7
# - loopback
instance:
description: "PeerTube on Kubernetes"
## Extra environment variables to set on Peertube
##
extraEnv: []
# - name: TZ
# value: Europe/Stockholm
extraSecret: {}
# PEERTUBE_INSTANCE_TERMS: "These are some very secret terms-of-service"
## Self-deployed PostgreSQL database
##
postgresql:
enabled: true
auth:
database: peertube
username: peertube
# existingSecret:
secretKeys: {}
# userPasswordKey: password
persistence:
enabled: true
## Externally managed PostgreSQL, required if postgresql.enabled=false
##
externalPostgresql:
host:
# port: 5432
database: peertube
username: peertube
# password:
# ssl: true
# existingSecret:
# existingSecretKey: postgres-password
## Self-deployed Redis database
##
redis:
enabled: true
architecture: standalone
auth:
enabled: true
# password: peertube
## Or use existing secret with "redis-password" key
## instead of static password
##
# existingSecret: redis-secret
master:
persistence:
enabled: true
## Externally managed Redis, required if redis.enabled=false
##
externalRedis:
host:
# port: 6379
# db: 0
# password:
# existingSecret:
# existingSecretKey: redis-password
## Default probes, using ping API to avoid excessive echo
##
livenessProbe:
httpGet:
path: /api/v1/ping
port: http
readinessProbe:
httpGet:
path: /api/v1/ping
port: http
serviceAccount:
## Specifies whether a service account should be created
create: true
## 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:
podAnnotations: {}
podSecurityContext:
fsGroup: 999
securityContext:
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 999
# capabilities:
# drop:
# - ALL
service:
type: ClusterIP
port: 80
rtmpPort: 1935
ingress:
enabled: false
className: ""
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 3
targetCPUUtilizationPercentage: 80
# targetMemoryUtilizationPercentage: 80
nodeSelector: {}
tolerations: []
affinity: {}