[Libreoffice-commits] online.git: kubernetes/helm
Gabriel Masei (via logerrit)
logerrit at kemper.freedesktop.org
Thu Oct 10 12:48:54 UTC 2019
kubernetes/helm/README.md | 11 +
kubernetes/helm/libreoffice-online/Chart.yaml | 4
kubernetes/helm/libreoffice-online/templates/_helpers.tpl | 11 +
kubernetes/helm/libreoffice-online/templates/deployment.yaml | 89 +++++++++++
kubernetes/helm/libreoffice-online/templates/hpa.yaml | 32 +++
kubernetes/helm/libreoffice-online/templates/service.yaml | 19 ++
kubernetes/helm/libreoffice-online/values.yaml | 77 +++++++++
7 files changed, 243 insertions(+)
New commits:
commit 0ca4d204bb1361b198666a82d5072a281ed62a82
Author: Gabriel Masei <gabriel.masei at 1and1.ro>
AuthorDate: Thu Oct 10 15:48:21 2019 +0300
Commit: Gabriel Masei <gabriel.masei at 1and1.ro>
CommitDate: Thu Oct 10 15:48:21 2019 +0300
Add basic support for kubernetes deploy
Change-Id: I695f412570339a6225b198bcd3fd3b4f29fb4bd3
diff --git a/kubernetes/helm/README.md b/kubernetes/helm/README.md
new file mode 100644
index 000000000..d038dbe38
--- /dev/null
+++ b/kubernetes/helm/README.md
@@ -0,0 +1,11 @@
+# OnlineOffice Helm-Charts
+
+# Available Charts
+
+## LibreOffice-Online
+Chart for deploying C++ application [LibreOffice Online] in Kubernetes cluster.</br>
+To install the chart a command similar to the one above needs to be issued.</br>
+```
+.. cd helm-charts
+helm install --namespace=${your desired namespace} --generate-name libreoffice-online
+```
diff --git a/kubernetes/helm/libreoffice-online/Chart.yaml b/kubernetes/helm/libreoffice-online/Chart.yaml
new file mode 100644
index 000000000..63e2067bc
--- /dev/null
+++ b/kubernetes/helm/libreoffice-online/Chart.yaml
@@ -0,0 +1,4 @@
+apiVersion: v1
+description: LibreOffice Online helm chart
+name: libreoffice-online
+version: 1.1.0
diff --git a/kubernetes/helm/libreoffice-online/templates/_helpers.tpl b/kubernetes/helm/libreoffice-online/templates/_helpers.tpl
new file mode 100644
index 000000000..ec188b25f
--- /dev/null
+++ b/kubernetes/helm/libreoffice-online/templates/_helpers.tpl
@@ -0,0 +1,11 @@
+{{/* vim: set filetype=mustache: */}}
+{{/*
+Expand the name of the chart.
+*/}}
+{{- define "name" -}}
+{{- default .Values.global.app.name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
+{{- end -}}
+
+{{- define "chartname" -}}
+{{- printf "%s-%s" .Chart.Name (.Chart.Version | replace "+" "_") -}}
+{{- end -}}
diff --git a/kubernetes/helm/libreoffice-online/templates/deployment.yaml b/kubernetes/helm/libreoffice-online/templates/deployment.yaml
new file mode 100644
index 000000000..f0e600c68
--- /dev/null
+++ b/kubernetes/helm/libreoffice-online/templates/deployment.yaml
@@ -0,0 +1,89 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: {{ default .Values.global.app.name .Values.deployment.name }}
+ labels:
+ app: {{ template "name" . }}
+ chart: {{ template "chartname" . }}
+ release: {{ .Release.Name }}
+ version: "{{ .Values.global.app.version }}"
+spec:
+ minReadySeconds: {{ .Values.deployment.minReadySeconds }}
+ replicas: {{ .Values.replicaCount }}
+ selector:
+ matchLabels:
+ app: {{ template "name" . }}
+ release: {{ .Release.Name }}
+ strategy:
+ type: {{ .Values.deployment.type }}
+ {{- if eq .Values.deployment.type "RollingUpdate"}}
+ rollingUpdate:
+ maxSurge: {{ .Values.deployment.maxSurge }}
+ maxUnavailable: {{ .Values.deployment.maxUnavailable }}
+ {{- end}}
+ template:
+ metadata:
+ labels:
+ app: {{ template "name" . }}
+ release: {{ .Release.Name }}
+ version: "{{ .Values.global.app.version }}"
+ exposed: "true"
+ annotations:
+ {{- if .Values.global.app.monitoring.activate }}
+ prometheus.io/scrape: "true"
+ prometheus.io/port: "{{ .Values.global.app.monitoring.port }}"
+ prometheus.io/path: "{{ .Values.global.app.monitoring.path }}"
+ {{- end }}
+ spec:
+ containers:
+ - name: {{ .Values.global.app.name }}
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
+ ports:
+ - containerPort: {{ .Values.global.app.service.internalPort }}
+ securityContext:
+ readOnlyRootFilesystem: false
+ runAsNonRoot: true
+ #Lool user id
+ runAsUser: 101
+ {{- if .Values.probes.liveness.activate }}
+ livenessProbe:
+ httpGet:
+ path: {{ .Values.probes.liveness.path }}
+ port: {{ .Values.probes.port }}
+ scheme: {{ .Values.probes.urlScheme }}
+ initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
+ periodSeconds: {{ .Values.probes.liveness.periodSeconds }}
+ timeoutSeconds: {{ .Values.probes.liveness.timeoutSeconds }}
+ successThreshold: {{ .Values.probes.liveness.successThreshold }}
+ failureThreshold: {{ .Values.probes.liveness.failureThreshold }}
+ {{- end }}
+ {{- if .Values.probes.readiness.activate }}
+ readinessProbe:
+ httpGet:
+ path: {{ .Values.probes.readiness.path }}
+ port: {{ .Values.probes.port }}
+ scheme: {{ .Values.probes.urlScheme }}
+ initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
+ periodSeconds: {{ .Values.probes.readiness.periodSeconds }}
+ timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
+ successThreshold: {{ .Values.probes.readiness.successThreshold }}
+ failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
+ {{- end }}
+ {{- if .Values.environmentVariablesLool }}
+ env:
+{{ toYaml .Values.environmentVariablesLool | indent 12 }}
+ {{- end }}
+ volumeMounts:
+ - name: tmp
+ mountPath: /tmp
+ resources:
+{{ toYaml .Values.resources | indent 12 }}
+ {{- if .Values.nodeSelector }}
+ nodeSelector:
+{{ toYaml .Values.nodeSelector | indent 8 }}
+ {{- end }}
+ volumes:
+ - name: tmp
+ emptyDir:
+ medium: "Memory"
\ No newline at end of file
diff --git a/kubernetes/helm/libreoffice-online/templates/hpa.yaml b/kubernetes/helm/libreoffice-online/templates/hpa.yaml
new file mode 100644
index 000000000..cec7ac307
--- /dev/null
+++ b/kubernetes/helm/libreoffice-online/templates/hpa.yaml
@@ -0,0 +1,32 @@
+{{- if .Values.global.app.scaling.enabled }}
+apiVersion: autoscaling/v2beta1
+kind: HorizontalPodAutoscaler
+metadata:
+ name: {{ .Values.hpa.name }}
+ labels:
+ app: {{ template "name" . }}
+ chart: {{ template "chartname" . }}
+ release: {{ .Release.Name }}
+spec:
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: Deployment
+ name: {{ default .Values.global.app.name .Values.deployment.name }}
+{{- if gt .Values.global.app.scaling.min 1.0 }}
+ minReplicas: {{ .Values.global.app.scaling.min }}
+{{- end }}
+ maxReplicas: {{ .Values.global.app.scaling.max }}
+ metrics:
+{{- if gt .Values.global.app.scaling.target.memory 1.0 }}
+ - type: Resource
+ resource:
+ name: memory
+ targetAverageUtilization: {{ .Values.global.app.scaling.target.memory }}
+{{- end }}
+{{- if gt .Values.global.app.scaling.target.cpu 1.0 }}
+ - type: Resource
+ resource:
+ name: cpu
+ targetAverageUtilization: {{ .Values.global.app.scaling.target.cpu }}
+{{- end }}
+{{- end }}
diff --git a/kubernetes/helm/libreoffice-online/templates/service.yaml b/kubernetes/helm/libreoffice-online/templates/service.yaml
new file mode 100644
index 000000000..29498c904
--- /dev/null
+++ b/kubernetes/helm/libreoffice-online/templates/service.yaml
@@ -0,0 +1,19 @@
+apiVersion: v1
+kind: Service
+metadata:
+ name: {{ .Values.global.app.service.name }}
+ labels:
+ app: {{ template "name" . }}
+ chart: {{ template "chartname" . }}
+ release: {{ .Release.Name }}
+spec:
+ type: {{ .Values.global.app.service.type }}
+ externalTrafficPolicy: Local
+ ports:
+ - port: {{ .Values.global.app.service.externalPort }}
+ targetPort: {{ .Values.global.app.service.internalPort }}
+ protocol: TCP
+ name: {{ .Values.global.app.service.name }}
+ selector:
+ app: {{ template "name" . }}
+ release: {{ .Release.Name }}
diff --git a/kubernetes/helm/libreoffice-online/values.yaml b/kubernetes/helm/libreoffice-online/values.yaml
new file mode 100644
index 000000000..f464d62ac
--- /dev/null
+++ b/kubernetes/helm/libreoffice-online/values.yaml
@@ -0,0 +1,77 @@
+# Default values for libreoffice-online.
+# This is a YAML-formatted file.
+# Declare variables to be passed into your templates.
+global:
+ app:
+ name: libreoffice-online
+ urlScheme: HTTP # either HTTP or HTTPS
+ scaling:
+ enabled: true
+ min: 1
+ max: 10
+ target:
+ cpu: 70
+ memory: 70
+ monitoring:
+ activate: false
+ port: 9980
+ path: "/lool/adminMonitorInfo"
+ service:
+ name: libreoffice-online
+ type: NodePort
+ externalPort: 9980
+ internalPort: 9980
+ ingress: {}
+
+replicaCount: 3
+image:
+ pullPolicy: Always
+ repository: libreoffice/online
+ tag: master
+
+probes:
+ urlScheme: HTTP # either HTTP or HTTPS
+ port: 9980
+ readiness:
+ activate: true
+ path: /
+ initialDelaySeconds: 60
+ periodSeconds: 10
+ timeoutSeconds: 30
+ successThreshold: 1
+ failureThreshold: 3
+ liveness:
+ activate: true
+ path: /
+ initialDelaySeconds: 60
+ periodSeconds: 10
+ timeoutSeconds: 30
+ successThreshold: 1
+ failureThreshold: 3
+
+deployment:
+ name: libreoffice-online
+ type: RollingUpdate
+ minReadySeconds: 0
+ maxUnavailable: 1
+ maxSurge: 1
+
+environmentVariablesLool: {}
+
+service:
+ name: libreoffice-online
+
+hpa:
+ name: libreoffice-online
+
+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: 2000m
+ # memory: 256Mi
+ # requests:
+ # cpu: 100m
+ # memory: 128Mi
More information about the Libreoffice-commits
mailing list