EngineJanwaar
EngineJanwaar

Reputation: 450

Minikube Ingress Does not resolve but minikube IP does

I am running a simple pod with an image from local image registry in a minikube cluster on Windows 10. I am also running a simple nodeport service. The container is available when I try accessing it from the browser with <minikube_ip>:30080.

However, now I want to set an ingress controller because I want to set up a domain and not access it using the IP. The ingress works for something simple like a basic nginx pod, but does not work for this pod that I'm trying to use. I was previously using jwilder/nginx-proxy in docker-compose and it had some conf files that needed to be attached in the conf.d directory. However, since I am moving to Kubernetes, I thought to totally omit the conf files and the reverse proxy image.

Now after the hosts fie is updated, the domain is reachable via curl, the domain is also pingable, however, it simply cannot be reached on the browser.

pod-yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    io.kompose.service: api
  name: api
spec:
  replicas: 1
  selector:
    matchLabels:
      io.kompose.service: api
  strategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        io.kompose.service: api
    spec:
      containers:
      - env:
        - name: DEV_PORT
          value: "80"
        image: localhost:5000/api:2.3
        imagePullPolicy: "IfNotPresent"
        name: api
        resources: {}
      restartPolicy: Always
      serviceAccountName: ""
status: {}

Service.yaml

apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: C:\Users\***kompose.exe
      convert
    kompose.version: 1.21.0 (992df58d8)
  creationTimestamp: null
  labels:
    io.kompose.service: api
  name: api
spec:
  selector:
    io.kompose.service: api
  type: NodePort
  ports:
  - name: "http"
    port: 80
    targetPort: 80
    nodePort: 30080

Ingress.yaml

 apiVersion: networking.k8s.io/v1beta1 # for versions before 1.14 use extensions/v1beta1
 kind: Ingress
 metadata:
   name: tls-ingress
 spec:
   tls:
     - secretName: oaky-tls
       hosts: 
         - api.localhost
   rules:
   - host: api.localhost
     http:
       paths:
       - path: /
         backend:
           serviceName: api
           servicePort: 80

I have checked and the TLS secret is available, I am not understanding the issue here and would really appreciate some help.

Upvotes: 0

Views: 944

Answers (1)

EngineJanwaar
EngineJanwaar

Reputation: 450

Solved: Chrome was overlooking the etc hosts file, so I did the following:

  • Switched to Firefox and instantly the URLs were working.
  • Added annotations to denote the class:

kubernetes.io/ingress.class: nginx

  • Added annotations to make sure requests are redirected to ssl

nginx.ingress.kubernetes.io/ssl-redirect: "true"

Upvotes: 1

Related Questions