Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ScientaNL/k8s-proxysql-cluster
Kubernetes ProxySQL Cluster
https://github.com/ScientaNL/k8s-proxysql-cluster
cluster helm-chart kubernetes proxysql
Last synced: 2 months ago
JSON representation
Kubernetes ProxySQL Cluster
- Host: GitHub
- URL: https://github.com/ScientaNL/k8s-proxysql-cluster
- Owner: ScientaNL
- Archived: true
- Created: 2018-11-27T12:31:10.000Z (almost 6 years ago)
- Default Branch: develop
- Last Pushed: 2023-05-16T08:44:50.000Z (over 1 year ago)
- Last Synced: 2024-06-02T23:40:56.836Z (4 months ago)
- Topics: cluster, helm-chart, kubernetes, proxysql
- Language: Shell
- Homepage:
- Size: 131 KB
- Stars: 31
- Watchers: 10
- Forks: 20
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# k8s-proxysql-cluster
Container to run proxysql in cluster mode in kubernetes.## Usage
By default te the container acts as a normal proxysql instance.
To enable cluster mode the following is needed.#### Service
the container uses a service to discover if there are already master nodes up.
This service can be found in
```
/k8s/proxysql.service.yaml
```
use the following command to use the service in kubernetes
```
kubectl create -f ./k8s/proxysql.service.yaml
```#### Statefulset
To deploy the actual nodes a statefulset should be added to the kubernetes cluster
This statefulset can be found in
```
/k8s/proxysql.statefulset.yaml
```
use the following command to use the statefulset in kubernetes
```
kubectl create -f ./k8s/proxysql.statefulset.yaml
```## Helm Install
You can install using the helm repository using the following command:
```bash
helm install --name db-proxy deploy/charts/proxysql-cluster
```| Parameter | Description | Default |
|----|-----------|-------------|
| `image.repository` | `proxysql` image repo | `scienta/k8s-proxysql-cluster` |
| `image.tag` | `proxysql` image tag | `1.0.0` |
| `numReplicas` | Number of replicas to create in StatefulSet | `3` |
| `proxysql.admin.username` | Admin username for `proxysql` | `admin` |
| `proxysql.admin.password` | Admin password for `proxysql` | `admin` |
| `proxysql.admin.iface` | Listen network for `proxysql` service | `0.0.0.0` |
| `proxysql.admin.port` | Listen port for `proxysql` service | `6032` |
| `proxysql.clusterAdmin.username` | Cluster user username used by `proxysql` nodes to sync | `cluster1` |
| `proxysql.clusterAdmin.password` | Cluster user password used by `proxysql` nodes to sync | `secret1pass` |
| `proxysql.queryCacheSizeMb` | (Optional) Query cache size | `nil` |
| `proxysql.dataDir` | Directory to store `proxysql` tables, etc. | `/var/lib/proxysql` |
| `proxysql.webEnabled` | Enable `proxysql` web dashboard | `true` |
| `mysql.iface` | Listen network for `mysql` service connections | `0.0.0.0` |
| `mysql.port` | Listen port fo `mysql` service connections | `3306` |
| `mysql.monitor.username` | Monitor username on MySQL instances for `proxysql` health checks | `monitor` |
| `mysql.monitor.password` | Monitor password on MySQL instances for `proxysql` health checks | `monitor` |
| `mysql.admin.username` | Root / admin username on MySQL instances | `root` |
| `mysql.admin.password` | Root / admin password on MySQL instances | `insecurepassword` |
| `cronjob.enabled` | Enable k8s `CronJob` to set the default hostgroup to the backend having the least # databases | `false` |
| `resources` | CPU / Memory Limits and Requests | `{}` |
| `tolerations` | Pod tolerations | '{}' |## Workings
When the container is run with the --k8s-cluster argument the following happens:
- the container checks if there is a node available at the proxysql service
- If no node is available this container becomes the first master node of the cluster
- The node deletes the proxysql server from the proxysql_servers table
- The node adds its own ip to its proxysql_servers table- Else the node wil join the existing master nodes
- The node's proxysql_servers table is synced with that of the existing master nodes
- The node adds its own ip to the proxysql_servers table of the node exposed by the proxysql service.
- The node deletes the proxysql service from the proxysql_servers table
- The cluster is up and running!