1.2.2.2.3 NGINX Ingress Controller에서 HOST 기반 라우팅(feat. OCI DNS)
Ingress Controller에서 도메인 네임을 기반하여 라우팅하기 위해 OCI DNS를 사용하는 방법을 확인합니다.
OCI DNS 서비스 사용하기
이미 구입한 Domain Name이 있다는 전제하에 설정하는 과정입니다.
테스트를 위해 GoDaddy 사이트에서 구매한 도메인 네임(thekoguryo.xyz)을 사용하였습니다.
11.1 Domain Name과 매핑하기를 통해 사전에 설정된 상태를 기준으로 진행합니다.
HOST 기반 라우팅 테스트
HOST 이름에 따라 라우팅 서비스를 달리하는 경우입니다.
-
테스트를 위한 샘플 앱을 배포합니다. PATH 기반 라우팅 때 사용한 앱을 그대로 사용합니다.
배경 색깔이 다른 두 개의 웹페이지를 배포합니다.
kubectl create deployment nginx-blue --image=ghcr.io/thekoguryo/nginx-hello:blue kubectl expose deployment nginx-blue --name nginx-blue-svc --port 80 kubectl create deployment nginx-green --image=ghcr.io/thekoguryo/nginx-hello:green kubectl expose deployment nginx-green --name nginx-green-svc --port 80
-
ingress 설정 YAML(
host-basic.yaml
)을 작성합니다.- blue.ingress.thekoguryo.xyz 요청은 nginx-blue-svc 로 라우팅
- green.ingress.thekoguryo.xyz 요청은 nginx-green-svc로 라우팅
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ingress-host-basic spec: ingressClassName: nginx rules: - host: blue.ingress.thekoguryo.xyz http: paths: - path: / pathType: Prefix backend: service: name: nginx-blue-svc port: number: 80 - host: green.ingress.thekoguryo.xyz http: paths: - path: / pathType: Prefix backend: service: name: nginx-green-svc port: number: 80
-
작성한
host-basic.yaml
을 배포합니다.$ kubectl apply -f host-basic.yaml ingress.networking.k8s.io/ingress-host-basic created $ kubectl get ingress NAME CLASS HOSTS ADDRESS PORTS AGE ingress-host-basic nginx blue.ingress.thekoguryo.xyz,green.ingress.thekoguryo.xyz 152.xx.xxx.xxx 80 44s
OCI DNS 서비스 설정
blue.ingress.thekoguryo.xyz, green.ingress.thekoguryo.xyz 주소가 Ingress Controller의 IP로 가도록 DNS 정보에 추가가 필요합니다. *.ingress.thekoguryo.xyz에 대한 정보를 추가합니다.
-
OCI 콘솔에 로그인합니다.
-
좌측 상단 햄버거 메뉴에서 Networking > DNS Management > Zones로 이동합니다.
-
생성해둔 Zone으로 이동합니다.
-
Manage records를 클릭하여 레코드를 추가해 줍니다.
-
Publish changes를 클릭하여 반영합니다.
-
반영결과
DNS 테스트
-
nslookup 툴로 등록한 DNS를 테스트 해봅니다. 잘 등록된 것을 알 수 있습니다.
$ nslookup *.ingress.thekoguryo.xyz Server: 127.0.0.11 Address: 127.0.0.11#53 Non-authoritative answer: Name: *.ingress.thekoguryo.xyz Address: 152.69.xxx.xxx
HOST 기반 라우팅 테스트
-
ingress rule에서 적용한 host 명으로 각각 접속하여 결과를 확인합니다.
-
blue.ingress.thekoguryo.xyz 요청
-
green.ingress.thekoguryo.xyz 요청
-
와일드 카드 주소로 DNS에 등록한 Ingress Controller의 Load Balancer를 거쳐 접속한 host의 FQDN에 따라 대상 서비스에 라우팅 되는 것을 확인할 수 있습니다.
-
이 글은 개인으로서, 개인의 시간을 할애하여 작성된 글입니다. 글의 내용에 오류가 있을 수 있으며, 글 속의 의견은 개인적인 의견입니다.