This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.6.11.17. GCP에 추가 작업자 시스템 생성
개별 인스턴스를 따로 시작하거나 자동 확장 그룹과 같은 클러스터 외부의 자동화된 프로세스를 통해 클러스터에서 사용할 작업자 시스템을 GCP(Google Cloud Platform)에 생성할 수 있습니다. OpenShift Container Platform의 기본 제공 클러스터 확장 메커니즘과 시스템 API를 활용할 수도 있습니다.
예에서는 Deployment Manager 템플릿을 사용하여 인스턴스 하나를 수동으로 시작합니다. 파일에 06_worker.py
유형의 추가 리소스를 포함시켜 추가 인스턴스를 시작할 수 있습니다.
작업자 시스템을 생성하는 데 제공된 Deployment Manager 템플릿을 사용하지 않는 경우, 제공된 정보를 검토하고 수동으로 인프라를 생성해야 합니다. 클러스터가 올바르게 초기화되지 않은 경우, Red Hat 지원팀에 설치 로그를 제시하여 문의해야 할 수도 있습니다.
사전 요구 사항
- GCP 계정을 구성하십시오.
- 클러스터에 대한 Ignition 구성 파일을 생성하십시오.
- GCP에서 VPC 및 관련 서브넷을 생성하고 구성하십시오.
- GCP에서 네트워킹 및 로드 밸랜서를 생성하고 구성하십시오.
- 컨트롤 플레인 및 컴퓨팅 역할을 생성합니다.
- 부트스트랩 시스템을 생성합니다.
- 컨트롤 플레인 시스템을 생성합니다.
프로세스
-
이 항목의 작업자 시스템에 대한 Deployment Manager 템플릿 섹션에서 템플릿을 복사하여 사용자 컴퓨터에
06_worker.py
로 저장합니다. 이 템플릿에서 클러스터에 필요한 작업자 시스템을 설명합니다. 리소스 정의가 사용하는 변수를 내보냅니다.
컴퓨팅 시스템을 호스팅하는 서브넷을 내보냅니다.
$ export COMPUTE_SUBNET=(`gcloud compute networks subnets describe ${INFRA_ID}-worker-subnet --region=${REGION} --format json | jq -r .selfLink`)
서비스 계정의 이메일 주소를 내보냅니다.
$ export WORKER_SERVICE_ACCOUNT=(`gcloud iam service-accounts list --filter "email~^${INFRA_ID}-w@${PROJECT_NAME}." --format json | jq -r '.[0].email'`)
컴퓨팅 시스템 Ignition 구성 파일의 위치를 내보냅니다.
$ export WORKER_IGNITION=`cat <installation_directory>/worker.ign`
06_worker.yaml
리소스 정의 파일을 생성합니다.$ cat <<EOF >06_worker.yaml imports: - path: 06_worker.py resources: - name: 'worker-0' 1 type: 06_worker.py properties: infra_id: '${INFRA_ID}' 2 zone: '${ZONE_0}' 3 compute_subnet: '${COMPUTE_SUBNET}' 4 image: '${CLUSTER_IMAGE}' 5 machine_type: 'n1-standard-4' 6 root_volume_size: '128' service_account_email: '${WORKER_SERVICE_ACCOUNT}' 7 ignition: '${WORKER_IGNITION}' 8 - name: 'worker-1' type: 06_worker.py properties: infra_id: '${INFRA_ID}' 9 zone: '${ZONE_1}' 10 compute_subnet: '${COMPUTE_SUBNET}' 11 image: '${CLUSTER_IMAGE}' 12 machine_type: 'n1-standard-4' 13 root_volume_size: '128' service_account_email: '${WORKER_SERVICE_ACCOUNT}' 14 ignition: '${WORKER_IGNITION}' 15 EOF
- 1
name
은 작업자 머신의 이름입니다(예:worker-0)
.- 2 9
infra_id
는 추출 단계에서 가져온INFRA_ID
인프라 이름입니다.- 3 10
zone
은 작업자 시스템을 배포할 영역입니다(예:us-central1-a)
.- 4 11
compute_subnet
은 컴퓨팅 서브넷에 대한selfLink
URL입니다.- 5 12
image
는 RHCOS 이미지에 대한selfLink
URL입니다.- 6 13
machine_type
은 인스턴스의 시스템 유형입니다(예:n1-standard-4)
.- 7 14
service_account_email
은 사용자가 생성한 작업자 서비스 계정의 이메일 주소입니다.- 8 15
ignition
은worker.ign
파일의 내용입니다.
-
선택 사항: 추가 인스턴스를 시작하려면 06_worker.
yaml 리소스 정의 파일에
유형의 추가 리소스를 포함합니다.06_worker.
py gcloud
CLI를 사용하여 배포를 생성합니다.$ gcloud deployment-manager deployments create ${INFRA_ID}-worker --config 06_worker.yaml
6.11.17.1. 작업자 시스템에 대한 Deployment Manager 템플릿
다음 Deloyment Manager 템플릿을 사용하여 OpenShift Container Platform 클러스터에 필요한 작업자 시스템을 배포할 수 있습니다.
예 6.27. 06_worker.py
Deployment Manager 템플릿
def GenerateConfig(context): resources = [{ 'name': context.properties['infra_id'] + '-' + context.env['name'], 'type': 'compute.v1.instance', 'properties': { 'disks': [{ 'autoDelete': True, 'boot': True, 'initializeParams': { 'diskSizeGb': context.properties['root_volume_size'], 'sourceImage': context.properties['image'] } }], 'machineType': 'zones/' + context.properties['zone'] + '/machineTypes/' + context.properties['machine_type'], 'metadata': { 'items': [{ 'key': 'user-data', 'value': context.properties['ignition'] }] }, 'networkInterfaces': [{ 'subnetwork': context.properties['compute_subnet'] }], 'serviceAccounts': [{ 'email': context.properties['service_account_email'], 'scopes': ['https://www.googleapis.com/auth/cloud-platform'] }], 'tags': { 'items': [ context.properties['infra_id'] + '-worker', ] }, 'zone': context.properties['zone'] } }] return {'resources': resources}