title | linktitle | description | keywords | menu | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Integrating mysql clusters into your own helm charts |
Integration |
How to integrate the MySQL operator with your application. |
|
|
After cluster creation, you can update the provided secret with a new field named DB_CONNECT_URL
that contains a DSN to connect to the writable
cluster endpoint. You can check the _helper.tpl
file for more insights.
The MySQL operator provides 3 services to access the nodes:
<cluster_name>-mysql-master
is the service that points to the master node and this endpoint
should be used for writes. This service is usually used to construct the DSN.<cluster_name>-mysql
is the service that routes traffic to all healthy nodes from the
cluster. You should use this endpoint for reads.mysql
is the service used internally to access all nodes within a namespace. You can use this
service to access a specific node (e.g. <cluster_name>-mysql-0.mysql.<namespace>
)We use helm to deploy our application into Kubernetes, so we updated our charts to use the MySQL operator to provide one cluster per application.
Usually a cluster of MySQL is needed alongside with an application, that's why we provide a Helm
chart for easy deployment of a MySQL cluster. The chart can be found in presslabs
chart repository and
installed like the operator. Below is illustrated how this chart can be integrated with your
application to provision a MySQL cluster.
In your chart add in requirements.yaml
under dependencies
section the following:
dependencies:
- name: mysql-cluster
version: 0.2.0
repository: https://presslabs.github.io/charts
condition: mysql.enabled
alias: mysql
Once dependencies are configured run helm dependency update
to fetch related charts.
More information about chart requirements can be found in the official documentation.
You can configure the cluster by providing values under the mysql
key. A comprehensive description
can be found in the chart values.yaml
file.
mysql:
enabled: true
rootPassword: <secure>
appUser: <user name>
appPassword: <user password>
appDatabase: <app database>
In your deployment add an environment variable that point to the DB_CONNECT_URL
field from cluster secret named {{ include "mysql-cluster.secretName" . }}
.
For example in the deployment.yaml
:
spec:
replicas: {{ .Values.replicaCount }}
template:
spec:
containers:
- name: {{ .Chart.Name }}
...
env:
- name: DB_CONNECT_URL
valueFrom:
secretKeyRef:
name: {{ include "mysql-cluster.secretName" . }}
key: DB_CONNECT_URL
Now just modify your app to connect to the DSN that is provided into DB_CONNECT_URL
environment variable.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。