클러스터 외부 서비스인 LB와 ExternalName에 대해 알아보겠습니다.
쿠버네티스 클러스터에서 웹의 프론트엔드 서비스를 실행하는 파드일 경우 쿠버네티스 클러스터의 외부로 노출시켜 접근이 가능하도록 구성해야 합니다.
쿠버네티스 클러스터 외부에서 접근 가능한 서비스에 대해 알아 보겠습니다.
Lb (Load Balance)
Loadbalace + NodePort + ClusterIP
- 클러스터 외부의 로드 밸런서를 사용하여 외부에서 접근 가능 하도록 함.
- 외부 로드 밸런서로 접근하면 서비스를 통해 파드로 리다이렉션 함
- CSP나 MetalLb에서 지원해 줌
- 클라우드의 관리형 쿠버네티스 서비스 or MetalLB를 사용하지 않는 경우, 외부 로드 밸런서가 프로비저닝 되지 않기 때문에 외부 IP 즉, LB IP가 할당되지 않은 상태로 보고됨
- LoadBalancer 서비스 타입은 단지 한개의 내부 서비스를 외부 사용자들에게 접근 가능하도록 만드는 일을 담당
- 대부분의 경우 일반적으로는 간단한 서비스에도 Ingress만 사용하길 권장
kind: Service
apiVersion: v1
metadata:
name: service-test
spec:
type: LoadBalancer
selector:
app: service_test_pod
ports:
- port: 80
targetPort: http
ExternalName
- ExternalName 서비스는 내부 파드가 외부의 특정 FQDN에 쉽게 접근하기 위한 서비스
- 즉, 쿠버네티스 클러스의 coredns 서비스가 특정 FQDN에 대한 CNAME (서비스의 FQDN)을 제공함에 따라 해당 CNAME을 이용하여 쉽게 통신할 수 있음. 심지어 접속하기 위한 외부 FDQN 주소가 바뀌더라도, CNAME은 그대로 유지할 수 있어 애플리케이션을 다시 작성하거나 빌드하지 않아도 됨.
- 예를 들어 구글지도 api 주소가 변경된다고 하면 이전 주소를 참조하고 있던 모든 애플리케이션은 주소 수정을 해야하지만
- externalName 서비스를 사용했다면 CNAME은 그대로 유지할 수 있어서 애플리케이션을 다시 작성하거나 빌드하지 않아도 됨
FQDN (Fully Qualified Domain Name) 이란?
"전체 도메인 네임" "절대 도메인 네임" 으로 불리는 도메인 전체 이름 표기 방식을 의미
example)
www.tistory.com
btcd.tistory.com
위 두 주소 중 www 와 btcd 부분 → "호스트" / tistory.com 부분 → "도메인"
호스트와 도메인을 함께 명시하여 전체 경로를 모두 표기한 것이 FQDN
PQDN(Partially Qualified Domain Name)이란?
FQDN와 달리 전체 경로명이 아닌 하위 일부 경로만으로 식별 가능한 이름을 의미
쿠버네티스의 경우 다른 Pod를 찾을 시 동일 네임스페이스 안에서 찾을 때는 PQDN을 사용할 수 있지만,
네임스페이스 외부에서 찾을 때는 FQDN를 사용해야 함
'INFRA > Operation' 카테고리의 다른 글
쿠버네티스 이론 STEP5 Service (3) Ingress - 1 (0) | 2022.08.18 |
---|---|
Terraform Script 파일 사용 웹 설치 방법 - AWS (0) | 2022.08.09 |
쿠버네티스 STEP3 Service, NodePort, ClusterIP (0) | 2022.08.05 |
Terraform Script.sh 사용 설치 방법 - Azure (0) | 2022.08.04 |
Terraform & Ansible 연동 효과 (0) | 2022.07.26 |
댓글