Files
charts/bitnami/mastodon/templates/_helpers.tpl
JesseBot 6175b41a9f [bitnami/mastodon] Move defaultConfig and defaultSecretConfig to default-configmap.yaml and default-secret.yaml respectively and add mastodon secret env vars (#19179)
* Move defaultConfig and defaultSecretConfig to default-configmap.yaml and default-secret.yaml respectively

Signed-off-by: jessebot <jessebot@linux.com>

* mastodon: allow smtp.server to come from an existingSecret

Signed-off-by: jessebot <jessebot@linux.com>

* update README for mastodon after values.yaml changes to config defaults

Signed-off-by: jessebot <jessebot@linux.com>

* mastodon: web: move SMTP_SERVER out of 'if ne .Values.smtp.auth_method none' conditional

Signed-off-by: jessebot <jessebot@linux.com>

* move SMTP_SERVER to default-secrets instead of configmap

Signed-off-by: jessebot <jessebot@linux.com>

* adding secretKeyBase and otpSecret to values.yaml as parameters to be passed into mastodon default secret

Signed-off-by: jessebot <jessebot@linux.com>

* add vapidPublicKey and vapidPrivateKey as parameters for mastodon chart

Signed-off-by: jessebot <jessebot@linux.com>

* mastodon: remove SMTP_SERVER from deployment env vars, because we already pass it in with the default-secret

Signed-off-by: jessebot <jessebot@linux.com>

* Update bitnami/mastodon/templates/_helpers.tpl - remove this block as it's no longer in use

Signed-off-by: JesseBot <jessebot@linux.com>

* Update bitnami/mastodon/values.yaml - correct mastoon typo

Signed-off-by: JesseBot <jessebot@linux.com>

* Update bitnami/mastodon/values.yaml - fix mastdon typo

Signed-off-by: JesseBot <jessebot@linux.com>

* Update README.md with readme-generator-for-helm

Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>

* add SMTP_SERVER env var to web/deployment and _helpers.tpl as a viable existing secret parameter

Signed-off-by: jessebot <jessebot@linux.com>

* Update bitnami/mastodon/Chart.yaml - change chart version to 3.1.0

Signed-off-by: JesseBot <jessebot@linux.com>

* Apply suggestions from code review - fix Mastodon spelling typos

Signed-off-by: JesseBot <jessebot@linux.com>

* Update README.md with readme-generator-for-helm

Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>

* mastodon: add the smtp server to the default smtp secret

Signed-off-by: jessebot <jessebot@linux.com>

---------

Signed-off-by: jessebot <jessebot@linux.com>
Signed-off-by: JesseBot <jessebot@linux.com>
Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>
Co-authored-by: Bitnami Containers <bitnami-bot@vmware.com>
2023-11-02 14:03:05 +01:00

835 lines
25 KiB
Smarty

{{/*
Copyright VMware, Inc.
SPDX-License-Identifier: APACHE-2.0
*/}}
{{/*
Return the proper Mastodon image name
*/}}
{{- define "mastodon.image" -}}
{{- include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) -}}
{{- end -}}
{{/*
Return the proper image name (for the init container volume-permissions image)
*/}}
{{- define "mastodon.volumePermissions.image" -}}
{{- include "common.images.image" (dict "imageRoot" .Values.volumePermissions.image "global" .Values.global) -}}
{{- end -}}
{{/*
Return the proper Docker Image Registry Secret Names
*/}}
{{- define "mastodon.imagePullSecrets" -}}
{{- include "common.images.pullSecrets" (dict "images" (list .Values.image .Values.volumePermissions.image) "global" .Values.global) -}}
{{- end -}}
{{/*
Return the proper Mastodon web fullname
*/}}
{{- define "mastodon.web.fullname" -}}
{{- printf "%s-%s" (include "common.names.fullname" .) "web" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Return the proper Mastodon tootctlMediaManagement fullname
*/}}
{{- define "mastodon.tootctlMediaManagement.fullname" -}}
{{- printf "%s-%s" (include "common.names.fullname" .) "tootctl-media" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Return the proper Mastodon tootctl media option to include follows
*/}}
{{- define "mastodon.tootctlMediaManagement.includeFollows" -}}
{{- if .Values.tootctlMediaManagement.includeFollows -}}
{{- print "--include-follows" -}}
{{- end -}}
{{- end -}}
{{/*
Return the proper Mastodon web domain
*/}}
{{- define "mastodon.web.domain" -}}
{{- if .Values.webDomain -}}
{{- print .Values.webDomain -}}
{{- else if .Values.apache.enabled -}}
{{- if .Values.apache.ingress.enabled -}}
{{- print .Values.apache.ingress.hostname -}}
{{- else if .Values.apache.service.loadBalancerIP -}}
{{- print .Values.apache.service.loadBalancerIP -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Return the proper Mastodon streaming fullname
*/}}
{{- define "mastodon.streaming.fullname" -}}
{{- printf "%s-%s" (include "common.names.fullname" .) "streaming" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Return Mastodon streaming url
*/}}
{{- define "mastodon.streaming.url" -}}
{{- if .Values.useSecureWebSocket -}}
{{- printf "wss://%s" (include "mastodon.web.domain" .) | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "ws://%s" (include "mastodon.web.domain" .) | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{/*
Default configuration ConfigMap name
*/}}
{{- define "mastodon.defaultConfigmapName" -}}
{{- if .Values.existingConfigmap -}}
{{- print .Values.existingConfigmap -}}
{{- else -}}
{{- printf "%s-default" (include "common.names.fullname" .) -}}
{{- end -}}
{{- end -}}
{{/*
Extra configuration ConfigMap name
*/}}
{{- define "mastodon.extraConfigmapName" -}}
{{- if .Values.extraConfigExistingConfigmap -}}
{{- print .Values.extraConfigExistingConfigmap -}}
{{- else -}}
{{- printf "%s-extra" (include "common.names.fullname" .) -}}
{{- end -}}
{{- end -}}
{{/*
Default configuration Secret name
*/}}
{{- define "mastodon.defaultSecretName" -}}
{{- if .Values.existingSecret -}}
{{- print .Values.existingSecret -}}
{{- else -}}
{{- printf "%s-default" (include "common.names.fullname" .) -}}
{{- end -}}
{{- end -}}
{{/*
Extra configuration Secret name
*/}}
{{- define "mastodon.extraSecretName" -}}
{{- if .Values.extraConfigExistingSecret -}}
{{- print .Values.extraConfigExistingSecret -}}
{{- else -}}
{{- printf "%s-extra" (include "common.names.fullname" .) -}}
{{- end -}}
{{- end -}}
{{- define "mastodon.pvc" -}}
{{- coalesce .Values.persistence.existingClaim (include "common.names.fullname" .) -}}
{{- end -}}
{{/*
Return MinIO(TM) fullname
*/}}
{{- define "mastodon.minio.fullname" -}}
{{- include "common.names.dependency.fullname" (dict "chartName" "minio" "chartValues" .Values.minio "context" $) -}}
{{- end -}}
{{/*
Return the S3 backend host
*/}}
{{- define "mastodon.s3.host" -}}
{{- if .Values.minio.enabled -}}
{{- include "mastodon.minio.fullname" . -}}
{{- else -}}
{{- print .Values.externalS3.host -}}
{{- end -}}
{{- end -}}
{{/*
Return the S3 alias host
*/}}
{{- define "mastodon.s3.aliasHost" -}}
{{- if .Values.s3AliasHost -}}
{{- print .Values.s3AliasHost -}}
{{- else if .Values.minio.enabled -}}
{{- if .Values.minio.service.loadBalancerIP }}
{{- print .Values.minio.service.loadBalancerIP -}}
{{- else -}}
{{- printf "%s/%s" (include "mastodon.web.domain" .) (include "mastodon.s3.bucket" . ) -}}
{{- end -}}
{{- else if .Values.externalS3.host -}}
{{- print .Values.externalS3.host -}}
{{- end -}}
{{- end -}}
{{/*
Return the S3 bucket
*/}}
{{- define "mastodon.s3.bucket" -}}
{{- if .Values.minio.enabled -}}
{{- print .Values.minio.defaultBuckets -}}
{{- else -}}
{{- print .Values.externalS3.bucket -}}
{{- end -}}
{{- end -}}
{{/*
Return the S3 protocol
*/}}
{{- define "mastodon.s3.protocol" -}}
{{- if .Values.minio.enabled -}}
{{- ternary "https" "http" .Values.minio.tls.enabled -}}
{{- else -}}
{{- print .Values.externalS3.protocol -}}
{{- end -}}
{{- end -}}
{{- define "mastodon.s3.protocol.setting" -}}
{{- if .Values.forceHttpsS3Protocol -}}
{{- print "https" -}}
{{- else -}}
{{- print (include "mastodon.s3.protocol" .) -}}
{{- end -}}
{{- end -}}
{{/*
Return the S3 region
*/}}
{{- define "mastodon.s3.region" -}}
{{- if .Values.minio.enabled -}}
{{- print "us-east-1" -}}
{{- else -}}
{{- print .Values.externalS3.region -}}
{{- end -}}
{{- end -}}
{{/*
Return the S3 port
*/}}
{{- define "mastodon.s3.port" -}}
{{- ternary .Values.minio.service.ports.api .Values.externalS3.port .Values.minio.enabled -}}
{{- end -}}
{{/*
Return the S3 endpoint
*/}}
{{- define "mastodon.s3.endpoint" -}}
{{- $port := include "mastodon.s3.port" . | int -}}
{{- $printedPort := "" -}}
{{- if and (ne $port 80) (ne $port 443) -}}
{{- $printedPort = printf ":%d" $port -}}
{{- end -}}
{{- printf "%s://%s%s" (include "mastodon.s3.protocol" .) (include "mastodon.s3.host" .) $printedPort -}}
{{- end -}}
{{/*
Return the S3 credentials secret name
*/}}
{{- define "mastodon.s3.secretName" -}}
{{- if .Values.minio.enabled -}}
{{- if .Values.minio.auth.existingSecret -}}
{{- print .Values.minio.auth.existingSecret -}}
{{- else -}}
{{- print (include "mastodon.minio.fullname" .) -}}
{{- end -}}
{{- else if .Values.externalS3.existingSecret -}}
{{- print .Values.externalS3.existingSecret -}}
{{- else -}}
{{- printf "%s-%s" (include "common.names.fullname" .) "externals3" -}}
{{- end -}}
{{- end -}}
{{/*
Return the S3 access key id inside the secret
*/}}
{{- define "mastodon.s3.accessKeyIDKey" -}}
{{- if .Values.minio.enabled -}}
{{- print "root-user" -}}
{{- else -}}
{{- print .Values.externalS3.existingSecretAccessKeyIDKey -}}
{{- end -}}
{{- end -}}
{{/*
Return the S3 secret access key inside the secret
*/}}
{{- define "mastodon.s3.secretAccessKeyKey" -}}
{{- if .Values.minio.enabled -}}
{{- print "root-password" -}}
{{- else -}}
{{- print .Values.externalS3.existingSecretKeySecretKey -}}
{{- end -}}
{{- end -}}
{{/*
Return the proper Mastodon sidekiq fullname
*/}}
{{- define "mastodon.sidekiq.fullname" -}}
{{- printf "%s-%s" (include "common.names.fullname" .) "sidekiq" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Return true if the init job should be created
*/}}
{{- define "mastodon.createInitJob" -}}
{{- if or .Values.initJob.migrateDB .Values.initJob.createAdmin .Values.initJob.precompileAssets .Values.initJob.migrateElasticsearch -}}
{{- true -}}
{{- end -}}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "mastodon.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "common.names.fullname" .) .Values.serviceAccount.name -}}
{{- else -}}
{{ default "default" .Values.serviceAccount.name -}}
{{- end -}}
{{- end -}}
{{/*
Return Elasticsearch fullname
*/}}
{{- define "mastodon.elasticsearch.fullname" -}}
{{- include "common.names.dependency.fullname" (dict "chartName" "elasticsearch" "chartValues" .Values.elasticsearch "context" $) -}}
{{- end -}}
{{/*
Return true if Elasticseach auth is enabled
*/}}
{{- define "mastodon.elasticsearch.auth.enabled" -}}
{{- if .Values.elasticsearch.enabled -}}
{{- if .Values.elasticsearch.security.enabled -}}
{{- true -}}
{{- end -}}
{{- else if .Values.externalElasticsearch.password -}}
{{- true -}}
{{- end -}}
{{- end -}}
{{/*
Return the Elasticsearch Secret Name
*/}}
{{- define "mastodon.elasticsearch.secretName" -}}
{{- if .Values.elasticsearch.enabled -}}
{{- print (include "mastodon.elasticsearch.fullname" .) -}}
{{- else if .Values.externalElasticsearch.existingSecret -}}
{{- print .Values.externalElasticsearch.existingSecret -}}
{{- else -}}
{{- printf "%s-externalelasticsearch" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{/*
Retrieve key of the Elasticsearch secret
*/}}
{{- define "mastodon.elasticsearch.passwordKey" -}}
{{- if .Values.elasticsearch.enabled -}}
{{- print "elasticsearch-password" -}}
{{- else -}}
{{- print .Values.externalElasticsearch.existingSecretPasswordKey -}}
{{- end -}}
{{- end -}}
{{/*
Create a default fully qualified Elasticsearch name.
*/}}
{{- define "mastodon.elasticsearch.host" -}}
{{- if .Values.elasticsearch.enabled -}}
{{- include "mastodon.elasticsearch.fullname" . -}}
{{- else -}}
{{- print .Values.externalElasticsearch.host -}}
{{- end -}}
{{- end -}}
{{/*
Return Elasticsearch port
*/}}
{{- define "mastodon.elasticsearch.port" -}}
{{- if .Values.elasticsearch.enabled -}}
{{- print .Values.elasticsearch.service.ports.restAPI -}}
{{- else -}}
{{- print .Values.externalElasticsearch.port -}}
{{- end -}}
{{- end -}}
{{/*
Return Redis(TM) fullname
*/}}
{{- define "mastodon.redis.fullname" -}}
{{- include "common.names.dependency.fullname" (dict "chartName" "redis" "chartValues" .Values.redis "context" $) -}}
{{- end -}}
{{/*
Create a default fully qualified Redis(TM) name.
*/}}
{{- define "mastodon.redis.host" -}}
{{- if .Values.redis.enabled -}}
{{- printf "%s-master" (include "mastodon.redis.fullname" .) | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- print .Values.externalRedis.host -}}
{{- end -}}
{{- end -}}
{{/*
Return Redis(TM) port
*/}}
{{- define "mastodon.redis.port" -}}
{{- if .Values.redis.enabled -}}
{{- print .Values.redis.master.service.ports.redis -}}
{{- else -}}
{{- print .Values.externalRedis.port -}}
{{- end -}}
{{- end -}}
{{/*
Return if Redis(TM) authentication is enabled
*/}}
{{- define "mastodon.redis.auth.enabled" -}}
{{- if .Values.redis.enabled -}}
{{- if .Values.redis.auth.enabled -}}
{{- true -}}
{{- end -}}
{{- else if or .Values.externalRedis.password .Values.externalRedis.existingSecret -}}
{{- true -}}
{{- end -}}
{{- end -}}
{{/*
Return the Redis(TM) Secret Name
*/}}
{{- define "mastodon.redis.secretName" -}}
{{- if .Values.redis.enabled -}}
{{- print (include "mastodon.redis.fullname" .) -}}
{{- else if .Values.externalRedis.existingSecret -}}
{{- print .Values.externalRedis.existingSecret -}}
{{- else -}}
{{- printf "%s-externalredis" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{/*
Retrieve key of the Redis(TM) secret
*/}}
{{- define "mastodon.redis.passwordKey" -}}
{{- if .Values.redis.enabled -}}
{{- print "redis-password" -}}
{{- else -}}
{{- if .Values.externalRedis.existingSecret -}}
{{- if .Values.externalRedis.existingSecretPasswordKey -}}
{{- printf "%s" .Values.externalRedis.existingSecretPasswordKey -}}
{{- else -}}
{{- print "redis-password" -}}
{{- end -}}
{{- else -}}
{{- print "redis-password" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Return PostgreSQL fullname
*/}}
{{- define "mastodon.postgresql.fullname" -}}
{{- include "common.names.dependency.fullname" (dict "chartName" "postgresql" "chartValues" .Values.postgresql "context" $) -}}
{{- end -}}
{{/*
Return the PostgreSQL Hostname
*/}}
{{- define "mastodon.database.host" -}}
{{- if .Values.postgresql.enabled -}}
{{- if eq .Values.postgresql.architecture "replication" -}}
{{- printf "%s-%s" (include "mastodon.postgresql.fullname" .) "primary" | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- print (include "mastodon.postgresql.fullname" .) -}}
{{- end -}}
{{- else -}}
{{- print .Values.externalDatabase.host -}}
{{- end -}}
{{- end -}}
{{/*
Return the PostgreSQL Port
*/}}
{{- define "mastodon.database.port" -}}
{{- if .Values.postgresql.enabled -}}
{{- print .Values.postgresql.primary.service.ports.postgresql -}}
{{- else -}}
{{- printf "%d" (.Values.externalDatabase.port | int ) -}}
{{- end -}}
{{- end -}}
{{/*
Return the PostgreSQL User
*/}}
{{- define "mastodon.database.user" -}}
{{- if .Values.postgresql.enabled -}}
{{- print .Values.postgresql.auth.username -}}
{{- else -}}
{{- print .Values.externalDatabase.user -}}
{{- end -}}
{{- end -}}
{{/*
Return PostgreSQL database name
*/}}
{{- define "mastodon.database.name" -}}
{{- if .Values.postgresql.enabled -}}
{{- print .Values.postgresql.auth.database -}}
{{- else -}}
{{- print .Values.externalDatabase.database -}}
{{- end -}}
{{- end -}}
{{/*
Return the PostgreSQL Secret Name
*/}}
{{- define "mastodon.database.secretName" -}}
{{- if .Values.postgresql.enabled -}}
{{- if .Values.postgresql.auth.existingSecret -}}
{{- print .Values.postgresql.auth.existingSecret -}}
{{- else -}}
{{- print (include "mastodon.postgresql.fullname" .) -}}
{{- end -}}
{{- else if .Values.externalDatabase.existingSecret -}}
{{- print .Values.externalDatabase.existingSecret -}}
{{- else -}}
{{- printf "%s-%s" (include "common.names.fullname" .) "externaldb" -}}
{{- end -}}
{{- end -}}
{{/*
Retrieve key of the PostgreSQL secret
*/}}
{{- define "mastodon.database.passwordKey" -}}
{{- if .Values.postgresql.enabled -}}
{{- print "password" -}}
{{- else -}}
{{- print .Values.externalDatabase.existingSecretPasswordKey -}}
{{- end -}}
{{- end -}}
{{/*
Return the SMTP Secret Name
*/}}
{{- define "mastodon.smtp.secretName" -}}
{{- if .Values.smtp.existingSecret -}}
{{- print .Values.smtp.existingSecret -}}
{{- else -}}
{{- printf "%s-%s" (include "common.names.fullname" .) "smtp" -}}
{{- end -}}
{{- end -}}
{{/*
Retrieve SMTP server key
*/}}
{{- define "mastodon.smtp.serverKey" -}}
{{- if .Values.smtp.existingSecretServerKey -}}
{{- print .Values.smtp.existingSecretServerKey -}}
{{- else -}}
{{- print "server" -}}
{{- end -}}
{{- end -}}
{{/*
Retrieve SMTP login key
*/}}
{{- define "mastodon.smtp.loginKey" -}}
{{- if .Values.smtp.existingSecretLoginKey -}}
{{- print .Values.smtp.existingSecretLoginKey -}}
{{- else -}}
{{- print "login" -}}
{{- end -}}
{{- end -}}
{{/*
Retrieve SMTP password key
*/}}
{{- define "mastodon.smtp.passwordKey" -}}
{{- if .Values.smtp.existingSecretPasswordKey -}}
{{- print .Values.smtp.existingSecretPasswordKey -}}
{{- else -}}
{{- print "password" -}}
{{- end -}}
{{- end -}}
{{/*
Init container definition for waiting for the database to be ready
*/}}
{{- define "mastodon.waitForDBInitContainer" -}}
# We need to wait for the PostgreSQL database to be ready in order to start with Mastodon.
# As it is a ReplicaSet, we need that all nodes are configured in order to start with
# the application or race conditions can occur
- name: wait-for-db
image: {{ template "mastodon.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.web.containerSecurityContext.enabled }}
securityContext: {{- omit .Values.web.containerSecurityContext "enabled" | toYaml | nindent 4 }}
{{- end }}
command:
- bash
- -ec
- |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
. /opt/bitnami/scripts/liblog.sh
. /opt/bitnami/scripts/libvalidations.sh
. /opt/bitnami/scripts/libmastodon.sh
. /opt/bitnami/scripts/mastodon-env.sh
mastodon_wait_for_postgresql_connection "postgresql://${MASTODON_DATABASE_USER}:${MASTODON_DATABASE_PASSWORD:-}@${MASTODON_DATABASE_HOST}:${MASTODON_DATABASE_PORT_NUMBER}/${MASTODON_DATABASE_NAME}"
info "Database is ready"
env:
- name: BITNAMI_DEBUG
value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}
- name: MASTODON_DATABASE_HOST
value: {{ include "mastodon.database.host" . | quote }}
- name: MASTODON_DATABASE_PORT_NUMBER
value: {{ include "mastodon.database.port" . | quote }}
- name: MASTODON_DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ include "mastodon.database.secretName" . }}
key: {{ include "mastodon.database.passwordKey" . }}
- name: MASTODON_DATABASE_USER
value: {{ include "mastodon.database.user" . }}
- name: MASTODON_DATABASE_NAME
value: {{ include "mastodon.database.name" . }}
{{- end -}}
{{/*
Init container definition for waiting for Redis(TM) to be ready
*/}}
{{- define "mastodon.waitForRedisInitContainer" }}
# We need to wait for the Redis(TM) to be ready in order to start with Mastodon.
# As it is a ReplicaSet, we need that all nodes are configured in order to start with
# the application or race conditions can occur
- name: wait-for-redis
image: {{ template "mastodon.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.web.containerSecurityContext.enabled }}
securityContext: {{- omit .Values.web.containerSecurityContext "enabled" | toYaml | nindent 4 }}
{{- end }}
command:
- bash
- -ec
- |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
. /opt/bitnami/scripts/liblog.sh
. /opt/bitnami/scripts/libvalidations.sh
. /opt/bitnami/scripts/libmastodon.sh
. /opt/bitnami/scripts/mastodon-env.sh
mastodon_wait_for_redis_connection "redis://${MASTODON_REDIS_PASSWORD:-}@${MASTODON_REDIS_HOST}:${MASTODON_REDIS_PORT_NUMBER}"
info "Redis(TM) is ready"
env:
- name: BITNAMI_DEBUG
value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}
- name: MASTODON_REDIS_HOST
value: {{ include "mastodon.redis.host" . | quote }}
- name: MASTODON_REDIS_PORT_NUMBER
value: {{ include "mastodon.redis.port" . | quote }}
{{- if (include "mastodon.redis.auth.enabled" .) }}
- name: MASTODON_REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: {{ include "mastodon.redis.secretName" . }}
key: {{ include "mastodon.redis.passwordKey" . }}
{{- end }}
{{- end -}}
{{/*
Init container definition for waiting for Elasticsearch to be ready
*/}}
{{- define "mastodon.waitForElasticsearchInitContainer" -}}
- name: wait-for-elasticsearch
image: {{ template "mastodon.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.web.containerSecurityContext.enabled }}
securityContext: {{- omit .Values.web.containerSecurityContext "enabled" | toYaml | nindent 4 }}
{{- end }}
command:
- bash
- -ec
- |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
. /opt/bitnami/scripts/liblog.sh
. /opt/bitnami/scripts/libvalidations.sh
. /opt/bitnami/scripts/libmastodon.sh
. /opt/bitnami/scripts/mastodon-env.sh
mastodon_wait_for_elasticsearch_connection "http://${MASTODON_ELASTICSEARCH_HOST}:${MASTODON_ELASTICSEARCH_PORT_NUMBER}"
info "Mastodon web is ready"
env:
- name: BITNAMI_DEBUG
value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}
- name: MASTODON_ELASTICSEARCH_HOST
value: {{ include "mastodon.elasticsearch.host" . | quote }}
- name: MASTODON_ELASTICSEARCH_PORT_NUMBER
value: {{ include "mastodon.elasticsearch.port" . | quote }}
{{- if (include "mastodon.elasticsearch.auth.enabled" .) }}
- name: MASTODON_ELASTICSEARCH_PASSWORD
valueFrom:
secretKeyRef:
name: {{ include "mastodon.elasticsearch.secretName" . }}
key: {{ include "mastodon.elasticsearch.passwordKey" . }}
{{- end }}
{{- end -}}
{{/*
Init container definition for waiting for S3 to be ready
*/}}
{{- define "mastodon.waitForS3InitContainer" -}}
- name: wait-for-s3
image: {{ template "mastodon.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.web.containerSecurityContext.enabled }}
securityContext: {{- omit .Values.web.containerSecurityContext "enabled" | toYaml | nindent 4 }}
{{- end }}
command:
- bash
- -ec
- |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
. /opt/bitnami/scripts/liblog.sh
. /opt/bitnami/scripts/libvalidations.sh
. /opt/bitnami/scripts/libmastodon.sh
. /opt/bitnami/scripts/mastodon-env.sh
mastodon_wait_for_s3_connection "$MASTODON_S3_HOSTNAME" "$MASTODON_S3_PORT_NUMBER"
info "S3 is ready"
env:
- name: BITNAMI_DEBUG
value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}
- name: MASTODON_S3_HOSTNAME
value: {{ include "mastodon.s3.host" . | quote }}
- name: MASTODON_S3_PORT_NUMBER
value: {{ include "mastodon.s3.port" . | quote }}
{{- end -}}
{{/*
Init container definition for waiting for Mastodon Web to be ready
*/}}
{{- define "mastodon.waitForWebInitContainer" -}}
- name: wait-for-web
image: {{ template "mastodon.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.web.containerSecurityContext.enabled }}
securityContext: {{- omit .Values.web.containerSecurityContext "enabled" | toYaml | nindent 4 }}
{{- end }}
command:
- bash
- -ec
- |
#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
. /opt/bitnami/scripts/liblog.sh
. /opt/bitnami/scripts/libvalidations.sh
. /opt/bitnami/scripts/libmastodon.sh
. /opt/bitnami/scripts/mastodon-env.sh
mastodon_wait_for_web_connection "http://${MASTODON_WEB_HOST}:${MASTODON_WEB_PORT}"
info "Mastodon web is ready"
env:
- name: BITNAMI_DEBUG
value: {{ ternary "true" "false" (or .Values.image.debug .Values.diagnosticMode.enabled) | quote }}
- name: MASTODON_WEB_HOST
value: {{ include "mastodon.web.fullname" . | quote }}
- name: MASTODON_WEB_PORT
value: {{ .Values.web.service.ports.http | quote }}
{{- end -}}
{{/*
Return Apache fullname
*/}}
{{- define "mastodon.apache.fullname" -}}
{{- include "common.names.dependency.fullname" (dict "chartName" "apache" "chartValues" .Values.apache "context" $) -}}
{{- end -}}
{{/*
Return name of the Apache vhost configmap
*/}}
{{- define "mastodon.apache.vhostconfigmap" -}}
{{- if .Values.apache -}}
{{- printf "%s-mastodon-vhost" (include "mastodon.apache.fullname" .) -}}
{{- else -}}
{{- /* HACK: If this helper is called inside the Apache subchart, it won't use the Mastodon scope
but the Apache scope, therefore the helper mastodon.apache.fullname will fail because .Values.apache will not exist
that's why we need to use the common.names.fullname instead */ -}}
{{- printf "%s-mastodon-vhost" (include "common.names.fullname" .) -}}
{{- end -}}
{{- end -}}
{{/*
Compile all warnings into a single message.
*/}}
{{- define "mastodon.validateValues" -}}
{{- $messages := list -}}
{{- $messages := append $messages (include "mastodon.validateValues.postgresql" .) -}}
{{- $messages := append $messages (include "mastodon.validateValues.redis" .) -}}
{{- $messages := without $messages "" -}}
{{- $message := join "\n" $messages -}}
{{- if $message -}}
{{- printf "\nVALUES VALIDATION:\n%s" $message -}}
{{- end -}}
{{- end -}}
{{/* Validate values of Mastodon - PostgreSQL */}}
{{- define "mastodon.validateValues.postgresql" -}}
{{- if and .Values.postgresql.enabled .Values.externalDatabase.host -}}
mastodon: PostgreSQL
You can only use one database.
Please choose installing a PostgreSQL chart (--set postgresql.enabled=true) or
using an external database (--set externalDatabase.host)
{{- end -}}
{{- if and (not .Values.postgresql.enabled) (not .Values.externalDatabase.host) -}}
mastodon: NoPostgreSQL
You did not set any database.
Please choose installing a PostgreSQL chart (--set postgresql.enabled=true) or
using an external instance (--set externalDatabase.host)
{{- end -}}
{{- end -}}
{{/* Validate values of Mastodon - Redis(TM) */}}
{{- define "mastodon.validateValues.redis" -}}
{{- if and .Values.redis.enabled .Values.externalRedis.host -}}
mastodon: Redis
You can only use one Redis.
Please choose installing a Redis(TM) chart (--set redis.enabled=true) or
using an external Redis(TM) (--set externalRedis.host)
{{- end -}}
{{- if and (not .Values.redis.enabled) (not .Values.externalRedis.host) -}}
mastodon: NoRedis
You did not set any Redis.
Please choose installing a Redis(TM) chart (--set redis.enabled=true) or
using an external instance (--set externalRedis.host)
{{- end -}}
{{- end -}}