Ingress status에 값이 없을 경우

최대 1 분 소요

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