We were stuck in an issue to bring up a Java application dependent on MySQL DB. The application was running on AKS Pod and trying to connect to Azure Database for MySQL. This was a tricky set up as everything was within the virtual Network and public access denied.
The team thought its connectivity issue, but to isolate that we did 2 quick tests.
- Spin up a Busybox Pod to do nslookup.
As we were using Private endpoints to connect to DB, it was important to check if name resolution is working.
kubectl run busybox --image=busybox:1.28 --rm -it -- nslookup <MySQL-SererName>.mysql.database.azure.com
- Bring up MySQL client Pod to isolate authentication/authorization issues. Send test queries to MySQL by running a temporary container with the mysql:5.7 image and running the MySQL client binary.
Simple query to check the status.
kubectl run mysql-client --image=mysql:5.7 -i --rm --restart=Never --\
mysql -h <MySQL-SererName>.mysql.database.azure.com -u <Username>@<MySQL-SererName> -p<password> <<EOF
PS: It is not recommended to pass credentials in the command. Will write a follow up blog using K8s secrets