Merge branch 'node_production_chart' of github.com:tompizmor/charts-1 into node_production_chart

This commit is contained in:
tompizmor
2018-03-22 12:34:49 +01:00
409 changed files with 15708 additions and 58 deletions
+2 -1
View File
@@ -11,8 +11,10 @@ $ helm search bitnami-incubator
## Stable charts (contributed to [kubernetes/charts](https://github.com/kubernetes/charts))
- [Dokuwiki](https://github.com/kubernetes/charts/tree/master/stable/dokuwiki)
- [Drupal](https://github.com/kubernetes/charts/tree/master/stable/drupal)
- [Ghost](https://github.com/kubernetes/charts/tree/master/stable/ghost)
- [JasperReports](https://github.com/kubernetes/charts/tree/master/stable/jasperreports)
- [Joomla!](https://github.com/kubernetes/charts/tree/master/stable/joomla)
- [Magento](https://github.com/kubernetes/charts/tree/master/stable/magento)
- [MariaDB](https://github.com/kubernetes/charts/tree/master/stable/mariadb)
@@ -39,7 +41,6 @@ $ helm search bitnami-incubator
## Incubator charts
- [Apache](https://github.com/bitnami/charts/tree/master/incubator/apache)
- [Dokuwiki](https://github.com/kubernetes/charts/tree/master/stable/dokuwiki)
- [Elasticsearch](https://github.com/bitnami/charts/tree/master/incubator/elasticsearch)
- [JasperReports Server](https://github.com/kubernetes/charts/tree/master/stable/jasperreports)
- [Jenkins](https://github.com/bitnami/charts/tree/master/incubator/jenkins)

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 16 KiB

+1 -1
View File
@@ -8,4 +8,4 @@ keywords:
name: crypto
sources:
- https://github.com/kubeless/functions
version: 0.0.1
version: 0.0.2
+1 -1
View File
@@ -1,4 +1,4 @@
apiVersion: k8s.io/v1
apiVersion: kubeless.io/v1beta1
kind: Function
metadata:
name: crypto
+1 -1
View File
@@ -1,5 +1,5 @@
name: apache
version: 0.3.7
version: 0.3.8
description: Chart for Apache HTTP Server
keywords:
- apache
+1 -1
View File
@@ -19,7 +19,7 @@ spec:
spec:
containers:
- name: {{ template "fullname" . }}
image: "bitnami/apache:{{ .Values.imageTag }}"
image: "{{ .Values.image }}"
imagePullPolicy: {{ default "" .Values.imagePullPolicy | quote }}
ports:
- name: http
+1 -1
View File
@@ -1,7 +1,7 @@
## Bitnami Apache image version
## ref: https://hub.docker.com/r/bitnami/apache/tags/
##
imageTag: 2.4.23-r12
image: bitnami/apache:2.4.23-r12
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+1 -1
View File
@@ -1,5 +1,5 @@
name: elasticsearch
version: 0.1.1
version: 0.1.2
appVersion: 5.5.2
description: A highly scalable open-source full-text search and analytics engine
keywords:
@@ -43,15 +43,15 @@ spec:
{{- end }}
initContainers:
- name: sysctl
image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
image: "{{ .Values.image }}"
imagePullPolicy: "{{ .Values.pullPolicy }}"
command: ["sysctl", "-w", "vm.max_map_count=262144"]
securityContext:
privileged: true
containers:
- name: "elasticsearch"
image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
image: "{{ .Values.image }}"
imagePullPolicy: "{{ .Values.pullPolicy }}"
env:
- name: SERVICE
value: "{{ template "master.fullname" . }}"
@@ -44,15 +44,15 @@ spec:
{{- end }}
initContainers:
- name: sysctl
image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
image: "{{ .Values.image }}"
imagePullPolicy: "{{ .Values.pullPolicy }}"
command: ["sysctl", "-w", "vm.max_map_count=262144"]
securityContext:
privileged: true
containers:
- name: "elasticsearch"
image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
image: "{{ .Values.image }}"
imagePullPolicy: "{{ .Values.pullPolicy }}"
env:
- name: SERVICE
value: "{{ template "master.fullname" . }}"
@@ -43,15 +43,15 @@ spec:
{{- end }}
initContainers:
- name: sysctl
image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
image: "{{ .Values.image }}"
imagePullPolicy: "{{ .Values.pullPolicy }}"
command: ["sysctl", "-w", "vm.max_map_count=262144"]
securityContext:
privileged: true
containers:
- name: "elasticsearch"
image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
image: "{{ .Values.image }}"
imagePullPolicy: "{{ .Values.pullPolicy }}"
env:
- name: SERVICE
value: "{{ template "master.fullname" . }}"
+8 -9
View File
@@ -3,15 +3,14 @@
##
name: elastic
image:
## Elasticsearch image
## ref: https://hub.docker.com/r/bitnami/elasticsearch/tags/
name: bitnami/elasticsearch
tag: 5.5.2-r1
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
pullPolicy: IfNotPresent
## Elasticsearch image
## ref: https://hub.docker.com/r/bitnami/elasticsearch/tags/
image: bitnami/elasticsearch:5.5.2-r1
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
pullPolicy: IfNotPresent
## The serviceAccountName to be used, required by the elasticsearch-cloud-kubernetes plugin
+2 -2
View File
@@ -1,6 +1,6 @@
name: jenkins
version: 0.4.62
appVersion: 2.107.0
version: 0.4.65
appVersion: 2.109.0
description: The leading open source automation server
keywords:
- jenkins
+1 -1
View File
@@ -1,7 +1,7 @@
## Bitnami Jenkins image version
## ref: https://hub.docker.com/r/bitnami/jenkins/tags/
##
image: bitnami/jenkins:2.107.0-r0
image: bitnami/jenkins:2.109.0-r0
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+1 -1
View File
@@ -1,5 +1,5 @@
name: mariadb-cluster
version: 0.5.0
version: 0.5.1
appVersion: 10.1.28
description: Chart to create a Highly available MariaDB cluster
keywords:
@@ -43,8 +43,8 @@ spec:
{{- end }}
containers:
- name: "mariadb"
image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
image: "{{ .Values.image }}"
imagePullPolicy: "{{ .Values.pullPolicy }}"
env:
- name: MARIADB_ROOT_PASSWORD
valueFrom:
@@ -43,8 +43,8 @@ spec:
{{- end }}
containers:
- name: "mariadb"
image: "{{ .Values.image.name }}:{{ .Values.image.tag }}"
imagePullPolicy: "{{ .Values.image.pullPolicy }}"
image: "{{ .Values.image }}"
imagePullPolicy: "{{ .Values.pullPolicy }}"
env:
- name: MARIADB_ROOT_PASSWORD
valueFrom:
+2 -4
View File
@@ -1,8 +1,6 @@
## Bitnami MariaDB image
image:
name: bitnami/mariadb
tag: 10.1.28-r2
pullPolicy: IfNotPresent
image: bitnami/mariadb:10.1.28-r2
pullPolicy: IfNotPresent
service:
## Kubernetes service type
+2 -2
View File
@@ -1,6 +1,6 @@
name: memcached
version: 0.4.23
appVersion: 1.5.5
version: 0.4.26
appVersion: 1.5.6
description: Chart for Memcached
keywords:
- memcached
+1 -1
View File
@@ -1,7 +1,7 @@
## Bitnami Memcached image version
## ref: https://hub.docker.com/r/bitnami/memcached/tags/
##
image: bitnami/memcached:1.5.5-r0
image: bitnami/memcached:1.5.6-r1
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+1 -1
View File
@@ -1,5 +1,5 @@
name: nginx
version: 0.4.0
version: 0.4.1
appVersion: 1.10.2
description: Chart for the nginx server
keywords:
+1 -1
View File
@@ -19,7 +19,7 @@ spec:
spec:
containers:
- name: {{ template "fullname" . }}
image: "bitnami/nginx:{{ .Values.imageTag }}"
image: "{{ .Values.image }}"
imagePullPolicy: {{ default "" .Values.imagePullPolicy | quote }}
ports:
- name: http
+1 -1
View File
@@ -1,7 +1,7 @@
## Bitnami NGINX image version
## ref: https://hub.docker.com/r/bitnami/nginx/tags/
##
imageTag: 1.10.2-r3
image: bitnami/nginx:1.10.2-r3
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+2 -2
View File
@@ -1,6 +1,6 @@
name: node
version: 0.2.8
appVersion: 6.13.0
version: 0.2.12
appVersion: 6.13.1
description: Event-driven I/O server-side JavaScript environment based on V8
keywords:
- node
+2 -2
View File
@@ -1,6 +1,6 @@
name: postgresql
version: 0.4.18
appVersion: 10.2.0
version: 0.4.22
appVersion: 10.3.0
description: Chart for PostgreSQL
keywords:
- postgresql
+1 -1
View File
@@ -1,7 +1,7 @@
## Bitnami PostgreSQL image version
## ref: https://hub.docker.com/r/bitnami/postgresql/tags/
##
image: bitnami/postgresql:10.2.0-r0
image: bitnami/postgresql:10.3.0-r2
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+1 -1
View File
@@ -1,5 +1,5 @@
name: tensorflow-inception
version: 0.0.5
version: 0.0.7
appVersion: 1.5.0
description: Open-source software library for serving machine learning models
keywords:
+1 -1
View File
@@ -9,7 +9,7 @@ server:
## ref: https://hub.docker.com/r/bitnami/tensorflow-inception/tags/
##
client:
image: bitnami/tensorflow-inception:1.5.0-r0
image: bitnami/tensorflow-inception:1.5.0-r2
## Specify a imagePullPolicy
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
+2 -2
View File
@@ -1,6 +1,6 @@
name: tomcat
version: 0.4.18
appVersion: 8.5.28
version: 0.4.21
appVersion: 8.5.29
description: Chart for Apache Tomcat
keywords:
- tomcat
+1 -1
View File
@@ -1,7 +1,7 @@
## Bitnami Tomcat image version
## ref: https://hub.docker.com/r/bitnami/tomcat/tags/
##
image: bitnami/tomcat:8.5.28-r0
image: bitnami/tomcat:8.5.29-r0
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+2 -1
View File
@@ -1,5 +1,6 @@
name: wildfly
version: 0.4.9
version: 0.4.11
appVersion: 11.0.0
description: Chart for Wildfly
keywords:
- wildfly
+1 -1
View File
@@ -1,7 +1,7 @@
## Bitnami WildFly image version
## ref: https://hub.docker.com/r/bitnami/wildfly/tags/
##
image: bitnami/wildfly:11.0.0-r4
image: bitnami/wildfly:11.0.0-r6
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
+1
View File
@@ -0,0 +1 @@
.git
+17
View File
@@ -0,0 +1,17 @@
name: dokuwiki
version: 0.2.1
description: DokuWiki is a standards-compliant, simple to use wiki optimized for creating
documentation. It is targeted at developer teams, workgroups, and small companies.
All data is stored in plain text files, so no database is required.
keywords:
- dokuwiki
- wiki
- php
home: http://www.dokuwiki.org/
sources:
- https://github.com/bitnami/bitnami-docker-dokuwiki
maintainers:
- name: Bitnami
email: containers@bitnami.com
engine: gotpl
icon: https://bitnami.com/assets/stacks/dokuwiki/img/dokuwiki-stack-110x117.png
+8
View File
@@ -0,0 +1,8 @@
approvers:
- prydonius
- tompizmor
- sameersbn
reviewers:
- prydonius
- tompizmor
- sameersbn
+90
View File
@@ -0,0 +1,90 @@
# DokuWiki
[DokuWiki](https://www.dokuwiki.org) DokuWiki is a standards-compliant, simple to use wiki optimized for creating documentation. It is targeted at developer teams, workgroups, and small companies. All data is stored in plain text files, so no database is required.
## TL;DR;
```console
$ helm install stable/dokuwiki
```
## Introduction
This chart bootstraps a [DokuWiki](https://github.com/bitnami/bitnami-docker-dokuwiki) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes 1.4+ with Beta APIs enabled
- PV provisioner support in the underlying infrastructure
## Installing the Chart
To install the chart with the release name `my-release`:
```console
$ helm install --name my-release stable/dokuwiki
```
The command deploys DokuWiki on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
$ helm delete my-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
The following tables lists the configurable parameters of the DokuWiki chart and their default values.
| Parameter | Description | Default |
|-------------------------------------|-----------------------------------------|---------------------------------------------------------|
| `image` | DokuWiki image | `bitnami/dokuwiki:{VERSION}` |
| `imagePullPolicy` | Image pull policy | `Always` if `imageTag` is `latest`, else `IfNotPresent` |
| `dokuwikiUsername` | User of the application | `user` |
| `dokuwikiFullName` | User's full name | `Full Name` |
| `dokuwikiPassword` | Application password | _random 10 character alphanumeric string_ |
| `dokuwikiEmail` | User email | `user@example.com` |
| `dokuwikiWikiName` | Wiki name | `My Wiki` |
| `serviceType` | Kubernetes Service type | `LoadBalancer` |
| `persistence.enabled` | Enable persistence using PVC | `true` |
| `persistence.apache.storageClass` | PVC Storage Class for apache volume | `nil` (uses alpha storage class annotation) |
| `persistence.apache.accessMode` | PVC Access Mode for apache volume | `ReadWriteOnce` |
| `persistence.apache.size` | PVC Storage Request for apache volume | `1Gi` |
| `persistence.dokuwiki.storageClass` | PVC Storage Class for DokuWiki volume | `nil` (uses alpha storage class annotation) |
| `persistence.dokuwiki.accessMode` | PVC Access Mode for DokuWiki volume | `ReadWriteOnce` |
| `persistence.dokuwiki.size` | PVC Storage Request for DokuWiki volume | `8Gi` |
| `resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` |
The above parameters map to the env variables defined in [bitnami/dokuwiki](http://github.com/bitnami/bitnami-docker-dokuwiki). For more information please refer to the [bitnami/dokuwiki](http://github.com/bitnami/bitnami-docker-dokuwiki) image documentation.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
$ helm install --name my-release \
--set dokuwikiUsername=admin,dokuwikiPassword=password \
stable/dokuwiki
```
The above command sets the DokuWiki administrator account username and password to `admin` and `password` respectively.
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
```console
$ helm install --name my-release -f values.yaml stable/dokuwiki
```
> **Tip**: You can use the default [values.yaml](values.yaml)
## Persistence
The [Bitnami DokuWiki](https://github.com/bitnami/bitnami-docker-dokuwiki) image stores the DokuWiki data and configurations at the `/bitnami/dokuwiki` and `/bitnami/apache` paths of the container.
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
See the [Configuration](#configuration) section to configure the PVC or to disable persistence.
+29
View File
@@ -0,0 +1,29 @@
** Please be patient while the chart is being deployed **
1. Get the DokuWiki URL by running:
{{- if contains "NodePort" .Values.serviceType }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "dokuwiki.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.serviceType }}
** Please ensure an external IP is associated to the {{ template "dokuwiki.fullname" . }} service before proceeding **
** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "dokuwiki.fullname" . }} **
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "dokuwiki.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP/
{{- else if contains "ClusterIP" .Values.serviceType }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "dokuwiki.fullname" . }}" -o jsonpath="{.items[0].metadata.name}")
echo http://127.0.0.1:8080/
kubectl port-forward $POD_NAME 8080:80
{{- end }}
2. Login with the following credentials
echo Username: {{ .Values.dokuwikiUsername }}
echo Password: $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "dokuwiki.fullname" . }} -o jsonpath="{.data.dokuwiki-password}" | base64 --decode)
+16
View File
@@ -0,0 +1,16 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "dokuwiki.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).
*/}}
{{- define "dokuwiki.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
+24
View File
@@ -0,0 +1,24 @@
{{- if .Values.persistence.enabled -}}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "dokuwiki.fullname" . }}-apache
labels:
app: {{ template "dokuwiki.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
accessModes:
- {{ .Values.persistence.apache.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.apache.size | quote }}
{{- if .Values.persistence.apache.storageClass }}
{{- if (eq "-" .Values.persistence.apache.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.apache.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}
+74
View File
@@ -0,0 +1,74 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "dokuwiki.fullname" . }}
labels:
app: {{ template "dokuwiki.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
template:
metadata:
labels:
app: {{ template "dokuwiki.fullname" . }}
spec:
containers:
- name: {{ template "dokuwiki.fullname" . }}
image: "{{ .Values.image }}"
imagePullPolicy: {{ default "" .Values.imagePullPolicy | quote }}
env:
- name: DOKUWIKI_USERNAME
value: {{ default "" .Values.dokuwikiUsername | quote }}
- name: DOKUWIKI_FULL_NAME
value: {{ default "" .Values.dokuwikiFullName | quote }}
- name: DOKUWIKI_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "dokuwiki.fullname" . }}
key: dokuwiki-password
- name: DOKUWIKI_EMAIL
value: {{ default "" .Values.dokuwikiEmail | quote }}
- name: DOKUWIKI_WIKI_NAME
value: {{ default "" .Values.dokuwikiWikiName | quote }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
livenessProbe:
httpGet:
path: /doku.php
port: http
initialDelaySeconds: 120
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
httpGet:
path: /doku.php
port: http
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 5
resources:
{{ toYaml .Values.resources | indent 10 }}
volumeMounts:
- name: dokuwiki-data
mountPath: /bitnami/dokuwiki
- name: apache-data
mountPath: /bitnami/apache
volumes:
- name: dokuwiki-data
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ template "dokuwiki.fullname" . }}-dokuwiki
{{- else }}
emptyDir: {}
{{- end }}
- name: apache-data
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ template "dokuwiki.fullname" . }}-apache
{{- else }}
emptyDir: {}
{{- end }}
@@ -0,0 +1,24 @@
{{- if .Values.persistence.enabled -}}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "dokuwiki.fullname" . }}-dokuwiki
labels:
app: {{ template "dokuwiki.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
accessModes:
- {{ .Values.persistence.dokuwiki.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.dokuwiki.size | quote }}
{{- if .Values.persistence.dokuwiki.storageClass }}
{{- if (eq "-" .Values.persistence.dokuwiki.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.dokuwiki.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}
+16
View File
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ template "dokuwiki.fullname" . }}
labels:
app: {{ template "dokuwiki.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
data:
{{ if .Values.dokuwikiPassword }}
dokuwiki-password: {{ default "" .Values.dokuwikiPassword | b64enc | quote }}
{{ else }}
dokuwiki-password: {{ randAlphaNum 10 | b64enc | quote }}
{{ end }}
+20
View File
@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "dokuwiki.fullname" . }}
labels:
app: {{ template "dokuwiki.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
type: {{ .Values.serviceType }}
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
selector:
app: {{ template "dokuwiki.fullname" . }}
+76
View File
@@ -0,0 +1,76 @@
## Bitnami DokuWiki image version
## ref: https://hub.docker.com/r/bitnami/dokuwiki/tags/
##
image: bitnami/dokuwiki:20160626a-r9
## Specify a imagePullPolicy
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
# imagePullPolicy:
## User of the application
## ref: https://github.com/bitnami/bitnami-docker-dokuwiki#environment-variables
##
dokuwikiUsername: user
## Application password
## Defaults to a random 10-character alphanumeric string if not set
## ref: https://github.com/bitnami/bitnami-docker-dokuwiki#environment-variables
# dokuwikiPassword:
## Admin email
## ref: https://github.com/bitnami/bitnami-docker-dokuwiki#environment-variables
##
dokuwikiEmail: user@example.com
## User's Full Name
## ref: https://github.com/bitnami/bitnami-docker-dokuwiki#environment-variables
##
dokuwikiFullName: Full Name
## Name of the Wiki
## ref: https://github.com/bitnami/bitnami-docker-dokuwiki#environment-variables
##
dokuwikiWikiName: My Wiki
## Kubernetes configuration
## For minikube, set this to NodePort, elsewhere use LoadBalancer
##
serviceType: LoadBalancer
## Enable persistence using Persistent Volume Claims
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
##
persistence:
enabled: true
apache:
## apache data Persistent Volume Storage Class
## 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: 1Gi
dokuwiki:
## dokuwiki data Persistent Volume Storage Class
## 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: 8Gi
## Configure resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
resources:
requests:
memory: 512Mi
cpu: 300m
+3
View File
@@ -0,0 +1,3 @@
.git
# OWNERS file for Kubernetes
OWNERS
+20
View File
@@ -0,0 +1,20 @@
name: drupal
version: 0.11.10
appVersion: 8.5.0
description: One of the most versatile open source content management systems.
keywords:
- drupal
- cms
- blog
- http
- web
- application
- php
home: http://www.drupal.org/
icon: https://bitnami.com/assets/stacks/drupal/img/drupal-stack-220x234.png
sources:
- https://github.com/bitnami/bitnami-docker-drupal
maintainers:
- name: bitnami-bot
email: containers@bitnami.com
engine: gotpl
+8
View File
@@ -0,0 +1,8 @@
approvers:
- prydonius
- tompizmor
- sameersbn
reviewers:
- prydonius
- tompizmor
- sameersbn
+154
View File
@@ -0,0 +1,154 @@
# Drupal
[Drupal](https://www.drupal.org/) is one of the most versatile open source content management systems on the market.
## TL;DR;
```console
$ helm install stable/drupal
```
## Introduction
This chart bootstraps a [Drupal](https://github.com/bitnami/bitnami-docker-drupal) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
It also packages the [Bitnami MariaDB chart](https://github.com/kubernetes/charts/tree/master/stable/mariadb) which is required for bootstrapping a MariaDB deployment for the database requirements of the Drupal application.
## Prerequisites
- Kubernetes 1.4+ with Beta APIs enabled
- PV provisioner support in the underlying infrastructure
## Installing the Chart
To install the chart with the release name `my-release`:
```console
$ helm install --name my-release stable/drupal
```
The command deploys Drupal on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
$ helm delete my-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
The following tables lists the configurable parameters of the Drupal chart and their default values.
| Parameter | Description | Default |
| --------------------------------- | ------------------------------------- | --------------------------------------------------------- |
| `image` | Drupal image | `bitnami/drupal:{VERSION}` |
| `imagePullSecrets` | Specify image pull secrets | `nil` (does not add image pull secrets to deployed pods) |
| `imagePullPolicy` | Image pull policy | `IfNotPresent` |
| `drupalUsername` | User of the application | `user` |
| `drupalPassword` | Application password | _random 10 character long alphanumeric string_ |
| `drupalEmail` | Admin email | `user@example.com` |
| `allowEmptyPassword` | Allow DB blank passwords | `yes` |
| `extraVars` | Extra environment variables | `nil` |
| `ingress.annotations` | Specify ingress class | `kubernetes.io/ingress.class: nginx` |
| `ingress.enabled` | Enable ingress controller resource | `false` |
| `ingress.hostname` | URL for your Drupal installation | `drupal.local` |
| `ingress.tls` | Ingress TLS configuration | `[]` |
| `externalDatabase.host` | Host of the external database | `nil` |
| `externalDatabase.user` | Existing username in the external db | `bn_drupal` |
| `externalDatabase.password` | Password for the above username | `nil` |
| `externalDatabase.database` | Name of the existing databse | `bitnami_drupal` |
| `mariadb.enabled` | Use or not the mariadb chart | `true` |
| `mariadb.mariadbRootPassword` | MariaDB admin password | `nil` |
| `mariadb.mariadbDatabase` | Database name to create | `bitnami_drupal` |
| `mariadb.mariadbUser` | Database user to create | `bn_drupal` |
| `mariadb.mariadbPassword` | Password for the database | _random 10 character long alphanumeric string_ |
| `serviceType` | Kubernetes Service type | `LoadBalancer` |
| `persistence.enabled` | Enable persistence using PVC | `true` |
| `persistence.apache.storageClass` | PVC Storage Class for Apache volume | `nil` (uses alpha storage class annotation) |
| `persistence.apache.accessMode` | PVC Access Mode for Apache volume | `ReadWriteOnce` |
| `persistence.apache.size` | PVC Storage Request for Apache volume | `1Gi` |
| `persistence.drupal.storageClass` | PVC Storage Class for Drupal volume | `nil` (uses alpha storage class annotation) |
| `persistence.drupal.accessMode` | PVC Access Mode for Drupal volume | `ReadWriteOnce` |
| `persistence.drupal.existingClaim`| An Existing PVC name | `nil` |
| `persistence.drupal.hostPath` | Host mount path for Drupal volume | `nil` (will not mount to a host path) |
| `persistence.drupal.size` | PVC Storage Request for Drupal volume | `8Gi` |
| `resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` |
| `volumeMounts.drupal.mountPath` | Drupal data volume mount path | `/bitnami/drupal` |
| `volumeMounts.apache.mountPath` | Apache data volume mount path | `/bitnami/apache` |
The above parameters map to the env variables defined in [bitnami/drupal](http://github.com/bitnami/bitnami-docker-drupal). For more information please refer to the [bitnami/drupal](http://github.com/bitnami/bitnami-docker-drupal) image documentation.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
$ helm install --name my-release \
--set drupalUsername=admin,drupalPassword=password,mariadb.mariadbRootPassword=secretpassword \
stable/drupal
```
The above command sets the Drupal administrator account username and password to `admin` and `password` respectively. Additionally it sets the MariaDB `root` user password to `secretpassword`.
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
```console
$ helm install --name my-release -f values.yaml stable/drupal
```
> **Tip**: You can use the default [values.yaml](values.yaml)
## Image
The `image` parameter allows specifying which image will be pulled for the chart.
### Private registry
If you configure the `image` value to one in a private registry, you will need to [specify an image pull secret](https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod).
1. Manually create image pull secret(s) in the namespace. See [this YAML example reference](https://kubernetes.io/docs/concepts/containers/images/#creating-a-secret-with-a-docker-config). Consult your image registry's documentation about getting the appropriate secret.
1. Note that the `imagePullSecrets` configuration value cannot currently be passed to helm using the `--set` parameter, so you must supply these using a `values.yaml` file, such as:
```yaml
imagePullSecrets:
- name: SECRET_NAME
```
1. Install the chart
```console
helm install --name my-release -f values.yaml stable/drupal
```
## Persistence
The configured image must store Drupal data and Apache configurations in separate paths of the container.
The [Bitnami Drupal](https://github.com/bitnami/bitnami-docker-drupal) image stores the Drupal data and Apache configurations at the `/bitnami/drupal` and `/bitnami/apache` paths of the container. If you wish to override the `image` value, and your image stores this data and configurations in different paths, you may specify these paths with `volumeMounts.drupal.mountPath` and `volumeMounts.apache.mountPath`.
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
See the [Configuration](#configuration) section to configure the PVC or to disable persistence.
### Existing PersistentVolumeClaim
1. Create the PersistentVolume
1. Create the PersistentVolumeClaim
1. Install the chart
```bash
$ helm install --name my-release --set persistence.drupal.existingClaim=PVC_NAME stable/drupal
```
### Host path
#### System compatibility
- The local filesystem accessibility to a container in a pod with `hostPath` has been tested on OSX/MacOS with xhyve, and Linux with VirtualBox.
- Windows has not been tested with the supported VM drivers. Minikube does however officially support [Mounting Host Folders](https://github.com/kubernetes/minikube/blob/master/docs/host_folder_mount.md) per pod. Or you may manually sync your container whenever host files are changed with tools like [docker-sync](https://github.com/EugenMayer/docker-sync) or [docker-bg-sync](https://github.com/cweagans/docker-bg-sync).
#### Mounting steps
1. The specified `hostPath` directory must already exist (create one if it does not).
1. Install the chart
```bash
$ helm install --name my-release --set persistence.drupal.hostPath=/PATH/TO/HOST/MOUNT stable/drupal
```
This will mount the `drupal-data` volume into the `hostPath` directory, if the site has not already been initialized. If it has, your host machine changes will persist.
1. Because the container can not control the host machines directory permissions, you must set the Drupal file directory permissions yourself and disable or clear Drupal cache. See Drupal Cores [INSTALL.txt](http://cgit.drupalcode.org/drupal/tree/core/INSTALL.txt?h=8.3.x#n152) for setting file permissions, and see [Drupal handbook page](https://www.drupal.org/node/2598914) to disable cache, or [Drush handbook](https://drushcommands.com/drush-8x/cache/cache-rebuild/) to clear cache.
+6
View File
@@ -0,0 +1,6 @@
dependencies:
- name: mariadb
repository: https://kubernetes-charts.storage.googleapis.com/
version: 1.0.5
digest: sha256:784a2dfb3f8c0a334cfb6dd31381ea39bd5a3834f12d95f24aa074be558388e1
generated: 2017-12-05T17:15:55.281989+01:00
+5
View File
@@ -0,0 +1,5 @@
dependencies:
- name: mariadb
version: 1.0.5
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
+41
View File
@@ -0,0 +1,41 @@
*******************************************************************
*** PLEASE BE PATIENT: Drupal may take a few minutes to install ***
*******************************************************************
1. Get the Drupal URL:
{{- if .Values.ingress.hostname }}
You should be able to access your new Drupal installation through
http://{{- .Values.ingress.hostname }}/
{{- else if contains "LoadBalancer" .Values.serviceType }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "drupal.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "drupal.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP/
{{- else if contains "ClusterIP" .Values.serviceType }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "drupal.fullname" . }}" -o jsonpath="{.items[0].metadata.name}")
echo http://127.0.0.1:8080/
kubectl port-forward $POD_NAME 8080:80
{{- end }}
{{- if contains "NodePort" .Values.serviceType }}
Or running:
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "drupal.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT/
{{- end }}
2. Login with the following credentials
echo Username: {{ .Values.drupalUsername }}
echo Password: $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "drupal.fullname" . }} -o jsonpath="{.data.drupal-password}" | base64 --decode)
+24
View File
@@ -0,0 +1,24 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "drupal.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).
*/}}
{{- define "drupal.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | 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).
*/}}
{{- define "drupal.mariadb.fullname" -}}
{{- printf "%s-%s" .Release.Name "mariadb" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
+24
View File
@@ -0,0 +1,24 @@
{{- if and .Values.persistence.enabled .Values.volumeMounts.apache.mountPath -}}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "drupal.fullname" . }}-apache
labels:
app: {{ template "drupal.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
accessModes:
- {{ .Values.persistence.apache.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.apache.size | quote }}
{{- if .Values.persistence.apache.storageClass }}
{{- if (eq "-" .Values.persistence.apache.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.apache.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}
+107
View File
@@ -0,0 +1,107 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "drupal.fullname" . }}
labels:
app: {{ template "drupal.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
replicas: 1
template:
metadata:
labels:
app: {{ template "drupal.fullname" . }}
spec:
containers:
- name: {{ template "drupal.fullname" . }}
image: "{{ .Values.image }}"
imagePullPolicy: {{ default "" .Values.imagePullPolicy | quote }}
env:
- name: ALLOW_EMPTY_PASSWORD
{{- if .Values.allowEmptyPassword }}
value: "yes"
{{- else }}
value: "no"
{{- end }}
- name: MARIADB_HOST
{{- if .Values.mariadb.enabled }}
value: {{ template "drupal.mariadb.fullname" . }}
{{- else }}
value: {{ default "" .Values.externalDatabase.host | quote }}
{{- end }}
- name: MARIADB_PORT_NUMBER
value: "3306"
- name: DRUPAL_DATABASE_NAME
{{- if .Values.mariadb.enabled }}
value: {{ default "" .Values.mariadb.mariadbDatabase | quote }}
{{- else }}
value: {{ default "" .Values.externalDatabase.database | quote }}
{{- end }}
- name: DRUPAL_DATABASE_USER
{{- if .Values.mariadb.enabled }}
value: {{ default "" .Values.mariadb.mariadbUser | quote }}
{{- else }}
value: {{ default "" .Values.externalDatabase.user | quote }}
{{- end }}
- name: DRUPAL_DATABASE_PASSWORD
{{- if .Values.mariadb.enabled }}
valueFrom:
secretKeyRef:
name: {{ template "drupal.mariadb.fullname" . }}
key: mariadb-password
{{- else }}
value: {{ default "" .Values.externalDatabase.password | quote }}
{{- end }}
- name: DRUPAL_USERNAME
value: {{ default "" .Values.drupalUsername | quote }}
- name: DRUPAL_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "drupal.fullname" . }}
key: drupal-password
- name: DRUPAL_EMAIL
value: {{ default "" .Values.drupalEmail | quote }}
{{- if .Values.extraVars }}
{{ toYaml .Values.extraVars | indent 8 }}
{{- end }}
ports:
- name: http
containerPort: 80
- name: https
containerPort: 443
livenessProbe:
{{ toYaml .Values.livenessProbe | indent 10 }}
readinessProbe:
{{ toYaml .Values.readinessProbe | indent 10 }}
resources:
{{ toYaml .Values.resources | indent 10 }}
volumeMounts:
- name: drupal-data
mountPath: {{ .Values.volumeMounts.drupal.mountPath }}
{{- if .Values.volumeMounts.apache.mountPath }}
- name: apache-data
mountPath: {{ .Values.volumeMounts.apache.mountPath }}
{{- end }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{ toYaml .Values.imagePullSecrets | indent 8 }}
{{- end }}
volumes:
- name: drupal-data
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ .Values.persistence.drupal.existingClaim | default (printf "%s-drupal" (include "drupal.fullname" .)) }}
{{- else }}
emptyDir: {}
{{- end }}
{{- if .Values.volumeMounts.apache.mountPath }}
- name: apache-data
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ template "drupal.fullname" . }}-apache
{{- else }}
emptyDir: {}
{{- end }}
{{- end }}
+13
View File
@@ -0,0 +1,13 @@
{{- if and .Values.persistence.enabled .Values.persistence.drupal.hostPath (not .Values.persistence.drupal.existingClaim) -}}
apiVersion: v1
kind: PersistentVolume
metadata:
name: {{ template "drupal.fullname" . }}-drupal
spec:
accessModes:
- {{ .Values.persistence.drupal.accessMode | quote }}
capacity:
storage: {{ .Values.persistence.drupal.size | quote }}
hostPath:
path: {{ .Values.persistence.drupal.hostPath | quote }}
{{- end -}}
+27
View File
@@ -0,0 +1,27 @@
{{- if and .Values.persistence.enabled (not .Values.persistence.drupal.existingClaim) -}}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "drupal.fullname" . }}-drupal
labels:
app: {{ template "drupal.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
{{- if .Values.persistence.drupal.hostPath }}
storageClassName: ""
{{- end }}
accessModes:
- {{ .Values.persistence.drupal.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.drupal.size | quote }}
{{- if and .Values.persistence.drupal.storageClass (not .Values.persistence.drupal.hostPath) -}}
{{- if (eq "-" .Values.persistence.drupal.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.drupal.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}
+28
View File
@@ -0,0 +1,28 @@
{{- if .Values.ingress.enabled -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ template "drupal.fullname" . }}
labels:
app: {{ template "drupal.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
annotations:
{{- range $key, $value := .Values.ingress.annotations }}
{{ $key }}: {{ $value | quote }}
{{- end }}
spec:
rules:
- host: {{ .Values.ingress.hostname }}
http:
paths:
- path: /
backend:
serviceName: {{ template "drupal.fullname" . }}
servicePort: 80
{{- if .Values.ingress.tls }}
tls:
{{ toYaml .Values.ingress.tls | indent 4 }}
{{- end -}}
{{- end -}}
+16
View File
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ template "drupal.fullname" . }}
labels:
app: {{ template "drupal.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
data:
{{ if .Values.drupalPassword }}
drupal-password: {{ default "" .Values.drupalPassword | b64enc | quote }}
{{ else }}
drupal-password: {{ randAlphaNum 10 | b64enc | quote }}
{{ end }}
+20
View File
@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "drupal.fullname" . }}
labels:
app: {{ template "drupal.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
type: {{ .Values.serviceType }}
ports:
- name: http
port: 80
targetPort: http
- name: https
port: 443
targetPort: https
selector:
app: {{ template "drupal.fullname" . }}
+208
View File
@@ -0,0 +1,208 @@
## Bitnami Drupal image version
## ref: https://hub.docker.com/r/bitnami/drupal/tags/
##
image: bitnami/drupal:8.5.0-r0
## Optionally specify an array of imagePullSecrets.
## Secrets must be manually created in the namespace.
## ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
##
# imagePullSecrets:
# - name: myRegistryKeySecretName
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
imagePullPolicy: IfNotPresent
## User of the application
## ref: https://github.com/bitnami/bitnami-docker-drupal#configuration
##
drupalUsername: user
## Application password
## Defaults to a random 10-character alphanumeric string if not set
## ref: https://github.com/bitnami/bitnami-docker-drupal#configuration
##
# drupalPassword:
## Admin email
## ref: https://github.com/bitnami/bitnami-docker-drupal#configuration
##
drupalEmail: user@example.com
## Set to `yes` to allow the container to be started with blank passwords
## ref: https://github.com/bitnami/bitnami-docker-wordpress#environment-variables
allowEmptyPassword: yes
##
## External database configuration
##
externalDatabase:
## Database host
# host:
## Database user
# user: bn_drupal
## Database password
# password:
## Database name
# database: bitnami_drupal
##
## MariaDB chart configuration
##
mariadb:
## Whether to use the database specified as a requirement or not. For example, to configure the chart with an existing database server.
enabled: true
## MariaDB admin password
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#setting-the-root-password-on-first-run
##
# mariadbRootPassword:
## Create a database
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-on-first-run
##
mariadbDatabase: bitnami_drupal
## Create a database user
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run
##
mariadbUser: bn_drupal
## Password for mariadbUser
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run
##
# mariadbPassword:
## Enable persistence using Persistent Volume Claims
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
##
persistence:
enabled: true
## mariadb data Persistent Volume Storage Class
## 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: 8Gi
## Kubernetes configuration
## For minikube, set this to NodePort, elsewhere use LoadBalancer
## Use ClusterIP if your setup includes ingress controller
##
serviceType: LoadBalancer
## Configure Ingress resource that allow you to access the Drupal installation
## Set up the URL
## ref: http://kubernetes.io/docs/user-guide/ingress/
##
ingress:
enabled: false
# Used to create Ingress record (should used with ServiceType: ClusterIP).
# hostname: drupal.local
## Ingress annotations
##
# annotations:
# kubernetes.io/ingress.class: nginx
## Ingress TLS configuration
## Secrets must be manually created in the namespace
##
# tls:
# - secretName: wordpress.local-tls
# hosts:
# - drupal.local
## Enable persistence using Persistent Volume Claims
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
##
persistence:
enabled: true
apache:
## apache data Persistent Volume Storage Class
## 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: 1Gi
drupal:
## drupal data Persistent Volume Storage Class
## 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: 8Gi
## A manually managed Persistent Volume Claim
## Requires persistence.enabled: true
## If defined, PVC must be created manually before volume will be bound
##
# existingClaim:
## If defined, the drupal-data volume will mount to the specified hostPath.
## Requires persistence.enabled: true
## Requires persistence.existingClaim: nil|false
## Default: nil.
##
# hostPath:
## Configure resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
resources:
requests:
memory: 512Mi
cpu: 300m
## Configure volume mounts. This is useful for images whose data mount paths are
## different than the default.
## Setting volumeMounts.apache.mountPath to "" prevents Apache config mount.
##
volumeMounts:
drupal:
mountPath: /bitnami/drupal
apache:
mountPath: /bitnami/apache
## Pass extra environment variables to the Drupal container.
##
# extraVars:
# - name: EXTRA_VAR_1
# value: extra-var-value-1
# - name: EXTRA_VAR_2
# value: extra-var-value-2
## Configure liveness and readiness probes.
## Drupal core exposes /user/login to unauthenticated requests, making it a good
## default liveness and readiness path. However, that may not always be the
## case. For example, if the image value is overridden to an image containing a
## module that alters that route, or an image that does not auto-install Drupal.
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
#
livenessProbe:
httpGet:
path: /user/login
port: http
initialDelaySeconds: 120
readinessProbe:
httpGet:
path: /user/login
port: http
initialDelaySeconds: 30
+1
View File
@@ -0,0 +1 @@
.git
+21
View File
@@ -0,0 +1,21 @@
name: ghost
version: 2.1.16
appVersion: 1.21.5
description: A simple, powerful publishing platform that allows you to share your
stories with the world
keywords:
- ghost
- blog
- http
- web
- application
- nodejs
- javascript
home: http://www.ghost.org/
icon: https://bitnami.com/assets/stacks/ghost/img/ghost-stack-220x234.png
sources:
- https://github.com/bitnami/bitnami-docker-ghost
maintainers:
- name: Bitnami
email: containers@bitnami.com
engine: gotpl
+8
View File
@@ -0,0 +1,8 @@
approvers:
- prydonius
- tompizmor
- sameersbn
reviewers:
- prydonius
- tompizmor
- sameersbn
+124
View File
@@ -0,0 +1,124 @@
# Ghost
[Ghost](https://ghost.org/) is one of the most versatile open source content management systems on the market.
## TL;DR;
```console
$ helm install stable/ghost
```
## Introduction
This chart bootstraps a [Ghost](https://github.com/bitnami/bitnami-docker-ghost) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
It also packages the [Bitnami MariaDB chart](https://github.com/kubernetes/charts/tree/master/stable/mariadb) which is required for bootstrapping a MariaDB deployment for the database requirements of the Ghost application.
## Prerequisites
- Kubernetes 1.4+ with Beta APIs enabled
- PV provisioner support in the underlying infrastructure
## Installing the Chart
To install the chart with the release name `my-release`:
```console
$ helm install --name my-release stable/ghost
```
The command deploys Ghost on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
$ helm delete my-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
The following tables lists the configurable parameters of the Ghost chart and their default values.
| Parameter | Description | Default |
|-------------------------------|---------------------------------------------------------------|----------------------------------------------------------|
| `image` | Ghost image | `bitnami/ghost:{VERSION}` |
| `imagePullPolicy` | Image pull policy | `Always` if `image` tag is `latest`, else `IfNotPresent` |
| `ghostHost` | Ghost host to create application URLs | `nil` |
| `ghostPort` | Ghost port to create application URLs along with host | `80` |
| `ghostLoadBalancerIP` | `loadBalancerIP` for the Ghost Service | `nil` |
| `ghostUsername` | User of the application | `user@example.com` |
| `ghostPassword` | Application password | Randomly generated |
| `ghostEmail` | Admin email | `user@example.com` |
| `ghostBlogTitle` | Ghost Blog name | `User's Blog` |
| `allowEmptyPassword` | Allow DB blank passwords | `yes` |
| `externalDatabase.host` | Host of the external database | `nil` |
| `externalDatabase.user` | Existing username in the external db | `bn_ghost` |
| `externalDatabase.password` | Password for the above username | `nil` |
| `externalDatabase.database` | Name of the existing database | `bitnami_ghost` |
| `mariadb.enabled` | Whether or not to install MariaDB (disable if using external) | `true` |
| `mariadb.mariadbRootPassword` | MariaDB admin password | `nil` |
| `mariadb.mariadbDatabase` | MariaDB Database name to create | `bitnami_ghost` |
| `mariadb.mariadbUser` | MariaDB Database user to create | `bn_ghost` |
| `mariadb.mariadbPassword` | MariaDB Password for user | _random 10 character long alphanumeric string_ |
| `serviceType` | Kubernetes Service type | `LoadBalancer` |
| `persistence.enabled` | Enable persistence using PVC | `true` |
| `persistence.storageClass` | PVC Storage Class for Ghost volume | `nil` (uses alpha storage annotation) |
| `persistence.accessMode` | PVC Access Mode for Ghost volume | `ReadWriteOnce` |
| `persistence.size` | PVC Storage Request for Ghost volume | `8Gi` |
| `resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` |
The above parameters map to the env variables defined in [bitnami/ghost](http://github.com/bitnami/bitnami-docker-ghost). For more information please refer to the [bitnami/ghost](http://github.com/bitnami/bitnami-docker-ghost) image documentation.
> **Note**:
>
> For the Ghost application function correctly, you should specify the `ghostHost` parameter to specify the FQDN (recommended) or the public IP address of the Ghost service.
>
> Optionally, you can specify the `ghostLoadBalancerIP` parameter to assign a reserved IP address to the Ghost service of the chart. However please note that this feature is only available on a few cloud providers (f.e. GKE).
>
> To reserve a public IP address on GKE:
>
> ```bash
> $ gcloud compute addresses create ghost-public-ip
> ```
>
> The reserved IP address can be associated to the Ghost service by specifying it as the value of the `ghostLoadBalancerIP` parameter while installing the chart.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
$ helm install --name my-release \
--set ghostUsername=admin,ghostPassword=password,mariadb.mariadbRootPassword=secretpassword \
stable/ghost
```
The above command sets the Ghost administrator account username and password to `admin` and `password` respectively. Additionally it sets the MariaDB `root` user password to `secretpassword`.
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
```console
$ helm install --name my-release -f values.yaml stable/ghost
```
> **Tip**: You can use the default [values.yaml](values.yaml)
## Using an existing database
Sometimes you may want to have Ghost connect to an external database rather than installing one inside your cluster, e.g. to use a managed database service, or use run a single database server for all your applications. To do this, the chart allows you to specify credentials for an external database under the [`externalDatabase` parameter](#configuration). You should also disable the MariaDB installation with the `mariadb.enabled` option. For example:
```console
$ helm install stable/ghost \
--set mariadb.enabled=false,externalDatabase.host=myexternalhost,externalDatabase.user=myuser,externalDatabase.password=mypassword,externalDatabase.database=mydatabase
```
## Persistence
The [Bitnami Ghost](https://github.com/bitnami/bitnami-docker-ghost) image stores the Ghost data and configurations at the `/bitnami/ghost` and `/bitnami/apache` paths of the container.
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
See the [Configuration](#configuration) section to configure the PVC or to disable persistence.
+6
View File
@@ -0,0 +1,6 @@
dependencies:
- name: mariadb
repository: https://kubernetes-charts.storage.googleapis.com/
version: 0.7.0
digest: sha256:f59f68030aa5c50b9e776b813804875fac911f91c2aa384e991f37a795c5ae34
generated: 2017-11-27T16:40:56.867665764Z
+5
View File
@@ -0,0 +1,5 @@
dependencies:
- name: mariadb
version: 0.7.0
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
+54
View File
@@ -0,0 +1,54 @@
{{- if empty (include "ghost.host" .) -}}
###############################################################################
### ERROR: You did not provide an external host in your 'helm install' call ###
###############################################################################
This deployment will be incomplete until you configure Ghost with a resolvable
host. To configure Ghost with the URL of your service:
1. Get the Ghost URL by running:
{{- if contains "NodePort" .Values.serviceType }}
export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
{{- else if contains "LoadBalancer" .Values.serviceType }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "ghost.fullname" . }}'
export APP_HOST=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "ghost.fullname" . }} --template "{{ "{{ range (index .status.loadBalancer.ingress 0) }}{{ . }}{{ end }}" }}")
{{- end }}
2. Complete your Ghost deployment by running:
helm upgrade {{ .Release.Name }} \
--set serviceType={{ .Values.serviceType }},ghostHost=$APP_HOST stable/ghost
{{- else -}}
1. Get the Ghost URL by running:
{{- if eq .Values.serviceType "ClusterIP" }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "ghost.fullname" . }}" -o jsonpath="{.items[0].metadata.name}")
echo Blog URL : http://127.0.0.1:{{ default "80" .Values.ghostPort }}/
echo Admin URL : http://127.0.0.1:{{ default "80" .Values.ghostPort }}/ghost
kubectl port-forward $POD_NAME {{ default "80" .Values.ghostPort }}:2368
{{- else if eq .Values.serviceType "NodePort" }}
export APP_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
export APP_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "fullname" . }})
echo Blog URL : http://$APP_HOST:$APP_PORT/
echo Admin URL : http://$APP_HOST:$APP_PORT/ghost
{{- else }}
echo Blog URL : http://{{ include "ghost.host" . }}/
echo Admin URL : http://{{ include "ghost.host" . }}/ghost
{{- end }}
2. Get your Ghost login credentials by running:
echo Email: {{ .Values.ghostEmail }}
echo Password: $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "ghost.fullname" . }} -o jsonpath="{.data.ghost-password}" | base64 --decode)
{{- end }}
+45
View File
@@ -0,0 +1,45 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "ghost.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).
*/}}
{{- define "ghost.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | 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).
*/}}
{{- define "ghost.mariadb.fullname" -}}
{{- printf "%s-%s" .Release.Name "mariadb" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Get the user defined LoadBalancerIP for this release.
Note, returns 127.0.0.1 if using ClusterIP.
*/}}
{{- define "ghost.serviceIP" -}}
{{- if eq .Values.serviceType "ClusterIP" -}}
127.0.0.1
{{- else -}}
{{- index .Values (printf "%sLoadBalancerIP" .Chart.Name) | default "" -}}
{{- end -}}
{{- end -}}
{{/*
Gets the host to be used for this application.
If not using ClusterIP, or if a host or LoadBalancerIP is not defined, the value will be empty.
*/}}
{{- define "ghost.host" -}}
{{- $host := index .Values (printf "%sHost" .Chart.Name) | default "" -}}
{{- default (include "ghost.serviceIP" .) $host -}}
{{- end -}}
+130
View File
@@ -0,0 +1,130 @@
{{- if include "ghost.host" . -}}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "ghost.fullname" . }}
labels:
app: {{ template "ghost.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
replicas: 1
template:
metadata:
labels:
app: {{ template "ghost.fullname" . }}
spec:
initContainers:
- name: volume-permissions
image: "{{ .Values.volumePermissions.image.name }}:{{ .Values.volumePermissions.image.tag }}"
imagePullPolicy: {{ default "" .Values.volumePermissions.image.pullPolicy | quote }}
command: ['sh', '-c', 'chmod -R g+rwX /bitnami']
volumeMounts:
- mountPath: /bitnami
name: ghost-data
containers:
- name: {{ template "ghost.fullname" . }}
image: "{{ .Values.image }}"
imagePullPolicy: {{ default "" .Values.imagePullPolicy | quote }}
env:
- name: ALLOW_EMPTY_PASSWORD
{{- if .Values.allowEmptyPassword }}
value: "yes"
{{- else }}
value: "no"
{{- end }}
- name: MARIADB_HOST
{{- if .Values.mariadb.enabled }}
value: {{ template "ghost.mariadb.fullname" . }}
{{- else }}
value: {{ default "" .Values.externalDatabase.host | quote }}
{{- end }}
- name: MARIADB_PORT_NUMBER
value: "3306"
- name: GHOST_DATABASE_NAME
{{- if .Values.mariadb.enabled }}
value: {{ default "" .Values.mariadb.mariadbDatabase | quote }}
{{- else }}
value: {{ default "" .Values.externalDatabase.database | quote }}
{{- end }}
- name: GHOST_DATABASE_USER
{{- if .Values.mariadb.enabled }}
value: {{ default "" .Values.mariadb.mariadbUser | quote }}
{{- else }}
value: {{ default "" .Values.externalDatabase.user | quote }}
{{- end }}
- name: GHOST_DATABASE_PASSWORD
{{- if .Values.mariadb.enabled }}
valueFrom:
secretKeyRef:
name: {{ template "ghost.mariadb.fullname" . }}
key: mariadb-password
{{- else }}
value: {{ default "" .Values.externalDatabase.password | quote }}
{{- end }}
- name: GHOST_HOST
value: {{ include "ghost.host" . | quote }}
- name: GHOST_PORT_NUMBER
value: {{ default "80" .Values.ghostPort | quote }}
- name: GHOST_USERNAME
value: {{ default "" .Values.ghostUsername | quote }}
- name: GHOST_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "ghost.fullname" . }}
key: ghost-password
- name: GHOST_EMAIL
value: {{ default "" .Values.ghostEmail | quote }}
- name: BLOG_TITLE
value: {{ default "" .Values.ghostBlogTitle | quote }}
- name: SMTP_HOST
value: {{ default "" .Values.smtpHost | quote }}
- name: SMTP_PORT
value: {{ default "" .Values.smtpPort | quote }}
- name: SMTP_USER
value: {{ default "" .Values.smtpUser | quote }}
- name: SMTP_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "ghost.fullname" . }}
key: smtp-password
- name: SMTP_SERVICE
value: {{ default "" .Values.smtpService | quote }}
ports:
- name: http
containerPort: 2368
livenessProbe:
httpGet:
path: /ghost
port: http
httpHeaders:
- name: Host
value: {{ include "ghost.host" . | quote }}
initialDelaySeconds: 120
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
httpGet:
path: /ghost
port: http
httpHeaders:
- name: Host
value: {{ include "ghost.host" . | quote }}
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 5
resources:
{{ toYaml .Values.resources | indent 10 }}
volumeMounts:
- name: ghost-data
mountPath: /bitnami/ghost
volumes:
- name: ghost-data
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ template "ghost.fullname" . }}
{{- else }}
emptyDir: {}
{{- end }}
{{- end -}}
+24
View File
@@ -0,0 +1,24 @@
{{- if .Values.persistence.enabled -}}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "ghost.fullname" . }}
labels:
app: {{ template "ghost.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
accessModes:
- {{ .Values.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.size | quote }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}
+17
View File
@@ -0,0 +1,17 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ template "ghost.fullname" . }}
labels:
app: {{ template "ghost.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
data:
{{ if .Values.ghostPassword }}
ghost-password: {{ .Values.ghostPassword | b64enc | quote }}
{{ else }}
ghost-password: {{ randAlphaNum 10 | b64enc | quote }}
{{ end }}
smtp-password: {{ default "" .Values.smtpPassword | b64enc | quote }}
+20
View File
@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "ghost.fullname" . }}
labels:
app: {{ template "ghost.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
type: {{ .Values.serviceType }}
{{- if eq .Values.serviceType "LoadBalancer" }}
loadBalancerIP: {{ default "" .Values.ghostLoadBalancerIP }}
{{- end }}
ports:
- name: http
port: {{ default "80" .Values.ghostPort }}
targetPort: http
selector:
app: {{ template "ghost.fullname" . }}
+155
View File
@@ -0,0 +1,155 @@
## Bitnami Ghost image version
## ref: https://hub.docker.com/r/bitnami/ghost/tags/
##
image: bitnami/ghost:1.21.5-r0
## Busybox image used to configure volume permissions
##
volumePermissions:
image:
name: busybox
tag: 1.27.1
# pullPolicy:
## Specify a imagePullPolicy
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
# imagePullPolicy:
## Ghost host to create application URLs
## ref: https://github.com/bitnami/bitnami-docker-ghost#configuration
##
# ghostHost:
## Ghost port to create application URLs along with host.
## ref: https://github.com/bitnami/bitnami-docker-ghost#configuration
##
ghostPort: 80
## loadBalancerIP for the Ghost Service (optional, cloud specific)
## ref: http://kubernetes.io/docs/user-guide/services/#type-loadbalancer
##
# ghostLoadBalancerIP:
## User of the application
## ref: https://github.com/bitnami/bitnami-docker-ghost#configuration
##
ghostUsername: user@example.com
## Application password
## Defaults to a random 10-character alphanumeric string if not set
## ref: https://github.com/bitnami/bitnami-docker-ghost#configuration
##
# ghostPassword:
## Admin email
## ref: https://github.com/bitnami/bitnami-docker-ghost#configuration
##
ghostEmail: user@example.com
## Ghost Blog name
## ref: https://github.com/bitnami/bitnami-docker-ghost#environment-variables
##
ghostBlogTitle: User's Blog
## Set to `yes` to allow the container to be started with blank passwords
## ref: https://github.com/bitnami/bitnami-docker-wordpress#environment-variables
allowEmptyPassword: yes
## SMTP mail delivery configuration
## ref: https://github.com/bitnami/bitnami-docker-redmine/#smtp-configuration
##
# smtpHost:
# smtpPort:
# smtpUser:
# smtpPassword:
# smtpService:
##
## External database configuration
##
externalDatabase:
## Database host
# host:
## Database user
# user: bn_ghost
## Database password
# password:
## Database name
# database: bitnami_ghost
##
## MariaDB chart configuration
##
mariadb:
## Whether to use the database specified as a requirement or not. For example, to configure the chart with an existing database server.
enabled: true
## MariaDB admin password
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#setting-the-root-password-on-first-run
##
# mariadbRootPassword:
## Create a database
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-on-first-run
##
mariadbDatabase: bitnami_ghost
## Create a database user
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run
##
mariadbUser: bn_ghost
## Password for mariadbUser
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run
##
# mariadbPassword:
## Enable persistence using Persistent Volume Claims
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
##
persistence:
enabled: true
## mariadb data Persistent Volume Storage Class
## 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: 8Gi
## Kubernetes configuration
## For minikube, set this to NodePort, elsewhere use LoadBalancer
##
serviceType: LoadBalancer
## Enable persistence using Persistent Volume Claims
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
##
persistence:
enabled: true
## ghost data Persistent Volume Storage Class
## 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: 8Gi
## Configure resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
resources:
requests:
memory: 512Mi
cpu: 300m
+1
View File
@@ -0,0 +1 @@
.git
+21
View File
@@ -0,0 +1,21 @@
name: jasperreports
version: 0.3.0
appVersion: 6.4.2
description: The JasperReports server can be used as a stand-alone or embedded reporting
and BI server that offers web-based reporting, analytic tools and visualization,
and a dashboard feature for compiling multiple custom views
keywords:
- business intelligence
- java
- jasper
- reporting
- analytic
- visualization
home: http://community.jaspersoft.com/project/jasperreports-server
sources:
- https://github.com/bitnami/bitnami-docker-jasperreports
maintainers:
- name: bitnami-bot
email: containers@bitnami.com
engine: gotpl
icon: https://bitnami.com/assets/stacks/jasperserver/img/jasperserver-stack-110x117.png
+8
View File
@@ -0,0 +1,8 @@
approvers:
- prydonius
- tompizmor
- sameersbn
reviewers:
- prydonius
- tompizmor
- sameersbn
+105
View File
@@ -0,0 +1,105 @@
# JasperReports
[JasperReports](http://community.jaspersoft.com/project/jasperreports-server) The JasperReports server can be used as a stand-alone or embedded reporting and BI server that offers web-based reporting, analytic tools and visualization, and a dashboard feature for compiling multiple custom views
## TL;DR;
```console
$ helm install stable/jasperreports
```
## Introduction
This chart bootstraps a [JasperReports](https://github.com/bitnami/bitnami-docker-jasperreports) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
It also packages the [Bitnami MariaDB chart](https://github.com/kubernetes/charts/tree/master/stable/mariadb) which is required for bootstrapping a MariaDB deployment for the database requirements of the JasperReports application.
## Prerequisites
- Kubernetes 1.4+ with Beta APIs enabled
- PV provisioner support in the underlying infrastructure
## Installing the Chart
To install the chart with the release name `my-release`:
```console
$ helm install --name my-release stable/jasperreports
```
The command deploys JasperReports on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
$ helm delete my-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
The following tables lists the configurable parameters of the JasperReports chart and their default values.
| Parameter | Description | Default |
|-------------------------------|----------------------------------------------|----------------------------------------------------------|
| `image` | JasperReports image | `bitnami/jasperreports:{VERSION}` |
| `imagePullPolicy` | Image pull policy | `IfNotPresent` |
| `jasperreportsUsername` | User of the application | `user` |
| `jasperreportsPassword` | Application password | _random 10 character long alphanumeric string_ |
| `jasperreportsEmail` | User email | `user@example.com` |
| `smtpHost` | SMTP host | `nil` |
| `smtpPort` | SMTP port | `nil` |
| `smtpEmail` | SMTP email | `nil` |
| `smtpUser` | SMTP user | `nil` |
| `smtpPassword` | SMTP password | `nil` |
| `smtpProtocol` | SMTP protocol [`ssl`, `none`] | `nil` |
| `allowEmptyPassword` | Allow DB blank passwords | `yes` |
| `externalDatabase.host` | Host of the external database | `nil` |
| `externalDatabase.port` | Port of the external database | `3306` |
| `externalDatabase.user` | Existing username in the external db | `bn_jasperreports` |
| `externalDatabase.password` | Password for the above username | `nil` |
| `externalDatabase.database` | Name of the existing databse | `bitnami_jasperreports` |
| `mariadb.enabled` | Wheter to use or not the mariadb chart | `true` |
| `mariadb.mariadbDatabase` | Database name to create | `bitnami_jasperreports` |
| `mariadb.mariadbUser` | Database user to create | `bn_jasperreports` |
| `mariadb.mariadbPassword` | Password for the database | `nil` |
| `mariadb.mariadbRootPassword` | MariaDB admin password | `nil` |
| `serviceType` | Kubernetes Service type | `LoadBalancer` |
| `persistence.enabled` | Enable persistence using PVC | `true` |
| `persistence.storageClass` | PVC Storage Class for JasperReports volume | `nil` (uses alpha storage annotation) |
| `persistence.accessMode` | PVC Access Mode for JasperReports volume | `ReadWriteOnce` |
| `persistence.size` | PVC Storage Request for JasperReports volume | `8Gi` |
| `resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` |
The above parameters map to the env variables defined in [bitnami/jasperreports](http://github.com/bitnami/bitnami-docker-jasperreports). For more information please refer to the [bitnami/jasperreports](http://github.com/bitnami/bitnami-docker-jasperreports) image documentation.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
$ helm install --name my-release \
--set jasperreportsUsername=admin,jasperreportsPassword=password,mariadb.mariadbRootPassword=secretpassword \
stable/jasperreports
```
The above command sets the JasperReports administrator account username and password to `admin` and `password` respectively. Additionally it sets the MariaDB `root` user password to `secretpassword`.
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
```console
$ helm install --name my-release -f values.yaml stable/jasperreports
```
> **Tip**: You can use the default [values.yaml](values.yaml)
## Persistence
The [Bitnami JasperReports](https://github.com/bitnami/bitnami-docker-jasperreports) image stores the JasperReports data and configurations at the `/bitnami/jasperreports` path of the container.
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
See the [Configuration](#configuration) section to configure the PVC or to disable persistence.
+6
View File
@@ -0,0 +1,6 @@
dependencies:
- name: mariadb
repository: https://kubernetes-charts.storage.googleapis.com/
version: 0.7.0
digest: sha256:f59f68030aa5c50b9e776b813804875fac911f91c2aa384e991f37a795c5ae34
generated: 2018-03-16T15:44:56.555248+01:00
+5
View File
@@ -0,0 +1,5 @@
dependencies:
- name: mariadb
version: 0.7.0
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
+45
View File
@@ -0,0 +1,45 @@
{{- if or .Values.mariadb.enabled .Values.externalDatabase.host -}}
** Please be patient while the chart is being deployed **
1. Get the JasperReports URL by running:
{{- if contains "NodePort" .Values.serviceType }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "jasperreports.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.serviceType }}
** Please ensure an external IP is associated to the {{ template "jasperreports.fullname" . }} service before proceeding **
** Watch the status using: kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "jasperreports.fullname" . }} **
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "jasperreports.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP/jasperserver/
{{- else if contains "ClusterIP" .Values.serviceType }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "jasperreports.fullname" . }}" -o jsonpath="{.items[0].metadata.name}")
echo http://127.0.0.1:8080/jasperserver/
kubectl port-forward $POD_NAME 8080:8080
{{- end }}
2. Login with the following credentials
echo Username: {{ .Values.jasperreportsUsername }}
echo Password: $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "jasperreports.fullname" . }} -o jsonpath="{.data.jasperreports-password}" | base64 --decode)
{{- else -}}
########################################################################################
### ERROR: You did not provide an external database host in your 'helm install' call ###
########################################################################################
This deployment will be incomplete until you configure JasperReports with a resolvable database
host. To configure JasperReports to use and external database host:
1. Complete your JasperReports deployment by running:
helm upgrade {{ .Release.Name }} --set serviceType={{ .Values.serviceType }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/jasperreports
{{- end }}
@@ -0,0 +1,24 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "jasperreports.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).
*/}}
{{- define "jasperreports.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | 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).
*/}}
{{- define "jasperreports.mariadb.fullname" -}}
{{- printf "%s-%s" .Release.Name "mariadb" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
@@ -0,0 +1,105 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "jasperreports.fullname" . }}
labels:
app: {{ template "jasperreports.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
template:
metadata:
labels:
app: {{ template "jasperreports.fullname" . }}
spec:
containers:
- name: {{ template "jasperreports.fullname" . }}
image: "{{ .Values.image }}"
imagePullPolicy: {{ .Values.imagePullPolicy | quote }}
env:
- name: ALLOW_EMPTY_PASSWORD
value: {{ .Values.allowEmptyPassword | quote }}
{{- if .Values.mariadb.enabled }}
- name: MARIADB_HOST
value: {{ template "jasperreports.mariadb.fullname" . }}
- name: MARIADB_PORT_NUMBER
value: "3306"
- name: JASPERREPORTS_DATABASE_NAME
value: {{ .Values.mariadb.mariadbDatabase | quote }}
- name: JASPERREPORTS_DATABASE_USER
value: {{ .Values.mariadb.mariadbUser | quote }}
- name: JASPERREPORTS_DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "jasperreports.mariadb.fullname" . }}
key: mariadb-password
{{- else }}
- name: MARIADB_HOST
value: {{ .Values.externalDatabase.host | quote }}
- name: MARIADB_PORT_NUMBER
value: {{ .Values.externalDatabase.port | quote }}
- name: JASPERREPORTS_DATABASE_NAME
value: {{ .Values.externalDatabase.database | quote }}
- name: JASPERREPORTS_DATABASE_USER
value: {{ .Values.externalDatabase.user | quote }}
- name: JASPERREPORTS_DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: {{ printf "%s-%s" .Release.Name "externaldb" }}
key: db-password
{{- end }}
- name: JASPERREPORTS_USERNAME
value: {{ .Values.jasperreportsUsername | quote }}
- name: JASPERREPORTS_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "jasperreports.fullname" . }}
key: jasperreports-password
- name: JASPERREPORTS_EMAIL
value: {{ .Values.jasperreportsEmail | quote }}
- name: SMTP_HOST
value: {{ .Values.smtpHost | quote }}
- name: SMTP_PORT
value: {{ .Values.smtpPort | quote }}
- name: SMTP_EMAIL
value: {{ .Values.smtpEmail| quote }}
- name: SMTP_USER
value: {{ .Values.smtpUser | quote }}
- name: SMTP_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "jasperreports.fullname" . }}
key: smtp-password
- name: SMTP_PROTOCOL
value: {{ .Values.smtpProtocol | quote }}
ports:
- name: http
containerPort: 8080
livenessProbe:
httpGet:
path: /jasperserver/login.html
port: http
initialDelaySeconds: 300
timeoutSeconds: 5
failureThreshold: 6
readinessProbe:
httpGet:
path: /jasperserver/login.html
port: http
initialDelaySeconds: 30
timeoutSeconds: 3
periodSeconds: 5
resources:
{{ toYaml .Values.resources | indent 10 }}
volumeMounts:
- name: jasperreports-data
mountPath: /bitnami/jasperreports
volumes:
- name: jasperreports-data
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ template "jasperreports.fullname" . }}
{{- else }}
emptyDir: {}
{{- end }}
@@ -0,0 +1,14 @@
{{- if not .Values.mariadb.enabled }}
apiVersion: v1
kind: Secret
metadata:
name: {{ printf "%s-%s" .Release.Name "externaldb" }}
labels:
app: {{ printf "%s-%s" .Release.Name "externaldb" }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
data:
db-password: {{ default "" .Values.externalDatabase.password | b64enc | quote }}
{{- end }}
+24
View File
@@ -0,0 +1,24 @@
{{- if .Values.persistence.enabled -}}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "jasperreports.fullname" . }}
labels:
app: {{ template "jasperreports.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
accessModes:
- {{ .Values.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.size | quote }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.storageClass }}"
{{- end }}
{{- end }}
{{- end -}}
@@ -0,0 +1,17 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ template "jasperreports.fullname" . }}
labels:
app: {{ template "jasperreports.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
data:
{{ if .Values.jasperreportsPassword }}
jasperreports-password: {{ default "" .Values.jasperreportsPassword | b64enc | quote }}
{{ else }}
jasperreports-password: {{ randAlphaNum 10 | b64enc | quote }}
{{ end }}
smtp-password: {{ default "" .Values.smtpPassword | b64enc | quote }}
+17
View File
@@ -0,0 +1,17 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "jasperreports.fullname" . }}
labels:
app: {{ template "jasperreports.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
spec:
type: {{ .Values.serviceType }}
ports:
- name: http
port: 80
targetPort: http
selector:
app: {{ template "jasperreports.fullname" . }}
+131
View File
@@ -0,0 +1,131 @@
## Bitnami JasperReports image version
## ref: https://hub.docker.com/r/bitnami/jasperreports/tags/
##
image: bitnami/jasperreports:6.4.2-r4
## Specify a imagePullPolicy
## ref: http://kubernetes.io/docs/user-guide/images/#pre-pulling-images
##
imagePullPolicy: IfNotPresent
## User of the application
## ref: https://github.com/bitnami/bitnami-docker-jasperreports#configuration
##
jasperreportsUsername: user
## Application password
## Defaults to a random 10-character alphanumeric string if not set
## ref: https://github.com/bitnami/bitnami-docker-jasperreports#configuration
##
# jasperreportsPassword:
#
## Application mail
## ref: https://github.com/bitnami/bitnami-docker-jasperreports#configuration
##
jasperreportsEmail: user@example.com
## Set to `yes` to allow the container to be started with blank passwords
## ref: https://github.com/bitnami/bitnami-docker-jasperreports#environment-variables
allowEmptyPassword: "yes"
##
## External database configuration
##
externalDatabase:
## Database host
host:
## Database host
port: 3306
## Database user
user: bn_jasperreports
## Database password
password:
## Database name
database: bitnami_jasperreports
## SMTP mail delivery configuration
## ref: https://github.com/bitnami/bitnami-docker-jasperreports#smtp-configuration
##
# smtpHost:
# smtpPort:
# smtpEmail:
# smtpUser:
# smtpPassword:
# smtpProtocol:
##
## MariaDB chart configuration
##
mariadb:
## Whether to deploy a mariadb server to satisfy the applications database requirements. To use an external database set this to false and configure the externalDatabase parameters
enabled: true
## Create a database
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-on-first-run
##
mariadbDatabase: bitnami_jasperreports
## Create a database user
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run
##
mariadbUser: bn_jasperreports
## Password for mariadbUser
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#creating-a-database-user-on-first-run
##
# mariadbPassword:
## MariaDB admin password
## ref: https://github.com/bitnami/bitnami-docker-mariadb/blob/master/README.md#setting-the-root-password-on-first-run
##
# mariadbRootPassword:
## Enable persistence using Persistent Volume Claims
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
##
persistence:
enabled: true
## mariadb data Persistent Volume Storage Class
## 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: 8Gi
## Kubernetes configuration
## For minikube, set this to NodePort, elsewhere use LoadBalancer
##
serviceType: LoadBalancer
## Enable persistence using Persistent Volume Claims
## ref: http://kubernetes.io/docs/user-guide/persistent-volumes/
##
persistence:
enabled: true
## database data Persistent Volume Storage Class
## 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: 8Gi
## Configure resource requests and limits
## ref: http://kubernetes.io/docs/user-guide/compute-resources/
##
resources:
requests:
memory: 512Mi
cpu: 300m
+1
View File
@@ -0,0 +1 @@
.git
+18
View File
@@ -0,0 +1,18 @@
name: joomla
version: 0.6.0
appVersion: 3.8.6
description: PHP content management system (CMS) for publishing web content
keywords:
- joomla
- cms
- blog
- http
- php
home: http://www.joomla.org/
icon: https://bitnami.com/assets/stacks/joomla/img/joomla-stack-220x234.png
sources:
- https://github.com/bitnami/bitnami-docker-joomla
maintainers:
- name: Bitnami
email: containers@bitnami.com
engine: gotpl
+8
View File
@@ -0,0 +1,8 @@
approvers:
- prydonius
- tompizmor
- sameersbn
reviewers:
- prydonius
- tompizmor
- sameersbn
+107
View File
@@ -0,0 +1,107 @@
# Joomla!
[Joomla!](http://www.joomla.org/) is a PHP content management system (CMS) for publishing web content. It includes features such as page caching, RSS feeds, printable versions of pages, news flashes, blogs, search, and support for language international.
## TL;DR;
```console
$ helm install stable/joomla
```
## Introduction
This chart bootstraps a [Joomla!](https://github.com/bitnami/bitnami-docker-joomla) deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
It also packages the [Bitnami MariaDB chart](https://github.com/kubernetes/charts/tree/master/stable/mariadb) which is required for bootstrapping a MariaDB deployment for the database requirements of the Joomla! application.
## Prerequisites
- Kubernetes 1.4+ with Beta APIs enabled
- PV provisioner support in the underlying infrastructure
## Installing the Chart
To install the chart with the release name `my-release`:
```console
$ helm install --name my-release stable/joomla
```
The command deploys Joomla! on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
> **Tip**: List all releases using `helm list`
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```console
$ helm delete my-release
```
The command removes all the Kubernetes components associated with the chart and deletes the release.
## Configuration
The following tables lists the configurable parameters of the Joomla! chart and their default values.
| Parameter | Description | Default |
| --------------------------------- | ------------------------------------- | --------------------------------------------------------- |
| `image` | Joomla! image | `bitnami/joomla:{VERSION}` |
| `imagePullPolicy` | Image pull policy | `Always` if `image` tag is `latest`, else `IfNotPresent` |
| `joomlaUsername` | User of the application | `user` |
| `joomlaPassword` | Application password | Randomly generated |
| `joomlaEmail` | Admin email | `user@example.com` |
| `smtpHost` | SMTP host | `nil` |
| `smtpPort` | SMTP port | `nil` |
| `smtpUser` | SMTP user | `nil` |
| `smtpPassword` | SMTP password | `nil` |
| `smtpUsername` | User name for SMTP emails | `nil` |
| `smtpProtocol` | SMTP protocol [`tls`, `ssl`] | `nil` |
| `allowEmptyPassword` | Allow DB blank passwords | `yes` |
| `externalDatabase.host` | Host of the external database | `nil` |
| `externalDatabase.port` | Port of the external database | `3306` |
| `externalDatabase.user` | Existing username in the external db | `bn_joomla` |
| `externalDatabase.password` | Password for the above username | `nil` |
| `externalDatabase.database` | Name of the existing databse | `bitnami_joomla` |
| `mariadb.enabled` | Wheter to use or not the mariadb chart | `true` |
| `mariadb.mariadbDatabase` | Database name to create | `bitnami_joomla` |
| `mariadb.mariadbUser` | Database user to create | `bn_joomla` |
| `mariadb.mariadbPassword` | Password for the database | `nil` |
| `mariadb.mariadbRootPassword` | MariaDB admin password | `nil` |
| `serviceType` | Kubernetes Service type | `LoadBalancer` |
| `persistence.enabled` | Enable persistence using PVC | `true` |
| `persistence.apache.storageClass` | PVC Storage Class for Apache volume | `nil` (uses alpha storage annotation) |
| `persistence.apache.accessMode` | PVC Access Mode for Apache volume | `ReadWriteOnce` |
| `persistence.apache.size` | PVC Storage Request for Apache volume | `1Gi` |
| `persistence.joomla.storageClass` | PVC Storage Class for Joomla! volume | `nil` (uses alpha storage annotation) |
| `persistence.joomla.accessMode` | PVC Access Mode for Joomla! volume | `ReadWriteOnce` |
| `persistence.joomla.size` | PVC Storage Request for Joomla! volume | `8Gi` |
| `resources` | CPU/Memory resource requests/limits | Memory: `512Mi`, CPU: `300m` |
The above parameters map to the env variables defined in [bitnami/joomla](http://github.com/bitnami/bitnami-docker-joomla). For more information please refer to the [bitnami/joomla](http://github.com/bitnami/bitnami-docker-joomla) image documentation.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
$ helm install --name my-release \
--set joomlaUsername=admin,joomlaPassword=password,mariadb.mariadbRootPassword=secretpassword \
stable/joomla
```
The above command sets the Joomla! administrator account username and password to `admin` and `password` respectively. Additionally it sets the MariaDB `root` user password to `secretpassword`.
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
```console
$ helm install --name my-release -f values.yaml stable/joomla
```
> **Tip**: You can use the default [values.yaml](values.yaml)
## Persistence
The [Bitnami Joomla!](https://github.com/bitnami/bitnami-docker-joomla) image stores the Joomla! data and configurations at the `/bitnami/joomla` and `/bitnami/apache` paths of the container.
Persistent Volume Claims are used to keep the data across deployments. This is known to work in GCE, AWS, and minikube.
See the [Configuration](#configuration) section to configure the PVC or to disable persistence.
+6
View File
@@ -0,0 +1,6 @@
dependencies:
- name: mariadb
repository: https://kubernetes-charts.storage.googleapis.com/
version: 0.7.0
digest: sha256:f59f68030aa5c50b9e776b813804875fac911f91c2aa384e991f37a795c5ae34
generated: 2018-03-14T18:31:19.031367+01:00
+5
View File
@@ -0,0 +1,5 @@
dependencies:
- name: mariadb
version: 0.7.0
repository: https://kubernetes-charts.storage.googleapis.com/
condition: mariadb.enabled
+43
View File
@@ -0,0 +1,43 @@
{{- if or .Values.mariadb.enabled .Values.externalDatabase.host -}}
1. Get the Joomla! URL by running:
{{- if contains "NodePort" .Values.serviceType }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "joomla.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.serviceType }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
Watch the status with: 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "joomla.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "joomla.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP/
{{- else if contains "ClusterIP" .Values.serviceType }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "joomla.fullname" . }}" -o jsonpath="{.items[0].metadata.name}")
echo http://127.0.0.1:8080/
kubectl port-forward $POD_NAME 8080:80
{{- end }}
2. Get your Joomla! login credentials by running:
echo Username: {{ .Values.joomlaUsername }}
echo Password: $(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "joomla.fullname" . }} -o jsonpath="{.data.joomla-password}" | base64 --decode)
{{- else -}}
########################################################################################
### ERROR: You did not provide an external database host in your 'helm install' call ###
########################################################################################
This deployment will be incomplete until you configure Joomla! with a resolvable database
host. To configure Joomla! to use and external database host:
1. Complete your Joomla! deployment by running:
helm upgrade {{ .Release.Name }} --set serviceType={{ .Values.serviceType }},mariadb.enabled=false,externalDatabase.host=YOUR_EXTERNAL_DATABASE_HOST stable/joomla
{{- end }}
+24
View File
@@ -0,0 +1,24 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "joomla.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).
*/}}
{{- define "joomla.fullname" -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- printf "%s-%s" .Release.Name $name | 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).
*/}}
{{- define "joomla.mariadb.fullname" -}}
{{- printf "%s-%s" .Release.Name "mariadb" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

Some files were not shown because too many files have changed in this diff Show More