1.6. DNS(Domain Name System)
DNS(Domain Name System)는 www.example.com와 같이 사람이 친숙한 도메인 이름을 네트워크에서 컴퓨터를 식별하는 IP 주소로 변환하는 데 사용되는 계층적이고 분산된 이름 지정 시스템입니다. DNS는 서비스 검색 및 이름 확인에 중요한 역할을 합니다.
OpenShift Container Platform은 DNS 이름으로 서비스에 도달할 수 있도록 기본 제공 DNS를 제공합니다. 이렇게 하면 기본 IP 주소가 변경되어도 안정적인 통신을 유지할 수 있습니다. Pod를 시작하면 Pod가 다른 서비스와 통신할 수 있도록 서비스 이름, IP 주소 및 포트의 환경 변수가 자동으로 생성됩니다.
1.6.1. 주요 DNS 용어 링크 복사링크가 클립보드에 복사되었습니다!
- CoreDNS: CoreDNS는 DNS 서버이며 서비스 및 Pod에 대한 이름 확인을 제공합니다.
-
DNS 이름: 서비스는 네임스페이스와 이름을 기반으로 DNS 이름이 할당됩니다. 예를 들어
기본
네임스페이스에서my-service
라는 서비스에는 DNS 이름이my-service.default.svc.cluster.local
입니다. -
도메인 이름: 도메인 이름은
example.com
과 같은 웹사이트 및 서비스에 액세스하는 데 사용되는 사용자에게 친숙한 이름입니다. -
IP 주소: IP 주소는 통신에 IP를 사용하는 컴퓨터 네트워크에 연결된 각 장치에 할당된 숫자 레이블입니다. IPv4 주소의 예는
192.0.2.1
입니다. IPv6 주소의 예는2001:0db8:85a3:0000:0000:8a2e:0370:7334
입니다. - DNS 서버: DNS 서버는 DNS 레코드를 저장하는 특수 서버입니다. 이러한 레코드는 도메인 이름을 IP 주소에 매핑합니다. 브라우저에 도메인 이름을 입력하면 컴퓨터가 DNS 서버에 연결하여 해당 IP 주소를 찾습니다.
-
확인 프로세스: DNS 쿼리가 DNS 확인기로 전송됩니다. 그런 다음 DNS 확인자는 일련의 DNS 서버에 연결하여 도메인 이름과 연결된 IP 주소를 찾습니다. 확인자는 <
namespace>.
, cluster.local과 같은 일련의 도메인과 함께 이름을 사용합니다. 이 프로세스는 첫 번째 일치 시 중지됩니다. IP 주소는 브라우저로 반환된 다음 IP 주소를 사용하여 웹 서버에 연결합니다.svc.cluster.local
, svc.cluster.local
1.6.2. 예: DNS 사용 사례 링크 복사링크가 클립보드에 복사되었습니다!
이 예에서는 한 Pod 세트에서 프런트 엔드 애플리케이션이 실행 중이며 백엔드 서비스가 다른 Pod 세트에서 실행되고 있습니다. 프런트 엔드 애플리케이션은 백엔드 서비스와 통신해야 합니다. 안정적인 IP 주소와 DNS 이름을 제공하는 백엔드 Pod에 대한 서비스를 생성합니다. 프런트 엔드 Pod는 개별 Pod IP 주소 변경과 관계없이 이 DNS 이름을 사용하여 백엔드 서비스에 액세스합니다.
백엔드 Pod에 대한 서비스를 생성하면 프런트 엔드 Pod에서 백엔드 서비스와 통신하는 데 사용할 수 있는 안정적인 IP 및 DNS 이름 backend-service.default.svc.cluster.local
을 제공합니다. 이 설정으로 개별 Pod IP 주소가 변경되더라도 통신이 일관되고 안정적으로 유지됩니다.
다음 단계에서는 DNS를 사용하여 백엔드 서비스와 통신하도록 프런트 엔드 Pod를 구성하는 방법의 예를 보여줍니다.
백엔드 서비스를 생성합니다.
백엔드 Pod를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백엔드 Pod를 노출하도록 서비스를 정의합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
프런트 엔드 Pod를 생성합니다.
프런트 엔드 Pod를 정의합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod 정의를 클러스터에 적용합니다.
oc apply -f frontend-deployment.yaml
$ oc apply -f frontend-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
백엔드와 통신하도록 프런트 엔드를 구성합니다.
프런트 엔드 애플리케이션 코드에서 백엔드 서비스의 DNS 이름을 사용하여 요청을 보냅니다. 예를 들어 프런트 엔드 애플리케이션이 백엔드 Pod에서 데이터를 가져와야 하는 경우 애플리케이션에 다음 코드가 포함될 수 있습니다.
fetch('http://backend-service.default.svc.cluster.local/api/data') .then(response => response.json()) .then(data => console.log(data));
fetch('http://backend-service.default.svc.cluster.local/api/data') .then(response => response.json()) .then(data => console.log(data));
Copy to Clipboard Copied! Toggle word wrap Toggle overflow