Ingress status에 값이 없을 경우
Ingress status에 값이 없다.
argocd
를 이용해서, 리소스들을 동기화 했는데, ingress
부분 계속 Processing
이라고 나오이고 끝날 생각을 안한다.
ingress
의 상태를 보니 다음과 같았다.
$ kubectl get ingresses dobby -o yaml
...
status:
loadBalancer: {}
뭔가 저기 status
에 값이 할당되어야 할거 같은 느낌이 들었지만, 왜 안되어 있는지 이유는 알지 못했다.
그래서 사용중인 nginx-ingress-controller
의 설정을 살펴보았다.
...
containers:
- name: nginx-ingress-controller
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.0
args:
- /nginx-ingress-controller
- --default-backend-service=$(POD_NAMESPACE)/default-http-backend
- --configmap=$(POD_NAMESPACE)/nginx-configuration
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
- --publish-service=$(POD_NAMESPACE)/ingress-nginx
- --annotations-prefix=nginx.ingress.kubernetes.io
...
--publish-service
플래그를 사용해서, ingress-nginx
서비스의 IP를 읽어와서 업데이트 해주는거 같은데,
불행히도 해당 ingress-nginx
서비스가 LoadBalancer
이 아니라서 IP가 존재하지 않는다.
그래서 --publish-service
플래그를 삭제하고, --publish-service
플래그를 사용해서 직접 명시해주었다.
...
containers:
- name: nginx-ingress-controller
image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.0
args:
- /nginx-ingress-controller
- --default-backend-service=$(POD_NAMESPACE)/default-http-backend
- --configmap=$(POD_NAMESPACE)/nginx-configuration
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
- --publish-status-address=10.xx.yy.zz
- --annotations-prefix=nginx.ingress.kubernetes.io
...
변경사항을 반영하고, ingress
의 상태를 조회를 해보니, 정상적으로 상태값이 반영되었다.
$ kubectl get ingresses dobby -o yaml
...
status:
loadBalancer:
ingress:
- ip: 10.xx.yy.zz
ingress
의 상태값이 반영된 후, argocd
도 정상적으로 작동하였다.
참고
- https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/static-ip/README.md