Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 2 additions & 21 deletions workshop/profiling/2-deploy-mysql.sh
Original file line number Diff line number Diff line change
Expand Up @@ -29,27 +29,8 @@ while [[ $(kubectl get pods -l app=mysql -o 'jsonpath={..status.conditions[?(@.t
sleep 1
done

echo Capturing the pod name
export POD_NAME=`kubectl get pod -l app=mysql -o name --no-headers=true`

echo Copying sample data and scripts to the pod
# Copy the sample data files to the database pod for import
kubectl cp ./mysql/users.csv ${POD_NAME:4}:/var/lib/mysql-files/users.csv
kubectl cp ./mysql/organizations.csv ${POD_NAME:4}:/var/lib/mysql-files/organizations.csv
kubectl cp ./mysql/populate_db.txt ${POD_NAME:4}:/tmp/populate_db.txt
kubectl cp ./mysql/populate_db.sh ${POD_NAME:4}:/tmp/populate_db.sh

echo Waiting for the database to be ready
while ! kubectl exec -it ${POD_NAME:4} -- mysqladmin ping -p"$MYSQL_ROOT_PASSWORD" --silent; do
sleep 5
done

# added extra sleep as issues occur when we attempt
# to connect to the database too quickly
sleep 5

echo Creating tables and application data
kubectl exec -it ${POD_NAME:4} -- /tmp/populate_db.sh
echo Creating a config map for the sample data
kubectl create configmap mysql-data --from-file=./mysql/users.csv --from-file=./mysql/organizations.csv --from-file=./mysql/populate_db.txt

echo ""
echo Deployed the MySQL database
Expand Down
29 changes: 29 additions & 0 deletions workshop/profiling/doorgame/doorgame.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,24 @@ spec:
tolerations:
nodeSelector:
terminationGracePeriodSeconds: 5
# use init containers to first ensure the MySQL database is available, then populate it with
# data required by the application
initContainers:
- name: wait-for-mysql
image: busybox:1.31
command: [ 'sh', '-c', 'echo -e "Checking for the availability of the MySQL database"; while ! nc -z mysql 3306; do sleep 1; printf "-"; done; echo -e " >> MySQL database is ready";' ]
- name: populate-app-data
image: mysql:8.3.0
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: db-user-pass
key: MYSQL_ROOT_PASSWORD
volumeMounts:
- name: mysql-data
mountPath: /tmp
command: [ 'sh', '-c', 'echo -e "Populating the application data"; mysql --host=mysql.default.svc.cluster.local --password=''$(MYSQL_ROOT_PASSWORD)'' --local-infile=1 < /tmp/populate_db.txt' ]
containers:
- name: doorgame
image: docker.io/library/doorgame:latest
Expand Down Expand Up @@ -49,6 +67,17 @@ spec:
limits:
cpu: 300m
memory: 4096Mi
volumes:
- name: mysql-data
configMap:
name: mysql-data
items:
- key: users.csv
path: users.csv
- key: organizations.csv
path: organizations.csv
- key: populate_db.txt
path: populate_db.txt
---
apiVersion: v1
kind: Service
Expand Down
6 changes: 4 additions & 2 deletions workshop/profiling/mysql/populate_db.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
SET GLOBAL local_infile=1;

CREATE DATABASE IF NOT EXISTS DoorGameDB;
USE DoorGameDB;

Expand All @@ -7,6 +9,6 @@ CREATE TABLE Users (UserId VARCHAR(20), FirstName VARCHAR(100), LastName VARCHAR
DROP TABLE IF EXISTS Organizations;
CREATE TABLE Organizations (OrgId VARCHAR(256), Name VARCHAR(256), Country VARCHAR(256), Founded INT, NumEmployees INT);

LOAD DATA INFILE '/var/lib/mysql-files/users.csv' INTO TABLE DoorGameDB.Users FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
LOAD DATA LOCAL INFILE '/tmp/users.csv' INTO TABLE DoorGameDB.Users FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' IGNORE 1 ROWS;

LOAD DATA INFILE '/var/lib/mysql-files/organizations.csv' INTO TABLE DoorGameDB.Organizations FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;
LOAD DATA LOCAL INFILE '/tmp/organizations.csv' INTO TABLE DoorGameDB.Organizations FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' IGNORE 1 ROWS;