9.2. 프라이빗 클러스터
외부 엔드 포인트를 노출하지 않는 비공개 OpenShift Container Platform 클러스터를 배포할 수 있습니다. 프라이빗 클러스터는 내부 네트워크에서만 액세스할 수 있으며 인터넷에 표시되지 않습니다.
기본적으로 OpenShift Container Platform은 공개적으로 액세스 가능한 DNS 및 끝점을 사용하여 프로비저닝됩니다. 따라서 개인 클러스터를 배포할 때 클러스터에서 DNS, Ingress Controller 및 API 서버를 비공개로 설정할 수 있습니다. 즉 클러스터 리소스는 내부 네트워크에서만 액세스할 수 있고 인터넷에는 노출되지 않습니다.
클러스터에 퍼블릭 서브넷이 있는 경우 관리자가 생성한 로드 밸런서 서비스에 공개적으로 액세스할 수 있습니다. 클러스터 보안을 위해 이러한 서비스에 개인용으로 명시적으로 주석이 추가되었는지 확인합니다.
프라이빗 클러스터를 배포하려면 다음을 수행해야 합니다.
- 요구 사항을 충족하는 기존 네트워킹을 사용합니다. 네트워크의 다른 클러스터 사이에 클러스터 리소스를 공유할 수 있습니다.
다음에 액세스할 수 있는 머신에서 배포합니다.
- 프로비저닝하는 클라우드용 API 서비스
- 프로비저닝하는 네트워크의 호스트
- 설치 미디어를 가져올 인터넷
이러한 액세스 요구사항을 충족하고 회사의 지침을 따르는 모든 시스템을 사용할 수 있습니다. 클라우드 네트워크의 배스천 호스트 또는 VPN을 통해 네트워크에 액세스할 수 있는 시스템 등을 예로 들 수 있습니다.
9.2.1. GCP의 프라이빗 클러스터
GCP(Google Cloud Platform)에 프라이빗 클러스터를 생성하려면 클러스터를 호스팅할 기존 프라이빗 VPC와 서브넷을 제공해야 합니다. 또한 설치 프로그램에서 클러스터에 필요한 DNS 레코드를 확인할 수 있어야 합니다. 설치 프로그램은 내부 트래픽용 Ingress Operator 및 API 서버를 구성합니다.
클러스터가 GCP API에 액세스하려면 여전히 인터넷 접속이 필요합니다.
다음은 프라이빗 클러스터를 설치할 때 필요하지 않거나 생성되지 않는 항목들입니다.
- 퍼블릭 서브넷
- 퍼블릭 인그레스를 지원하는 퍼블릭 네트워크 로드 밸런서
-
클러스터의
baseDomain
과 일치하는 퍼블릭 DNS 영역
사용자가 지정하는 baseDomain
을 사용하여 설치 프로그램에서 프라이빗 DNS 영역과 클러스터에 필요한 레코드를 생성합니다. Operator가 클러스터에 대한 공용 레코드를 생성하지 않고 사용자가 지정하는 프라이빗 서브넷에 모든 클러스터 시스템이 배치되도록 클러스터가 구성됩니다.
소스 태그를 기반으로 외부 로드 밸런서에 액세스를 제한할 수 없기 때문에 프라이빗 클러스터에서는 내부 로드 밸런서만을 사용하여 내부 인스턴스에 액세스를 허용합니다.
내부 로드 밸런서는 네트워크 로드 밸런서가 사용하는 대상 풀이 아닌 인스턴스 그룹에 의존합니다. 해당 그룹에 인스턴스가 없는 경우에도 각 영역에 대한 인스턴스 그룹이 설치 프로그램에 의해 생성됩니다.
- 클러스터 IP 주소는 내부 전용입니다.
- 한 가지 전달 규칙이 Kubernetes API 및 시스템 구성 서버 포트를 모두 관리합니다.
- 백엔드 서비스는 각 영역의 인스턴스 그룹과 부트스트랩 인스턴스 그룹(존재하는 동안)으로 구성됩니다.
- 방화벽에는 내부 소스 범위만을 기반으로 하는 단일 규칙이 사용됩니다.
9.2.1.1. 제한
로드 밸런서 기능의 차이로 인해 시스템 구성 서버의 상태 검사 /healthz
는 실행되지 않습니다. 내부 로드 밸런서 두 개가 단일 IP 주소를 공유할 수는 없지만 네트워크 로드 밸런서 두 개는 하나의 외부 IP 주소를 공유할 수 있습니다. 대신 전적으로 포트 6443의 /readyz
검사에 의해 인스턴스 상태가 결정됩니다.