TroubleShooting

[Troubleshoot][Kubernetes] error="ingress does not contain a valid IngressClass"

[앙금빵] 2022. 12. 19. 00:23

개요

ingress controller 설치 이후 ingress와 ingress-controller 간에 연동 문제 발생, Ingress controller 서비스 주소가 ingress의 Address 속성값에 할당이 되어야 하는데 할당되지 않고 있음

 

에러

I1218 15:07:15.095687 7 store.go:426] "Ignoring ingress because of error while validating ingress class" ingress="john/kiada-example-com" error="ingress does not contain a valid IngressClass"

 

 

Sol 1.IngressClass를 별도로 생성

 

Step 1. IngressClass 리소스 생성

인그레스클래스를 생성하자. (이미 인그레스 클래스가 존재하는지 사전에 확인하자. kubectl get ingressclass -A -o yaml )

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx
spec:
  controller: k8s.io/ingress-nginx

 

Step 2 — 인그레스 업데이트

인그레스 annotation에 nginx.ingress.kubernetes.io/rewrite-target: / 를 추가하고 업데이트를 진행하자.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
  - http:
      paths:
      - path: /testpath
        pathType: Prefix
        backend:
          service:
            name: test
            port:
              number: 80

 

Sol 2. 디폴트 Ingress Class 설정

인그레스 리소스 안에 인그레스클래스 이름을 넣는 방법 대신 ingressClass annotation 속성값에 ingressclass.kubernetes.io/is-default-class 항목을 "true"로 설정하자.

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

 

결과

조치 이후 Ingress controller IP가 Ingress에 할당된 것을 확인할 수 있다.

 


참조

https://sam-thomas.medium.com/kubernetes-ingressclass-error-ingress-does-not-contain-a-valid-ingressclass-78aab72c15a6