23장. Google Compute Engine 구성
애플리케이션 데이터의 영구 스토리지로 GCE 볼륨을 사용하는 등 기존 Google Compute Engine(GCE) 인프라에 액세스하도록 OpenShift Container Platform을 구성할 수 있습니다.
23.1. 시작하기 전
23.1.1. Google Cloud Platform에 대한 권한 부여 구성
역할
OpenShift Container Platform용 GCP를 구성하려면 다음 GCP 역할이 필요합니다.
| 서비스 계정, 클라우드 스토리지, 인스턴스, 이미지, 템플릿, 클라우드 DNS 항목을 만들고 로드 밸런서 및 상태 점검을 배포하는 데 필요합니다. |
사용자가 테스트 단계 중에 환경을 재배포해야 하는 경우에도 삭제
권한이 필요할 수 있습니다.
GCP 오브젝트를 배포할 때 개인 사용자를 사용하지 않도록 서비스 계정을 생성할 수도 있습니다.
역할 구성 방법에 대한 단계를 포함하여 자세한 내용은 GCP 문서의 역할 이해 섹션 을 참조하십시오.
범위 및 서비스 계정
GCP는 범위를 사용하여 리소스 내에서 작업을 수행할 인증된 ID가 있는지 확인합니다. 예를 들어, 읽기 전용 범위 액세스 토큰이 있는 애플리케이션 A는 읽기 전용 액세스 토큰만 읽을 수 있지만, 읽기-쓰기 범위 액세스 토큰이 있는 애플리케이션 B는 데이터를 읽고 수정할 수 있습니다.
범위는 GCP API 수준에서 https://www.googleapis.com/auth/compute.readonly
로 정의됩니다.
--scopes=[SCOPE,…를 사용하여 범위를 지정할 수 있습니다.]
인스턴스를 생성할 때 옵션을 선택하거나, 인스턴스가 GCP API에 액세스하지 않으려면 --no-scopes
옵션을 사용하여 범위 없이 인스턴스를 생성할 수 있습니다.
자세한 내용은 GCP 문서의 범위 섹션 을 참조하십시오.
모든 GCP 프로젝트에는 기본 [PROJECT_NUMBER]-compute@developer.gserviceaccount.com
서비스 계정이 프로젝트 편집기 권한이 있습니다.
기본적으로 새로 생성된 인스턴스는 다음 액세스 범위를 사용하여 기본 서비스 계정으로 실행되도록 자동으로 활성화됩니다.
- https://www.googleapis.com/auth/devstorage.read_only
- https://www.googleapis.com/auth/logging.write
- https://www.googleapis.com/auth/monitoring.write
- https://www.googleapis.com/auth/pubsub
- https://www.googleapis.com/auth/service.management.readonly
- https://www.googleapis.com/auth/servicecontrol
- https://www.googleapis.com/auth/trace.append
- https://www.googleapis.com/auth/bigquery
- https://www.googleapis.com/auth/cloud-platform
- https://www.googleapis.com/auth/compute.readonly
- https://www.googleapis.com/auth/compute
- https://www.googleapis.com/auth/datastore
- https://www.googleapis.com/auth/logging.write
- https://www.googleapis.com/auth/monitoring
- https://www.googleapis.com/auth/monitoring.write
- https://www.googleapis.com/auth/servicecontrol
- https://www.googleapis.com/auth/service.management.readonly
- https://www.googleapis.com/auth/sqlservice.admin
- https://www.googleapis.com/auth/devstorage.full_control
- https://www.googleapis.com/auth/devstorage.read_only
- https://www.googleapis.com/auth/devstorage.read_write
- https://www.googleapis.com/auth/taskqueue
- https://www.googleapis.com/auth/userinfo.email
인스턴스를 만들 때 --service-account=SERVICE_ACCOUNT
옵션을 사용하여 다른 서비스 계정을 지정하거나 gcloud
CLI를 사용하여 --no-service-account
옵션을 사용하여 인스턴스의 서비스 계정을 명시적으로 비활성화할 수 있습니다.
자세한 내용은 GCP 문서의 새 서비스 계정 생성 섹션 을 참조하십시오.
23.1.2. Google Compute Engine 오브젝트
OpenShift Container Platform과 GCE(Google Compute Engine)를 통합하려면 다음과 같은 구성 요소 또는 서비스가 필요합니다.
- GCP 프로젝트
- GCP 프로젝트는 모든 GCP 서비스를 생성, 활성화 및 사용하기 위한 기반을 구성하는 기본 수준입니다. 여기에는 API 관리, 청구 활성화, 협업자 추가 및 제거, 권한 관리 등이 포함됩니다.
자세한 내용은 GCP 문서의 프로젝트 리소스 섹션 을 참조하십시오.
프로젝트 ID는 고유한 식별자이며 프로젝트 ID는 모든 Google 클라우드 엔진에서 고유해야 합니다. 즉, 이전에 해당 ID가 있는 프로젝트를 생성한 경우 myproject
를 프로젝트 ID로 사용할 수 없습니다.
- 청구
- 청구가 계정에 첨부되지 않는 한 새 리소스를 만들 수 없습니다. 새 프로젝트는 기존 프로젝트에 연결하거나 새 정보를 입력할 수 있습니다.
자세한 내용은 GCP 문서의 청구 계정 생성, 수정 또는 닫기 를 참조하십시오.
- 클라우드 ID 및 액세스 관리
- OpenShift Container Platform을 배포하려면 적절한 권한이 필요합니다. 사용자는 서비스 계정, 클라우드 스토리지, 인스턴스, 이미지, 템플릿, 클라우드 DNS 항목, 로드 밸런서 및 상태 점검을 배포할 수 있어야 합니다. 또한 삭제 권한은 테스트 중에 환경을 재배포할 수 있도록 유용합니다.
특정 권한이 있는 서비스 계정을 생성한 다음 일반 사용자 대신 인프라 구성 요소를 배포하는 데 사용할 수 있습니다. 역할을 생성하여 다른 사용자 또는 서비스 계정에 대한 액세스를 제한할 수도 있습니다.
GCP 인스턴스는 서비스 계정을 사용하여 애플리케이션이 GCP API를 호출할 수 있도록 허용합니다. 예를 들어 OpenShift Container Platform 노드 호스트는 GCP 디스크 API를 호출하여 영구 볼륨을 애플리케이션에 제공할 수 있습니다.
IAM 서비스를 사용하여 다양한 인프라, 서비스 리소스 및 세분화된 역할에 대한 액세스 제어를 사용할 수 있습니다. 자세한 내용은 GCP 문서의 클라우드 액세스 개요 섹션을 참조하십시오.
- SSH 키
- 생성된 인스턴스에서 SSH를 사용하여 로그인할 수 있도록 GCP는 인증 키로 SSH 공개 키를 삽입합니다. 인스턴스 또는 프로젝트별로 SSH 키를 구성할 수 있습니다.
기존 SSH 키를 사용할 수 있습니다. GCP 메타데이터는 SSH 액세스를 허용하기 위해 인스턴스에 부팅 시 삽입되는 SSH 키를 저장하는 데 도움이 될 수 있습니다.
자세한 내용은 GCP 문서의 메타데이터 섹션 을 참조하십시오.
- GCP 지역 및 영역
- GCP에는 지역 및 가용 영역을 다루는 글로벌 인프라가 있습니다. 다른 영역에 GCP에 OpenShift Container Platform을 배포하면 단일 장애 지점을 방지하는 데 도움이 될 수 있지만 스토리지와 관련하여 몇 가지 주의 사항이 있습니다.
GCP 디스크는 영역 내에서 생성됩니다. 따라서 OpenShift Container Platform 노드 호스트가 "A" 영역에서 다운되고 Pod가 영역 "B"로 이동하면 디스크가 다른 영역에 있으므로 영구 스토리지를 해당 Pod에 연결할 수 없습니다.
OpenShift Container Platform을 설치하기 전에 다중 영역 OpenShift Container Platform 환경의 단일 영역 배포가 중요한 결정입니다. 다중 영역 환경을 배포하는 경우 권장되는 설정은 단일 지역에서 세 개의 다른 영역을 사용하는 것입니다.
자세한 내용은 지역 및 영역에 대한 GCP 문서 및 여러 영역에 대한 Kubernetes 설명서 를 참조하십시오.
- 외부 IP 주소
- GCP 인스턴스가 인터넷과 통신할 수 있도록 외부 IP 주소를 인스턴스에 연결해야 합니다. 또한 가상 프라이빗 클라우드(VPC) 네트워크 외부에서 GCP에 배포된 인스턴스와 통신하려면 외부 IP 주소가 필요합니다.
인터넷 액세스를 위해 외부 IP 주소를
요구하는 것은 공급자의 제한입니다. 필요하지 않은 경우 인스턴스에서 들어오는 외부 트래픽을 차단하도록 방화벽 규칙을 구성할 수 있습니다.
자세한 내용은 외부 IP 주소에 대한 GCP 설명서 를 참조하십시오.
- 클라우드 DNS
- GCP 클라우드 DNS는 GCP DNS 서버를 사용하여 도메인 이름을 글로벌 DNS에 게시하는 데 사용되는 DNS 서비스입니다.
퍼블릭 클라우드 DNS 영역에는 Google의 "도메인" 서비스 또는 타사 공급자를 통해 구입한 도메인 이름이 필요합니다. 영역을 생성할 때 Google에서 제공하는 이름 서버를 등록 기관에 추가해야 합니다.
자세한 내용은 클라우드 DNS에 대한 GCP 설명서 를 참조하십시오.
GCP VPC 네트워크에는 내부 호스트 이름을 자동으로 확인하는 내부 DNS 서비스가 있습니다.
인스턴스의 내부 정규화된 도메인 이름(FQDN)은 [HOST_NAME].c.[PROJECT_ID].internal
형식을 따릅니다.
자세한 내용은 내부 DNS의 GCP 문서를 참조하십시오.
- 로드 밸런싱
- GCP 로드 밸런싱 서비스를 사용하면 GCP 클라우드의 여러 인스턴스에 트래픽을 분산할 수 있습니다.
로드 밸런싱에는 5가지 유형이 있습니다.
HTTPS 및 TCP 프록시 로드 밸런싱은 /healthz 상태를 확인하는 마스터 노드에 대한 HTTPS 상태 점검을 사용하는 유일한 옵션입니다.
HTTPS 로드 밸런싱에는 사용자 지정 인증서가 필요하므로 이 구현에서는 TCP 프록시 로드 밸런싱을 사용하여 프로세스를 간소화합니다.
자세한 내용은 로드 밸런싱에 대한 GCP 문서를 참조하십시오.
- 인스턴스 크기
- OpenShift Container Platform 환경에 성공하려면 몇 가지 최소 하드웨어 요구 사항이 필요합니다.
Role | 크기 |
---|---|
Master |
|
노드 |
|
GCP를 사용하면 다양한 요구 사항에 맞게 사용자 정의 인스턴스 크기를 생성할 수 있습니다. 자세한 내용은 머신 유형 및 OpenShift Container Platform 최소 하드웨어 요구 사항을 사용하여 인스턴스 크기를 참조하십시오. 인스턴스 크기에 대한 자세한 내용은 머신 유형 및 OpenShift Container Platform 최소 하드웨어 요구 사항을 참조하십시오.
- 스토리지 옵션
기본적으로 각 GCP 인스턴스에는 운영 체제를 포함하는 작은 루트 영구 디스크가 있습니다. 인스턴스에서 실행 중인 애플리케이션에 더 많은 스토리지 공간이 필요한 경우 인스턴스에 스토리지 옵션을 추가할 수 있습니다.
- 표준 영구 디스크
- SSD 영구 디스크
- 로컬 SSD
- 클라우드 스토리지 버킷
자세한 내용은 스토리지 옵션에 대한 GCP 설명서를 참조하십시오.