更新 wikijs
This commit is contained in:
48
azure/mysql/templates/NOTES.txt
Normal file
48
azure/mysql/templates/NOTES.txt
Normal file
@@ -0,0 +1,48 @@
|
||||
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.mysqlx.port.enabled }}
|
||||
Connection to the X protocol of MySQL can be done via 33060 on the following DNS name from within your cluster:
|
||||
{{ template "mysql.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local
|
||||
{{- end }}
|
||||
|
||||
{{- 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}
|
||||
|
||||
43
azure/mysql/templates/_helpers.tpl
Normal file
43
azure/mysql/templates/_helpers.tpl
Normal file
@@ -0,0 +1,43 @@
|
||||
{{/* 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 -}}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "mysql.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
{{ default (include "mysql.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else -}}
|
||||
{{ default "default" .Values.serviceAccount.name }}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
12
azure/mysql/templates/configurationFiles-configmap.yaml
Normal file
12
azure/mysql/templates/configurationFiles-configmap.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
{{- 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 -}}
|
||||
259
azure/mysql/templates/deployment.yaml
Normal file
259
azure/mysql/templates/deployment.yaml
Normal file
@@ -0,0 +1,259 @@
|
||||
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:
|
||||
strategy:
|
||||
{{ toYaml .Values.strategy | indent 4 }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "mysql.fullname" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "mysql.fullname" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- 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 }}
|
||||
serviceAccountName: {{ template "mysql.serviceAccountName" . }}
|
||||
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.affinity }}
|
||||
affinity:
|
||||
{{ toYaml .Values.affinity | 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 }}
|
||||
{{- if not (and .Values.allowEmptyRootPassword (not .Values.mysqlRootPassword)) }}
|
||||
- name: MYSQL_ROOT_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "mysql.secretName" . }}
|
||||
key: mysql-root-password
|
||||
{{- if .Values.mysqlAllowEmptyPassword }}
|
||||
optional: true
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- if not (and .Values.allowEmptyRootPassword (not .Values.mysqlPassword)) }}
|
||||
- name: MYSQL_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "mysql.secretName" . }}
|
||||
key: mysql-password
|
||||
{{- if or .Values.mysqlAllowEmptyPassword (empty .Values.mysqlUser) }}
|
||||
optional: true
|
||||
{{- end }}
|
||||
{{- 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 }}
|
||||
{{- if .Values.extraEnvVars }}
|
||||
{{ tpl .Values.extraEnvVars . | indent 8 }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- name: mysql
|
||||
containerPort: 3306
|
||||
{{- if .Values.mysqlx.port.enabled }}
|
||||
- name: mysqlx
|
||||
port: 33060
|
||||
{{- end }}
|
||||
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 }}
|
||||
12
azure/mysql/templates/initializationFiles-configmap.yaml
Normal file
12
azure/mysql/templates/initializationFiles-configmap.yaml
Normal file
@@ -0,0 +1,12 @@
|
||||
{{- 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 -}}
|
||||
29
azure/mysql/templates/pvc.yaml
Normal file
29
azure/mysql/templates/pvc.yaml
Normal file
@@ -0,0 +1,29 @@
|
||||
{{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
|
||||
kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ template "mysql.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
{{- with .Values.persistence.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app: {{ template "mysql.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 }}
|
||||
51
azure/mysql/templates/secrets.yaml
Normal file
51
azure/mysql/templates/secrets.yaml
Normal file
@@ -0,0 +1,51 @@
|
||||
{{- if not .Values.existingSecret }}
|
||||
{{- if or (not .Values.allowEmptyRootPassword) (or .Values.mysqlRootPassword .Values.mysqlPassword) }}
|
||||
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 }}
|
||||
{{ if not .Values.allowEmptyRootPassword }}
|
||||
mysql-root-password: {{ randAlphaNum 10 | b64enc | quote }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if .Values.mysqlPassword }}
|
||||
mysql-password: {{ .Values.mysqlPassword | b64enc | quote }}
|
||||
{{ else }}
|
||||
{{ if not .Values.allowEmptyRootPassword }}
|
||||
mysql-password: {{ randAlphaNum 10 | b64enc | quote }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ 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 }}
|
||||
11
azure/mysql/templates/serviceaccount.yaml
Normal file
11
azure/mysql/templates/serviceaccount.yaml
Normal file
@@ -0,0 +1,11 @@
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ template "mysql.serviceAccountName" . }}
|
||||
labels:
|
||||
app: {{ template "mysql.fullname" . }}
|
||||
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
||||
release: "{{ .Release.Name }}"
|
||||
heritage: "{{ .Release.Service }}"
|
||||
{{- end }}
|
||||
26
azure/mysql/templates/servicemonitor.yaml
Normal file
26
azure/mysql/templates/servicemonitor.yaml
Normal file
@@ -0,0 +1,26 @@
|
||||
{{- 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 }}
|
||||
42
azure/mysql/templates/svc.yaml
Normal file
42
azure/mysql/templates/svc.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
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.mysqlx.port.enabled }}
|
||||
- name: mysqlx
|
||||
port: 33060
|
||||
targetPort: mysqlx
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
{{- if .Values.metrics.enabled }}
|
||||
- name: metrics
|
||||
port: 9104
|
||||
targetPort: metrics
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ template "mysql.fullname" . }}
|
||||
23
azure/mysql/templates/tests/test-configmap.yaml
Normal file
23
azure/mysql/templates/tests/test-configmap.yaml
Normal file
@@ -0,0 +1,23 @@
|
||||
{{- if .Values.testFramework.enabled }}
|
||||
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 }}
|
||||
{{- end }}
|
||||
59
azure/mysql/templates/tests/test.yaml
Normal file
59
azure/mysql/templates/tests/test.yaml
Normal file
@@ -0,0 +1,59 @@
|
||||
{{- if .Values.testFramework.enabled }}
|
||||
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:
|
||||
{{- if .Values.testFramework.securityContext }}
|
||||
securityContext: {{ toYaml .Values.testFramework.securityContext | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- range .Values.imagePullSecrets }}
|
||||
- name: {{ . }}
|
||||
{{- end}}
|
||||
{{- end }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Release.Name }}-test
|
||||
image: "{{ .Values.testFramework.image }}:{{ .Values.testFramework.tag }}"
|
||||
imagePullPolicy: "{{ .Values.testFramework.imagePullPolicy}}"
|
||||
command: ["/opt/bats/bin/bats", "-t", "/tests/run.sh"]
|
||||
volumeMounts:
|
||||
- mountPath: /tests
|
||||
name: tests
|
||||
readOnly: true
|
||||
{{- if .Values.ssl.enabled }}
|
||||
- name: certificates
|
||||
mountPath: /ssl
|
||||
{{- end }}
|
||||
volumes:
|
||||
- name: tests
|
||||
configMap:
|
||||
name: {{ template "mysql.fullname" . }}-test
|
||||
{{- if .Values.ssl.enabled }}
|
||||
- name: certificates
|
||||
secret:
|
||||
secretName: {{ .Values.ssl.secret }}
|
||||
{{- end }}
|
||||
restartPolicy: Never
|
||||
{{- end }}
|
||||
Reference in New Issue
Block a user