[privatebin] Add privatebin helm chart (#1361)

* add privatebin as chart
This commit is contained in:
Lukas Wingerberg 2022-01-07 13:17:30 +01:00 committed by GitHub
parent b1fc8dd547
commit f02beeb9f0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 554 additions and 0 deletions

View File

@ -0,0 +1,26 @@
# 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
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS
# helm-docs templates
*.gotmpl

View File

@ -0,0 +1,29 @@
apiVersion: v2
appVersion: 1.3.5
description: A minimalist, open source online pastebin running on an Nginx, php-fpm & Alpine Linux stack
name: privatebin
version: 1.0.0
kubeVersion: ">=1.16.0-0"
keywords:
- privatebin
- pastebin
home: https://github.com/k8s-at-home/charts/tree/master/charts/incubator/privatebin
icon: https://privatebin.info/theme/img/icon.svg
sources:
- https://github.com/PrivateBin/PrivateBin
- https://github.com/PrivateBin/docker-nginx-fpm-alpine
maintainers:
- name: psych0d0g
email: psych0d0g@users.noreply.github.com
dependencies:
- name: common
repository: https://library-charts.k8s-at-home.com
version: 4.3.0
- name: postgresql
version: 10.14.4
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
annotations:
artifacthub.io/changes: |
- kind: added
description: Initial chart version

View File

@ -0,0 +1,120 @@
# privatebin
![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![AppVersion: 1.3.5](https://img.shields.io/badge/AppVersion-1.3.5-informational?style=flat-square)
A minimalist, open source online pastebin running on an Nginx, php-fpm & Alpine Linux stack
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
## Source Code
* <https://github.com/PrivateBin/PrivateBin>
* <https://github.com/PrivateBin/docker-nginx-fpm-alpine>
## Requirements
Kubernetes: `>=1.16.0-0`
## Dependencies
| Repository | Name | Version |
|------------|------|---------|
| https://charts.bitnami.com/bitnami | postgresql | 10.14.4 |
| https://library-charts.k8s-at-home.com | common | 4.3.0 |
## TL;DR
```console
helm repo add k8s-at-home https://k8s-at-home.com/charts/
helm repo update
helm install privatebin k8s-at-home/privatebin
```
## Installing the Chart
To install the chart with the release name `privatebin`
```console
helm install privatebin k8s-at-home/privatebin
```
## Uninstalling the Chart
To uninstall the `privatebin` deployment
```console
helm uninstall privatebin
```
The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
## Configuration
Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common).
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
```console
helm install privatebin \
--set env.TZ="America/New York" \
k8s-at-home/privatebin
```
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
```console
helm install privatebin k8s-at-home/privatebin -f values.yaml
```
## Custom configuration
N/A
## Values
**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common)
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| config | object | See values.yaml | Application Settings. See https://github.com/PrivateBin/PrivateBin/blob/master/cfg/conf.sample.php for a description of every setting |
| env | object | See below (only deviations from the default settings are specified) | environment variables. See [image docs](https://docs.kanboard.org/en/latest/admin_guide/docker.html#environment-variables) and [application docs](# https://docs.kanboard.org/en/latest/admin_guide/config_file.html) for more details. |
| env.PHP_TZ | string | `"UTC"` | PHP timezone (usually should match the containers TZ) |
| env.TZ | string | `"UTC"` | container timezone |
| image.pullPolicy | string | `"IfNotPresent"` | image pull policy |
| image.repository | string | `"privatebin/pdo"` | image repository |
| image.tag | string | `"1.3.5"` | image tag |
| ingress.main | object | See values.yaml | Enable and configure ingress settings for the chart under this key. |
| persistence | object | See values.yaml | Configure persistence settings for the chart under this key. |
| postgresql | object | See values.yaml | Enable and configure postgresql database subchart under this key. For more options see [postgresql chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/postgresql) |
| service | object | See values.yaml | Configures service settings for the chart. |
## Changelog
### Version 1.0.0
#### Added
* Initial chart version
#### Changed
N/A
#### Fixed
N/A
### Older versions
A historical overview of changes can be found on [ArtifactHUB](https://artifacthub.io/packages/helm/k8s-at-home/privatebin?modal=changelog)
## Support
- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/)
- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose)
- Ask a [question](https://github.com/k8s-at-home/organization/discussions)
- Join our [Discord](https://discord.gg/sTMX7Vh) community
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v0.1.1](https://github.com/k8s-at-home/helm-docs/releases/v0.1.1)

View File

@ -0,0 +1,176 @@
{{- define "custom.repository.organization" -}}
k8s-at-home
{{- end -}}
{{- define "custom.repository.url" -}}
https://github.com/k8s-at-home/charts
{{- end -}}
{{- define "custom.helm.url" -}}
https://k8s-at-home.com/charts/
{{- end -}}
{{- define "custom.helm.path" -}}
{{ template "custom.repository.organization" . }}/{{ template "chart.name" . }}
{{- end -}}
{{- define "custom.notes" -}}
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
{{- end -}}
{{- define "custom.requirements" -}}
## Requirements
{{ template "chart.kubeVersionLine" . }}
{{- end -}}
{{- define "custom.dependencies" -}}
## Dependencies
{{ template "chart.requirementsTable" . }}
{{- end -}}
{{- define "custom.install.tldr" -}}
## TL;DR
```console
helm repo add {{ template "custom.repository.organization" . }} {{ template "custom.helm.url" . }}
helm repo update
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }}
```
{{- end -}}
{{- define "custom.install" -}}
## Installing the Chart
To install the chart with the release name `{{ template "chart.name" . }}`
```console
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }}
```
{{- end -}}
{{- define "custom.uninstall" -}}
## Uninstalling the Chart
To uninstall the `{{ template "chart.name" . }}` deployment
```console
helm uninstall {{ template "chart.name" . }}
```
The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release.
{{- end -}}
{{- define "custom.configuration.header" -}}
## Configuration
{{- end -}}
{{- define "custom.configuration.readValues" -}}
Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values.
Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common).
{{- end -}}
{{- define "custom.configuration.example.set" -}}
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`.
```console
helm install {{ template "chart.name" . }} \
--set env.TZ="America/New York" \
{{ template "custom.helm.path" . }}
```
{{- end -}}
{{- define "custom.configuration.example.file" -}}
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart.
```console
helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} -f values.yaml
```
{{- end -}}
{{- define "custom.valuesSection" -}}
## Values
**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common)
{{ template "chart.valuesTable" . }}
{{- end -}}
{{- define "custom.support" -}}
## Support
- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/)
- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose)
- Ask a [question](https://github.com/k8s-at-home/organization/discussions)
- Join our [Discord](https://discord.gg/sTMX7Vh) community
{{- end -}}
{{- define "custom.changelog" -}}
{{ $changeTypes := list "added" "changed" "fixed" }}
## Changelog
### Version {{ template "chart.version" . }}
{{ range $changeType := $changeTypes }}
{{- with (index $.Annotations "artifacthub.io/changes") }}
{{- print "#### " ($changeType | title) | nindent 0 }}
{{- print "" | nindent 0 }}
{{- $changesFound := false }}
{{- range (print "changes:\n" . | fromYaml).changes }}
{{- if eq .kind $changeType }}
{{- print "* " .description | nindent 0 }}
{{- $changesFound = true }}
{{- end }}
{{- end }}
{{- if not $changesFound }}
{{- print "N/A" | nindent 0 }}
{{- end }}
{{- print "" | nindent 0 }}
{{- end }}
{{- end }}
### Older versions
A historical overview of changes can be found on [ArtifactHUB](https://artifacthub.io/packages/helm/k8s-at-home/{{- template "chart.name" . }}?modal=changelog)
{{- end -}}
{{ template "chart.header" . }}
{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }}
{{ template "chart.description" . }}
{{ template "custom.notes" . }}
{{ template "chart.sourcesSection" . }}
{{ template "custom.requirements" . }}
{{ template "custom.dependencies" . }}
{{ template "custom.install.tldr" . }}
{{ template "custom.install" . }}
{{ template "custom.uninstall" . }}
{{ template "custom.configuration.header" . }}
{{ template "custom.configuration.readValues" . }}
{{ template "custom.configuration.example.set" . }}
{{ template "custom.configuration.example.file" . }}
{{ template "custom.custom.configuration" . }}
{{ template "custom.valuesSection" . }}
{{ template "custom.changelog" . }}
{{ template "custom.support" . }}
{{ template "helm-docs.versionFooter" . }}
{{ "" }}

View File

@ -0,0 +1,9 @@
{{- define "custom.custom.configuration.header" -}}
## Custom configuration
{{- end -}}
{{- define "custom.custom.configuration" -}}
{{ template "custom.custom.configuration.header" . }}
N/A
{{- end -}}

View File

@ -0,0 +1 @@
{{- include "common.notes.defaultNotes" . -}}

View File

@ -0,0 +1,17 @@
{{/* Make sure all variables are set properly */}}
{{- include "common.values.setup" . }}
{{/* Append the hardcoded settings */}}
{{- define "privatebin.harcodedValues" -}}
{{/* Append the configMap volume to the volumes */}}
persistence:
privatebin-config:
enabled: true
type: "configMap"
name: "{{ include "common.names.fullname" . }}-config"
mountPath: "/srv/cfg/conf.php"
subPath: "conf.php"
{{- end -}}
{{- $_ := mergeOverwrite .Values (include "privatebin.harcodedValues" . | fromYaml) -}}
{{ include "common.all" . }}

View File

@ -0,0 +1,77 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "common.names.fullname" . }}-config
labels:
{{- include "common.labels" . | nindent 4 }}
data:
conf.php: |
;<?php http_response_code(403); /*
; config file for PrivateBin
;
; An explanation of each setting can be find online at https://github.com/PrivateBin/PrivateBin/wiki/Configuration.
[main]
{{ if eq .Values.ingress.main.enabled true }}
basepath = "{{ (index (index .Values.ingress.main.hosts 0).paths 0).path }}"
{{ end }}
{{- range $key, $val := .Values.config.main }}
{{ $key }}= {{ $val | toJson }}
{{- end }}
[expire]
{{- range $key, $val := .Values.config.expire }}
{{ $key }}= {{ $val | toJson }}
{{- end }}
[expire_options]
{{- range $key, $val := .Values.config.expire_options }}
{{ $key }}= {{ $val | toJson }}
{{- end }}
[formatter_options]
{{- range $key, $val := .Values.config.formatter_options }}
{{ $key }}= {{ $val | toJson }}
{{- end }}
[traffic]
{{- range $key, $val := .Values.config.traffic }}
{{ $key }}= {{ $val | toJson }}
{{- end }}
header = "X_FORWARDED_FOR"
[purge]
; minimum time limit between two purgings of expired pastes, it is only
; triggered when pastes are created
; Set this to 0 to run a purge every time a paste is created.
limit = 300
; maximum amount of expired pastes to delete in one purge
; Set this to 0 to disable purging. Set it higher, if you are running a large
; site
batchsize = 10
{{- if and (eq .Values.persistence.data.enabled true) (eq .Values.postgresql.enabled true) }}
[model]
class = Filesystem
[model_options]
dir = {{ .Values.persistence.data.mountPath }}
[model]
class = Database
[model_options]
dsn = "pgsql:host={{ .Release.Name }}-postgresql;dbname={{ .Values.postgresql.postgresqlDatabase }}"
tbl = "privatebin_"
usr = "{{ .Values.postgresql.postgresqlUsername }}"
pwd = "{{ .Values.postgresql.postgresqlPassword }}"
opt[12] = true
{{- else if and (eq .Values.persistence.data.enabled true) (eq .Values.postgresql.enabled false) }}
[model]
class = Filesystem
[model_options]
dir = {{ .Values.persistence.data.mountPath }}
{{ end }}

View File

@ -0,0 +1,99 @@
# IMPORTANT NOTE
#
# This chart inherits from our common library chart. You can check the default values/options here:
# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml
#
image:
# -- image repository
repository: privatebin/pdo
# -- image tag
tag: 1.3.5
# -- image pull policy
pullPolicy: IfNotPresent
# -- environment variables. See [image docs](https://docs.kanboard.org/en/latest/admin_guide/docker.html#environment-variables)
# and [application docs](# https://docs.kanboard.org/en/latest/admin_guide/config_file.html) for more details.
# @default -- See below (only deviations from the default settings are specified)
env:
# -- container timezone
TZ: UTC
# -- PHP timezone (usually should match the containers TZ)
PHP_TZ: UTC
# -- Configures service settings for the chart.
# @default -- See values.yaml
service:
main:
ports:
http:
port: 8080
ingress:
# -- Enable and configure ingress settings for the chart under this key.
# @default -- See values.yaml
main:
enabled: false
# -- Configure persistence settings for the chart under this key.
# @default -- See values.yaml
persistence:
data:
enabled: false
mountPath: /srv/data
# -- Enable and configure postgresql database subchart under this key.
# For more options see [postgresql chart documentation](https://github.com/bitnami/charts/tree/master/bitnami/postgresql)
# @default -- See values.yaml
postgresql:
enabled: false
postgresqlUsername: privatebin
postgresqlPassword: privatebin
postgresqlDatabase: privatebin
persistence:
enabled: false
# storageClass: ""
# -- Application Settings. See https://github.com/PrivateBin/PrivateBin/blob/master/cfg/conf.sample.php
# for a description of every setting
# @default -- See values.yaml
config:
main:
name: "PrivateBin"
# discussion: true
# opendiscussion: false
# password: true
# fileupload: false
# burnafterreadingselected: false
# defaultformatter: "plaintext"
# syntaxhighlightingtheme: "sons-of-obsidian"
# sizelimit: 10485760
# template: "bootstrap"
# info: "More information on the <a href='https://privatebin.info/'>project page</a>."
# notice: "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service."
# languageselection: false
# languagedefault: "en"
# urlshortener: "https://shortener.example.com/api?link="
# qrcode: false
# icon: "none"
# zerobincompatibility: false
# httpwarning: true
# compression: "zlib"
expire:
default: "1week"
expire_options:
5min: 300
10min: 600
1hour: 3600
1day: 86400
1week: 604800
1month: 2592000
1year: 31536000
never: 0
formatter_options:
plaintext: "Plain Text"
syntaxhighlighting: "Source Code"
markdown: "Markdown"
traffic:
limit: 10
# exemptedIp: "1.2.3.4,10.10.10/24"