I need to know how to connect my Kubernetes cluster to an external SQL Server database running in a docker image outside of the Kubernetes cluster.
I currently have two pods in my cluster that are running, each has a different image in it created from asp.net core applications. There is a completely separate (outside of Kubernetes but running locally on my machine localhost,1433) docker image that hosts a SQL Server database. I need the applications in my Kubernetes pods to be able to reach and manipulate that database. I have tried creating a YAML file and configuring different ports but I do not know how to get this working, or how to test that it actually is working after setting it up. I need the exact steps/commands to create a service capable of routing a connection from the images in my cluster to the DB and back.
- Docker SQL Server creation (elevated powershell/docker desktop):
Default1234docker pull mcr.microsoft.com/mssql/server:2017-latestdocker run -d -p 1433:1433 --name sql -v "c:/Temp/DockerShared:/host_mount" -e SA_PASSWORD="aPasswordPassword" -e ACCEPT_EULA=Y mcr.microsoft.com/mssql/server:2017-latest
Default12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#Pods in the clusterapiVersion: v1kind: Podmetadata:name: pod-1labels:app: podnettype: modulespec:containers:- name: container1image: username/image1---apiVersion: v1kind: Podmetadata:name: pod-2labels:app: podnettype: modulespec:containers:- name: container2image: username/image2---#Service created in an attempt to contact external SQL Server DBapiVersion: v1kind: Servicemetadata:name: ext-sql-servicespec:ports:- port: 1433targetPort: 1433type: ClusterIP---apiVersion: v1kind: Endpointsmetadata:name: ext-sql-servicesubsets:- addresses:- ip: (Docker IP for DB Instance)ports:- port: 1433
Ideally I would like applications in my kubernetes cluster to be able to manipulate the SQL Server I already have set up (running outside of the cluster but locally on my machine).
When running from local docker, you connection string is NOT your local machine.
It is the local docker “world”, that happens to be running on your machine.
The above is docker container talking to your local machine. Obviously, the port could be different based on how you exposed it.
If you’re trying to get your running container to talk to sql-server which is ALSO running inside of the docker world, that connection string looks like:
Where $_CUSTOMNAMESPACENAME is probably “default”, but you may be running a different namespace.
my-mssql-service-deployment-name is the name of YOUR deployment (I have it stubbed here)
Note there is no port number here.
This is documented here: