22 changed files with 151 additions and 1087 deletions
@ -0,0 +1,4 @@
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1 |
||||
description: Webhosting Apache PHP7 |
||||
name: webhosting |
||||
version: 0.1.0 |
@ -0,0 +1,3 @@
@@ -0,0 +1,3 @@
|
||||
# Webhosting |
||||
|
||||
[Webhosting] is one of the most popular web servers in the world ;) |
@ -0,0 +1,16 @@
@@ -0,0 +1,16 @@
|
||||
{{/* vim: set filetype=mustache: */}} |
||||
{{/* |
||||
Expand the name of the chart. |
||||
*/}} |
||||
{{- define "name" -}} |
||||
{{- default .Chart.Name .Values.nameOverride | trunc 24 -}} |
||||
{{- end -}} |
||||
|
||||
{{/* |
||||
Create a default fully qualified app name. |
||||
We truncate at 24 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). |
||||
*/}} |
||||
{{- define "fullname" -}} |
||||
{{- $name := default .Chart.Name .Values.nameOverride -}} |
||||
{{- printf "%s-%s" .Release.Name $name | trunc 24 -}} |
||||
{{- end -}} |
@ -0,0 +1,105 @@
@@ -0,0 +1,105 @@
|
||||
apiVersion: apps/v1 |
||||
kind: Deployment |
||||
metadata: |
||||
annotations: |
||||
labels: |
||||
app: '{{.Release.Name}}-piedflycatcher-web-rug-nl' |
||||
chart: '{{.Chart.Name}}-{{.Chart.Version}}' |
||||
heritage: '{{.Release.Service}}' |
||||
release: '{{.Release.Name}}' |
||||
name: '{{ template "fullname" . }}-piedflycatcher-web-rug-nl' |
||||
namespace: '{{.Values.piedflycatcherwebrugnl.namespace}}' |
||||
spec: |
||||
minReadySeconds: {{.Values.piedflycatcherwebrugnl.minReadySeconds}} |
||||
progressDeadlineSeconds: 600 |
||||
replicas: {{.Values.piedflycatcherwebrugnl.replicas}} |
||||
revisionHistoryLimit: {{.Values.piedflycatcherwebrugnl.revisionHistoryLimit}} |
||||
selector: |
||||
matchLabels: |
||||
app: '{{.Release.Name}}-piedflycatcher-web-rug-nl' |
||||
strategy: |
||||
rollingUpdate: |
||||
maxSurge: 25% |
||||
type: '{{.Values.piedflycatcherwebrugnl.deploymentStrategy}}' |
||||
template: |
||||
metadata: |
||||
labels: |
||||
app: '{{.Release.Name}}-piedflycatcher-web-rug-nl' |
||||
version: v0.2 |
||||
spec: |
||||
volumes: |
||||
{{- if .Values.persistence.f117666.enabled}} |
||||
- name: f117666 |
||||
nfs: |
||||
path: '{{.Values.f117666.path}}' |
||||
server: '{{.Values.f117666.Server}}' |
||||
{{- else }} |
||||
emptyDir: {} |
||||
{{- end }} |
||||
affinity: |
||||
nodeAffinity: |
||||
preferredDuringSchedulingIgnoredDuringExecution: |
||||
- preference: |
||||
matchExpressions: |
||||
- key: hosting |
||||
operator: In |
||||
values: |
||||
- default |
||||
weight: 100 |
||||
requiredDuringSchedulingIgnoredDuringExecution: |
||||
nodeSelectorTerms: |
||||
- matchExpressions: |
||||
- key: hosting |
||||
operator: In |
||||
values: |
||||
- default |
||||
containers: |
||||
- env: |
||||
- name: APACHE_SERVERADMIN |
||||
value: '{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.apacheserveradmin}}' |
||||
- name: APACHE_DOCUMENTROOT |
||||
value: '{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.apachedocumentroot}}' |
||||
- name: APACHE_LOG_DIR |
||||
value: '{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.apachelogdir}}' |
||||
- name: APACHE_RUN_GROUP |
||||
value: '{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.apacherungroup}}' |
||||
- name: APACHE_RUN_USER |
||||
value: '{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.apacherunuser}}' |
||||
- name: APACHE_SERVERNAME |
||||
value: '{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.apacheservername}}' |
||||
- name: APACHE_SERVER_NAME |
||||
value: '{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.apacheservername}}' |
||||
image: '{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.image}}:{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.imageTag}}' |
||||
imagePullPolicy: '{{.Values.piedflycatcherwebrugnl.piedflycatcherwebrugnl.imagePullPolicy}}' |
||||
livenessProbe: |
||||
failureThreshold: 5 |
||||
httpGet: |
||||
path: / |
||||
port: 80 |
||||
scheme: HTTP |
||||
initialDelaySeconds: 60 |
||||
periodSeconds: 60 |
||||
successThreshold: 1 |
||||
timeoutSeconds: 10 |
||||
name: piedflycatcher-web-rug-nl |
||||
ports: |
||||
- containerPort: 80 |
||||
protocol: TCP |
||||
resources: |
||||
limits: |
||||
cpu: 100m |
||||
memory: 256Mi |
||||
requests: |
||||
cpu: 50m |
||||
memory: 64Mi |
||||
securityContext: {} |
||||
stdin: true |
||||
terminationMessagePolicy: File |
||||
tty: true |
||||
volumeMounts: |
||||
- mountPath: /home/www |
||||
name: f117666 |
||||
imagePullSecrets: |
||||
- name: '{{.Values.piedflycatcherwebrugnl.imagePullSecrets}}' |
||||
restartPolicy: '{{.Values.piedflycatcherwebrugnl.restartPolicy}}' |
||||
schedulerName: default-scheduler |
@ -1,2 +0,0 @@
@@ -1,2 +0,0 @@
|
||||
.git |
||||
OWNERS |
@ -1,18 +0,0 @@
@@ -1,18 +0,0 @@
|
||||
apiVersion: v1 |
||||
name: webhosting |
||||
version: 1.3.1 |
||||
appVersion: 5.7.14 |
||||
description: Fast, reliable, scalable, and easy to use web |
||||
system. |
||||
keywords: |
||||
- mysql |
||||
- database |
||||
- web |
||||
home: https://doc.web.rug.nl |
||||
icon: file://../web-hosting-icon-png |
||||
sources: |
||||
- https://registry.webhosting.rug.nl/webhosting/ |
||||
maintainers: |
||||
- name: Harm |
||||
email: p.h.vos@rug.nl |
||||
engine: gotpl |
@ -1,210 +0,0 @@
@@ -1,210 +0,0 @@
|
||||
## Prerequisites |
||||
|
||||
- webhosting user account |
||||
|
||||
## Installing the Chart |
||||
|
||||
By default a random password will be generated for the root user. If you'd like to set your own password change the mysqlRootPassword |
||||
in the values.yaml. |
||||
|
||||
You can retrieve your root password by running the following command. Make sure to replace [YOUR_RELEASE_NAME]: |
||||
|
||||
printf $(printf '\%o' `kubectl get secret [YOUR_RELEASE_NAME]-mysql -o jsonpath="{.data.mysql-root-password[*]}"`) |
||||
|
||||
> **Tip**: List all releases using `helm list` |
||||
|
||||
## Configuration |
||||
|
||||
The following table lists the configurable parameters of the MySQL chart and their default values. |
||||
|
||||
| Parameter | Description | Default | |
||||
| -------------------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------- | |
||||
| `args` | Additional arguments to pass to the MySQL container. | `[]` | |
||||
| `initContainer.resources` | initContainer resource requests/limits | Memory: `10Mi`, CPU: `10m` | |
||||
| `image` | `mysql` image repository. | `mysql` | |
||||
| `imageTag` | `mysql` image tag. | `5.7.14` | |
||||
| `busybox.image` | `busybox` image repository. | `busybox` | |
||||
| `busybox.tag` | `busybox` image tag. | `1.29.3` | |
||||
| `testFramework.image` | `test-framework` image repository. | `dduportal/bats` | |
||||
| `testFramework.tag` | `test-framework` image tag. | `0.4.0` | |
||||
| `imagePullPolicy` | Image pull policy | `IfNotPresent` | |
||||
| `existingSecret` | Use Existing secret for Password details | `nil` | |
||||
| `extraVolumes` | Additional volumes as a string to be passed to the `tpl` function | | |
||||
| `extraVolumeMounts` | Additional volumeMounts as a string to be passed to the `tpl` function | | |
||||
| `extraInitContainers` | Additional init containers as a string to be passed to the `tpl` function | | |
||||
| `mysqlRootPassword` | Password for the `root` user. Ignored if existing secret is provided | Random 10 characters | |
||||
| `mysqlUser` | Username of new user to create. | `nil` | |
||||
| `mysqlPassword` | Password for the new user. Ignored if existing secret is provided | Random 10 characters | |
||||
| `mysqlDatabase` | Name for new database to create. | `nil` | |
||||
| `livenessProbe.initialDelaySeconds` | Delay before liveness probe is initiated | 30 | |
||||
| `livenessProbe.periodSeconds` | How often to perform the probe | 10 | |
||||
| `livenessProbe.timeoutSeconds` | When the probe times out | 5 | |
||||
| `livenessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 | |
||||
| `livenessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 3 | |
||||
| `readinessProbe.initialDelaySeconds` | Delay before readiness probe is initiated | 5 | |
||||
| `readinessProbe.periodSeconds` | How often to perform the probe | 10 | |
||||
| `readinessProbe.timeoutSeconds` | When the probe times out | 1 | |
||||
| `readinessProbe.successThreshold` | Minimum consecutive successes for the probe to be considered successful after having failed. | 1 | |
||||
| `readinessProbe.failureThreshold` | Minimum consecutive failures for the probe to be considered failed after having succeeded. | 3 | |
||||
| `schedulerName` | Name of the k8s scheduler (other than default) | `nil` | |
||||
| `persistence.enabled` | Create a volume to store data | true | |
||||
| `persistence.size` | Size of persistent volume claim | 8Gi RW | |
||||
| `persistence.storageClass` | Type of persistent volume claim | nil | |
||||
| `persistence.accessMode` | ReadWriteOnce or ReadOnly | ReadWriteOnce | |
||||
| `persistence.existingClaim` | Name of existing persistent volume | `nil` | |
||||
| `persistence.subPath` | Subdirectory of the volume to mount | `nil` | |
||||
| `persistence.annotations` | Persistent Volume annotations | {} | |
||||
| `nodeSelector` | Node labels for pod assignment | {} | |
||||
| `tolerations` | Pod taint tolerations for deployment | {} | |
||||
| `metrics.enabled` | Start a side-car prometheus exporter | `false` | |
||||
| `metrics.image` | Exporter image | `prom/mysqld-exporter` | |
||||
| `metrics.imageTag` | Exporter image | `v0.10.0` | |
||||
| `metrics.imagePullPolicy` | Exporter image pull policy | `IfNotPresent` | |
||||
| `metrics.resources` | Exporter resource requests/limit | `nil` | |
||||
| `metrics.livenessProbe.initialDelaySeconds` | Delay before metrics liveness probe is initiated | 15 | |
||||
| `metrics.livenessProbe.timeoutSeconds` | When the probe times out | 5 | |
||||
| `metrics.readinessProbe.initialDelaySeconds` | Delay before metrics readiness probe is initiated | 5 | |
||||
| `metrics.readinessProbe.timeoutSeconds` | When the probe times out | 1 | |
||||
| `metrics.flags` | Additional flags for the mysql exporter to use | `[]` | |
||||
| `metrics.serviceMonitor.enabled` | Set this to `true` to create ServiceMonitor for Prometheus operator | `false` | |
||||
| `metrics.serviceMonitor.additionalLabels` | Additional labels that can be used so ServiceMonitor will be discovered by Prometheus | `{}` | |
||||
| `resources` | CPU/Memory resource requests/limits | Memory: `256Mi`, CPU: `100m` | |
||||
| `configurationFiles` | List of mysql configuration files | `nil` | |
||||
| `configurationFilesPath` | Path of mysql configuration files | `/etc/mysql/conf.d/` | |
||||
| `securityContext.enabled` | Enable security context (mysql pod) | `false` | |
||||
| `securityContext.fsGroup` | Group ID for the container (mysql pod) | 999 | |
||||
| `securityContext.runAsUser` | User ID for the container (mysql pod) | 999 | |
||||
| `service.annotations` | Kubernetes annotations for mysql | {} | |
||||
| `service.type` | Kubernetes service type | ClusterIP | |
||||
| `service.loadBalancerIP` | LoadBalancer service IP | `""` | |
||||
| `ssl.enabled` | Setup and use SSL for MySQL connections | `false` | |
||||
| `ssl.secret` | Name of the secret containing the SSL certificates | mysql-ssl-certs | |
||||
| `ssl.certificates[0].name` | Name of the secret containing the SSL certificates | `nil` | |
||||
| `ssl.certificates[0].ca` | CA certificate | `nil` | |
||||
| `ssl.certificates[0].cert` | Server certificate (public key) | `nil` | |
||||
| `ssl.certificates[0].key` | Server key (private key) | `nil` | |
||||
| `imagePullSecrets` | Name of Secret resource containing private registry credentials | `nil` | |
||||
| `initializationFiles` | List of SQL files which are run after the container started | `nil` | |
||||
| `timezone` | Container and mysqld timezone (TZ env) | `nil` (UTC depending on image) | |
||||
| `podAnnotations` | Map of annotations to add to the pods | `{}` | |
||||
| `podLabels` | Map of labels to add to the pods | `{}` | |
||||
| `priorityClassName` | Set pod priorityClassName | `{}` | |
||||
| `deploymentAnnotations` | Map of annotations for deployment | `{}` | |
||||
|
||||
Some of the parameters above map to the env variables defined in the [MySQL DockerHub image](https://hub.docker.com/_/mysql/). |
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, |
||||
|
||||
```bash |
||||
$ helm install --name my-release \ |
||||
--set mysqlRootPassword=secretpassword,mysqlUser=my-user,mysqlPassword=my-password,mysqlDatabase=my-database \ |
||||
stable/mysql |
||||
``` |
||||
|
||||
The above command sets the MySQL `root` account password to `secretpassword`. Additionally it creates a standard database user named `my-user`, with the password `my-password`, who has access to a database named `my-database`. |
||||
|
||||
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example, |
||||
|
||||
```bash |
||||
$ helm install --name my-release -f values.yaml stable/mysql |
||||
``` |
||||
|
||||
> **Tip**: You can use the default [values.yaml](values.yaml) |
||||
|
||||
## Persistence |
||||
|
||||
The [MySQL](https://hub.docker.com/_/mysql/) image stores the MySQL data and configurations at the `/var/lib/mysql` path of the container. |
||||
|
||||
By default a PersistentVolumeClaim is created and mounted into that directory. In order to disable this functionality |
||||
you can change the values.yaml to disable persistence and use an emptyDir instead. |
||||
|
||||
> *"An emptyDir volume is first created when a Pod is assigned to a Node, and exists as long as that Pod is running on that node. When a Pod is removed from a node for any reason, the data in the emptyDir is deleted forever."* |
||||
|
||||
**Notice**: You may need to increase the value of `livenessProbe.initialDelaySeconds` when enabling persistence by using PersistentVolumeClaim from PersistentVolume with varying properties. Since its IO performance has impact on the database initialization performance. The default limit for database initialization is `60` seconds (`livenessProbe.initialDelaySeconds` + `livenessProbe.periodSeconds` * `livenessProbe.failureThreshold`). Once such initialization process takes more time than this limit, kubelet will restart the database container, which will interrupt database initialization then causing persisent data in an unusable state. |
||||
|
||||
## Custom MySQL configuration files |
||||
|
||||
The [MySQL](https://hub.docker.com/_/mysql/) image accepts custom configuration files at the path `/etc/mysql/conf.d`. If you want to use a customized MySQL configuration, you can create your alternative configuration files by passing the file contents on the `configurationFiles` attribute. Note that according to the MySQL documentation only files ending with `.cnf` are loaded. |
||||
|
||||
```yaml |
||||
configurationFiles: |
||||
mysql.cnf: |- |
||||
[mysqld] |
||||
skip-host-cache |
||||
skip-name-resolve |
||||
sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
||||
mysql_custom.cnf: |- |
||||
[mysqld] |
||||
``` |
||||
|
||||
## MySQL initialization files |
||||
|
||||
The [MySQL](https://hub.docker.com/_/mysql/) image accepts *.sh, *.sql and *.sql.gz files at the path `/docker-entrypoint-initdb.d`. |
||||
These files are being run exactly once for container initialization and ignored on following container restarts. |
||||
If you want to use initialization scripts, you can create initialization files by passing the file contents on the `initializationFiles` attribute. |
||||
|
||||
|
||||
```yaml |
||||
initializationFiles: |
||||
first-db.sql: |- |
||||
CREATE DATABASE IF NOT EXISTS first DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; |
||||
second-db.sql: |- |
||||
CREATE DATABASE IF NOT EXISTS second DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; |
||||
``` |
||||
|
||||
## SSL |
||||
|
||||
This chart supports configuring MySQL to use [encrypted connections](https://dev.mysql.com/doc/refman/5.7/en/encrypted-connections.html) with TLS/SSL certificates provided by the user. This is accomplished by storing the required Certificate Authority file, the server public key certificate, and the server private key as a Kubernetes secret. The SSL options for this chart support the following use cases: |
||||
|
||||
* Manage certificate secrets with helm |
||||
* Manage certificate secrets outside of helm |
||||
|
||||
## Manage certificate secrets with helm |
||||
|
||||
Include your certificate data in the `ssl.certificates` section. For example: |
||||
|
||||
``` |
||||
ssl: |
||||
enabled: false |
||||
secret: mysql-ssl-certs |
||||
certificates: |
||||
- name: mysql-ssl-certs |
||||
ca: |- |
||||
-----BEGIN CERTIFICATE----- |
||||
... |
||||
-----END CERTIFICATE----- |
||||
cert: |- |
||||
-----BEGIN CERTIFICATE----- |
||||
... |
||||
-----END CERTIFICATE----- |
||||
key: |- |
||||
-----BEGIN RSA PRIVATE KEY----- |
||||
... |
||||
-----END RSA PRIVATE KEY----- |
||||
``` |
||||
|
||||
> **Note**: Make sure your certificate data has the correct formatting in the values file. |
||||
|
||||
## Manage certificate secrets outside of helm |
||||
|
||||
1. Ensure the certificate secret exist before installation of this chart. |
||||
2. Set the name of the certificate secret in `ssl.secret`. |
||||
3. Make sure there are no entries underneath `ssl.certificates`. |
||||
|
||||
To manually create the certificate secret from local files you can execute: |
||||
``` |
||||
kubectl create secret generic mysql-ssl-certs \ |
||||
--from-file=ca.pem=./ssl/certificate-authority.pem \ |
||||
--from-file=server-cert.pem=./ssl/server-public-key.pem \ |
||||
--from-file=server-key.pem=./ssl/server-private-key.pem |
||||
``` |
||||
> **Note**: `ca.pem`, `server-cert.pem`, and `server-key.pem` **must** be used as the key names in this generic secret. |
||||
|
||||
If you are using a certificate your configurationFiles must include the three ssl lines under [mysqld] |
||||
|
||||
``` |
||||
[mysqld] |
||||
ssl-ca=/ssl/ca.pem |
||||
ssl-cert=/ssl/server-cert.pem |
||||
ssl-key=/ssl/server-key.pem |
||||
``` |
@ -1,7 +0,0 @@
@@ -1,7 +0,0 @@
|
||||
# Webhosting |
||||
|
||||
[Webhosting] is one of the most popular web servers in the world ;) |
||||
|
||||
## Introduction |
||||
|
||||
This chart bootstraps a single node webhosting deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. |
@ -1,118 +0,0 @@
@@ -1,118 +0,0 @@
|
||||
labels: |
||||
io.cattle.role: project # options are cluster/project |
||||
categories: |
||||
- Database |
||||
- MySQL |
||||
questions: |
||||
- variable: defaultImage |
||||
default: true |
||||
description: "Use default Docker images" |
||||
label: Use Default webhosting Image |
||||
type: boolean |
||||
show_subquestion_if: false |
||||
group: "Container Images" |
||||
subquestions: |
||||
- variable: image |
||||
default: "ranchercharts/mysql" |
||||
description: "MySQL image name" |
||||
type: string |
||||
label: Image Name |
||||
- variable: imageTag |
||||
default: "5.7.14" |
||||
description: "MySQL image tag" |
||||
type: string |
||||
label: Image Tag |
||||
- variable: busybox.image |
||||
default: "ranchercharts/busybox" |
||||
description: "Busybox image name" |
||||
type: string |
||||
label: Image Image Name |
||||
- variable: busybox.tag |
||||
default: "1.29.3" |
||||
description: "Busybox image tag" |
||||
type: string |
||||
label: Busybox Image Tag |
||||
- variable: mysqlDatabase |
||||
default: "admin" |
||||
description: "Name of database to create" |
||||
type: string |
||||
required: true |
||||
label: MySQL Database |
||||
group: "MySQL Settings" |
||||
- variable: mysqlUser |
||||
default: "admin" |
||||
description: "Username of user to create" |
||||
type: string |
||||
required: true |
||||
label: MySQL Username |
||||
group: "MySQL Settings" |
||||
- variable: mysqlPassword |
||||
default: "" |
||||
description: "MySQL Password for the new user, defaults to a random 10-character alphanumeric string if not set" |
||||
type: password |
||||
label: MySQL Password |
||||
group: "MySQL Settings" |
||||
- variable: persistence.enabled |
||||
default: "false" |
||||
description: "Enable persistence using PVC" |
||||
type: boolean |
||||
required: true |
||||
label: Persistent Volume Enabled |
||||
show_subquestion_if: true |
||||
group: "Persistent Volume" |
||||
subquestions: |
||||
- variable: persistence.size |
||||
default: "8Gi" |
||||
description: "Volume Size" |
||||
type: string |
||||
label: Volume Size |
||||
required: true |
||||
- variable: persistence.storageClass |
||||
default: "" |
||||
description: "If undefined or null, uses the default StorageClass. Defaults to null." |
||||
type: storageclass |
||||
label: Default storageClass |
||||
- variable: persistence.existingClaim |
||||
default: "" |
||||
description: "If not empty, uses the specified existing PVC instead of creating new one" |
||||
type: pvc |
||||
label: Existing Persistent Volume Claim for mysql |
||||
- variable: service.port |
||||
default: "3306" |
||||
description: "Service port for access to MySQL" |
||||
type: string |
||||
label: MySQL NodePort number |
||||
required: true |
||||
group: "MySQL Settings" |
||||
- variable: service.type |
||||
default: "ClusterIP" |
||||
description: "MySQL K8s Service type" |
||||
type: enum |
||||
group: "Services and Load Balancing" |
||||
options: |
||||
- "ClusterIP" |
||||
- "NodePort" |
||||
required: true |
||||
label: MySQL Service Type |
||||
show_subquestion_if: "NodePort" |
||||
subquestions: |
||||
- variable: service.nodePort |
||||
default: "" |
||||
description: "NodePort port number(to set explicitly, choose port between 30000-32767)" |
||||
type: int |
||||
min: 30000 |
||||
max: 32767 |
||||
label: Service NodePort number |
||||
- variable: metrics.enabled |
||||
default: false |
||||
description: "Enable mysql prometheus metrics exporter" |
||||
label: Enable MySQL Metrics |
||||
type: boolean |
||||
show_subquestion_if: true |
||||
group: "Metrics" |
||||
subquestions: |
||||
- variable: metrics.serviceMonitor.enabled |
||||
default: false |
||||
description: "Set this to `true` to create ServiceMonitor for Prometheus operator" |
||||
type: boolean |
||||
label: Create MySQL ServiceMonitor for Prometheus Operator |
@ -1,43 +0,0 @@
@@ -1,43 +0,0 @@
|
||||
MySQL can be accessed via port 3306 on the following DNS name from within your cluster: |
||||
{{ template "mysql.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local |
||||
|
||||
{{- if .Values.existingSecret }} |
||||
If you have not already created the mysql password secret: |
||||
|
||||
kubectl create secret generic {{ .Values.existingSecret }} --namespace {{ .Release.Namespace }} --from-file=./mysql-root-password --from-file=./mysql-password |
||||
{{ else }} |
||||
|
||||
To get your root password run: |
||||
|
||||
MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace {{ .Release.Namespace }} {{ template "mysql.fullname" . }} -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo) |
||||
{{- end }} |
||||
|
||||
To connect to your database: |
||||
|
||||
1. Run an Ubuntu pod that you can use as a client: |
||||
|
||||
kubectl run -i --tty ubuntu --image=ubuntu:16.04 --restart=Never -- bash -il |
||||
|
||||
2. Install the mysql client: |
||||
|
||||
$ apt-get update && apt-get install mysql-client -y |
||||
|
||||
3. Connect using the mysql cli, then provide your password: |
||||
$ mysql -h {{ template "mysql.fullname" . }} -p |
||||
|
||||
To connect to your database directly from outside the K8s cluster: |
||||
{{- if contains "NodePort" .Values.service.type }} |
||||
MYSQL_HOST=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath='{.items[0].status.addresses[0].address}') |
||||
MYSQL_PORT=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "mysql.fullname" . }} -o jsonpath='{.spec.ports[0].nodePort}') |
||||
|
||||
{{- else if contains "ClusterIP" .Values.service.type }} |
||||
MYSQL_HOST=127.0.0.1 |
||||
MYSQL_PORT={{ .Values.service.port }} |
||||
|
||||
# Execute the following command to route the connection: |
||||
kubectl port-forward svc/{{ template "mysql.fullname" . }} {{ .Values.service.port }} |
||||
|
||||
{{- end }} |
||||
|
||||
mysql -h ${MYSQL_HOST} -P${MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD} |
||||
|
@ -1,32 +0,0 @@
@@ -1,32 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}} |
||||
{{/* |
||||
Expand the name of the chart. |
||||
*/}} |
||||
{{- define "mysql.name" -}} |
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} |
||||
{{- end -}} |
||||
|
||||
{{/* |
||||
Create a default fully qualified app name. |
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). |
||||
If release name contains chart name it will be used as a full name. |
||||
*/}} |
||||
{{- define "mysql.fullname" -}} |
||||
{{- if .Values.fullnameOverride -}} |
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} |
||||
{{- else -}} |
||||
{{- $name := default .Chart.Name .Values.nameOverride -}} |
||||
{{- if contains $name .Release.Name -}} |
||||
{{- printf .Release.Name | trunc 63 | trimSuffix "-" -}} |
||||
{{- else -}} |
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} |
||||
{{- end -}} |
||||
{{- end -}} |
||||
{{- end -}} |
||||
|
||||
{{/* |
||||
Generate chart secret name |
||||
*/}} |
||||
{{- define "mysql.secretName" -}} |
||||
{{ default (include "mysql.fullname" .) .Values.existingSecret }} |
||||
{{- end -}} |
@ -1,12 +0,0 @@
@@ -1,12 +0,0 @@
|
||||
{{- if .Values.configurationFiles }} |
||||
apiVersion: v1 |
||||
kind: ConfigMap |
||||
metadata: |
||||
name: {{ template "mysql.fullname" . }}-configuration |
||||
namespace: {{ .Release.Namespace }} |
||||
data: |
||||
{{- range $key, $val := .Values.configurationFiles }} |
||||
{{ $key }}: |- |
||||
{{ $val | indent 4}} |
||||
{{- end }} |
||||
{{- end -}} |
@ -1,239 +0,0 @@
@@ -1,239 +0,0 @@
|
||||
apiVersion: apps/v1 |
||||
kind: Deployment |
||||
metadata: |
||||
name: {{ template "mysql.fullname" . }} |
||||
namespace: {{ .Release.Namespace }} |
||||
labels: |
||||
app: {{ template "mysql.fullname" . }} |
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" |
||||
release: "{{ .Release.Name }}" |
||||
heritage: "{{ .Release.Service }}" |
||||
{{- with .Values.deploymentAnnotations }} |
||||
annotations: |
||||
{{ toYaml . | indent 4 }} |
||||
{{- end }} |
||||
|
||||
spec: |
||||
selector: |
||||
matchLabels: |
||||
app: {{ template "mysql.fullname" . }} |
||||
template: |
||||
metadata: |
||||
labels: |
||||
app: {{ template "mysql.fullname" . }} |
||||
{{- with .Values.podLabels }} |
||||
{{ toYaml . | indent 8 }} |
||||
{{- end }} |
||||
{{- with .Values.podAnnotations }} |
||||
annotations: |
||||
{{ toYaml . | indent 8 }} |
||||
{{- end }} |
||||
spec: |
||||
{{- if .Values.schedulerName }} |
||||
schedulerName: "{{ .Values.schedulerName }}" |
||||
{{- end }} |
||||
{{- if .Values.imagePullSecrets }} |
||||
imagePullSecrets: |
||||
{{ toYaml .Values.imagePullSecrets | indent 8 }} |
||||
{{- end }} |
||||
{{- if .Values.priorityClassName }} |
||||
priorityClassName: "{{ .Values.priorityClassName }}" |
||||
{{- end }} |
||||
{{- if .Values.securityContext.enabled }} |
||||
securityContext: |
||||
fsGroup: {{ .Values.securityContext.fsGroup }} |
||||
runAsUser: {{ .Values.securityContext.runAsUser }} |
||||
{{- end }} |
||||
initContainers: |
||||
- name: "remove-lost-found" |
||||
image: "{{ .Values.busybox.image}}:{{ .Values.busybox.tag }}" |
||||
imagePullPolicy: {{ .Values.imagePullPolicy | quote }} |
||||
resources: |
||||
{{ toYaml .Values.initContainer.resources | indent 10 }} |
||||
command: ["rm", "-fr", "/var/lib/mysql/lost+found"] |
||||
volumeMounts: |
||||
- name: data |
||||
mountPath: /var/lib/mysql |
||||
{{- if .Values.persistence.subPath }} |
||||
subPath: {{ .Values.persistence.subPath }} |
||||
{{- end }} |
||||
{{- if .Values.extraInitContainers }} |
||||
{{ tpl .Values.extraInitContainers . | indent 6 }} |
||||
{{- end }} |
||||
{{- if .Values.nodeSelector }} |
||||
nodeSelector: |
||||
{{ toYaml .Values.nodeSelector | indent 8 }} |
||||
{{- end }} |
||||
{{- if .Values.tolerations }} |
||||
tolerations: |
||||
{{ toYaml .Values.tolerations | indent 8 }} |
||||
{{- end }} |
||||
containers: |
||||
- name: {{ template "mysql.fullname" . }} |
||||
image: "{{ .Values.image }}:{{ .Values.imageTag }}" |
||||
imagePullPolicy: {{ .Values.imagePullPolicy | quote }} |
||||
|
||||
{{- with .Values.args }} |
||||
args: |
||||
{{- range . }} |
||||
- {{ . | quote }} |
||||
{{- end }} |
||||
{{- end }} |
||||
resources: |
||||
{{ toYaml .Values.resources | indent 10 }} |
||||
env: |
||||
{{- if .Values.mysqlAllowEmptyPassword }} |
||||
- name: MYSQL_ALLOW_EMPTY_PASSWORD |
||||
value: "true" |
||||
{{- end }} |
||||
- name: MYSQL_ROOT_PASSWORD |
||||
valueFrom: |
||||
secretKeyRef: |
||||
name: {{ template "mysql.secretName" . }} |
||||
key: mysql-root-password |
||||
{{- if .Values.mysqlAllowEmptyPassword }} |
||||
optional: true |
||||
{{- end }} |
||||
- name: MYSQL_PASSWORD |
||||
valueFrom: |
||||
secretKeyRef: |
||||
name: {{ template "mysql.secretName" . }} |
||||
key: mysql-password |
||||
{{- if or .Values.mysqlAllowEmptyPassword (empty .Values.mysqlUser) }} |
||||
optional: true |
||||
{{- end }} |
||||
- name: MYSQL_USER |
||||
value: {{ default "" .Values.mysqlUser | quote }} |
||||
- name: MYSQL_DATABASE |
||||
value: {{ default "" .Values.mysqlDatabase | quote }} |
||||
{{- if .Values.timezone }} |
||||
- name: TZ |
||||
value: {{ .Values.timezone }} |
||||
{{- end }} |
||||
ports: |
||||
- name: mysql |
||||
containerPort: 3306 |
||||
livenessProbe: |
||||
exec: |
||||
command: |
||||
{{- if .Values.mysqlAllowEmptyPassword }} |
||||
- mysqladmin |
||||
- ping |
||||
{{- else }} |
||||
- sh |
||||
- -c |
||||
- "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}" |
||||
{{- end }} |
||||
initialDelaySeconds: {{ .Values.livenessProbe.initialDelaySeconds }} |
||||
periodSeconds: {{ .Values.livenessProbe.periodSeconds }} |
||||
timeoutSeconds: {{ .Values.livenessProbe.timeoutSeconds }} |
||||
successThreshold: {{ .Values.livenessProbe.successThreshold }} |
||||
failureThreshold: {{ .Values.livenessProbe.failureThreshold }} |
||||
readinessProbe: |
||||
exec: |
||||
command: |
||||
{{- if .Values.mysqlAllowEmptyPassword }} |
||||
- mysqladmin |
||||
- ping |
||||
{{- else }} |
||||
- sh |
||||
- -c |
||||
- "mysqladmin ping -u root -p${MYSQL_ROOT_PASSWORD}" |
||||
{{- end }} |
||||
initialDelaySeconds: {{ .Values.readinessProbe.initialDelaySeconds }} |
||||
periodSeconds: {{ .Values.readinessProbe.periodSeconds }} |
||||
timeoutSeconds: {{ .Values.readinessProbe.timeoutSeconds }} |
||||
successThreshold: {{ .Values.readinessProbe.successThreshold }} |
||||
failureThreshold: {{ .Values.readinessProbe.failureThreshold }} |
||||
volumeMounts: |
||||
- name: data |
||||
mountPath: /var/lib/mysql |
||||
{{- if .Values.persistence.subPath }} |
||||
subPath: {{ .Values.persistence.subPath }} |
||||
{{- end }} |
||||
{{- if .Values.configurationFiles }} |
||||
{{- range $key, $val := .Values.configurationFiles }} |
||||
- name: configurations |
||||
mountPath: {{ $.Values.configurationFilesPath }}{{ $key }} |
||||
subPath: {{ $key }} |
||||
{{- end -}} |
||||
{{- end }} |
||||
{{- if .Values.initializationFiles }} |
||||
- name: migrations |
||||
mountPath: /docker-entrypoint-initdb.d |
||||
{{- end }} |
||||
{{- if .Values.ssl.enabled }} |
||||
- name: certificates |
||||
mountPath: /ssl |
||||
{{- end }} |
||||
{{- if .Values.extraVolumeMounts }} |
||||
{{ tpl .Values.extraVolumeMounts . | indent 8 }} |
||||
{{- end }} |
||||
{{- if .Values.metrics.enabled }} |
||||
- name: metrics |
||||
image: "{{ .Values.metrics.image }}:{{ .Values.metrics.imageTag }}" |
||||
imagePullPolicy: {{ .Values.metrics.imagePullPolicy | quote }} |
||||
{{- if .Values.mysqlAllowEmptyPassword }} |
||||
command: |
||||
- 'sh' |
||||
- '-c' |
||||
- 'DATA_SOURCE_NAME="root@(localhost:3306)/" /bin/mysqld_exporter' |
||||
{{- else }} |
||||
env: |
||||
- name: MYSQL_ROOT_PASSWORD |
||||
valueFrom: |
||||
secretKeyRef: |
||||
name: {{ template "mysql.secretName" . }} |
||||
key: mysql-root-password |
||||
command: |
||||
- 'sh' |
||||
- '-c' |
||||
- 'DATA_SOURCE_NAME="root:$MYSQL_ROOT_PASSWORD@(localhost:3306)/" /bin/mysqld_exporter' |
||||
{{- end }} |
||||
{{- range $f := .Values.metrics.flags }} |
||||
- {{ $f | quote }} |
||||
{{- end }} |
||||
ports: |
||||
- name: metrics |
||||
containerPort: 9104 |
||||
livenessProbe: |
||||
httpGet: |
||||
path: / |
||||
port: metrics |
||||
initialDelaySeconds: {{ .Values.metrics.livenessProbe.initialDelaySeconds }} |
||||
timeoutSeconds: {{ .Values.metrics.livenessProbe.timeoutSeconds }} |
||||
readinessProbe: |
||||
httpGet: |
||||
path: / |
||||
port: metrics |
||||
initialDelaySeconds: {{ .Values.metrics.readinessProbe.initialDelaySeconds }} |
||||
timeoutSeconds: {{ .Values.metrics.readinessProbe.timeoutSeconds }} |
||||
resources: |
||||
{{ toYaml .Values.metrics.resources | indent 10 }} |
||||
{{- end }} |
||||
volumes: |
||||
{{- if .Values.configurationFiles }} |
||||
- name: configurations |
||||
configMap: |
||||
name: {{ template "mysql.fullname" . }}-configuration |
||||
{{- end }} |
||||
{{- if .Values.initializationFiles }} |
||||
- name: migrations |
||||
configMap: |
||||
name: {{ template "mysql.fullname" . }}-initialization |
||||
{{- end }} |
||||
{{- if .Values.ssl.enabled }} |
||||
- name: certificates |
||||
secret: |
||||
secretName: {{ .Values.ssl.secret }} |
||||
{{- end }} |
||||
- name: data |
||||
{{- if .Values.persistence.enabled }} |
||||
persistentVolumeClaim: |
||||
claimName: {{ .Values.persistence.existingClaim | default (include "mysql.fullname" .) }} |
||||
{{- else }} |
||||
emptyDir: {} |
||||
{{- end -}} |
||||
{{- if .Values.extraVolumes }} |
||||
{{ tpl .Values.extraVolumes . | indent 6 }} |
||||
{{- end }} |
@ -1,12 +0,0 @@
@@ -1,12 +0,0 @@
|
||||
{{- if .Values.initializationFiles }} |
||||
apiVersion: v1 |
||||
kind: ConfigMap |
||||
metadata: |
||||
name: {{ template "mysql.fullname" . }}-initialization |
||||
namespace: {{ .Release.Namespace }} |
||||
data: |
||||
{{- range $key, $val := .Values.initializationFiles }} |
||||
{{ $key }}: |- |
||||
{{ $val | indent 4}} |
||||
{{- end }} |
||||
{{- end -}} |
@ -1,45 +0,0 @@
@@ -1,45 +0,0 @@
|
||||
{{- if not .Values.existingSecret }} |
||||
apiVersion: v1 |
||||
kind: Secret |
||||
metadata: |
||||
name: {{ template "mysql.fullname" . }} |
||||
namespace: {{ .Release.Namespace }} |
||||
labels: |
||||
app: {{ template "mysql.fullname" . }} |
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" |
||||
release: "{{ .Release.Name }}" |
||||
heritage: "{{ .Release.Service }}" |
||||
type: Opaque |
||||
data: |
||||
{{ if .Values.mysqlRootPassword }} |
||||
mysql-root-password: {{ .Values.mysqlRootPassword | b64enc | quote }} |
||||
{{ else }} |
||||
mysql-root-password: {{ randAlphaNum 10 | b64enc | quote }} |
||||
{{ end }} |
||||
{{ if .Values.mysqlPassword }} |
||||
mysql-password: {{ .Values.mysqlPassword | b64enc | quote }} |
||||
{{ else }} |
||||
mysql-password: {{ randAlphaNum 10 | b64enc | quote }} |
||||
{{ end }} |
||||
{{- if .Values.ssl.enabled }} |
||||
{{ if .Values.ssl.certificates }} |
||||
{{- range .Values.ssl.certificates }} |
||||
--- |
||||
apiVersion: v1 |
||||
kind: Secret |
||||
metadata: |
||||
name: {{ .name }} |
||||
labels: |
||||
app: {{ template "mysql.fullname" $ }} |
||||
chart: "{{ $.Chart.Name }}-{{ $.Chart.Version }}" |
||||
release: "{{ $.Release.Name }}" |
||||
heritage: "{{ $.Release.Service }}" |
||||
type: Opaque |
||||
data: |
||||
ca.pem: {{ .ca | b64enc }} |
||||
server-cert.pem: {{ .cert | b64enc }} |
||||
server-key.pem: {{ .key | b64enc }} |
||||
{{- end }} |
||||
{{- end }} |
||||
{{- end }} |
||||
{{- end }} |
@ -1,26 +0,0 @@
@@ -1,26 +0,0 @@
|
||||
{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }} |
||||
apiVersion: monitoring.coreos.com/v1 |
||||
kind: ServiceMonitor |
||||
metadata: |
||||
name: {{ include "mysql.fullname" . }} |
||||
namespace: {{ .Release.Namespace }} |
||||
labels: |
||||
app: {{ template "mysql.fullname" . }} |
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" |
||||
release: "{{ .Release.Name }}" |
||||
heritage: "{{ .Release.Service }}" |
||||
{{- if .Values.metrics.serviceMonitor.additionalLabels }} |
||||
{{ toYaml .Values.metrics.serviceMonitor.additionalLabels | indent 4 }} |
||||
{{- end }} |
||||
spec: |
||||
endpoints: |
||||
- port: metrics |
||||
interval: 30s |
||||
namespaceSelector: |
||||
matchNames: |
||||
- {{ .Release.Namespace }} |
||||
selector: |
||||
matchLabels: |
||||
app: {{ include "mysql.fullname" . }} |
||||
release: {{ .Release.Name }} |
||||
{{- end }} |
@ -1,36 +0,0 @@
@@ -1,36 +0,0 @@
|
||||
apiVersion: v1 |
||||
kind: Service |
||||
metadata: |
||||
name: {{ template "mysql.fullname" . }} |
||||
namespace: {{ .Release.Namespace }} |
||||
labels: |
||||
app: {{ template "mysql.fullname" . }} |
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" |
||||
release: "{{ .Release.Name }}" |
||||
heritage: "{{ .Release.Service }}" |
||||
annotations: |
||||
{{- if .Values.service.annotations }} |
||||
{{ toYaml .Values.service.annotations | indent 4 }} |
||||
{{- end }} |
||||
{{- if and (.Values.metrics.enabled) (.Values.metrics.annotations) }} |
||||
{{ toYaml .Values.metrics.annotations | indent 4 }} |
||||
{{- end }} |
||||
spec: |
||||
type: {{ .Values.service.type }} |
||||
{{- if (and (eq .Values.service.type "LoadBalancer") (not (empty .Values.service.loadBalancerIP))) }} |
||||
loadBalancerIP: {{ .Values.service.loadBalancerIP }} |
||||
{{- end }} |
||||
ports: |
||||
- name: mysql |
||||
port: {{ .Values.service.port }} |
||||
targetPort: mysql |
||||
{{- if .Values.service.nodePort }} |
||||
nodePort: {{ .Values.service.nodePort }} |
||||
{{- end }} |
||||
{{- if .Values.metrics.enabled }} |
||||
- name: metrics |
||||
port: 9104 |
||||
targetPort: metrics |
||||
{{- end }} |
||||
selector: |
||||
app: {{ template "mysql.fullname" . }} |
@ -1,22 +0,0 @@
@@ -1,22 +0,0 @@
|
||||
apiVersion: v1 |
||||
kind: ConfigMap |
||||
metadata: |
||||
name: {{ template "mysql.fullname" . }}-test |
||||
namespace: {{ .Release.Namespace }} |
||||
labels: |
||||
app: {{ template "mysql.fullname" . }} |
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" |
||||
heritage: "{{ .Release.Service }}" |
||||
release: "{{ .Release.Name }}" |
||||
data: |
||||
run.sh: |- |
||||
{{- if .Values.ssl.enabled | and .Values.mysqlRootPassword }} |
||||
@test "Testing SSL MySQL Connection" { |
||||
mysql --host={{ template "mysql.fullname" . }} --port={{ .Values.service.port | default "3306" }} --ssl-cert=/ssl/server-cert.pem --ssl-key=ssl/server-key.pem -u root -p{{ .Values.mysqlRootPassword }} |
||||
} |
||||
{{- else if .Values.mysqlRootPassword }} |
||||
@test "Testing MySQL Connection" { |
||||
mysql --host={{ template "mysql.fullname" . }} --port={{ .Values.service.port | default "3306" }} -u root -p{{ .Values.mysqlRootPassword }} |
||||
} |
||||
{{- end }} |
||||
|
@ -1,52 +0,0 @@
@@ -1,52 +0,0 @@
|
||||
apiVersion: v1 |
||||
kind: Pod |
||||
metadata: |
||||
name: {{ template "mysql.fullname" . }}-test |
||||
namespace: {{ .Release.Namespace }} |
||||
labels: |
||||
app: {{ template "mysql.fullname" . }} |
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" |
||||
heritage: "{{ .Release.Service }}" |
||||
release: "{{ .Release.Name }}" |
||||
annotations: |
||||
"helm.sh/hook": test-success |
||||
spec: |
||||
initContainers: |
||||
- name: test-framework |
||||
image: "{{ .Values.testFramework.image}}:{{ .Values.testFramework.tag }}" |
||||
command: |
||||
- "bash" |
||||
- "-c" |
||||
- | |
||||
set -ex |
||||
# copy bats to tools dir |
||||
cp -R /usr/local/libexec/ /tools/bats/ |
||||
volumeMounts: |
||||
- mountPath: /tools |
||||
name: tools |
||||
containers: |
||||
- name: {{ .Release.Name }}-test |
||||
image: "{{ .Values.image }}:{{ .Values.imageTag }}" |
||||
command: ["/tools/bats/bats", "-t", "/tests/run.sh"] |
||||
volumeMounts: |
||||
- mountPath: /tests |
||||
name: tests |
||||
readOnly: true |
||||
- mountPath: /tools |
||||
name: tools |
||||
{{- if .Values.ssl.enabled }} |
||||
- name: certificates |
||||
mountPath: /ssl |
||||
{{- end }} |
||||
volumes: |
||||
- name: tests |
||||
configMap: |
||||
name: {{ template "mysql.fullname" . }}-test |
||||
- name: tools |
||||
emptyDir: {} |
||||
{{- if .Values.ssl.enabled }} |
||||
- name: certificates |
||||
secret: |
||||
secretName: {{ .Values.ssl.secret }} |
||||
{{- end }} |
||||
restartPolicy: Never |
@ -1,213 +0,0 @@
@@ -1,213 +0,0 @@
|
||||
## mysql image version |
||||
## ref: https://hub.docker.com/r/library/mysql/tags/ |
||||
## |
||||
image: "ranchercharts/mysql" |
||||
imageTag: "5.7.14" |
||||
|
||||
busybox: |
||||
image: "ranchercharts/busybox" |
||||
tag: "1.29.3" |
||||
|
||||
testFramework: |
||||
image: "ranchercharts/dduportal-bats" |
||||
tag: "0.4.0" |
||||
|
||||
## Specify password for root user |
||||
## |
||||
## Default: random 10 character string |
||||
# mysqlRootPassword: testing |
||||
|
||||
## Create a database user |
||||
## |
||||
# mysqlUser: |
||||
## Default: random 10 character string |
||||
# mysqlPassword: |
||||
|
||||
## Allow unauthenticated access, uncomment to enable |
||||
## |
||||
# mysqlAllowEmptyPassword: true |
||||
|
||||
## Create a database |
||||
## |
||||
# mysqlDatabase: |
||||
|
||||
## Specify an imagePullPolicy (Required) |
||||
## It's recommended to change this to 'Always' if the image tag is 'latest' |
||||
## ref: http://kubernetes.io/docs/user-guide/images/#updating-images |
||||
## |
||||
imagePullPolicy: IfNotPresent |
||||
|
||||
## Additionnal arguments that are passed to the MySQL container. |
||||
## For example use --default-authentication-plugin=mysql_native_password if older clients need to |
||||
## connect to a MySQL 8 instance. |
||||
args: [] |
||||
|
||||
extraVolumes: | |
||||
# - name: extras |
||||
# emptyDir: {} |
||||
|
||||
extraVolumeMounts: | |
||||
# - name: extras |
||||
# mountPath: /usr/share/extras |
||||
# readOnly: true |
||||
|
||||
extraInitContainers: | |
||||
# - name: do-something |
||||
# image: busybox |
||||
# command: ['do', 'something'] |
||||
|
||||
# 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 |
||||
|
||||
## Node selector |
||||
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector |
||||
nodeSelector: {} |
||||
|
||||
## Tolerations for pod assignment |
||||
## Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ |
||||
## |
||||
tolerations: [] |
||||
|
||||
livenessProbe: |
||||
initialDelaySeconds: 30 |
||||
periodSeconds: 10 |
||||
timeoutSeconds: 5 |
||||
successThreshold: 1 |
||||
failureThreshold: 3 |
||||
|
||||
readinessProbe: |
||||
initialDelaySeconds: 5 |
||||
periodSeconds: 10 |
||||
timeoutSeconds: 1 |
||||
successThreshold: 1 |
||||
failureThreshold: 3 |
||||
|
||||
## Persist data to a persistent volume |
||||
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 |
||||
annotations: {} |
||||
|
||||
## Use an alternate scheduler, e.g. "stork". |
||||
## ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/ |
||||
## |
||||
# schedulerName: |
||||
|
||||
## Security context |
||||
securityContext: |
||||
enabled: false |
||||
runAsUser: 999 |
||||
fsGroup: 999 |
||||
|
||||
## Configure resource requests and limits |
||||
## ref: http://kubernetes.io/docs/user-guide/compute-resources/ |
||||
## |
||||
resources: |
||||
requests: |
||||
memory: 256Mi |
||||
cpu: 100m |
||||
|
||||
# Custom mysql configuration files path |
||||
configurationFilesPath: /etc/mysql/conf.d/ |
||||
|
||||
# Custom mysql configuration files used to override default mysql settings |
||||
configurationFiles: {} |
||||
# mysql.cnf: |- |
||||
# [mysqld] |
||||
# skip-name-resolve |
||||
# ssl-ca=/ssl/ca.pem |
||||
# ssl-cert=/ssl/server-cert.pem |
||||
# ssl-key=/ssl/server-key.pem |
||||
|
||||
# Custom mysql init SQL files used to initialize the database |
||||
initializationFiles: {} |
||||
# first-db.sql: |- |
||||
# CREATE DATABASE IF NOT EXISTS first DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; |
||||
# second-db.sql: |- |
||||
# CREATE DATABASE IF NOT EXISTS second DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; |
||||
|
||||
metrics: |
||||
enabled: false |
||||
image: ranchercharts/prom-mysqld-exporter |
||||
imageTag: v0.10.0 |
||||
imagePullPolicy: IfNotPresent |
||||
resources: {} |
||||
annotations: {} |
||||
# prometheus.io/scrape: "true" |
||||
# prometheus.io/port: "9104" |
||||
livenessProbe: |
||||
initialDelaySeconds: 15 |
||||
timeoutSeconds: 5 |
||||
readinessProbe: |
||||
initialDelaySeconds: 5 |
||||
timeoutSeconds: 1 |
||||
flags: [] |
||||
serviceMonitor: |
||||
enabled: false |
||||
additionalLabels: {} |
||||
|
||||
## Configure the service |
||||
## ref: http://kubernetes.io/docs/user-guide/services/ |
||||
service: |
||||
annotations: {} |
||||
## Specify a service type |
||||
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types |
||||
type: ClusterIP |
||||
port: 3306 |
||||
# nodePort: 32000 |
||||
# loadBalancerIP: |
||||
|
||||
ssl: |
||||
enabled: false |
||||
secret: mysql-ssl-certs |
||||
certificates: |
||||
# - name: mysql-ssl-certs |
||||
# ca: |- |
||||
# -----BEGIN CERTIFICATE----- |
||||
# ... |
||||
# -----END CERTIFICATE----- |
||||
# cert: |- |
||||
# -----BEGIN CERTIFICATE----- |
||||
# ... |
||||
# -----END CERTIFICATE----- |
||||
# key: |- |
||||
# -----BEGIN RSA PRIVATE KEY----- |
||||
# ... |
||||
# -----END RSA PRIVATE KEY----- |
||||
|
||||
## Populates the 'TZ' system timezone environment variable |
||||
## ref: https://dev.mysql.com/doc/refman/5.7/en/time-zone-support.html |
||||
## |
||||
## Default: nil (mysql will use image's default timezone, normally UTC) |
||||
## Example: 'Australia/Sydney' |
||||
# timezone: |
||||
|
||||
# Deployment Annotations |
||||
deploymentAnnotations: {} |
||||
|
||||
# To be added to the database server pod(s) |
||||
podAnnotations: {} |
||||
podLabels: {} |
||||
|
||||
## Set pod priorityClassName |
||||
# priorityClassName: {} |
||||
|
||||
|
||||
## Init container resources defaults |
||||
initContainer: |
||||
resources: |
||||
requests: |
||||
memory: 10Mi |
||||
cpu: 10m |
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
persistence: |
||||
f117666: |
||||
Server: 192.168.64.10 |
||||
enabled: true |
||||
path: /home/www/f117666 |
||||
piedflycatcherwebrugnl: |
||||
deploymentStrategy: RollingUpdate |
||||
imagePullSecrets: registry |
||||
minReadySeconds: 10 |
||||
namespace: default |
||||
piedflycatcherwebrugnl: |
||||
apachedocumentroot: /home/www/site |
||||
apachelogdir: /home/www/log |
||||
apacherungroup: f117666 |
||||
apacherunuser: f117666 |
||||
apacheserveradmin: webhosting.cit@rug.nl |
||||
apacheservername: piedflycatcher.web.rug.nl |
||||
image: registry.webhosting.rug.nl/webhosting/alpine-web7-apa |
||||
imagePullPolicy: Always |
||||
imageTag: latest |
||||
replicas: 1 |
||||
restartPolicy: Always |
||||
revisionHistoryLimit: 10 |
Before Width: | Height: | Size: 27 KiB |
Loading…
Reference in new issue