다중 환경을 위한 자동 DNS 관리 기능을 갖춘 Kubernetes 클러스터 배포
내부 및 외부 환경(예: 개발, 테스트 및 운영)에 대한 클라우드 DNS 전략을 관리하는 것은 자동화된 솔루션 없이 복잡해지고 시간이 많이 소요될 수 있습니다. 이상적으로 사용자와 고객 모두 도메인으로 이동할 수 있어야 하며 DNS 솔루션이 올바른 환경의 IP 주소로 전달되어야 합니다. 이 이상적인 시나리오는 사용자에게 친숙하며 인적 오류를 방지할 수 있습니다.
Kubernetes ExternalDNS는 사용자가 글로벌 로드 밸런싱, 자동 페일오버, DNS 기반 트래픽 관리 및 DNSSEC(Domain Name System Security Extensions)와 같은 내장 보안 기능을 포함하여 원하는 도메인으로 쉽게 이동할 수 있도록 DNS 솔루션을 자동화하는 기능을 제공하여 변조 및 스푸핑 공격으로부터 보호합니다.
이 참조 아키텍처는 Oracle Cloud Infrastructure DNS 영역 및 Kubernetes ExternalDNS와 함께 단일 Kubernetes 클러스터 배포를 사용하여 여러 환경에 맞게 설계된 DNS 솔루션을 구성합니다.
구조
이 아키텍처는 OCI DNS 영역에 배포된 OCI Kubernetes Engine 클러스터를 사용하여 로드 밸런서를 통해 노출된 서비스에 대한 "A 레코드"를 보유합니다. 이 아키텍처에서 OCI Kubernetes Engine(OKE) 클러스터에는 세 개의 워커 노드와 세 개의 서로 다른 네임스페이스가 배포 분리를 위해 있습니다. 다중 클러스터 대신 단일 클러스터를 사용하는 다중 환경 OKE 배치에 이 아키텍처를 사용합니다.
다음 다이어그램은 이 참조 아키텍처를 보여 줍니다.
다중 테넌트-oke-dns-architecture.zip
각 환경(개발, 테스트 및 프로덕션)에는 네임스페이스, 포드 및 서비스와 같은 자체 쿠버네티스 구성요소 세트가 있습니다. Kubernetes ExternalDNS는 외부에 노출된 쿠버네티스 서비스에 대한 DNS 레코드를 자동으로 생성하고 관리할 수 있게 해준다. 따라서 외부 클라이언트가 클러스터 내의 서비스에 보다 쉽게 액세스할 수 있습니다. Kubernetes 구성요소는 Kubernetes ExternalDNS로 경로 지정된 후 OCI의 각 서비스 로드 밸런서를 가리키는 "레코드"를 생성합니다.
다음 다이어그램은 이 소프트웨어 아키텍처를 보여줍니다.
구조에는 다음과 같은 구성 요소가 있습니다.
- 지역
Oracle Cloud Infrastructure 리전은 가용성 도메인이라고 하는 데이터 센터가 하나 이상 포함된 지역화된 지리적 영역입니다. 지역은 다른 지역과 독립적이며, 먼 거리가 그들을 분리 할 수 있습니다 (국가 또는 대륙에 걸쳐).
- 가용성 도메인
가용성 도메인은 한 지역 내의 독립형 독립 데이터 센터입니다. 각 가용성 도메인의 물리적 리소스는 결함 허용을 제공하는 다른 가용성 도메인의 리소스와 격리됩니다. 가용성 도메인은 전원, 냉각 또는 내부 가용성 도메인 네트워크와 같은 인프라를 공유하지 않습니다. 따라서 한 가용성 도메인의 장애가 해당 영역의 다른 가용성 도메인에 영향을 미치지 않아야 합니다.
- 결함 도메인
장애 도메인은 가용성 도메인 내의 하드웨어 및 인프라 그룹입니다. 가용성 도메인에는 독립적인 전원 및 하드웨어를 갖춘 3개의 장애 도메인이 있습니다. 여러 결함 도메인에 리소스를 분배할 때 응용 프로그램은 결함 도메인 내의 물리적 서버 오류, 시스템 유지 관리 및 전원 오류를 허용할 수 있습니다.
- VCN(가상 클라우드 네트워크) 및 서브넷
VCN은 Oracle Cloud Infrastructure 지역에서 설정한 맞춤형 소프트웨어 정의 네트워크입니다. 기존의 데이터 센터 네트워크와 마찬가지로 VCN을 통해 네트워크 환경을 제어할 수 있습니다. VCN에는 VCN 생성 후 변경할 수 있는 겹치지 않는 CIDR 블록이 여러 개 있을 수 있습니다. VCN을 서브넷으로 분할할 수 있습니다. 서브넷은 지역 또는 가용성 도메인으로 범위가 지정될 수 있습니다. 각 서브넷은 VCN의 다른 서브넷과 겹치지 않는 연속적인 주소 범위로 구성됩니다. 서브넷 생성 후 크기를 변경할 수 있습니다. 서브넷은 공용 또는 전용일 수 있습니다.
- 로드 밸런서
Oracle Cloud Infrastructure Load Balancing 서비스는 단일 시작점에서 백엔드에 있는 여러 서버로 트래픽을 자동으로 배포합니다.
- 보안 목록
각 서브넷에 대해 서브넷에 들어오고 나가도록 허용해야 하는 트래픽의 소스, 대상 및 유형을 지정하는 보안 규칙을 생성할 수 있습니다.
- OCI Kubernetes 엔진
Oracle Cloud Infrastructure Kubernetes Engine(Kubernetes Engine 또는 OKE)는 컨테이너화된 애플리케이션을 클라우드에 배포하는 데 사용할 수 있는 확장 가능한 고가용성 완전 관리형 서비스입니다. 애플리케이션에 필요한 컴퓨트 리소스를 지정하면 Kubernetes Engine이 기존 테넌시의 Oracle Cloud Infrastructure에서 프로비저닝합니다. OKE는 Kubernetes를 사용하여 호스트 클러스터 전반에서 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다.
- DNS
Oracle Cloud Infrastructure DNS(Domain Name System) 서비스는 확장성이 뛰어난 글로벌 애니캐스트 DNS(Domain Name System) 네트워크로, 향상된 DNS 성능, 복원성 및 확장성을 제공하여 최종 사용자가 어디에 있든 최대한 빨리 고객의 애플리케이션에 연결할 수 있도록 합니다.
- 공용/전용 DNS 영역
Oracle Cloud Infrastructure DNS 서비스를 사용하면 영역을 관리할 수 있습니다. 영역은 DNS 이름 공간의 일부입니다. 권한 시작 레코드(SOA)는 영역을 정의합니다. 별도로 지정하지 않는 한 영역에는 트리의 자체 아래에 있는 모든 레이블이 포함됩니다.
권장사항
- VCN(가상 클라우드 네트워크)
VCN을 생성할 때 VCN의 서브넷에 연결하려는 리소스 수에 따라 필요한 CIDR 블록 수와 각 블록의 크기를 결정합니다. 표준 전용 IP 주소 공간 내에 있는 CIDR 블록을 사용합니다.
서브넷을 설계할 때는 트래픽 플로우 및 보안 요구사항을 고려하십시오. 특정 계층 또는 역할 내의 모든 리소스를 동일한 서브넷에 연결합니다. 이 서브넷은 보안 경계 역할을 할 수 있습니다.
- 로드 밸런서 대역폭
로드 밸런서를 생성하는 동안 고정 대역폭을 제공하는 미리 정의된 구성을 선택하거나, 대역폭 범위를 설정하고 서비스가 트래픽 패턴에 따라 대역폭을 자동으로 확장하도록 하는 사용자 정의(유연한) 구성을 지정할 수 있습니다. 두 접근 방법 중 하나를 사용하면 로드 밸런서를 생성한 후 언제든지 구성을 변경할 수 있습니다.
고려사항
단일 OCI Kubernetes Engine 클러스터 내에 여러 환경을 배포할 때는 다음 사항을 고려하십시오.
- 보안
Kubernetes 네트워크 정책을 사용하여 네임스페이스 연결을 분리하고 역할 기반 액세스 제어에 의존하여 네임스페이스 관리에 대한 액세스를 제어하는 것이 좋습니다.