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에 할당된 것을 확인할 수 있다.