피드 구독

개요

컨트롤 플레인 관리 비용을 절감하고 싶으신가요? 여러 컨트롤 플레인을 관리하는 데 따르는 부담을 줄이고 싶으신가요? Red Hat OpenShift용 호스팅된 컨트롤 플레인(HyperShift라고도 함)을 사용하면 AWS(Amazon Web Services)에서 OpenShift 테넌트 클러스터를 규모에 맞게 호스팅할 수 있습니다. 각 독립 실행형 OpenShift 클러스터를 사용할 때 컨트롤 플레인은 3개의 머신 노드에 예약됩니다. 그러나 호스팅된 컨트롤 플레인을 사용하면 컨트롤 플레인이 다른 워크로드와 마찬가지로 사용 가능한 작업자 노드에서 포드로 예약됩니다. 이를 통해 더 적은 수의 노드에서 많은 컨트롤 플레인을 생성하고 실행할 수 있으므로 클러스터를 더 경제적으로 사용하는 동시에 프로젝트, 정책 등과 같은 OpenShift 테넌시 기본 요소를 계속해서 재사용할 수 있습니다. 이렇게 호스팅된 컨트롤 플레인을 활용하면 비용을 절감할 수 있지만, Arm 호스팅된 컨트롤 플레인을 활용하면 비용 절감 효과를 더 높일 수 있습니다.

Arm 호스팅된 컨트롤 플레인은 기존 64비트 Arm OCP(OpenShift Container Platform) 클러스터 환경에 설치할 수 있으므로 64비트 x86 NodePool의 여러 Arm 호스팅된 컨트롤 플레인을 신속하게 배포할 수 있습니다. 이 작업은 모두 AWS 플랫폼에서 수행할 수 있으며, Arm 호스팅된 컨트롤 플레인을 활용함으로써 비용을 절감할 수 있습니다. 이 블로그에서는 Arm 호스팅된 컨트롤 플레인을 설치하면 얻는 장점과 설치 단계를 살펴봅니다.

이 기능의 현재 지원 상태는 기술 프리뷰(Technical Preview, TP) 상태이며 향후 릴리스에서 공식적으로 지원될 예정입니다.

Reduce Costs with ARM Hosted Control Planes on AWS-ko

 

이점

표준 OCP 클러스터가 아닌 Arm 호스팅된 컨트롤 플레인을 사용하면 다음과 같은 추가 이점을 경험할 수 있습니다.

  • Arm 호스팅된 컨트롤 플레인은 동급의 x86 호스팅된 컨트롤 플레인에 비해 비용을 약 20% 절감할 수 있습니다. (m6i.xlarge(x86 기반)와 m6g.xlarge(Arm 기반)의 시간당 비용을 기준으로 한 비용 절감액 비교)
  • 유지 관리 작업 감소
  • 관리 및 워크로드 간 보안 경계 강화
  • 더 적은 수의 노드에서 다수의 컨트롤 플레인을 실행하여 클러스터 비용 절감
  • 컨트롤 플레인 시작 시간 단축
  • 멀티클러스터 관리를 더욱 중앙집중식으로 손쉽게 수행

호스팅된 클러스터의 이점에 대한 자세한 내용은 호스팅된 컨트롤 플레인 개요 설명서에서 확인할 수 있습니다.

클러스터 준비

OCP 4.13.0은 AWS에서 호스팅되는 64비트 Arm OCP 클러스터의 기반으로 실행되고 있습니다.

  1. 멀티클러스터 엔진 오퍼레이터 2.2.4 이상을 설치합니다. 이 오퍼레이터의 설치를 위한 지침은 여기에서 확인할 수 있습니다.
  2. 그런 다음 1.7.1.2 Amazon Web Services S3 버킷 및 S3 OIDC 암호 생성의 단계에 따라 AWS S3 버킷과 S3 OIDC 암호를 설정합니다.
    1. 1단계를 마치면 다음 명령을 실행합니다.
       

      aws s3api put-bucket-ownership-controls --bucket $BUCKET_NAME --ownership-controls="Rules=[{ObjectOwnership=BucketOwnerPreferred}]"
  3. 그런 다음 1.7.1.6 호스팅된 컨트롤 플레인 기능 활성화의 단계에 따라 호스팅된 컨트롤 플레인을 활성화합니다.
  4. 1.7.1.7 호스팅된 컨트롤 플레인 CLI 설치에 따라 hypershift cli를 다운로드합니다.

 

