본문 바로가기

카테고리 없음

ExternalName과 FQDN, CNAME

728x90

ExternalName

ExternalName은 외부 어플리케이션을 K8s 내부 네트웍에 있는 것 처럼 사용하게 해줍니다. NodePort나 LoadBalancer와 다르게 외부에서 클러스터 내부로 접근하기 위한 것이 아니라 클러스터 내부에서 외부로 접근하기 위해 사용 합니다.

 

언제 쓸까요?

 

예를들어 auction-price.co.kr 이라는 도메인을 이용해 쿠버네티스 안쪽에 있는 리소스 뿐만 아니고 쿠버네티스에 Pod형태로 올라오지 않은 어플리케이션도 쿠버네티스의 네트웍을 통해 접근 하고 싶을 때 사용 합니다.

 

apiVersion: v1
kind: Service
metadata:
  name: my-service
  namespace: prod
spec:
  type: ExternalName
  externalName: my.database.example.com

위와 같이 ExternalName을 선언해놓으면 my-service.prod.svc.cluster.local 호스트를 검색했을 때 my.database.example.com을 반환하게 됩니다. 여기에서 my.database.example.com이 CNAME입니다.

 

apiVersion: v1
kind: Service
metadata:
  name: my-service2
  namespace: prod
spec:
  type: ExternalName
  externalName: www.google.com

위와 비슷하게 my-service2를 검색하면 www.google.com이  이 리턴되는 ExternalName Service입니다.

 

kubectl run curl --image=radial/busyboxplus:curl -it
kubectl attach curl -c curl -i -t

위 명령어를 이용해 curl이 되는 busybox를 하나 띄우고 들어가 봅니다.

my-service2로 curl을 날려보면 

google로 연결된 것을 볼 수 있습니다.

 

 

FQDN

FQDN은 Fully Qualified Domain Name의 약자 입니다.

 

쿠버네티스에서 FQDN에 대한 언급이 자꾸 나오는데요 Pod를 찾을 때 같은 Namespace에서 찾으면 PQDN(Partially Qualified Domain Name)만으로도 찾을 수 있지만 Namespace가 달라지만 FQDN으로 찾아야 합니다.

 

 

 

참고

https://suee-b.tistory.com/entry/%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0-%EC%99%B8%EB%B6%80-%EC%84%9C%EB%B9%84%EC%8A%A4-ExternalName

https://kubernetes.io/ko/docs/concepts/services-networking/service/

728x90
블로그 주인장입니다. 원하시는 정보는 얻으셨나요? 이 포스트에서 추가로 필요한 정보가 있으시면 여기에 남겨주세요.