Last week Docker announced a feature that I’ve been looking forward to for a while: –
And sure enough, when I opened Docker for Windows, there was the update: –
Let’s run through the steps to get this setup. First of all, enable the feature in settings: –
Once installed, you’ll be able to confirm that Kubernetes is up and running: –
Awesome stuff, but how do we interact with it?
Now, if this is the first time working with Kubernetes you won’t have to perform the next couple of steps but just to confirm, run the following: –
kubectl config current-context
If your shell cannot find the kubectl command, add
to your PATH environment variable and restart your shell.
If the command outputs anything other than docker-for-desktop you will need to switch to the desktop cluster. To do this run: –
kubectl config use-context docker-for-desktop
In the above screenshot I switched from my mySQLK8sCluster1 (my AKS cluster) to docker-for-desktop and then ran: –
kubectl get nodes
Now we are ready to go and build a pod running SQL Server in Kubernetes on Docker for Windows 🙂
So in C:\temp create a file called sqlserver.yml and drop in: –
apiVersion: apps/v1beta1 kind: Deployment metadata: name: sqlserver labels: app: sqlserver spec: replicas: 1 template: metadata: labels: name: sqlserver spec: containers: - name: sqlserver image: microsoft/mssql-server-linux:latest ports: - containerPort: 1433 env: - name: SA_PASSWORD value: "Testing1122" - name: ACCEPT_EULA value: "Y" --- apiVersion: v1 kind: Service metadata: name: sqlserver-service spec: ports: - name: sqlserver port: 1433 targetPort: 1433 selector: name: sqlserver type: LoadBalancer
This is a very simple .yml file to create one pod running SQL Server. To create the pod: –
kubectl create -f C:\temp\sqlserver.yml kubectl get pods
And boom! There we have a pod running SQL Server.
But how are we going to connect to it? OK, the second part of the yaml file defined a service which exposes an endpoint to allow us to connect. We can see the service by running: –
kubectl get services
The service we created is exposed on localhost (127.0.0.1) so we can use that and the port number specified in the yaml file (1433 in this example).
And boom! We are connected 🙂
We can also remote into the pod and verify that SQL is up and running: –
kubectl exec -it sqlserver /bin/bash ps aux | grep sql
And there’s SQL running in the pod! Cool!
Thanks for reading!