[stable/mattemost-team-edition] Add initial charts for Mattermost Team Edition (#5987)

* Add initial charts for Mattermost Team Edition

Signed-off-by: cpanato <ctadeu@gmail.com>

* update based on feedback

Signed-off-by: cpanato <ctadeu@gmail.com>

* update dependencies

Signed-off-by: cpanato <ctadeu@gmail.com>
This commit is contained in:
Carlos Tadeu Panato Junior
2018-09-19 12:09:28 -07:00
committed by k8s-ci-robot
parent 5a978499d2
commit ba3b3d8081
18 changed files with 822 additions and 0 deletions
@@ -0,0 +1,24 @@
# 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
# OWNERS file for Kubernetes
OWNERS
+19
View File
@@ -0,0 +1,19 @@
apiVersion: v1
description: Mattermost Team Edition server.
name: mattermost-team-edition
version: 1.0.0
appVersion: 5.2.1
keywords:
- mattermost
- communication
- team collaboration
home: https://mattermost.com
icon: http://www.mattermost.org/wp-content/uploads/2016/04/icon.png
source:
- https://github.com/mattermost/mattermost-server
- https://github.com/mattermost/mattermost-kubernetes
maintainers:
- name: cpanato
email: carlos@mattermost.com
- name: jwilander
email: joram@mattermost.com
+6
View File
@@ -0,0 +1,6 @@
approvers:
- cpanato
- jwilander
reviewers:
- cpanato
- jwilander
+120
View File
@@ -0,0 +1,120 @@
# Mattermost Team Edition
[Mattermost](https://mattermost.com/) is a hybrid cloud enterprise messaging workspace that brings your messaging and tools together to get more done, faster.
## TL;DR;
```bash
$ helm install stable/mattermost-team-edition \
--set mysql.mysqlUser=sampleUser \
--set mysql.mysqlPassword=samplePassword \
```
## Introduction
This chart creates a [Mattermost Team Edition](https://mattermost.com/)deployment on a [Kubernetes](http://kubernetes.io)
cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes 1.8+ with Beta APIs enabled
## Installing the Chart
To install the chart with the release name `my-release`:
```bash
$ helm install --name my-release stable/mattermost-team-edition
```
The command deploys Mattermost on the Kubernetes cluster in the default configuration. The [configuration](#configuration)
section lists the parameters that can be configured during installation.
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```bash
$ helm delete my-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
The following table lists the configurable parameters of the Mattermost Team Edition chart and their default values.
Parameter | Description | Default
--- | --- | ---
`image.repository` | container image repository | `mattermost/mattermost-team-edition`
`image.tag` | container image tag | `5.2.1`
`config.SiteUrl` | The URL that users will use to access Mattermost. ie `https://mattermost.mycompany.com` | ``
`config.SiteName` | Name of service shown in login screens and UI | `Mattermost`
`config.FilesAccessKey` | The AWS Access Key, if you want store the files on S3 | ``
`config.FilesSecretKey` | The AWS Secret Key | ``
`config.FileBucketName` | The S3 bucket name | ``
`config.SMTPHost` | Location of SMTP email server | ``
`config.SMTPPort` | Port of SMTP email server | ``
`config.SMTPUsername` | The username for authenticating to the SMTP server | ``
`config.SMTPPassword` | The password associated with the SMTP username | ``
`config.FeedbackEmail` | Address displayed on email account used when sending notification emails from Mattermost system | ``
`config.FeedbackName` | Name displayed on email account used when sending notification emails from Mattermost system | ``
`ingress.enabled` | if `true`, an ingress is created | `false`
`ingress.hosts` | a list of ingress hosts | `[mattermost.example.com]`
`ingress.tls` | a list of [IngressTLS](https://v1-8.docs.kubernetes.io/docs/api-reference/v1.8/#ingresstls-v1beta1-extensions) items | `[]`
`mysql.mysqlRootPassword` | Root Password for Mysql (Opcional) | ""
`mysql.mysqlUser` | Username for Mysql (Required) | ""
`mysql.mysqlPassword` | User Password for Mysql (Required) | ""
`mysql.mysqlDatabase` | Database name (Required) | "mattermost"
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```bash
$ helm install --name my-release \
--set image.tag=release-5.2.1 \
--set mysql.mysqlUser=sampleUser \
--set mysql.mysqlPassword=samplePassword \
stable/mattermost-team-edition
```
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,
```bash
$ helm install --name my-release -f values.yaml stable/mattermost-team-edition
```
### External Databases
There is an option to use external database services (PostgreSQL or MySQL) for your Mattermost installation.
If you use an external Database you will need to disable the MySQL chart in the `values.yaml`
```Bash
mysql:
enabled: false
```
#### PostgreSQL
To use an external **PostgreSQL**, You need to set Mattermost **externalDB** config
**IMPORTANT:** Make sure the DB is already created before deploying Mattermost services
```Bash
externalDB:
enabled: true
externalDriverType: "postgres"
externalConnectionString: "postgres://<USERNAME>:<PASSWORD>@<HOST>:5432/<DATABASE_NAME>?sslmode=disable&connect_timeout=10"
```
#### MySQL
To use an external **MySQL**, You need to set Mattermost **externalDB** config
**IMPORTANT:** Make sure the DB is already created before deploying Mattermost services
```Bash
externalDB:
enabled: true
externalDriverType: "mysql"
externalConnectionString: "<USERNAME>:<PASSWORD>@tcp(<HOST>:3306)/<DATABASE_NAME>?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"
```
#### Limitations
For the Team Edition you can have just one replica running.
@@ -0,0 +1,6 @@
mysql:
enabled: true
mysqlRootPassword: "rootpassord"
mysqlUser: "mmuser"
mysqlPassword: "mmpassword"
mysqlDatabase: mattermost
@@ -0,0 +1,6 @@
dependencies:
- name: mysql
repository: https://kubernetes-charts.storage.googleapis.com
version: 0.10.1
digest: sha256:be368592f2a1722d1b90e6881e2d381b47d674d1f76c50ed85b27cfb00dcda35
generated: 2018-09-14T14:08:32.750548865+02:00
@@ -0,0 +1,5 @@
dependencies:
- name: mysql
version: 0.10.1
repository: https://kubernetes-charts.storage.googleapis.com
condition: mysql.enabled
@@ -0,0 +1,27 @@
You can easily connect to the remote instance from your browser. Forward the webserver port to localhost:8065
- kubectl port-forward --namespace {{ .Release.Namespace }} $(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "mattermost-team-edition.fullname" . }},release={{ .Release.Name }}" -o jsonpath='{ .items[0].metadata.name }') 8080:8065
{{ if .Values.ingress.enabled }}
Mattermost will be available at the URL, if you setup the nginx-ingress or other type of ingress:
{{ if .Values.ingress.tls }}
{{ range .Values.ingress.hosts }}
https://{{ . }}
{{ end }}
{{ else }}
{{ range .Values.ingress.hosts }}
http://{{ . }}
{{ end }}
{{ end }}
{{ else }}
To expose Mattermost via an Ingress you need to set host and enable ingress.
helm install --set host=mattermost.yourdomain.com --set ingress.enabled=true stable/mattermost-team-edition
{{ end }}
@@ -0,0 +1,32 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "mattermost-team-edition.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 "mattermost-team-edition.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 "mattermost-team-edition.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
@@ -0,0 +1,234 @@
{{ define "config.tpl" }}
{
"ServiceSettings": {
"SiteURL": {{ .Values.config.siteUrl | default "" | quote }},
"LicenseFileLocation": "",
"ListenAddress": ":8065",
"ConnectionSecurity": "",
"TLSCertFile": "",
"TLSKeyFile": "",
"UseLetsEncrypt": false,
"LetsEncryptCertificateCacheFile": "./config/letsencrypt.cache",
"Forward80To443": false,
"ReadTimeout": 300,
"WriteTimeout": 300,
"MaximumLoginAttempts": 10,
"GoroutineHealthThreshold": -1,
"GoogleDeveloperKey": "",
"EnableOAuthServiceProvider": false,
"EnableIncomingWebhooks": true,
"EnableOutgoingWebhooks": true,
"EnableCommands": true,
"EnableOnlyAdminIntegrations": false,
"EnablePostUsernameOverride": false,
"EnablePostIconOverride": false,
"EnableLinkPreviews": false,
"EnableTesting": false,
"EnableDeveloper": false,
"EnableSecurityFixAlert": true,
"EnableInsecureOutgoingConnections": false,
"EnableMultifactorAuthentication": false,
"EnforceMultifactorAuthentication": false,
"AllowCorsFrom": "",
"SessionLengthWebInDays": 30,
"SessionLengthMobileInDays": 30,
"SessionLengthSSOInDays": 30,
"SessionCacheInMinutes": 10,
"WebsocketSecurePort": 443,
"WebsocketPort": 80,
"WebserverMode": "gzip",
"EnableCustomEmoji": false,
"RestrictCustomEmojiCreation": "all",
"RestrictPostDelete": "all",
"AllowEditPost": "always",
"PostEditTimeLimit": 300,
"TimeBetweenUserTypingUpdatesMilliseconds": 5000,
"EnablePostSearch": true,
"EnableUserTypingMessages": true,
"EnableUserStatuses": true,
"ClusterLogTimeoutMilliseconds": 2000
},
"TeamSettings": {
"SiteName": {{ .Values.config.siteName | default "Mattermost" | quote }},
"MaxUsersPerTeam": 50000,
"EnableTeamCreation": true,
"EnableUserCreation": true,
"EnableOpenServer": true,
"RestrictCreationToDomains": "",
"EnableCustomBrand": false,
"CustomBrandText": "",
"CustomDescriptionText": "",
"RestrictDirectMessage": "any",
"RestrictTeamInvite": "all",
"RestrictPublicChannelManagement": "all",
"RestrictPrivateChannelManagement": "all",
"RestrictPublicChannelCreation": "all",
"RestrictPrivateChannelCreation": "all",
"RestrictPublicChannelDeletion": "all",
"RestrictPrivateChannelDeletion": "all",
"RestrictPrivateChannelManageMembers": "all",
"UserStatusAwayTimeout": 300,
"MaxChannelsPerTeam": 50000,
"MaxNotificationsPerChannel": 1000
},
"SqlSettings": {
{{ if .Values.externalDB.enabled }}
"DriverName": "{{ .Values.externalDB.externalDriverType }}",
"DataSource": "{{ .Values.externalDB.externalConnectionString }}",
{{ else }}
"DriverName": "mysql",
"DataSource": "{{ .Values.mysql.mysqlUser }}:{{ .Values.mysql.mysqlPassword }}@tcp({{ .Release.Name }}-mysql:3306)/{{ .Values.mysql.mysqlDatabase }}?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s",
{{ end }}
"DataSourceReplicas": [],
"DataSourceSearchReplicas": [],
"MaxIdleConns": 20,
"MaxOpenConns": 35,
"Trace": false,
"AtRestEncryptKey": "{{ randAlphaNum 32 }}",
"QueryTimeout": 30
},
"LogSettings": {
"EnableConsole": true,
"ConsoleLevel": "INFO",
"EnableFile": true,
"FileLevel": "INFO",
"FileFormat": "",
"FileLocation": "",
"EnableWebhookDebugging": true,
"EnableDiagnostics": true
},
"PasswordSettings": {
"MinimumLength": 5,
"Lowercase": false,
"Number": false,
"Uppercase": false,
"Symbol": false
},
"FileSettings": {
"EnableFileAttachments": true,
"MaxFileSize": 52428800,
{{ if .Values.config.filesAccessKey }}
"DriverName": "amazons3",
{{ else }}
"DriverName": "local",
{{ end }}
"Directory": "./data/",
"EnablePublicLink": false,
"PublicLinkSalt": "{{ randAlphaNum 32 }}",
"ThumbnailWidth": 120,
"ThumbnailHeight": 100,
"PreviewWidth": 1024,
"PreviewHeight": 0,
"ProfileWidth": 128,
"ProfileHeight": 128,
"InitialFont": "luximbi.ttf",
"AmazonS3AccessKeyId": {{ .Values.config.filesAccessKey | default "" | quote }},
"AmazonS3SecretAccessKey": {{ .Values.config.filesSecretKey | default "" | quote }},
"AmazonS3Bucket": {{ .Values.config.fileBucketName | default "" | quote }},
"AmazonS3Region": "",
"AmazonS3Endpoint": "s3.amazonaws.com",
"AmazonS3SSL": false,
"AmazonS3SignV2": false
},
"EmailSettings": {
"EnableSignUpWithEmail": true,
"EnableSignInWithEmail": true,
"EnableSignInWithUsername": true,
{{ if .Values.config.smtpServer }}
"SendEmailNotifications": true,
{{ else }}
"SendEmailNotifications": false,
{{ end }}
"RequireEmailVerification": false,
"FeedbackName": {{ .Values.config.feedbackName | default "" | quote }},
"FeedbackEmail": {{ .Values.config.feedbackEmail | default "" | quote }},
"FeedbackOrganization": "",
"SMTPUsername": {{ .Values.config.smtpUsername | default "" | quote }},
"SMTPPassword": {{ .Values.config.smtpPassword | default "" | quote }},
{{ if and .Values.config.smtpUsername .Values.config.smtpPassword }}
"EnableSMTPAuth": true,
{{ else }}
"EnableSMTPAuth": false,
{{ end }}
"SMTPServer": {{ .Values.config.smtpServer | default "" | quote }},
"SMTPPort": {{ .Values.config.smtpPort | default "" | quote }},
"ConnectionSecurity": {{ .Values.config.smtpConnection | default "" | quote }},
"InviteSalt": "{{ randAlphaNum 32 }}",
"SendPushNotifications": true,
"PushNotificationServer": "https://push.mattermost.com",
"PushNotificationContents": "generic",
"EnableEmailBatching": false,
"EmailBatchingBufferSize": 256,
"EmailBatchingInterval": 30,
"SkipServerCertificateVerification": false
},
"RateLimitSettings": {
"Enable": false,
"PerSec": 10,
"MaxBurst": 100,
"MemoryStoreSize": 10000,
"VaryByRemoteAddr": true,
"VaryByHeader": ""
},
"PrivacySettings": {
"ShowEmailAddress": true,
"ShowFullName": true
},
"SupportSettings": {
"TermsOfServiceLink": "https://about.mattermost.com/default-terms/",
"PrivacyPolicyLink": "https://about.mattermost.com/default-privacy-policy/",
"AboutLink": "https://about.mattermost.com/default-about/",
"HelpLink": "https://about.mattermost.com/default-help/",
"ReportAProblemLink": "https://about.mattermost.com/default-report-a-problem/",
"SupportEmail": "feedback@mattermost.com"
},
"AnnouncementSettings": {
"EnableBanner": false,
"BannerText": "",
"BannerColor": "#f2a93b",
"BannerTextColor": "#333333",
"AllowBannerDismissal": true
},
{{ if .Values.auth.gitlab }}
"GitLabSettings": {{ .Values.auth.gitlab | toJson }},
{{ end }}
"LocalizationSettings": {
"DefaultServerLocale": "en",
"DefaultClientLocale": "en",
"AvailableLocales": ""
},
"NativeAppSettings": {
"AppDownloadLink": "https://about.mattermost.com/downloads/",
"AndroidAppDownloadLink": "https://about.mattermost.com/mattermost-android-app/",
"IosAppDownloadLink": "https://about.mattermost.com/mattermost-ios-app/"
},
"AnalyticsSettings": {
"MaxUsersForStatistics": 2500
},
"WebrtcSettings": {
"Enable": false,
"GatewayWebsocketUrl": "",
"GatewayAdminUrl": "",
"GatewayAdminSecret": "",
"StunURI": "",
"TurnURI": "",
"TurnUsername": "",
"TurnSharedKey": ""
},
"DisplaySettings": {
"CustomUrlSchemes": [],
"ExperimentalTimezone": true
},
"TimezoneSettings": {
"SupportedTimezonesPath": "timezones.json"
},
"PluginSettings": {
"Enable": true,
"EnableUploads": true,
"Directory": "./plugins",
"ClientDirectory": "./client/plugins",
"Plugins": {},
"PluginStates": {}
}
}
{{ end }}
@@ -0,0 +1,12 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "mattermost-team-edition.fullname" . }}-config-json
labels:
chart: {{ template "mattermost-team-edition.chart" . }}
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
data:
config.json: |
{{ include "config.tpl" . | printf "%s" | indent 4 }}
@@ -0,0 +1,76 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "mattermost-team-edition.fullname" . }}
labels:
chart: {{ template "mattermost-team-edition.chart" . }}
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
template:
metadata:
annotations:
checksum/config: {{ include (print $.Template.BasePath "/config.tpl") . | sha256sum }}
labels:
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
chart: {{ template "mattermost-team-edition.chart" . }}
heritage: {{ .Release.Service }}
spec:
{{ if not .Values.externalDB.enabled }}
initContainers:
- name: "init-mysql"
image: "appropriate/curl:latest"
imagePullPolicy: "IfNotPresent"
command: ["sh", "-c", "until curl --max-time 5 http://{{ .Release.Name }}-mysql:3306; do echo waiting for {{ .Release.Name }}-mysql; sleep 5; done;"]
{{ end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.imagePullPolicy }}
ports:
- name: http
containerPort: 80
protocol: TCP
livenessProbe:
initialDelaySeconds: 90
timeoutSeconds: 5
periodSeconds: 15
httpGet:
path: /api/v4/system/ping
port: {{ .Values.service.internalPort }}
readinessProbe:
initialDelaySeconds: 15
timeoutSeconds: 5
periodSeconds: 15
httpGet:
path: /api/v4/system/ping
port: {{ .Values.service.internalPort }}
volumeMounts:
- mountPath: /mattermost/config/config.json
name: config-json
subPath: config.json
- mountPath: /mattermost/data
name: mattermost-data
resources:
{{ toYaml .Values.resources | indent 12 }}
volumes:
- name: config-json
configMap:
name: {{ template "mattermost-team-edition.fullname" . }}-config-json
items:
- key: config.json
path: config.json
- name: mattermost-data
{{ if .Values.persistence.data.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim | default (include "mattermost-team-edition.fullname" .) }}
{{ else }}
emptyDir: {}
{{ end }}
@@ -0,0 +1,39 @@
{{ $ingress := .Values.ingress }}
{{ if $ingress.enabled }}
{{ $serviceName := include "mattermost-team-edition.name" . }}
{{ $servicePort := .Values.service.externalPort }}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ template "mattermost-team-edition.fullname" . }}
labels:
chart: {{ template "mattermost-team-edition.chart" . }}
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
annotations:
{{ if .Values.ingress.tls }}
nginx.ingress.kubernetes.io/ssl-redirect: "true"
kubernetes.io/tls-acme: "true"
{{ else }}
nginx.ingress.kubernetes.io/ssl-redirect: "false"
{{ end }}
{{ with $ingress.annotations }}
{{ toYaml . | indent 4 }}
{{ end }}
spec:
rules:
{{ range $host := $ingress.hosts }}
- host: {{ $host }}
http:
paths:
- path: {{ $ingress.path }}
backend:
serviceName: {{ $serviceName }}
servicePort: {{ $servicePort }}
{{ end }}
{{ if $ingress.tls }}
tls:
{{ toYaml $ingress.tls | indent 4 }}
{{ end }}
{{ end }}
@@ -0,0 +1,28 @@
{{ if and .Values.persistence.data.enabled (not .Values.persistence.data.existingClaim) }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "mattermost-team-edition.fullname" . }}
labels:
chart: {{ template "mattermost-team-edition.chart" . }}
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
annotations:
{{ range $key, $value := .Values.persistence.data.annotations }}
{{ $key }}: {{ $value | quote }}
{{ end }}
spec:
accessModes:
- {{ .Values.persistence.data.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.data.size | quote }}
{{ if .Values.persistence.data.storageClass }}
{{ if (eq "-" .Values.persistence.data.storageClass) }}
storageClassName: ""
{{ else }}
storageClassName: "{{ .Values.persistence.data.storageClass }}"
{{ end }}
{{ end }}
{{ end }}
@@ -0,0 +1,19 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "mattermost-team-edition.name" . }}
labels:
chart: {{ template "mattermost-team-edition.chart" . }}
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
selector:
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.externalPort }}
targetPort: {{ .Values.service.internalPort }}
protocol: TCP
name: {{ template "mattermost-team-edition.name" . }}
@@ -0,0 +1,14 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "mattermost-team-edition.fullname" . }}-tests
labels:
chart: {{ template "mattermost-team-edition.chart" . }}
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
data:
run.sh: |-
@test "Testing Mattermost is accessible" {
curl --retry 48 --retry-delay 10 {{ template "mattermost-team-edition.name" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.internalPort }}
}
@@ -0,0 +1,42 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ template "mattermost-team-edition.fullname" . }}-test-{{ randAlphaNum 5 | lower }}"
labels:
chart: {{ template "mattermost-team-edition.chart" . }}
app: {{ template "mattermost-team-edition.fullname" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
annotations:
"helm.sh/hook": test-success
spec:
initContainers:
- name: "test-framework"
image: "dduportal/bats:0.4.0"
command:
- "bash"
- "-c"
- |
set -ex
# copy bats to tools dir
cp -R /usr/local/libexec/ /tools/bats/
volumeMounts:
- mountPath: /tools
name: tools
containers:
- name: {{ .Release.Name }}-test
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command: ["/tools/bats/bats", "-t", "/tests/run.sh"]
volumeMounts:
- mountPath: /tests
name: tests
readOnly: true
- mountPath: /tools
name: tools
volumes:
- name: tests
configMap:
name: {{ template "mattermost-team-edition.fullname" . }}-tests
- name: tools
emptyDir: {}
restartPolicy: Never
+113
View File
@@ -0,0 +1,113 @@
# Default values for mattermost-team-edition.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
image:
repository: mattermost/mattermost-team-edition
tag: 5.2.1
imagePullPolicy: IfNotPresent
## Enable persistence using Persistent Volume Claims
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
## ref: https://docs.gitlab.com/ee/install/requirements.html#storage
##
persistence:
## This volume persists generated data from users, like images, attachments...
##
data:
enabled: true
size: 10Gi
## If defined, volume.beta.kubernetes.io/storage-class: <storageClass>
## Default: volume.alpha.kubernetes.io/storage-class: default
##
# storageClass:
accessMode: ReadWriteOnce
# existingClaim: ""
# Mattermost configuration:
config:
siteUrl: "http://mattermost.example.com"
siteName: "Mattermost"
filesAccessKey:
filesSecretKey:
fileBucketName:
smtpServer:
smtpPort:
# empty, TLS, or STARTTLS
smtpConnection:
smtpUsername:
smtpPassword:
feedbackEmail:
feedbackName:
service:
type: ClusterIP
externalPort: 8065
internalPort: 8065
ingress:
enabled: false
path: /
annotations:
# kubernetes.io/ingress.class: nginx
# nginx.ingress.kubernetes.io/proxy-body-size: 50m
# nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
# nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
# nginx.ingress.kubernetes.io/proxy-buffering: "on"
# nginx.ingress.kubernetes.io/configuration-snippet: |
# proxy_cache mattermost_cache;
# proxy_cache_revalidate on;
# proxy_cache_min_uses 2;
# proxy_cache_use_stale timeout;
# proxy_cache_lock on;
#### To use the nginx cache you will need to set an http-snippet in the ingress-nginx configmap
#### http-snippet: |
#### proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=mattermost_cache:10m max_size=3g inactive=120m use_temp_path=off;
hosts:
- mattermost.example.com
tls:
# - secretName: mattermost.example.com-tls
# hosts:
# - mattermost.example.com
auth:
gitlab:
# Enable: "false"
# Secret: ""
# Id: ""
# Scope: ""
# AuthEndpoint:
# TokenEndpoint:
# UserApiEndpoint:
## If use this please disable the mysql chart, setting the config mysql.enable to false
externalDB:
enabled: false
# externalDriverType: "postgres" #or mysql
# externalConnectionString: "postgres://<USERNAME>:<PASSWORD>@<HOST>:5432/<DATABASE_NAME>?sslmode=disable&connect_timeout=10"
# for mysql: "<USERNAME>:<PASSWORD>@tcp(<HOST>:3306)/<DATABASE_NAME>?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s"
mysql:
enabled: true
mysqlRootPassword: ""
mysqlUser: ""
mysqlPassword: ""
mysqlDatabase: mattermost
repository: mysql
tag: 5.7
imagePullPolicy: IfNotPresent
persistence:
enabled: true
## If defined, storageClassName: <storageClass>
## If set to "-", storageClassName: "", which disables dynamic provisioning
## If undefined (the default) or set to null, no storageClassName spec is
## set, choosing the default provisioner. (gp2 on AWS, standard on
## GKE, AWS & OpenStack)
##
storageClass: ""
accessMode: ReadWriteOnce
size: 10Gi
# existingClaim: ""