cmmarslender / mysql-init

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MySQL Init Container

Creates a database and user in a given database

Secret with root db creds

kubectl create secret generic dbrootcreds \
--from-literal=rootUser="root" \
--from-literal=rootHost="%" \
--from-literal=rootPassword="password"

Secret with the main user creds

kubectl create secret generic dbusercreds \
--from-literal=DB_USER="mydbuser" \
--from-literal=DB_HOST="example-mysql-cluster" \
--from-literal=DB_PASSWORD="password" \
--from-literal=DB_NAME="mydb"

Creates the db cluster

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: example-mysql-cluster
spec:
  secretName: dbrootcreds
  tlsUseSelfSigned: true
  instances: 3
  router:
    instances: 1

Example deployment that uses the init container and then runs some other arbitrary service

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-deployment
  labels:
    app: example
spec:
  replicas: 1
  selector:
    matchLabels:
      app: example
  template:
    metadata:
      labels:
        app: example
    spec:
      initContainers:
        - name: initdb
          image: ghcr.io/cmmarslender/mysql-init
          envFrom:
            - secretRef:
                name: dbrootcreds
            - secretRef:
                name: dbusercreds
      containers:
        - name: debugger
          image: busybox
          command: ['sleep', '3600']
          envFrom:
            - secretRef:
                name: dbusercreds

About

License:Apache License 2.0


Languages

Language:Shell 93.9%Language:Dockerfile 6.1%