Browse Source

Merge branch 'master' of https://git.interlegis.leg.br/SEIT/rancher-charts

master
Fábio Kaiser Rauber 2 weeks ago
parent
commit
40e9728f8b
  1. 22
      charts/osticket/v0.3.0/.helmignore
  2. 9
      charts/osticket/v0.3.0/Chart.lock
  3. 16
      charts/osticket/v0.3.0/Chart.yaml
  4. 24
      charts/osticket/v0.3.0/README.md
  5. BIN
      charts/osticket/v0.3.0/charts/mariadb-10.4.4.tgz
  6. BIN
      charts/osticket/v0.3.0/charts/memcached-6.0.10.tgz
  7. 45
      charts/osticket/v0.3.0/templates/_helpers.tpl
  8. 91
      charts/osticket/v0.3.0/templates/deployment.yaml
  9. 38
      charts/osticket/v0.3.0/templates/ingress.yaml
  10. 16
      charts/osticket/v0.3.0/templates/service.yaml
  11. 15
      charts/osticket/v0.3.0/templates/tests/test-connection.yaml
  12. 39
      charts/osticket/v0.3.0/templates/velero-schedule-weekdays.yaml
  13. 103
      charts/osticket/v0.3.0/values.yaml
  14. 4
      charts/saberes/v0.1.0/templates/moodle-cronjob.yaml
  15. 2
      charts/sapl/v0.3.0/Chart.yaml
  16. 23
      charts/snappymail/v0.2.0/.helmignore
  17. 9
      charts/snappymail/v0.2.0/Chart.lock
  18. 18
      charts/snappymail/v0.2.0/Chart.yaml
  19. 75
      charts/snappymail/v0.2.0/README.md
  20. BIN
      charts/snappymail/v0.2.0/charts/mariadb-11.4.0.tgz
  21. BIN
      charts/snappymail/v0.2.0/charts/redis-17.3.11.tgz
  22. 22
      charts/snappymail/v0.2.0/templates/NOTES.txt
  23. 62
      charts/snappymail/v0.2.0/templates/_helpers.tpl
  24. 109
      charts/snappymail/v0.2.0/templates/deployment.yaml
  25. 28
      charts/snappymail/v0.2.0/templates/hpa.yaml
  26. 61
      charts/snappymail/v0.2.0/templates/ingress.yaml
  27. 19
      charts/snappymail/v0.2.0/templates/pvc.yaml
  28. 15
      charts/snappymail/v0.2.0/templates/service.yaml
  29. 106
      charts/snappymail/v0.2.0/values.yaml

22
charts/osticket/v0.3.0/.helmignore

@ -0,0 +1,22 @@
# 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/

9
charts/osticket/v0.3.0/Chart.lock

@ -0,0 +1,9 @@
dependencies:
- name: mariadb
repository: https://charts.bitnami.com/bitnami
version: 10.4.4
- name: memcached
repository: https://charts.bitnami.com/bitnami
version: 6.0.10
digest: sha256:82bd28a75702fa0313d8aedd8686527365365c914f2a5776e722da436e45135c
generated: "2022-04-01T11:42:33.634085-03:00"

16
charts/osticket/v0.3.0/Chart.yaml

@ -0,0 +1,16 @@
apiVersion: v2
appVersion: "1.18.4"
description: OSTicket Open Source Ticket System
name: osticket
icon: https://osticket.com/wp-content/uploads/2021/03/osticket-supsys-new-1-e1616621912452.png
version: 0.3.0
dependencies:
- name: mariadb
version: 10.4.4
repository: https://charts.bitnami.com/bitnami
condition: mariadb.internal
- name: memcached
version: 6.0.10
repository: https://charts.bitnami.com/bitnami
condition: memcached.internal

24
charts/osticket/v0.3.0/README.md

@ -0,0 +1,24 @@
# OSTicket support ticket system Helm chart
This is a Helm chart to install OSTicket with MySQL as database and memcached as session storage.
Requirements:
- Default persistent storage class (StorageClass)
- Ingress Controller (ex: nginx)
## Parameters and default values
| Parametro | Description | Default |
|---------------------------|--------------------------------------------|--------------------------|
| image.repository | Repository of docker image | `interlegis/osticket` |
| image.tag | Docker image version | `1.14.1` |
| image.pullPolicy | Docker image Pull Policy | `IfNotPresent` |
| replicaCount | Number of OSTicket replicas | `1` |
| persistence.enabled | Enable persistent volumes | `true` |
| persistence.storageClass | Persistent volume storage class | `` |
| persistence.accessMode | Persistent volume acces mode | `ReadWriteOnce` |
| persistence.size | Persistent volume size | `10Gi ` |
| installSecret | OSTicket install secret | `` |
| mariadb.auth.database | OSTicket database name | `osticket` |
| mariadb.auth.username | OSTicket database user name | `osticket` |
| mariadb.auth.password | OSTicket database user password | `mysecretpw` |

