[kubernetes] 애플리케이션 노출법 Ⅲ (Externalname)

vinca·2023년 11월 25일
0

☸️ kubernetes

목록 보기
16/35

ExternalName이란?

똑같은 ☸️ k8s의 Service의 종류이지만, 기존 노드 포트, 로드밸런서와는 동작하는 방향이 반대이다.

NodePort와 로드 밸런서는 외부에서 클러스터 내부의 서비스에 접근하기 위해 사용한다.
반면 ExternalName은 클러스터 내부의 Pod가 외부 서비스에 도메인 이름을 통해 접근하는 데 사용된다.

그래서 ExternalName은 Service(외부 노출 방법이 맞는가) 대해서 현재도 왈가왈부하고 있다.

ExternalName

클러스터 내부에서 외부 서비스에 접속하는 것을 내부 서비스에 접속하는 것 처럼 보이게 하는(추상화 하는) 방법

Externalname이란 외부 도메인 주소이다.

동작 방식

apiVersion: v1
kind: Service
metadata:
  name: ex-url-1
  namespace: default
spec:
  type: ExternalName
  externalName: google.com

  1. net-tools파드 내부에서 ex-url-1 ExternalName 서비스로 curl ex-url-1를 통한 DNS 요청
  2. ex-url-1서비스는 DNS 요청을 받아, 이를 google.com으로 리다이렉트 하도록 CNAME 값(google.com)을 반환
  3. 파드에서 Goolge 접속
    (도메인 이름이 아닌, DNS를 거쳐 IP로 접속됨)

사용 이유

클러스터 내부의 파드가 외부 서비스에 직접 접속할 때, 네트워크 트래픽 제어, 보안 정책등으로 인해 어려움이 있다.

💘 하지만, ExternalName을 사용하면 클러스터 내부에 마치 동일한 내부서비스에 접속하듯, 외부 도메인에 접속(클러스터 내부에서 외부 서비스를 사용)할 수 있다.

실습

배포된 서비스 ex-url-1 으로 접속하면, sysnet4admin.github.io으로 리다이렉트 될 것이다.

이를 해보도록 하자.

파드 배포

파드 내부에서 ex-url-1 서비스에 쿼리를 보낼 것이므로, 들어갈 파드 하나를 배포하자.

 k run net --image=sysnet4admin/net-tools-ifn

net-tools에서 nslookup을 쓰기 위해서 net 파드를 배포했다.

🧐 넷툴즈(Net-Tools)란?
네트워크 관련 유틸리티를 모아놓은 패키지로, 리눅스 기반 시스템에서 네트워크 관련 작업을 수행하는 데 사용된다.
네트워크 인터페이스 설정, 라우팅 테이블 확인, 네트워크 연결 테스트 등 다양한 기능이 있다.

🧐 nslookup이란?
nslookup은 도메인 이름에 대한 IP 주소 및 도메인 정보를 DNS(Domain Name System) 서버로부터 조회하는 데 사용된다.

nslookup을 통한 도메인 확인

이제 net 파드에 접속하여, nslookup 명령어를 사용해서 도메인 정보가 어떻게 구성되어 있는 지 확인해보자.

k exec net -it -- /bin/bash
nslookup ex-url-1

  • Name: sysnet4admin.github.io
  • Address: 185.199.108.153

sysnet4admin.github.io는 IP 185.199.108.153와 매칭되어있는 것을 확인 할 수 있다.

curl을 통한 접속

curl을 통해서 웹 페이지에 요청(접속)을 보내보자.

 curl ex-url-1

ex-url-1 서비스로 접속하였을 때, sysnet4admin.github.io로 리다이렉트 되어 웹 페이지에서 해당 DNS와 매핑된 IP로 접속한 것과 동일한 결과가 나온다.

FQDN란?

사실, 이 때 도메인의 풀 네임인 ex-url-1.default.svc.cluster.local를 원래는 다 써줘야하나 접속하는 파드와 서비스는 현재 같은 네임스페이스에 위치하므로 앞에 ex-url-1 만을 써도 동작한다.

위와 같은 규칙을 가지는 Domain Name을 FQDN(Fully Qualified Domain Name)이라고 한다.

Reference

https://kimjingo.tistory.com/150

profile
붉은 배 오색 딱다구리 개발자 🦃Cloud & DevOps

0개의 댓글