Unable to connect to pod using ingress

6/30/2019

I am trying to configure one python flask application running in port 5000 in kubernetes. I have created the deployment, service and ingress. It is not working using the domain name which is added to hosts file, but python application is working when i have tried from port forwarding.

I have tried a lot changing the configurations, but no thing worked.

Please let me know your suggestions.

kind: Deployment
metadata:
  name: web-app
  namespace: production
  labels:
    app: web-app
    platform: python
spec:
  replicas:
  selector:
    matchLabels:
      app: web-app
  template:
    metadata:
      labels:
        app: web-app
    spec:
      containers:
      - name: web-app
        image: XXXXXX/XXXXXX:XXXXXX
        imagePullPolicy: Always
        ports:
        - containerPort: 5000
apiVersion: v1
kind: Service
metadata:
  name: web-app
  namespace: production
spec:
  selector:
    app: web-app
  ports:
  - protocol: TCP
    port: 5000
    targetPort: 5000
  selector:
    run: web-app
kind: Ingress
metadata:
  name: name-virtual-host-ingress
  namespace: production
spec:
  rules:
  - host: first.bar.com
    http:
      paths:
      - backend:
          serviceName: web-app
          servicePort: 5000

kubectl get all -n production

NAME                          READY   STATUS    RESTARTS   AGE
pod/web-app-559df5fc4-67nbn   1/1     Running   0          24m

NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/web-app   ClusterIP   10.100.122.15   <none>        5000/TCP   24m

NAME                      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/web-app   1         1         1            1           24m

NAME                                DESIRED   CURRENT   READY   AGE
replicaset.apps/web-app-559df5fc4   1         1         1       24m

kubectl get ing -n production

NAME                        HOSTS           ADDRESS   PORTS   AGE
name-virtual-host-ingress   first.bar.com             80      32s

kubectl get ep web-app -n production

NAME      ENDPOINTS   AGE
web-app   <none>      23m
-- JithZ
eks
kubernetes
kubernetes-ingress
kubernetes-pod

1 Answer

6/30/2019

You need to run a Ingress Controller. The Prerequisites part of https://kubernetes.io/docs/concepts/services-networking/ingress/#prerequisites says:

You must have an ingress controller to satisfy an Ingress. Only creating an Ingress resource has no effect.

One example would be https://kubernetes.github.io/ingress-nginx/deploy/. Be sure to run the Mandatory Command and the one that pertains to your provider. You can then get the service to see the assigned IP:

kubectl get -n ingress-nginx svc/ingress-nginx
-- Andy Shinn
Source: StackOverflow