BIN
charts/osticket/v0.3.0/charts/mariadb-10.4.4.tgz

Binary file not shown.

BIN
charts/osticket/v0.3.0/charts/memcached-6.0.10.tgz

Binary file not shown.

45
charts/osticket/v0.3.0/templates/_helpers.tpl

@ -0,0 +1,45 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "osticket.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 "osticket.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 "osticket.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "osticket.labels" -}}
app.kubernetes.io/name: {{ include "osticket.name" . }}
helm.sh/chart: {{ include "osticket.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}

91
charts/osticket/v0.3.0/templates/deployment.yaml

@ -0,0 +1,91 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "osticket.fullname" . }}
labels:
{{ include "osticket.labels" . | indent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app.kubernetes.io/name: {{ include "osticket.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ include "osticket.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
initContainers:
- name: {{ .Chart.Name }}-install
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: INSTALL_SECRET
value: "{{ .Values.installSecret }}"
- name: MYSQL_HOST
value: "{{ include "osticket.name" . }}-mariadb"
- name: MYSQL_PASSWORD
value: "{{ .Values.mariadb.auth.password }}"
- name: USE_MEMCACHE
value: "true"
- name: MEMCACHE_NAME
value: "{{ include "osticket.name" . }}-memcached"
command:
- "php"
- "/data/bin/install.php"
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: 80
protocol: TCP
env:
- name: INSTALL_SECRET
value: "{{ .Values.installSecret }}"
- name: MYSQL_HOST
value: "{{ include "osticket.name" . }}-mariadb"
- name: MYSQL_PASSWORD
value: "{{ .Values.mariadb.auth.password }}"
- name: USE_MEMCACHE
value: "true"
- name: MEMCACHE_NAME
value: "{{ include "osticket.name" . }}-memcached"
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
httpGet:
path: /
port: http
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 2
timeoutSeconds: 1
httpGet:
path: /
port: http
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}

38
charts/osticket/v0.3.0/templates/ingress.yaml

@ -0,0 +1,38 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "osticket.fullname" . -}}
{{- $ingressPath := .Values.ingress.path -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{ include "osticket.labels" . | indent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ . }}
http:
paths:
- path: {{ $ingressPath }}
pathType: Prefix
backend:
service:
name: {{ $fullName }}
port:
name: http
{{- end }}
{{- end }}

16
charts/osticket/v0.3.0/templates/service.yaml

@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "osticket.fullname" . }}
labels:
{{ include "osticket.labels" . | indent 4 }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: {{ include "osticket.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}

15
charts/osticket/v0.3.0/templates/tests/test-connection.yaml

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

39
charts/osticket/v0.3.0/templates/velero-schedule-weekdays.yaml

@ -0,0 +1,39 @@
{{- if .Values.velero.backup.enabled }}
apiVersion: velero.io/v1
kind: Schedule
metadata:
name: {{ include "osticket.fullname" . }}-weekdays
namespace: {{ .Values.velero.namespace }}
spec:
# generate a random backup time between 1 and 5 AM on weekdays
schedule: {{ mod (randNumeric 2) 60 }} {{ mod (randNumeric 1) 6 }} * * 1-5
template:
includedNamespaces:
- {{ .Release.Namespace }}
{{- with .Values.velero.backup.excludedResources }}
excludedResources:
{{- toYaml . | nindent 8 }}
{{- end }}
snapshotVolumes: {{ .Values.velero.backup.snapshotVolumes }}
# every weekday backup is good for the next week (7 days)
ttl: 168h0m0s
defaultVolumesToRestic: {{ .Values.velero.backup.defaultVolumesToRestic }}
hooks:
resources:
- name: mysqldump
includedResources:
- pods
labelSelector:
matchLabels:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/name: mariadb
pre:
- exec:
command:
- "/bin/bash"
- "-c"
- "/opt/bitnami/mariadb/bin/mysqldump osticket -u osticket -p$MARIADB_PASSWORD > /bitnami/mariadb/osticket.dump"
timeout: 360s
onError: Continue
useOwnerReferencesInBackup: false
{{- end }}

103
charts/osticket/v0.3.0/values.yaml

@ -0,0 +1,103 @@
# Default values for osticket.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: porto.interlegis.leg.br/seit/osticket
tag: ""
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
installSecret: ""
persistence:
enabled: true
#storageClass: ""
accessMode: ReadWriteOnce
size: 10Gi
velero:
namespace: velero
backup:
enabled: true
snapshotVolumes: false
defaultVolumesToRestic: true
# cert-manager objects are usually blocked during backup
excludedResources:
- certificates.cert-manager.io
- orders.acme.cert-manager.io
- certificaterequests.cert-manager.io
- challenges.acme.cert-manager.io
service:
type: ClusterIP
port: 80
ingress:
enabled: true
path: "/"
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: chart-example.local
paths: []
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources:
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
requests:
cpu: 100m
memory: 128Mi
mariadb:
internal: true
image:
tag: 10.5.13-debian-10-r58
architecture: standalone
auth:
database: osticket
username: osticket
password: mysecretpw
primary:
persistence:
enabled: true
accessModes:
- ReadWriteOnce
size: 50Gi
resources:
requests:
memory: 700Mi
cpu: 100m
service:
type: ClusterIP
memcached:
internal: true
image:
tag: 1.6.13-debian-10-r0
architecture: standalone
replicaCount: 1
pdb:
minAvailable: 1
nodeSelector: {}
tolerations: []
affinity: {}

4
charts/saberes/v0.1.0/templates/moodle-cronjob.yaml

@ -1,4 +1,4 @@
apiVersion: batch/v1beta1 apiVersion: batch/v1
kind: CronJob kind: CronJob
metadata: metadata:
name: {{ include "saberes.fullname" . }}-moodlecron name: {{ include "saberes.fullname" . }}-moodlecron
@ -28,7 +28,7 @@ spec:
- "/bin/bash" - "/bin/bash"
- "-c" - "-c"
args: args:
- "/usr/local/bin/php /var/www/html/admin/cli/cron.php" - "/usr/bin/php /var/www/html/admin/cli/cron.php"
env: env:
- name: MOODLE_DB_HOST - name: MOODLE_DB_HOST
value: {{ .Values.moodle.dbHost | quote }} value: {{ .Values.moodle.dbHost | quote }}

2
charts/sapl/v0.3.0/Chart.yaml

@ -13,7 +13,7 @@ version: 0.3.0
# This is the version number of the application being deployed. This version number should be # This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to # incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using. # follow Semantic Versioning. They should reflect the version the application is using.
appVersion: 3.1.165-RC3 appVersion: 3.1.165-RC4
icon: https://git.interlegis.leg.br/SEIT/rancher-charts/raw/master/images/sapl.png icon: https://git.interlegis.leg.br/SEIT/rancher-charts/raw/master/images/sapl.png

23
charts/snappymail/v0.2.0/.helmignore

@ -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/

9
charts/snappymail/v0.2.0/Chart.lock

@ -0,0 +1,9 @@
dependencies:
- name: mariadb
repository: https://charts.bitnami.com/bitnami
version: 11.4.0
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 17.3.11
digest: sha256:d0306b0972bff1be59a35b88d107c2ae12984ef2a8715ad8d561f0f40b23114c
generated: "2022-11-29T11:06:02.773563459-03:00"

18
charts/snappymail/v0.2.0/Chart.yaml

@ -0,0 +1,18 @@
apiVersion: v2
name: snappymail
description: Snappymail is a lightweight fork of Rainloop Webmail.
type: application
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.2.0
appVersion: "2.38.2"
dependencies:
- name: mariadb
version: 11.4.0
repository: https://charts.bitnami.com/bitnami
- name: redis
version: 17.3.11
repository: https://charts.bitnami.com/bitnami

75
charts/snappymail/v0.2.0/README.md

@ -0,0 +1,75 @@
# Snappy Mail Helm Chart
This Helm chart installs and manages the Snappy Mail application in Kubernetes.
## Prerequisites
- Kubernetes cluster
- Helm 3
## Configuration
The following table lists the configurable parameters for this chart and their default values.
| Parameter | Description | Default |
| --------------------------------- | ---------------------------------------- | ---------------------------- |
| replicaCount | Number of replicas to run | `1` |
| image.repository | Snappy Mail image repository | `porto.interlegis.leg.br/library/docker-snappymail-il` |
| image.pullPolicy | Snappy Mail image pull policy | `IfNotPresent` |
| image.tag | Snappy Mail image tag | `""` |
| imagePullSecrets | Image pull secrets for private repos | `[]` |
| nameOverride | Override the name of the chart | `""` |
| fullnameOverride | Override the full name of the chart | `""` |
| podAnnotations | Annotations to add to the pod | `{}` |
| podSecurityContext | Security context for the pod | `{}` |
| securityContext | Security context for the container | `{}` |
| service.type | Type of service | `ClusterIP` |
| service.port | Port for the service | `80` |
| snappymail.uploadMaxSize | Maximum size of uploaded files | `25M` |
| snappymail.memoryLimit | Memory limit for Snappy Mail | `128M` |
| snappymail.secureCookies | Option to turn on secure cookies | `true` |
| snappymail.logToStderr | Option to log to stderr | `true` |
| ingress.enabled | Option to enable ingress | `false` |
| ingress.className | The ingress class for the service | `""` |
| ingress.annotations | Annotations for the ingress | `{}` |
| ingress.hosts[0].host | Host for ingress | `chart-example.local` |
| ingress.hosts[0].paths[0].path | Path for ingress | `/` |
| ingress.hosts[0].paths[0].pathType | Path type for ingress | `ImplementationSpecific` |
| ingress.tls | TLS settings for ingress | `[]` |
| resources.limits.cpu | CPU limit for resources | `1500m` |
| resources.limits.memory | Memory limit for resources | `1500Mi` |
| resources.requests.cpu | CPU request for resources | `500m` |
| resources.requests.memory | Memory request for resources | `700Mi` |
| autoscaling.enabled | Option to enable horizontal pod autoscaler | `false` |
| autoscaling.minReplicas | Minimum number of replicas | `2` |
| autoscaling.maxReplicas | Maximum number of replicas | `10` |
| autoscaling.targetCPUUtilizationPercentage | Target CPU utilization percentage | `70` |
| nodeSelector | Node labels for pod assignment | `{}` |
| tolerations | Toleration labels for pod assignment | `[]` |
| persistence.accessMode | Access mode for storage | `ReadWriteMany` |
| persistence.size | Size of the storage | `8Gi` |
| persistence.storageClass | Storage class | `""` |
| mariadb.auth.rootPassword | Root password for MariaDB | `changeme` |
| mariadb.auth.database | Database for MariaDB | `snappymail` |
| mariadb.auth.username | Username for MariaDB | `snappymail` |
| mariadb.auth.password | Password for MariaDB | `changeme` |
| mariadb.architecture | MariaDB architecture | `standalone` |
| mariadb.primary.resources.limits.cpu | CPU limit for primary container | `1500m` |
| mariadb.primary.resources.limits.memory | Memory limit for primary container | `768Mi` |
| mariadb.primary.resources.requests.cpu | CPU request for primary container | `500m` |
| mariadb.primary.resources.requests.memory | Memory request for primary container | `256Mi` |
| redis.architecture | Redis architecture | `standalone` |
| redis.auth.enabled | Option to enable authentication for Redis | `false` |
| redis.master.persistence.enabled | Option to enable persistence for Redis | `true` |
| redis.master.persistence.size | Size of the storage for Redis | `8Gi` |
| redis.master.persistence.storageClass | Storage class for Redis | `""` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install` or provide a values.yaml file in the command like `-f values.yaml`.
## Uninstall
To uninstall the chart, run:
```
helm delete snappymail
```

BIN
charts/snappymail/v0.2.0/charts/mariadb-11.4.0.tgz

Binary file not shown.

BIN
charts/snappymail/v0.2.0/charts/redis-17.3.11.tgz

Binary file not shown.

22
charts/snappymail/v0.2.0/templates/NOTES.txt

@ -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 "snappymail.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 "snappymail.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "snappymail.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 "snappymail.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 }}

62
charts/snappymail/v0.2.0/templates/_helpers.tpl

@ -0,0 +1,62 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "snappymail.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 "snappymail.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 "snappymail.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "snappymail.labels" -}}
helm.sh/chart: {{ include "snappymail.chart" . }}
{{ include "snappymail.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "snappymail.selectorLabels" -}}
app.kubernetes.io/name: {{ include "snappymail.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "snappymail.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "snappymail.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

109
charts/snappymail/v0.2.0/templates/deployment.yaml

@ -0,0 +1,109 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "snappymail.fullname" . }}
labels:
{{- include "snappymail.labels" . | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "snappymail.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "snappymail.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
initContainers:
- name: fix-volume-permissions
image: alpine:latest
command: ["sh", "-c", "chown -R 82:82 /snappymail/data"]
securityContext:
runAsUser: 0 # Força a execução como root temporariamente
volumeMounts:
- name: snappymaildata
mountPath: /snappymail/data
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: UPLOAD_MAX_SIZE
value: {{ .Values.snappymail.uploadMaxSize | quote }}
- name: LOG_TO_STDERR
value: {{ .Values.snappymail.logToStderr | quote }}
- name: MEMORY_LIMIT
value: {{ .Values.snappymail.memoryLimit | quote }}
- name: SECURE_COOKIES
value: {{ .Values.snappymail.secureCookies | quote }}
volumeMounts:
- mountPath: /snappymail/data
name: snappymaildata
ports:
- name: http
containerPort: 8888
protocol: TCP
livenessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 60
periodSeconds: 5
successThreshold: 1
failureThreshold: 3
timeoutSeconds: 2
readinessProbe:
httpGet:
path: /
port: http
initialDelaySeconds: 60
periodSeconds: 5
successThreshold: 2
failureThreshold: 3
timeoutSeconds: 2
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
podAffinityTerm:
labelSelector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values:
- {{ include "snappymail.name" . }}
- key: app.kubernetes.io/instance
operator: In
values:
- {{ .Release.Name }}
topologyKey: "kubernetes.io/hostname"
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
volumes:
- name: snappymaildata
persistentVolumeClaim:
claimName: {{ include "snappymail.fullname" . }}-data

28
charts/snappymail/v0.2.0/templates/hpa.yaml

@ -0,0 +1,28 @@
{{- if .Values.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "snappymail.fullname" . }}
labels:
{{- include "snappymail.labels" . | nindent 4 }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: {{ include "snappymail.fullname" . }}
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
metrics:
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
- type: Resource
resource:
name: cpu
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
{{- end }}
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
- type: Resource
resource:
name: memory
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
{{- end }}
{{- end }}

61
charts/snappymail/v0.2.0/templates/ingress.yaml

@ -0,0 +1,61 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "snappymail.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 "snappymail.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:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .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 }}
{{- end }}

19
charts/snappymail/v0.2.0/templates/pvc.yaml

@ -0,0 +1,19 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "snappymail.fullname" . }}-data
labels:
{{- include "snappymail.labels" . | nindent 4 }}
spec:
accessModes:
- {{ .Values.persistence.accessMode }}
resources:
requests:
storage: {{ .Values.persistence.size }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.storageClass }}"
{{- end }}
{{- end }}

15
charts/snappymail/v0.2.0/templates/service.yaml

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

106
charts/snappymail/v0.2.0/values.yaml

@ -0,0 +1,106 @@
# Default values for snappymail.
replicaCount: 1
image:
repository: porto.interlegis.leg.br/library/docker-snappymail-il
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: ""
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
snappymail:
uploadMaxSize: 25M
memoryLimit: 128M
secureCookies: true
logToStderr: true
ingress:
enabled: false
className: ""
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
hosts:
- host: chart-example.local
paths:
- path: /
pathType: ImplementationSpecific
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources:
limits:
cpu: 1500m
memory: 1500Mi
requests:
cpu: 500m
memory: 700Mi
autoscaling:
enabled: false
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 70
# targetMemoryUtilizationPercentage: 80
nodeSelector: {}
tolerations: []
persistence:
accessMode: ReadWriteMany
size: 8Gi
storageClass: ""
# MariaDB configuration for storing contact information
mariadb:
auth:
rootPassword: changeme
database: snappymail
username: snappymail
password: changeme
architecture: standalone
primary:
resources:
limits:
cpu: 1500m
memory: 768Mi
requests:
cpu: 500m
memory: 256Mi
# Redis configuration for caching
redis:
architecture: standalone
auth:
enabled: false
master:
persistence:
enabled: true
size: 8Gi
storageClass: ""
Loading…
Cancel
Save