Commit e7173d90 authored by Maarten de Waard's avatar Maarten de Waard 🤘🏻
Browse files
parents
Pipeline #5442 failed with stages
*.swp
charts
# 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
apiVersion: v1
appVersion: "1.0"
description: A Helm chart for Kubernetes
name: nextcloud
version: 0.1.0
To install to a Kubernetes cluster, run:
```
helm dependency update # Get postgres helm chart
helm install . # Install Nextcloud to your cluster
```
dependencies:
- name: postgresql
repository: https://kubernetes-charts.storage.googleapis.com
version: 0.18.1
digest: sha256:9b31cbfb41a80c201f3af9ba7706bfb4018f646a2579253232835726c3ec9674
generated: 2018-10-02T12:06:58.486358723+02:00
dependencies:
- name: postgresql
version: 0.18.1
repository: "@stable"
tags:
- postgresql
alias: database
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range .Values.ingress.hosts }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "nextcloud.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 svc -w {{ include "nextcloud.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "nextcloud.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
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={{ include "nextcloud.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:80
{{- end }}
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "nextcloud.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 "nextcloud.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 "nextcloud.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: {{ include "nextcloud.fullname" . }}
labels:
app: {{ include "nextcloud.name" . }}
chart: {{ include "nextcloud.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ include "nextcloud.name" . }}
release: {{ .Release.Name }}
template:
metadata:
labels:
app: {{ include "nextcloud.name" . }}
release: {{ .Release.Name }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: php-fpm
containerPort: 80
protocol: TCP
# livenessProbe:
# tcpSocket:
# port: 80
# initialDelaySeconds: 60
# timeoutSeconds: 1
# readinessProbe:
# httpGet:
# path: /
# port: 80
volumeMounts:
- mountPath: /var/lib/nextcloud
name: data
# TODO: Change NEXTCLOUD_URL to whatever Helm thinks the URL is
env:
- name: TZ
value: {{ .Values.timezone }}
- name: DEBUG
value: "{{ .Values.debug }}"
- name: NEXTCLOUD_URL
value: {{ .Values.nextcloudUrl }}
- name: NEXTCLOUD_ADMIN_USER
value: {{ .Values.nextcloudAdminUser }}
- name: NEXTCLOUD_ADMIN_PASSWORD
value: {{ .Values.nextcloudAdminPassword }}
- name: NEXTCLOUD_UPLOAD_MAX_FILESIZE
value: "{{ .Values.uploadMaxFilesize }}"
- name: NEXTCLOUD_MAX_FILE_UPLOADS
value: "{{ .Values.maxFileUploads }}"
- name: DB_TYPE
value: pgsql
- name: DB_HOST
value: {{ .Release.Name }}-database.default.svc.cluster.local
- name: DB_PORT
value: "{{ .Values.database.service.port }}"
- name: DB_USER
value: {{ .Values.database.postgresUser }}
- name: DB_PASS
valueFrom:
secretKeyRef:
name: {{ include "nextcloud.fullname" . }}
key: postgres-password
- name: DB_NAME
value: {{ .Values.database.postgresDatabase }}
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
volumes:
- name: data
emptyDir: {}
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "nextcloud.fullname" . -}}
{{- $ingressPath := .Values.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ include "nextcloud.name" . }}
chart: {{ include "nextcloud.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "nextcloud.fullname" . }}
labels:
app: {{ include "nextcloud.name" . }}
chart: {{ include "nextcloud.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
type: Opaque
data:
postgres-password: {{ .Values.database.postgresPassword | b64enc | quote }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "nextcloud.fullname" . }}
labels:
app: {{ include "nextcloud.name" . }}
chart: {{ include "nextcloud.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.port }}
targetPort: 80
protocol: TCP
name: php-fpm
selector:
app: {{ include "nextcloud.name" . }}
release: {{ .Release.Name }}
# Default values for nextcloud.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
image:
repository: nextcloud
tag: 14.0.1-apache
pullPolicy: IfNotPresent
timezone: Europe/Amsterdam
debug: "true"
nextcloudUrl: nextcloud.local
nextcloudAdminUser: admin
nextcloudAdminPassword: password
uploadMaxFilesize: "4G"
maxFileUploads: "20"
nameOverride: ""
fullnameOverride: ""
service:
type: NodePort
port: 80
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- nextcloud.local
tls: []
# - secretName: nextcloud-tls
# hosts:
# - nextcloud.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
nodeSelector: {}
tolerations: []
affinity: {}
database:
postgresDatabase:
nextcloud_db
postgresUser:
nextcloud
postgresPassword:
TESTPASSWORD
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment