Nodeport works but ingress doesn't

365 Views Asked by At

I am new to kubernetes and I am trying to set up a web app for production. I tested an nginx app and it works perfectly in both nodeport and ingress. When I setupped my web app exposing it using nodeport it works but when I expose it via ingress it doesn't work. I know that I deleted all nginx app deployment and service and ingress but my web app is still the same (WORK via NODEPORT AND NOT via INGRESS). Any help getting this to work is appreciated.

THIS IS THE NGINX YAML CODE (WORK via BOTH NODEPORT AND INGRESS)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:stable
          imagePullPolicy: Always
          ports:
          - containerPort: 80
            name: web
            protocol: TCP
          readinessProbe:
            httpGet:
              port: web
              path: /

---
apiVersion: v1
kind: Service
metadata:
  name: nginx-nodeport
  namespace: default
spec:
  type: NodePort
  selector:
    # app: nginx
    app: mruser-dev
  ports:
    - name: web
      port: 80
      targetPort: web
      nodePort: 31122
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: nginx-nodeport 
            port:
              number: 80

THIS IS MY WEB APP CODE (WORK via NODEPORT AND NOT via INGRESS)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mywebapp-dev
spec:
  replicas: 2
  selector:
    matchLabels:
      app: mywebapp-dev
  template: 
    metadata:
      labels:
        app: mywebapp-dev
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/path: /metrics
        prometheus.io/port: "80"
        scheduler.alpha.kubernetes.io/affinity: >
          {
            "nodeAffinity": {
              "requiredDuringSchedulingIgnoredDuringExecution": {
                "nodeSelectorTerms": [
                  {
                    "matchExpressions": [
                      {
                        "key": "kubernetes.io/hostname",
                        "operator": "In",
                        "values": ["server-node-1"]
                      }
                    ]
                  }
                ]
              }
            }
          }
    spec:
      volumes:
        - name: logs
          emptyDir: {}
        - name: cache
          emptyDir: {}
        - name: testing
          emptyDir: {}
        - name: sessions
          emptyDir: {}
        - name: views
          emptyDir: {}
        - name: mywebapp-dev-nfsvolume
          nfs:
            server: 10.0.0.20
            path: /var/www/html/misteruser-dev
        - name: mywebapp-nginx-nfsvolume
          nfs:
            server: 10.0.0.20
            path: /var/www/nginx
      securityContext:
        fsGroup: 82
      initContainers:
        - name: database-migrations
          image: mywebapp-dev-laravel-fpm:8.1-fpm-alpine
          imagePullPolicy: Never
          envFrom:
            - configMapRef:
                name: mywebapp-dev-laravel
            - secretRef:
                name: mywebapp-dev-laravel
          volumeMounts: 
            - name: mywebapp-dev-nfsvolume
              mountPath: /var/www/html/
          command:
            - "php"
          args:
            - "artisan"
            - "migrate"
            - "--force"
      containers:
        - name: nginx
          imagePullPolicy: Never
          image: mywebapp-dev-laravel-nginx:stable-alpine          
          volumeMounts:
            - name: mywebapp-nginx-nfsvolume
              mountPath: /etc/nginx/conf.d/
          resources:
            limits:
              cpu: 200m
              memory: 50M
          ports:
          - containerPort: 80
            name: web            
            protocol: TCP
          readinessProbe:
            httpGet:
              port: web
              path: /
        - name: fpm
          imagePullPolicy: Never
          envFrom:
            - configMapRef:
                name: mywebapp-dev-laravel
            - secretRef:
                name: mywebapp-dev-laravel
          securityContext:
            runAsUser: 82
            readOnlyRootFilesystem: true
          volumeMounts:
            - name: logs
              mountPath: /var/www/html/storage/logs
            - name: cache
              mountPath: /var/www/html/storage/framework/cache
            - name: sessions
              mountPath: /var/www/html/storage/framework/sessions
            - name: views
              mountPath: /var/www/html/storage/framework/views
            - name: testing
              mountPath: /var/www/html/storage/framework/testing
            - name: mywebapp-dev-nfsvolume
              mountPath: /var/www/html/
          resources: 
            limits:
              cpu: 500m
              memory: 200Mi
          image: mywebapp-dev-laravel-fpm:8.1-fpm-alpine
          ports:
            - containerPort: 9000

---
apiVersion: v1
kind: Service
metadata:
  name: mywebapp-dev-svc
  namespace: default
spec:
  type: NodePort
  selector:
    app: mywebapp-dev
  ports:
    - name: web
      port: 80
      targetPort: 80
      nodePort: 31112
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: mywebapp-nginx-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: mywebapp-dev-svc
            port:
              number: 80
0

There are 0 best solutions below