New to KubeDB? Please start here.
Before You Begin
- You should be familiar with the following
KubeDB
concepts:
What is Schema Manager
Schema Manager
is a Kubernetes operator developed by AppsCode that implements multi-tenancy inside KubeDB provisioned database servers like MySQL, MariaDB, PosgreSQL and MongoDB etc. With Schema Manager
one can create database into specific database server. An user will also be created with KubeVault and assigned to that database. Using the newly created user credential one can access the database and run operations into it. One may pass the database server reference, configuration, user access policy through a single yaml and Schema Manager
will do all the task above mentioned. Schema Manager
also allows initializing the database and restore snapshot while bootstrap.
How MySQL Schema Manager Process Works
The following diagram shows how MySQL Schema Manager process worked. Open the image in a new tab to see the enlarged version.
The process consists of the following steps:
At first the user will deploy a
MySQLDatabase
object.Once a
MySQLDatabase
object is deployed to the cluster, theSchema Manager
operator first verifies the object by checking theDouble-OptIn
.After the
Double-OptIn
verificationSchema Manager
operator checks in theMySQL
server if the target database is already present or not. If the database already present there, then theMySQLDatabase
object will be immediately denied.Once everything is ok in the
MySQL
server side, then the target database will be created and an entry for that will be entered in thekubedb_system
database.After successful database creation, the
Vault
server creates a user in theMySQL
server. The user gets all the privileges on our target database and its credentials are served with a secret.The user credentials secret reference is patched with the
MySQLDatabase
object yaml in the.status.authSecret.name
field.If there is any
init script
associated with theMySQLDatabase
object, it will be executed in this step with theSchema Manager
operator.The user can also provide a
snapshot
reference for initialization. In that caseSchema Manager
operator fetches necessaryappbinding
,secrets
,repository
and then theStash
operator takes action with all the information.
In the next doc, we are going to show a step by step guide of using MySQL Schema Manager with KubeDB.