데모

이어지는 섹션에서는 다음 단계를 안내합니다.

  1. 환경 변수 구성
  2. Arm 호스팅된 컨트롤 플레인 및 64비트 x86 게스트 클러스터 생성
  3. 기존 Arm 호스팅된 컨트롤 플레인에 추가적인 64비트 x86 게스트 클러스터 추가
  4. Arm 호스팅된 컨트롤 플레인 삭제

환경 변수 구성

먼저 HyperShift 커맨드라인 툴에 필요한 일부 환경 변수를 설정하여 Arm HyperShift 오퍼레이터를 설치하고 호스팅된 컨트롤 플레인 클러스터를 생성합니다. 이는 1.7.2.3 AWS에 호스팅된 클러스터 배포의 1단계와 매우 유사합니다.

Red Hat OpenShift Cluster Manager에서 암호 가져오기 이미지를 획득할 수 있습니다.

REGION=us-east-1
AWS_CREDS=~/.aws/credentials
BASE_DOMAIN=my.base.domain.com
PULL_SECRET=~/all-the-pull-secrets.json
BUCKET_NAME=my-s3-bucket
CLUSTER_NAME=my-hypershift-arm-cluster
NODEPOOL_NAME=my-additional-x86-guest-cluster
NODEPOOL_REPLICAS=2

 

OpenShift 64비트 Arm 관리 클러스터를 가리키도록 KUBECONFIG 환경 변수를 설정합니다.

$ hypershift % export KUBECONFIG=/Users/user/aws-oc-nightly/auth/kubeconfig

 

Arm 호스팅된 컨트롤 플레인 및 64비트 x86 게스트 클러스터 생성

1) 그런 다음, 관리 클러스터가 64비트 Arm이고 호스팅된 컨트롤 플레인 게스트 클러스터가 64비트 x86이 되므로 멀티아키텍처 릴리스 이미지를 활용하도록 표준 릴리스 이미지를 재정의하면서 2개의 노드가 있는 초기 게스트 클러스터로 호스팅된 컨트롤 플레인을 생성합니다. 이렇게 하면 호스팅된 클러스터 및 해당 게스트 클러스터를 생성할 때 올바른 부트스트랩 구성이 사용됩니다.

이는 1.7.2.3 AWS에 호스팅된 클러스터 배포의 4단계와 매우 유사합니다.

$ hypershift create cluster aws \ 
--name $CLUSTER_NAME \
--node-pool-replicas=$NODEPOOL_REPLICAS \
--base-domain $BASE_DOMAIN \
--pull-secret $PULL_SECRET \
--aws-creds $AWS_CREDS \
--region $REGION \
--release-image quay.io/openshift-release-dev/ocp-release:4.13.0-multi

 

2) OpenShift 커맨드라인 툴을 사용하여 게스트 클러스터가 성공적으로 생성되었는지 확인합니다.

$ oc get nodepools --namespace clusters
NAME                                   CLUSTER                     DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION       UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
my-hypershift-arm-cluster-us-east-1a   my-hypershift-arm-cluster   2               2               False         False        4.13.0

 

3) 호스팅된 컨트롤 플레인이 성공적으로 생성되었는지 확인합니다.

$ oc get --namespace clusters hostedclusters
NAME                        VERSION       KUBECONFIG                                   PROGRESS    AVAILABLE   PROGRESSING   MESSAGE
my-hypershift-arm-cluster   4.13.0   my-hypershift-arm-cluster-admin-kubeconfig   Completed   True        False         The hosted control plane is available

 

4) 게스트 클러스터와 호스팅된 컨트롤 플레인이 성공적으로 생성되면 KUBECONFIG를 생성하여 새 게스트 클러스터로 이동하고 AWS 머신이 게스트 클러스터에 있는지 확인합니다.

$ hypershift create kubeconfig > temp_kubeconfig
2023/03/21 11:12:32 selected 1 of 1 hostedclusters for the kubeconfig
2023/03/21 11:12:32 adding clusters/my-hypershift-arm-cluster to kubeconfig
2023/03/21 11:12:32 added clusters-my-hypershift-arm-cluster to kubeconfig
2023/03/21 11:12:32 created kubeconfig with 1 contexts
$ hypershift % export KUBECONFIG=/Users/user/hypershift/temp_kubeconfig
$ hypershift % oc get nodes
NAME                           STATUS   ROLES    AGE   VERSION
ip-10-0-142-149.ec2.internal   Ready    worker   10m   v1.26.2+06e8c46
ip-10-0-143-86.ec2.internal    Ready    worker   10m   v1.26.2+06e8c46

 

