How do I connect a kubernetes cluster to an external SQL Server database using docker desktop? How do I connect a kubernetes cluster to an external SQL Server database using docker desktop? powershell powershell

How do I connect a kubernetes cluster to an external SQL Server database using docker desktop?


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.

host.docker.internal:1433

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:

ServerName:

my-mssql-service-deployment-name.$_CUSTOMNAMESPACENAME.svc.cluster.local

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:

https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#services


Problem may be in kind of service you put. ClusterIP enable you juest to connect among pods inside cluster.To connect to external service you should just change definition of service kind as NodePort.

Try to change service definition:

#Service created in an attempt to contact external SQL Server DBapiVersion: v1kind: Servicemetadata: name: ext-sql-servicespec: type: NodePort ports: - port: 1433   targetPort: 1433

and execute command:

$ kubectl apply -f your_service_definition_file_name.yaml 

Remember to run this command in proper namespace, where your deployment is configured.

Bad practice is to overlay an environment variable onto the container. And with "docker run" pass that environment variable VALUE to the container.

Of course in context of executing docker command

$ docker 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

Putting the db-password visible is insecure. Use Kubernetes secrets.

More information you can find here: kubernetes-secret.