Operate sql databases, users and grants.
This is a WIP project and should not at all be used in production at this time. Feel free to validate in CI pipelines.
Currenty, only MySQL is supported.
kubectl create namespace sql-operator
helm repo add sql-operator https://stenic.github.io/sql-operator/
helm install sql-operator --namespace sql-operator sql-operator/sql-operator
The SqlHost
object contains information how the operator should connect to the remote server.
Note that this information should be protected using rbac.
The SqlDatabase
object manages a database on the referenced SqlHost
.
The SqlUser
object manages a user on the referenced SqlHost
.
The SqlGrant
object manages the grant for the referenced SqlUser
on the referenced SqlDatabase
.
The following example registeres a SqlHost
pointing to a shared integration host and creates a database
,
user
and grants
to run integration tests for the application.
---
# Register a host - Not created by the operator
apiVersion: stenic.io/v1alpha1
kind: SqlHost
metadata:
name: integration
spec:
engine: Mysql
dsn: sqloperator:xxxxxxxxxxx@tcp(192.168.1.123:3306)/
---
# Create a database on the host
apiVersion: stenic.io/v1alpha1
kind: SqlDatabase
metadata:
name: application-int-db
spec:
databaseName: myapp_testing
hostRef:
name: integration
cleanupPolicy: Delete
---
# Create a user on the host
apiVersion: stenic.io/v1alpha1
kind: SqlUser
metadata:
name: application-int-user
spec:
credentials:
username: myapp_username
password: myapp_password
hostRef:
name: integration
cleanupPolicy: Delete
---
# Add some grant to the user
apiVersion: stenic.io/v1alpha1
kind: SqlGrant
metadata:
name: application-int-grant
spec:
userRef:
name: application-int-user
databaseRef:
name: application-int-db
grants:
- INSERT
- SELECT
- UPDATE
- DELETE
cleanupPolicy: Delete