зеркало из https://github.com/Azure/helm-charts.git
Родитель
d8db6e2b97
Коммит
22b274acd3
|
@ -0,0 +1 @@
|
|||
.git
|
|
@ -0,0 +1,20 @@
|
|||
name: drupal
|
||||
version: 0.11.0
|
||||
appVersion: 8.4.2
|
||||
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
|
|
@ -0,0 +1,173 @@
|
|||
# Drupal
|
||||
|
||||
[Drupal](https://www.drupal.org/) is one of the most versatile open source content management systems on the market.
|
||||
|
||||
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 is inspired by the
|
||||
[upstream drupal chart](https://github.com/kubernetes/charts/tree/master/stable/drupal,
|
||||
but, by default, utilizes the Azure Service Broker to provision an
|
||||
[Azure Database for MySQL](https://azure.microsoft.com/en-us/services/mysql/)
|
||||
database for the Drupal server to use.
|
||||
|
||||
# Basic Installation
|
||||
|
||||
Installation of this chart is simple. First, ensure that you've [added the
|
||||
`azure` repository](../README.md#installing-charts). Then, install from the
|
||||
`azure` repo:
|
||||
|
||||
```console
|
||||
$ helm install azure/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
|
||||
|
||||
You will need the following before you can install this chart:
|
||||
|
||||
- Kubernetes 1.7+ with RBAC turned on and beta APIs enabled
|
||||
- [Service Catalog](https://github.com/kubernetes-incubator/service-catalog) installed
|
||||
- The [Azure Service Broker](https://github.com/Azure/azure-service-broker) installed
|
||||
- Support for persistent volumes in the underlying infrastructure
|
||||
|
||||
Please see the [prerequisities document](../docs/prerequisities/README.md) for
|
||||
details on how to install everything.
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
$ helm install --name my-release --namespace drupal azure/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 | `[]` |
|
||||
| `mysql.embeddedMaria` | Whether to fulfill the dependency on MySQL using an embedded (on-cluster) MariaDB database _instead of Aure Database for MySQL. This option is available to enable local or no-cost evaluation of this chart. | `false`
|
||||
| `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 machine’s directory permissions, you must set the Drupal file directory permissions yourself and disable or clear Drupal cache. See Drupal Core’s [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.
|
|
@ -0,0 +1,6 @@
|
|||
dependencies:
|
||||
- name: mariadb
|
||||
repository: https://kubernetes-charts.storage.googleapis.com/
|
||||
version: 1.0.5
|
||||
digest: sha256:277208f8ee8fd30e560fcd0ed6c6e1a749f273fab29b0dc31a55dd922ca9c278
|
||||
generated: 2017-11-30T21:35:05.501264-06:00
|
|
@ -0,0 +1,5 @@
|
|||
dependencies:
|
||||
- name: mariadb
|
||||
version: 1.0.5
|
||||
repository: https://kubernetes-charts.storage.googleapis.com/
|
||||
condition: mysql.embeddedMaria
|
|
@ -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)
|
|
@ -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 -}}
|
|
@ -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 -}}
|
|
@ -0,0 +1,109 @@
|
|||
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:
|
||||
{{- if .Values.mysql.embeddedMaria }}
|
||||
- name: MARIADB_HOST
|
||||
value: {{ template "drupal.mariadb.fullname" . }}
|
||||
- name: MARIADB_PORT_NUMBER
|
||||
value: "3306"
|
||||
- name: MARIADB_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "drupal.mariadb.fullname" . }}
|
||||
key: mariadb-root-password
|
||||
{{- else }}
|
||||
- name: MARIADB_HOST
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "drupal.fullname" . }}-mysql-secret
|
||||
key: host
|
||||
- name: MARIADB_PORT_NUMBER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "drupal.fullname" . }}-mysql-secret
|
||||
key: port
|
||||
- name: DRUPAL_DATABASE_NAME
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "drupal.fullname" . }}-mysql-secret
|
||||
key: database
|
||||
- name: DRUPAL_DATABASE_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "drupal.fullname" . }}-mysql-secret
|
||||
key: username
|
||||
- name: DRUPAL_DATABASE_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "drupal.fullname" . }}-mysql-secret
|
||||
key: password
|
||||
{{- 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 }}
|
|
@ -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 -}}
|
|
@ -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 -}}
|
|
@ -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 -}}
|
|
@ -0,0 +1,15 @@
|
|||
{{- if not .Values.mysql.embeddedMaria }}
|
||||
apiVersion: servicecatalog.k8s.io/v1beta1
|
||||
kind: ServiceBinding
|
||||
metadata:
|
||||
name: {{ template "drupal.fullname" . }}-mysql-binding
|
||||
labels:
|
||||
app: {{ template "drupal.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
spec:
|
||||
instanceRef:
|
||||
name: {{ template "drupal.fullname" . }}-mysql-instance
|
||||
secretName: {{ template "drupal.fullname" . }}-mysql-secret
|
||||
{{- end }}
|
|
@ -0,0 +1,18 @@
|
|||
{{- if not .Values.mysql.embeddedMaria }}
|
||||
apiVersion: servicecatalog.k8s.io/v1beta1
|
||||
kind: ServiceInstance
|
||||
metadata:
|
||||
name: {{ template "drupal.fullname" . }}-mysql-instance
|
||||
labels:
|
||||
app: {{ template "drupal.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
spec:
|
||||
clusterServiceClassExternalName: azure-mysqldb
|
||||
clusterServicePlanExternalName: "{{ .Values.mariadb.planName }}"
|
||||
parameters:
|
||||
location: "{{ .Values.mariadb.location }}"
|
||||
resourceGroup: {{ .Release.Namespace }}
|
||||
sslEnforcement: disabled
|
||||
{{- end }}
|
|
@ -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 }}
|
|
@ -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" . }}
|
|
@ -0,0 +1,201 @@
|
|||
## Bitnami Drupal image version
|
||||
## ref: https://hub.docker.com/r/bitnami/drupal/tags/
|
||||
##
|
||||
image: bitnami/drupal:8.4.2-r1
|
||||
|
||||
## 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
|
||||
|
||||
mysql:
|
||||
embeddedMaria: false
|
||||
|
||||
##
|
||||
## 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:
|
||||
|
||||
## Related to the Azure Service Broker
|
||||
# Plan to use for the MySQL Instance
|
||||
planName: standard800
|
||||
# Azure Location where to deploy the instance
|
||||
location: eastus
|
||||
|
||||
## 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 speficied 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
|
Загрузка…
Ссылка в новой задаче