<p>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. </p>

<p>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.</p>

<ul>
<li><p>Docker SQL Server creation (elevated powershell/docker desktop):</p>

<pre><code>docker pull mcr.microsoft.com/mssql/server:2017-latest

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
</code></pre></li>
<li><p>definitions.yaml</p>

<pre><code>#Pods in the cluster
apiVersion: v1
kind: Pod
metadata:
  name: pod-1
  labels:
    app: podnet
    type: module
spec:
  containers:
   - name: container1
     image: username/image1

---

apiVersion: v1
kind: Pod
metadata:
  name: pod-2
  labels:
    app: podnet
    type: module
spec:
  containers:
   - name: container2
     image: username/image2

---
#Service created in an attempt to contact external SQL Server DB
apiVersion: v1
kind: Service
metadata:
 name: ext-sql-service
spec:
 ports:
 - port: 1433
   targetPort: 1433
type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
 name: ext-sql-service
subsets:
 - addresses:
     - ip: (Docker IP for DB Instance)
   ports:
     - port: 1433
</code></pre></li>
</ul>

<p>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).</p>

C1pher6710
<p>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.</p>

<p>host.docker.internal:1433</p>

<p>The above is docker container talking to your local machine.  Obviously, the port could be different based on how you exposed it.</p>

<p>......</p>

<p>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:</p>

<p>ServerName:</p>

<p>my-mssql-service-deployment-name.$_CUSTOMNAMESPACENAME.svc.cluster.local</p>

<p>Where $_CUSTOMNAMESPACENAME is probably "default", but you may be running a different namespace.</p>

<p>my-mssql-service-deployment-name is the name of YOUR deployment (I have it stubbed here)</p>

<p>Note there is no port number here.</p>

<p>This is documented here:</p>

<p><a href="https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#services" rel="nofollow noreferrer">https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#services</a></p>