기존 Arm 호스팅된 컨트롤 플레인에 추가적인 64비트 x86 게스트 클러스터 추가

또한 필요에 따라 HyperShift 커맨드라인 툴을 활용하여 호스팅된 컨트롤 플레인에 추가적인 게스트 클러스터를 추가할 수 있습니다.

$ hypershift create nodepool aws \
--cluster-name $CLUSTER_NAME \
--name $NODEPOOL_NAME \
--node-count=$NODEPOOL_REPLICAS
NodePool my-additional-x86-guest-cluster created

 

OpenShift 커맨드라인 툴 명령을 사용하여 새 게스트 클러스터가 성공적으로 초기화되었는지 확인합니다.

$ oc get nodepools --namespace clusters
NAME                                   CLUSTER                     DESIRED NODES   CURRENT NODES   AUTOSCALING   AUTOREPAIR   VERSION       UPDATINGVERSION   UPDATINGCONFIG   MESSAGE
my-additional-x86-guest-cluster        my-hypershift-arm-cluster   2               2               False         False        4.13.0
my-hypershift-arm-cluster-us-east-1a   my-hypershift-arm-cluster   2               2               False         False        4.13.0

 

Arm 호스팅된 컨트롤 플레인 삭제

Arm 호스팅된 컨트롤 플레인을 삭제하려면 아래의 명령을 실행합니다. 이는 1.7.2.6 AWS에서 호스팅된 클러스터 삭제의 1단계와 매우 유사합니다.

$ hypershift destroy cluster aws \
--name $CLUSTER_NAME \ 
--aws-creds $AWS_CREDS

 

요약

지금까지 64비트 x86 테넌트 클러스터로 Arm 호스팅된 컨트롤 플레인을 설치하고 확인하는 데 필요한 단계를 시연했습니다. 또한 HyperShift 커맨드라인 툴을 사용하여 Arm HyperShift 오퍼레이터를 설치하는 방법을 시연했고, 동일한 Arm 호스팅된 컨트롤 플레인을 활용하여 추가적인 64비트 x86 테넌트 클러스터를 생성했으며, 64비트 x86 테넌트 클러스터가 성공적으로 생성되었는지 확인했고, Arm 호스팅된 컨트롤 플레인이 성공적으로 생성되었는지 확인했으며, Arm 호스팅된 컨트롤 플레인을 삭제했습니다.

향후 작업

향후 작업에서는 호스팅된 컨트롤 플레인의 멀티아키텍처 CPU 기능을 확장할 예정입니다. 다음으로 추가할 기능은 AWS 기반 64비트 Arm NodePool 생성의 활성화입니다. 이 기능을 사용하면 동일한 호스팅된 컨트롤 플레인에서 64비트 x86과 64비트 Arm NodePool을 실행할 수 있습니다(참고: 동일한 NodePool 내에서 CPU 아키텍처를 혼합할 수 없음).

AWS 기반 64비트 Arm NodePool에 이어 향후에는 64비트 Arm 호스팅된 컨트롤 플레인과 64비트 Arm NodePool을 다른 온프레미스 및 클라우드 공급업체로 확장할 예정입니다.


저자 소개

Senior software engineer with over 10 years of industry experience in the full software development cycle. Bryan’s work in Red Hat over the past few years has primarily focused on expanding Arm offerings in Red Hat OpenShift and development on Hosted Control Planes.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

채널별 검색

automation icon

오토메이션

기술, 팀, 인프라를 위한 IT 자동화 최신 동향

AI icon

인공지능

고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트

open hybrid cloud icon

오픈 하이브리드 클라우드

하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요

security icon

보안

환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보

edge icon

엣지 컴퓨팅

엣지에서의 운영을 단순화하는 플랫폼 업데이트

Infrastructure icon

인프라

세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보

application development icon

애플리케이션

복잡한 애플리케이션에 대한 솔루션 더 보기

Original series icon

오리지널 쇼

엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리