14.10. AWS용 설치 파일 생성
AWS(Amazon Web Services)에 OpenShift Container Platform을 설치하고 AWS 로컬 영역을 사용하려면 설치 프로그램이 클러스터를 배포하는 데 필요한 파일을 생성하고 클러스터가 사용할 시스템만 생성하도록 파일을 수정해야 합니다. install-config.yaml
파일 및 Kubernetes 매니페스트를 생성하고 사용자 지정합니다.
14.10.1. 클러스터 설치를 위한 최소 리소스 요구 사항
각 클러스터 시스템이 다음과 같은 최소 요구사항을 충족해야 합니다.
머신 | 운영 체제 | vCPU [1] | 가상 RAM | 스토리지 | 초당 입력/출력(IOPS)[2] |
---|---|---|---|---|---|
부트스트랩 | RHCOS | 4 | 16GB | 100GB | 300 |
컨트롤 플레인 | RHCOS | 4 | 16GB | 100GB | 300 |
Compute | RHCOS, RHEL 8.6 이상 [3] | 2 | 8GB | 100GB | 300 |
- SMT(동시 멀티스레딩) 또는 하이퍼 스레딩이 활성화되지 않은 경우 하나의 vCPU는 하나의 물리적 코어와 동일합니다. 활성화하면 다음과 같은 공식을 사용하여 해당 비율을 계산합니다. (코어 당 스레드 수 × 코어 수) × 소켓 수 = vCPU 수
- OpenShift Container Platform 및 Kubernetes는 디스크 성능에 민감하며 특히 10ms p99 fsync 기간이 필요한 컨트롤 플레인 노드의 etcd에 더 빠른 스토리지가 권장됩니다. 많은 클라우드 플랫폼에서 스토리지 크기와 IOPS를 함께 확장되므로 충분한 성능을 얻으려면 스토리지 볼륨을 과도하게 할당해야 할 수 있습니다.
- 사용자가 프로비저닝한 모든 설치와 마찬가지로 클러스터에서 RHEL 컴퓨팅 머신을 사용하기로 선택한 경우 시스템 업데이트 수행, 패치 적용 및 기타 필요한 모든 작업 실행을 포함한 모든 운영 체제의 라이프 사이클 관리 및 유지 관리에 대한 책임이 있습니다. RHEL 7 컴퓨팅 머신 사용은 더 이상 사용되지 않으며 OpenShift Container Platform 4.10 이상에서 제거되었습니다.
플랫폼의 인스턴스 유형이 클러스터 머신의 최소 요구 사항을 충족하는 경우 OpenShift Container Platform에서 사용할 수 있습니다.
추가 리소스
14.10.2. AWS에서 테스트된 인스턴스 유형
다음 AWS(Amazon Web Services) 인스턴스 유형은 AWS Local Zones에서 사용하기 위해 OpenShift Container Platform에서 테스트되었습니다.
AWS 인스턴스의 다음 차트에 포함된 머신 유형을 사용합니다. 차트에 나열되지 않은 인스턴스 유형을 사용하는 경우 사용하는 인스턴스 크기가 "클러스터 설치에 대한 최소 리소스 요구 사항"에 나열된 최소 리소스 요구 사항과 일치하는지 확인합니다.
예 14.3. AWS 로컬 영역의 64비트 x86 아키텍처를 기반으로 하는 머신 유형
-
c5.*
-
c5d.*
-
m6i.*
-
m5.*
-
r5.*
-
t3.*
14.10.3. 설치 구성 파일 만들기
설치 프로그램이 클러스터를 배포하는 데 필요한 설치 구성 파일을 생성하고 사용자 지정합니다.
사전 요구 사항
- OpenShift Container Platform 설치 프로그램과 클러스터의 풀 시크릿을 받으셨습니다.
-
Red Hat에서 게시한 Red Hat Enterprise Linux CoreOS (RHCOS) AMI와 함께 리전에 클러스터를 배포하고 있는지 확인하셨습니다. AWS GovCloud 리전과 같이 사용자 지정 AMI가 필요한 리전에 배포하는 경우
install-config.yaml
파일을 수동으로 생성해야 합니다.
프로세스
install-config.yaml
파일을 생성합니다.설치 프로그램이 포함된 디렉터리로 변경하고 다음 명령을 실행합니다.
$ ./openshift-install create install-config --dir <installation_directory> 1
- 1
<installation_directory>
는 설치 프로그램이 생성하는 파일을 저장할 디렉터리 이름을 지정합니다.
중요비어 있는 디렉터리를 지정합니다. 부트스트랩 X.509 인증서와 같은 일부 설치 자산은 단기간에 만료되므로 설치 디렉터리를 재사용해서는 안 됩니다. 다른 클러스터 설치의 개별 파일을 재사용하려면 해당 파일을 사용자 디렉터리에 복사하면 됩니다. 그러나 설치 자산의 파일 이름은 릴리스간에 변경될 수 있습니다. 따라서 이전 OpenShift Container Platform 버전에서 설치 파일을 복사할 때는 주의하십시오.
화면에 나타나는 지시에 따라 클라우드에 대한 구성 세부 사항을 입력합니다.
선택사항: 클러스터 시스템에 액세스하는 데 사용할 SSH 키를 선택합니다.
참고설치 디버깅 또는 재해 복구를 수행하려는 프로덕션 OpenShift Container Platform 클러스터의 경우
ssh-agent
프로세스가 사용하는 SSH 키를 지정합니다.- 대상 플랫폼으로 aws를 선택합니다.
컴퓨터에 AWS 프로필이 저장되어 있지 않은 경우 설치 프로그램을 실행하도록 구성한 사용자의 AWS 액세스 키 ID와 시크릿 액세스 키를 입력합니다.
참고AWS 액세스 키 ID와 시크릿 액세스 키는 설치 호스트에 있는 현재 사용자의 홈 디렉터리에서
~/.aws/credentials
에 저장됩니다. 내보낸 프로필의 인증 정보가 파일에 없으면 설치 프로그램에서 인증 정보에 대한 메시지를 표시합니다. 설치 프로그램에 사용자가 제공하는 인증 정보는 파일에 저장됩니다.- 클러스터를 배포할 AWS 리전을 선택합니다. 지정한 리전은 AWS 계정에 대해 선택한 로컬 영역이 포함된 리전과 동일해야 합니다.
- 클러스터에 대해 구성한 Route53 서비스의 기본 도메인을 선택합니다.
- 클러스터를 설명할 수 있는 이름을 입력합니다.
- Red Hat OpenShift Cluster Manager에서 풀 시크릿 을 붙여넣습니다.
install-config.yaml
파일을 편집하여 VPC에서 사용하는 가용성 영역의 서브넷을 제공합니다.platform: aws: subnets: 1 - publicSubnetId-1 - publicSubnetId-2 - publicSubnetId-3 - privateSubnetId-1 - privateSubnetId-2 - privateSubnetId-3
- 1
subnets
섹션을 추가하고 VPC에 대한 CloudFormation 템플릿 출력에서PrivateSubnetIds
및PublicSubnetIds
값을 지정합니다. 여기에 로컬 영역 서브넷을 포함하지 마십시오.
선택사항:
install-config.yaml
파일을 백업합니다.중요install-config.yaml
파일은 설치 과정에서 사용됩니다. 이 파일을 재사용하려면 지금 백업해야 합니다.
추가 리소스
- AWS 프로필 및 인증 정보 구성에 대한 자세한 내용은 AWS 문서의 구성 및 인증 정보 파일 설정을 참조하십시오.
14.10.4. Kubernetes 매니페스트 파일 생성
일부 클러스터 정의 파일을 수정하고 클러스터 시스템을 수동으로 시작해야 하므로 클러스터가 시스템을 구성하는 데 필요한 Kubernetes 매니페스트 파일을 생성해야 합니다.
사전 요구 사항
- OpenShift Container Platform 설치 프로그램을 가져오셨습니다.
-
install-config.yaml
설치 구성 파일을 생성하셨습니다. -
jq
CLI를 설치하셨습니다.
프로세스
OpenShift Container Platform 설치 프로그램이 포함된 디렉터리로 변경하고 다음 명령을 실행하여 클러스터에 대한 Kubernetes 매니페스트를 생성합니다.
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
<installation_directory>
는 사용자가 만든install-config.yaml
파일이 포함된 설치 디렉터리를 지정합니다.
네트워크 플러그인에 따라 기본 최대 전송 단위(MTU)를 설정합니다.
중요일반적으로 로컬 영역의 Amazon EC2 인스턴스와 리전의 Amazon EC2 인스턴스 간 최대 전송 단위(MTU)는 1300입니다. AWS 문서에서 로컬 영역이 작동하는 방법을 참조하십시오. 오버헤드를 고려하려면 클러스터 네트워크 MTU가 EC2 MTU보다 항상 작아야 합니다. 특정 오버헤드는 네트워크 플러그인에 의해 결정됩니다. 예를 들면 다음과 같습니다.
-
OVN-Kubernetes:
100 bytes
-
OpenShift SDN:
50바이트
네트워크 플러그인은 IPsec과 같은 추가 기능을 제공할 수 있으며 MTU도 감소해야 합니다. 자세한 내용은 문서를 참조하십시오.
OVN-Kubernetes
네트워크 플러그인을 사용하는 경우 다음 명령을 입력합니다.$ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: ovnKubernetesConfig: mtu: 1200 EOF
OpenShift SDN
네트워크 플러그인을 사용하는 경우 다음 명령을 입력합니다.$ cat <<EOF > <installation_directory>/manifests/cluster-network-03-config.yml apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: openshiftSDNConfig: mtu: 1250 EOF
-
OVN-Kubernetes:
로컬 영역에서 작업자 노드에 대한 머신 세트 매니페스트를 생성합니다.
다음 명령을 실행하여 AWS 계정을 선택한 로컬 영역의 이름이 포함된 로컬 변수를 내보냅니다.
$ export LZ_ZONE_NAME="<local_zone_name>" 1
- 1
- <
local_zone_name
> 의 경우 AWS 계정을 선택한 로컬 영역(예:us-east-1-nyc-1a
)을 지정합니다.
다음 명령을 실행하여 배포할 위치의 인스턴스 유형을 검토합니다.
$ aws ec2 describe-instance-type-offerings \ --location-type availability-zone \ --filters Name=location,Values=${LZ_ZONE_NAME} --region <region> 1
- 1
- &
lt;region
> 의 경우 배포할 리전의 이름을 지정합니다(예:us-east-1
).
다음 명령을 실행하여 로컬 영역 서브넷에 배포할 작업자 시스템의 인스턴스 유형을 정의하는 변수를 내보냅니다.
$ export INSTANCE_TYPE="<instance_type>" 1
- 1
- &
lt;instance_type&
gt;을c5d.2xlarge
와 같은 테스트된 인스턴스 유형으로 설정합니다.
다음 명령을 실행하여 AMI ID를 로컬 변수로 저장합니다.
$ export AMI_ID=$(grep ami <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-0.yaml \ | tail -n1 | awk '{print$2}')
다음 명령을 실행하여 서브넷 ID를 로컬 변수로 저장합니다.
$ export SUBNET_ID=$(aws cloudformation describe-stacks --stack-name "<subnet_stack_name>" \ 1 | jq -r '.Stacks[0].Outputs[0].OutputValue')
- 1
- &
lt;subnet_stack_name
>에 대해 생성한 서브넷 스택의 이름을 지정합니다.
다음 명령을 실행하여 클러스터 ID를 로컬 변수로 저장합니다.
$ export CLUSTER_ID="$(awk '/infrastructureName: / {print $2}' <installation_directory>/manifests/cluster-infrastructure-02-config.yml)"
다음 명령을 실행하여 VPC에서 사용하는 로컬 영역에 대한 작업자 매니페스트 파일을 생성합니다.
$ cat <<EOF > <installation_directory>/openshift/99_openshift-cluster-api_worker-machineset-nyc1.yaml apiVersion: machine.openshift.io/v1beta1 kind: MachineSet metadata: labels: machine.openshift.io/cluster-api-cluster: ${CLUSTER_ID} name: ${CLUSTER_ID}-edge-${LZ_ZONE_NAME} namespace: openshift-machine-api spec: replicas: 1 selector: matchLabels: machine.openshift.io/cluster-api-cluster: ${CLUSTER_ID} machine.openshift.io/cluster-api-machineset: ${CLUSTER_ID}-edge-${LZ_ZONE_NAME} template: metadata: labels: machine.openshift.io/cluster-api-cluster: ${CLUSTER_ID} machine.openshift.io/cluster-api-machine-role: edge machine.openshift.io/cluster-api-machine-type: edge machine.openshift.io/cluster-api-machineset: ${CLUSTER_ID}-edge-${LZ_ZONE_NAME} spec: metadata: labels: machine.openshift.com/zone-type: local-zone machine.openshift.com/zone-group: ${ZONE_GROUP_NAME} node-role.kubernetes.io/edge: "" taints: - key: node-role.kubernetes.io/edge effect: NoSchedule providerSpec: value: ami: id: ${AMI_ID} apiVersion: machine.openshift.io/v1beta1 blockDevices: - ebs: volumeSize: 120 volumeType: gp2 credentialsSecret: name: aws-cloud-credentials deviceIndex: 0 iamInstanceProfile: id: ${CLUSTER_ID}-worker-profile instanceType: ${INSTANCE_TYPE} kind: AWSMachineProviderConfig placement: availabilityZone: ${LZ_ZONE_NAME} region: ${CLUSTER_REGION} securityGroups: - filters: - name: tag:Name values: - ${CLUSTER_ID}-worker-sg subnet: id: ${SUBNET_ID} publicIp: true tags: - name: kubernetes.io/cluster/${CLUSTER_ID} value: owned userDataSecret: name: worker-user-data EOF
추가 리소스