ingress-nginx 설치 후 ingress를 생성한 뒤 kubectl get ingress
수행 시 생성한 ingress의 'ADDRESS'가 비어있는 문제 발생하였습니다.
$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
test <none> www.test.com 80 2s
ingress-class
값 찾기ingress-controller의 deployment에서 ingress-class
를 찾습니다.
$ kubectl get deploy -n ingress-nginx
NAME READY UP-TO-DATE AVAILABLE AGE
ingress-nginx-controller 1/1 1 1 39m
$ kubectl describe deploy ingress-nginx-controller -n ingress-nginx | grep ingress-class
--ingress-class=nginx
ingress-class
값이 'nginx' 임을 기억합니다.
CLUSTER-IP
찾기이번에는 ingress-controller service의 CLUSTER-IP
를 찾습니다.
$ kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 172.20.86.91 xxxxxxxxxxxxxxxxxxxxxxxxxxx76dd9-406056662.ap-northeast-2.elb.amazonaws.com 80:32120/TCP,443:30024/TCP 45m
ingress-nginx-controller-admission ClusterIP 172.20.138.129 <none> 443/TCP 45m
service의 CLUSTSER-IP
가 '172.20.86.91' 임을 기억합니다.
'ingress-controller' deployment의 ingress-class
값과 service의 CLUSTER-IP
를 알아냈으니 이제 이 두 개를 이용하여 ingress를 생성하겠습니다.
ingress 생성용 yaml 파일은 다음과 같습니다.
$ cat test-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: test
namespace: default
annotations:
kubernetes.io/ingress.class: nginx # 1번에서 찾은 값 입력
spec:
rules:
- host: www.test.com
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: test-svc
port:
number: 80
status:
loadBalancer:
ingress:
- ip: 172.20.86.91 # 2번에서 찾은 값 입력
metadata.annotations.kubernetes.io/ingress.class
와 status.loadbalancer.ingress.ip
를 위에서 찾은 값들로 넣어준 뒤 배포하면 됩니다.
metadata:
annotations:
kubernetes.io/ingress.class: <1번에서_찾은_값>
status:
loadBalancer:
ingress:
- ip: <2번에서_찾은_값>
kubectl apply -f test-ingress.yaml
실행 시 ADDRESS 값이 제대로 출력되는 것을 확인할 수 있습니다.
$ kubectl get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
test <none> www.test.com xxxxxxxxxxxxxxxxxxxxxxxxxxx76dd9-406056662.ap-northeast-2.elb.amazonaws.com 80 61s
개인적으로 공부하며 작성한 글로, 내용에 오류가 있을 수 있습니다.