5장. 송신 잠금을 사용하여 AWS 클러스터에서 Red Hat OpenShift Service 생성
송신 잠금을 사용하여 AWS 클러스터에서 Red Hat OpenShift Service를 생성하면 클러스터가 인터넷에 액세스할 수 없는 경우 로컬 리전의 이미지 레지스트리를 사용하도록 허용하여 클러스터의 안정성과 보안을 향상시킬 수 있습니다. 클러스터는 Quay에서 이미지를 가져오려고 하지만, 도달하지 않으면 로컬 리전의 이미지 레지스트리에서 이미지를 대신 가져옵니다.
다음 AWS 리전을 사용하는 클러스터에서만 송신 잠금을 사용할 수 있습니다.
-
us-west-1
-
us-west-2
-
us-east-1
-
us-east-2
-
ap-northeast-1
-
ap-northeast-2
-
ap-northeast-3
-
ap-south-1
-
ap-southeast-1
-
ap-southeast-2
-
ca-central-1
-
eu-central-1
-
eu-north-1
-
eu-west-1
-
eu-west-2
-
eu-west-3
-
sa-east-1
송신 잠금이 있는 모든 퍼블릭 및 프라이빗 클러스터에서는 다양한 엔드포인트 및 인터넷 등록에서 이러한 이미지를 수집하는 대신 클러스터의 로컬 리전에 있는 레지스터에서 Red Hat 컨테이너 이미지를 가져옵니다. 가상 프라이빗 클라우드(VPC)를 구성하고 클러스터를 생성할 때 --properties 0_egress:true
플래그를 사용하여 퍼블릭 송신이 필요하지 않은 완전 운영 클러스터를 생성할 수 있습니다.
송신 잠금은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
전제 조건
- VPC, 서브넷 및 기타 필수 인프라를 생성할 수 있는 충분한 권한이 있는 AWS 계정이 있습니다.
- Terraform v1.4.0+ CLI를 설치했습니다.
- ROSA v1.2.45+ CLI를 설치했습니다.
- 필요한 인증 정보를 사용하여 AWS CLI를 설치하고 구성했습니다.
- git CLI를 설치했습니다.
호스팅된 컨트롤 플레인 아키텍처를 사용하는 AWS의 지원되는 모든 Red Hat OpenShift Service 버전에서 송신 잠금을 사용할 수 있지만 Red Hat은 각 OpenShift Container Platform 버전에 사용 가능한 최신 z-stream 릴리스를 사용하는 것이 좋습니다.
연결이 끊긴 환경에서 내부 이미지 레지스트리가 작동하는 방식과 관련된 업스트림 문제로 인해 일반 클러스터를 설치하고 업그레이드할 수 있지만 송신 잠금을 사용하는 클러스터는 이미지 레지스트리와 같은 모든 플랫폼 구성 요소를 완전히 사용할 수 없습니다. 클러스터를 업그레이드하거나 설치할 때 최신 ROSA 버전을 사용하여 이러한 기능을 복원할 수 있습니다.
5.1. HCP 클러스터를 사용하여 송신 잠금에 대한 가상 프라이빗 클라우드 생성 ROSA
HCP 클러스터로 ROSA를 생성하려면 VPC(Virtual Private Cloud)가 있어야 합니다. 다음 방법 중 하나를 사용하여 VPC를 생성할 수 있습니다.
- Terraform 템플릿을 사용하여 VPC 생성
- AWS 콘솔에서 VPC 리소스 수동 생성
Terraform 지침은 테스트 및 시연을 목적으로 합니다. 자체 설치에는 특정 요구 사항 및 제약 조건에 따라 VPC를 수정해야 합니다. 또한 다음 Terraform 스크립트를 사용할 때 클러스터를 설치하려는 리전과 동일한 지역에 있는지 확인해야 합니다.
5.1.1. Terraform을 사용하여 가상 사설 클라우드 생성
Terraform은 설정된 템플릿을 사용하여 다양한 리소스를 생성할 수 있는 툴입니다. 다음 프로세스는 HCP 클러스터를 사용하여 ROSA를 생성하는 데 필요한 기본 옵션을 사용합니다. Terraform 사용에 대한 자세한 내용은 추가 리소스를 참조하십시오.
사전 요구 사항
- 시스템에 Terraform 버전 1.4.0 이상을 설치했습니다.
- 시스템에 Git을 설치했습니다.
절차
쉘 프롬프트를 열고 다음 명령을 실행하여 Terraform VPC 리포지토리를 복제합니다.
$ git clone https://github.com/openshift-cs/terraform-vpc-example
다음 명령을 실행하여 생성된 디렉터리로 이동합니다.
$ cd terraform-vpc-example/zero-egress
다음 명령을 실행하여 Terraform 파일을 시작합니다.
$ terraform init
이 프로세스가 완료되면 초기화를 확인하는 메시지가 표시됩니다.
기존 Terraform 템플릿을 기반으로 VPC Terraform 계획을 빌드하려면
plan
명령을 실행합니다. AWS 리전, 가용성 영역, CIDR 블록 및 프라이빗 서브넷을 포함해야 합니다. 클러스터 이름을 지정하도록 선택할 수 있습니다.rosa-zero-egress.tfplan
파일은terraform
계획이 완료된 후hypershift-tf
디렉터리에 추가됩니다. 자세한 옵션은 Terraform VPC 리포지토리의 README 파일을 참조하십시오.$ terraform plan -out rosa-zero-egress.tfplan -var region=<aws_region> \ 1 -var 'availability_zones=["aws_region_1a","aws_region_1b","aws_region_1c"]'\ 2 -var vpc_cidr_block=10.0.0.0/16 \ 3 -var 'private_subnets=["10.0.0.0/24", "10.0.1.0/24", "10.0.2.0/24"]' 4
- 1
- AWS 리전을 입력합니다.중요
us-west-1, us-west-2, us-east-2, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-northeast-3, ap-outh-1, ap-southeast-1, ap-southeast-2, ca-central-1, eu-central-1을 사용하는
클러스터에서만 송신 잠금을 사용할 수 있습니다. eu-north-1, eu-west-1, eu-west-2, eu-west-3
,sa-east-1
AWS 리전. - 2
- VPC의 가용성 영역을 입력합니다. 예를 들어
ap-southeast-1
을 사용하는 VPC의 경우 다음을 가용성 영역으로 사용합니다.["ap-southeast-1a", "ap-southeast-1b", "ap-southeast-1c"]
. - 3
- VPC의 CIDR 블록을 입력합니다.
- 4
- VPC용으로 생성된 각 서브넷을 입력합니다.
다음 명령을 실행하여 VPC를 빌드하려면 이 계획 파일을 적용합니다.
$ terraform apply rosa-zero-egress.tfplan
추가 리소스
- 필요에 맞게 VPC를 사용자 지정할 때 사용 가능한 모든 옵션의 자세한 목록은 Zero Egress Terraform VPC 예제 리포지터리를 참조하십시오.
5.1.2. 수동으로 가상 프라이빗 클라우드 생성
Terraform을 사용하는 대신 VPC(Virtual Private Cloud)를 수동으로 생성하도록 선택하는 경우 AWS 콘솔의 VPC 페이지로 이동합니다. VPC는 다음 표에 표시된 요구 사항을 충족해야 합니다.
요구 사항 | 세부 정보 |
---|---|
VPC 이름 | 클러스터를 생성할 때 특정 VPC 이름과 ID가 있어야합니다. |
CIDR 범위 | VPC CIDR 범위는 머신 CIDR과 일치해야 합니다. |
가용성 영역 | 단일 영역에 하나의 가용성 영역이 필요하며, 다중 영역의 가용성 영역인 경우 3개가 필요합니다. |
퍼블릭 서브넷 | 퍼블릭 클러스터의 인터넷 게이트웨이가 있는 퍼블릭 서브넷이 1개 있어야 합니다. |
프라이빗 서브넷 | ROSA HCP 클러스터에 머신 풀을 설치하기 위해 각 가용성 영역(AZ)에 정확히 하나의 프라이빗 서브넷이 있어야 합니다. 인스턴스에 대한 아웃바운드 인터넷 액세스를 허용하도록 NAT 게이트웨이가 이 서브넷과 연관될 수 있습니다. 프라이빗 클러스터에는 퍼블릭 서브넷이 필요하지 않습니다. |
DNS 호스트 이름 및 확인 | DNS 호스트 이름 및 확인이 활성화되어 있는지 확인해야 합니다. |
서브넷 태그 지정
VPC를 사용하여 HCP 클러스터로 ROSA를 생성하려면 먼저 VPC 서브넷을 태그해야 합니다. 자동화된 서비스 preflight 검사에서는 이러한 리소스를 사용하기 전에 이러한 리소스가 올바르게 태그되었는지 확인합니다. 다음 표에서는 리소스에 다음 태그를 지정하는 방법을 보여줍니다.
리소스 | 키 | 현재의 |
---|---|---|
퍼블릭 서브넷 |
|
|
프라이빗 서브넷 |
|
|
하나 이상의 프라이빗 서브넷과 해당하는 경우 공용 서브넷과 퍼블릭 서브넷을 태그해야 합니다.
사전 요구 사항
- VPC를 생성했습니다.
-
aws
CLI가 설치되어 있습니다.
절차
다음 명령을 실행하여 터미널에서 리소스를 태그합니다.
퍼블릭 서브넷의 경우 다음을 실행합니다.
$ aws ec2 create-tags --resources <public-subnet-id> --region <aws_region> --tags Key=kubernetes.io/role/elb,Value=1
프라이빗 서브넷의 경우 다음을 실행합니다.
$ aws ec2 create-tags --resources <private-subnet-id> --region <aws_region> --tags Key=kubernetes.io/role/internal-elb,Value=1
검증
다음 명령을 실행하여 태그가 올바르게 적용되었는지 확인합니다.
$ aws ec2 describe-tags --filters "Name=resource-id,Values=<subnet_id>"
출력 예
TAGS Name <subnet-id> subnet <prefix>-subnet-public1-us-east-1a TAGS kubernetes.io/role/elb <subnet-id> subnet 1
AWS 보안 그룹 및 PrivateLink 연결 구성
VPC를 생성한 후 AWS 보안 그룹 및 VPC 끝점을 생성합니다.
절차
다음 명령을 실행하여 AWS 보안 그룹을 생성합니다.
$ aws ec2 create-security-group \ --group-name allow-inbound-traffic \ --description "allow inbound traffic" \ --vpc-id <vpc_id> \ 1 --region <aws_region> \ 2
다음 명령을 실행하여 보안 그룹의 수신에 대한 액세스 권한을 부여합니다.
$ aws ec2 authorize-security-group-ingress \ --group-id <group_id> \ 1 --protocol -1 \ --port 0-0 \ --cidr <vpc_cidr> \ 2 --region <aws_region> \ 3
다음 명령을 실행하여 STS VPC 끝점을 생성합니다.
$ aws ec2 create-vpc-endpoint \ --vpc-id <vpc_id> \ 1 --service-name com.amazonaws.<aws_region>.sts \ 2 --vpc-endpoint-type Interface
다음 명령을 실행하여 ECR VPC 끝점을 생성합니다.
$ aws ec2 create-vpc-endpoint \ --vpc-id <vpc_id> \ --service-name com.amazonaws.<aws_region>.ecr.dkr \ 1 --vpc-endpoint-type Interface
- 1
- VPC가 있는 AWS 리전을 입력합니다.
다음 명령을 실행하여 S3 VPC 끝점을 생성합니다.
$ aws ec2 create-vpc-endpoint \ --vpc-id <vpc_id> \ --service-name com.amazonaws.<aws_region>.s3