CKA – INGRESS NETWORKING – 2 Question 7

I noticed that the web page (/wear or /watch) would fail to load if the ingressClass is included:

spec:
ingressClassName: nginx
rules:

  • http:
    paths:
    • backend:
      service:
      name: wear-service
      port:
      number: 8080
      path: /wear
      pathType: Prefix
    • backend:
      service:
      name: video-service
      port:
      number: 8080
      path: /watch
      pathType: Prefix

I got the same failure even i managed to create an ingressClass in the name of nginx

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  labels:
    app.kubernetes.io/component: controller
  name: nginx
  annotations:
    ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: k8s.io/ingress-nginx

it started to work when i simply removed the line of ingressClass, so a bit confused what exactly the ingressClass does, when it is required

OK, I see you’re talking about Lecture 234 (links to labs and lecture are very helpful when asking for support). Let me take a look to see what’s in Q7…

The solutions tab differs a bit from your YAML:

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-wear-watch
  namespace: app-space
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - http:
      paths:
      - path: /wear
        pathType: Prefix
        backend:
          service:
           name: wear-service
           port: 
            number: 8080
      - path: /watch
        pathType: Prefix
        backend:
          service:
           name: video-service
           port:
            number: 8080

You don’t necessarily need to include the ingressClass if the IC is configured to assume that all ingress resources are handled by the default ingress controller. This is the case here; look at the command block from the IC’s deployment, which the lab supplies:

    spec:
      containers:
      - args:
        - /nginx-ingress-controller
        - --publish-service=$(POD_NAMESPACE)/ingress-nginx-controller
        - --election-id=ingress-controller-leader
        - --watch-ingress-without-class=true
        - --default-backend-service=app-space/default-http-backend
        - --controller-class=k8s.io/ingress-nginx
        - --ingress-class=nginx
        - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
        - --validating-webhook=:8443
        - --validating-webhook-certificate=/usr/local/certificates/cert
        - --validating-webhook-key=/usr/local/certificates/key