Kubernetes nginx ingress controller throws error when trying to obtain endpoints for service

1/29/2020

I am trying to set micro-services on Kubernetes on Google Cloud Platform. I've created a deployment, clusterIp and ingress configuration files.

First after creating a cluster, I run this command to install nginx ingress.

helm install my-nginx stable/nginx-ingress --set rbac.create=true

I use helm v3.

Then I apply deployment and clusterIp configurations.

deployment and clusterIp configurations:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-production-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      component: app-production
  template:
    metadata:
      labels:
        component: app-production
    spec:
      containers:
        - name: app-production
          image: eu.gcr.io/my-project/app:1.0
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: app-production-cluser-ip-service
spec:
  type: ClusterIP
  selector:
    component: app-production
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP

My ingress config is:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-service
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /
            backend:
              serviceName: app-production-cluster-ip-service
              servicePort: 80

I get this error from Google Cloud Platform logs withing ingress controller:

Error obtaining Endpoints for Service "default/app-production-cluster-ip-service": no object matching key "default/app-production-cluster-ip-service" in local store

But when I do kubectl get endpoints command the output is this:

NAME                                          ENDPOINTS                     AGE
app-production-cluser-ip-service              10.60.0.12:80,10.60.1.13:80   17m

I am really not sure what I'm doing wrong.

-- madeye
google-cloud-platform
google-kubernetes-engine
kubernetes
kubernetes-ingress
nginx-ingress

1 Answer

1/29/2020

The service name mentioned in the ingress not matching. Please recreate a service and check

    apiVersion: v1
    kind: Service
    metadata:
      name: app-production-cluster-ip-service
    spec:
      type: ClusterIP
      selector:
        component: app-production
      ports:
        - port: 80
          targetPort: 80
          protocol: TCP
-- Suganya G
Source: StackOverflow