Connect non-dockerised application to kubenetes pos

5/14/2018

I have non deckerised application that needs to connect to dockerised application running inside kubernetes pod.

Given that pods may died and came again with different ip address, how my application can detect this? any way to assign a hostname that redirect to whatever existing pods?

-- Suleiman Abualrob
devops
docker
kubernetes

2 Answers

5/15/2018

In addition to Bal Chua’s work and suggestions from silverfox, I would like to show you the method I used for Kubernetes to expose and manage incoming traffic from the outside:

Step 1: Deploy an application

In this example, Kubernetes sample hello application will run on port 8080/tcp

kubectl run web --image=gcr.io/google-samples/hello-app:1.0 --port=8080

Step 2: Expose your Deployment as a Service internally

This command tells Kubernetes to expose port 8080/tcp to interact with the world outside:

kubectl expose deployment web --target-port=8080 --type=NodePort

After, please check if it exposed running command:

kubectl get service web

Step 3: Manage Ingress resource

Ingress sends traffic to a proper service working inside Kubernetes.

Open a text editor and then create a file basic-ingress.yaml

with content:

apiVersion:  
extensions/v1beta1  
kind: Ingress  
metadata:      
  name: basic-ingress  
spec:      
  backend:
    serviceName: web
    servicePort: 8080

Apply the configuration:

kubectl apply -f basic-ingress.yaml

and that's all. It is time to test. Get the external IP address of Kubernetes installation:

kubectl get ingress basic-ingress

and run web browser with this address to see hello application working.

-- d0bry
Source: StackOverflow

5/14/2018

You will have to use kubernetes service. Service gives you a way to talk to your pods with static Ip and dns (if you're client app is inside the cluster).

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

You can do it in several ways:

  1. Easiest: Use kubernetes service with type: NodePort. Then you can access the pod using http://[nodehost]:[nodeport]
  2. Use kubernetes ingress. See this link for more details (https://kubernetes.io/docs/concepts/services-networking/ingress/)
  3. If you are running in the cloud like aws, azure or gce, you can use kubernetes service type LoadBalancer.
-- Bal Chua
Source: StackOverflow