Deploy MySQL Server in Kubernetes using Helm
To install MySQL server in Kubernetes, run
1 |
helm install stable/mysql |
Once install is completed, you will get something like
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
NOTES: MySQL can be accessed via port 3306 on the following DNS name from within your cluster: incendiary-monkey-mysql.default.svc.cluster.local To get your root password run: MYSQL_ROOT_PASSWORD=$(kubectl get secret --namespace default incendiary-monkey-mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo) To connect to your database: 1. Run an Ubuntu pod that you can use as a client: kubectl run -i --tty ubuntu --image=ubuntu:16.04 --restart=Never -- bash -il 2. Install the mysql client: $ apt-get update && apt-get install mysql-client -y 3. Connect using the mysql cli, then provide your password: $ mysql -h incendiary-monkey-mysql -p To connect to your database directly from outside the K8s cluster: MYSQL_HOST=127.0.0.1 MYSQL_PORT=3306 # Execute the following command to route the connection: kubectl port-forward svc/incendiary-monkey-mysql 3306 mysql -h ${MYSQL_HOST} -P${MYSQL_PORT} -u root -p${MYSQL_ROOT_PASSWORD} |
To connect to this MySQL, you need to create a temporary Ubuntu server in Kubernetes as MySQL is only available inside the cluster.
To create a server, run
1 |
kubectl run -i --tty ubuntu --image=ubuntu:18.04 --restart=Never -- bash -il |
Install MySQL client inside this server with
1 2 |
apt update apt install mariadb-client -y |
To connect to MySQL, use the command provided after install, in my case
1 |
mysql -h incendiary-monkey-mysql -u root -p |
You can get password by running
1 |
kubectl get secret --namespace default incendiary-monkey-mysql -o jsonpath="{.data.mysql-root-password}" | base64 --decode; echo |
You can list packages installed using helm with
1 2 3 4 |
boby@sok-01:~$ helm list NAME REVISION UPDATED STATUS CHART APP VERSION NAMESPACE incendiary-monkey 1 Tue Feb 26 22:24:13 2019 DEPLOYED mysql-0.15.0 5.7.14 default boby@sok-01:~$ |
To delete, run
1 2 3 |
boby@sok-01:~$ helm delete incendiary-monkey release "incendiary-monkey" deleted boby@sok-01:~$ |