1.17. 호스트된 컨트롤 플레인 클러스터 사용 (기술 프리뷰)
멀티 클러스터 엔진 operator 2.0을 사용하는 Kubernetes 버전 2.5용 Red Hat Advanced Cluster Management는 두 가지 다른 컨트롤 플레인 구성을 사용하여 Red Hat OpenShift Container Platform 클러스터를 배포할 수 있습니다. 독립 실행형 구성은 여러 개의 전용 가상 머신 또는 물리적 머신을 사용하여 OpenShift Container Platform 컨트롤 플레인을 호스팅합니다. 호스트된 컨트롤 플레인을 프로비저닝하여 각 컨트롤 플레인의 전용 물리적 머신 없이도 호스팅 서비스 클러스터에서 Pod로 OpenShift Container Platform 컨트롤 플레인을 프로비저닝할 수 있습니다.
참고: 이 기능은 Kubernetes용 Red Hat Advanced Cluster Management 없이 다중 클러스터 엔진 operator 2.0에서도 작동합니다.
Red Hat Advanced Cluster Management의 경우 Amazon Web Services가 기술 프리뷰로 지원됩니다. Red Hat OpenShift Container Platform 버전 4.10.7 이상의 컨트롤 플레인을 호스팅할 수 있습니다.
컨트롤 플레인은 단일 네임스페이스에 포함되어 호스팅된 컨트롤 플레인 클러스터와 연결된 Pod로 실행됩니다. OpenShift Container Platform에서 이러한 유형의 호스팅 클러스터를 프로비저닝할 때 컨트롤 플레인과 관계없이 작업자 노드를 프로비저닝합니다.
호스팅된 컨트롤 플레인 클러스터의 다음 이점을 참조하십시오.
- 전용 컨트롤 플레인 노드를 호스팅할 필요가 없어 비용 절감
- 컨트롤 플레인과 워크로드를 분리하여 격리를 개선하고 변경이 필요할 수 있는 구성 오류를 줄입니다.
- 컨트롤 플레인 노드 부트스트랩에 대한 요구 사항을 제거하여 클러스터 프로비저닝 시간을 크게 줄입니다.
- turn-key 배포 지원 또는 완전히 사용자 지정된 OpenShift Container Platform 프로비저닝
다음 제품 문서에서 호스팅 컨트롤 플레인을 사용하는 방법에 대한 자세한 내용을 참조하십시오.
1.17.1. 호스트된 컨트롤 플레인 구성
호스트된 컨트롤 플레인을 구성하려면 호스팅 서비스 클러스터 및 호스트된 클러스터가 필요합니다. 기존 클러스터에 HyperShift Operator를 배포하면 해당 클러스터를 호스팅 서비스 클러스터로 만들고 호스트된 클러스터 생성을 시작할 수 있습니다.
호스트된 컨트롤 플레인은 기술 프리뷰 기능이므로 관련 구성 요소는 기본적으로 비활성화되어 있습니다. multiclusterengine
사용자 정의 리소스를 편집하여 spec.overrides.components[?(@.name=='hypershift-preview')].enabled
를 true
로 설정하여 기능을 활성화합니다.
다음 명령을 입력하여 호스팅된 컨트롤 플레인 기능이 활성화되어 있는지 확인합니다.
oc patch mce multiclusterengine-sample--type=merge -p '{"spec":{"overrides":{"components":[{"name":"hypershift-preview","enabled": true}]}}}'
1.17.1.1. 호스팅 서비스 클러스터 구성
호스팅 서비스 클러스터로 작동하도록 기존 클러스터를 구성하여 호스팅 컨트롤 플레인을 배포할 수 있습니다. 호스팅 서비스 클러스터는 컨트롤 플레인이 호스팅되는 OpenShift Container Platform 클러스터이며 허브 클러스터 또는 OpenShift Container Platform 관리형 클러스터 중 하나일 수 있습니다.
1.17.1.1.1. 사전 요구 사항
호스팅 서비스 클러스터를 구성하려면 다음 사전 요구 사항이 있어야 합니다.
- 멀티 클러스터 엔진 Operator는 Red Hat OpenShift Container Platform에서 관리하는 하나 이상의 클러스터에 설치되었습니다. 멀티 클러스터 엔진 Operator는 Red Hat Advanced Cluster Management 버전 2.5 이상을 설치할 때 자동으로 설치되며 OpenShift Container Platform OperatorHub의 Operator로 Red Hat Advanced Cluster Management 없이 설치할 수도 있습니다.
Red Hat Advanced Cluster Management hub 클러스터를 호스팅 서비스 클러스터로 설정하려면 다음 단계를 완료하여
로컬 클러스터를
호스팅 서비스 클러스터로 구성해야 합니다.다음 예와 유사한
import-hub.yaml
이라는 YAML 파일을 생성합니다.apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: labels: local-cluster: "true" name: local-cluster spec: hubAcceptsClient: true leaseDurationSeconds: 60
다음을 입력하여 파일을 적용합니다.
oc apply -f import-hub.yaml
자체적으로 관리하는 허브 클러스터는
클러스터 목록에서 로컬
클러스터로 지정됩니다.
1.17.1.1.2. 호스팅 서비스 클러스터 구성
멀티 클러스터 엔진 Operator가 설치된 클러스터에서 OpenShift Container Platform 관리 클러스터를 호스팅 서비스 클러스터로 활성화하려면 다음 단계를 완료합니다.
AWS에서 호스팅 클러스터를 생성하고 관리하려면 HyperShift Operator에 대한
hypershift-operator-oidc-provider-s3-credentials
라는 OIDC S3 인증 정보 시크릿을 생성합니다. 호스팅 서비스 클러스터로 사용되는 관리형 클러스터의 네임스페이스인 관리형 클러스터 네임스페이스에 보안을 저장합니다.local-cluster
를 사용한 경우local-cluster
네임스페이스에 보안을 생성합니다.시크릿에는 세 개의 필드가 포함되어야 합니다.
버킷
필드에는 호스트 OIDC 검색 문서에 대한 공용 액세스 권한이 있는 S3 버킷이 포함되어 있습니다.credentials
필드는 버킷에 액세스할 수 있는기본
프로필의 인증 정보가 포함된 파일에 대한 참조입니다. 기본적으로 HyperShift는기본
프로필만 사용하여버킷
을 작동합니다.region
필드는 S3 버킷의 리전을 지정합니다.보안에 대한 자세한 내용은 HyperShift 설명서에서 시작하기 를 참조하십시오. 다음 예제에서는 샘플 AWS 시크릿 템플릿을 보여줍니다.
oc create secret generic hypershift-operator-oidc-provider-s3-credentials --from-file=credentials=$HOME/.aws/credentials --from-literal=bucket=<s3-bucket-for-hypershift> --from-literal=region=<region> -n <hypershift-hosting-service-cluster>
참고: 시크릿에 대한 재해 복구 백업은 자동으로 활성화되지 않습니다. 다음 명령을 실행하여 재해 복구를 위해
hypershift-operator-oidc-provider-s3-credentials
보안을 백업할 수 있는 레이블을 추가합니다.oc label secret hypershift-operator-oidc-provider-s3-credentials -n <hypershift-hosting-service-cluster> cluster.open-cluster-management.io/backup=""
HyperShift 애드온을 설치합니다.
HyperShift Operator를 호스팅하는 클러스터는 호스팅 서비스 클러스터입니다. 이 단계에서는
hypershift-addon
을 사용하여 관리형 클러스터에 HyperShift Operator를 설치합니다.다음 예와 유사한 파일을 생성하여
ManagedClusterAddon
HyperShift 애드온을 생성합니다.apiVersion: addon.open-cluster-management.io/v1alpha1 kind: ManagedClusterAddOn metadata: name: hypershift-addon namespace: <managed-cluster-name> spec: installNamespace: open-cluster-management-agent-addon
managed-cluster-name
을 HyperShift Operator를 설치하려는 관리형 클러스터의 이름으로 교체합니다. Red Hat Advanced Cluster Management hub 클러스터에 설치하는 경우 이 값에local-cluster
를 사용합니다.다음 명령을 실행하여 파일을 적용합니다.
oc apply -f <filename>
파일
이름을 생성한 파일의 이름으로 바꿉니다.
다음 명령을 실행하여
hypershift-addon
이 설치되었는지 확인합니다.oc get managedclusteraddons -n <hypershift-hosting-service-cluster> hypershift-addon
애드온이 설치된 경우 출력은 다음 예와 유사합니다.
NAME AVAILABLE DEGRADED PROGRESSING hypershift-addon True
HyperShift 애드온이 설치되고 호스팅 서비스 클러스터를 사용하여 HyperShift 클러스터를 관리할 수 있습니다.
1.17.1.2. 호스팅된 클러스터 배포
HyperShift Operator를 설치하고 호스팅 서비스 클러스터로 기존 클러스터를 활성화한 후 HypershiftDeployment
사용자 지정 리소스를 생성하여 HyperShift 호스팅 클러스터를 프로비저닝할 수 있습니다.
콘솔 또는 파일 추가를 사용하여 클라우드 공급자 시크릿을 인증 정보로 생성합니다. VPC, 서브넷 및 NAT 게이트웨이와 같이 클러스터에 대한 인프라 리소스를 생성할 수 있는 권한이 있어야 합니다. 이 계정은 작업자가 살고 있는 게스트 클러스터의 계정에도 대응해야 합니다. 필요한 권한에 대한 자세한 내용은 HyperShift 설명서에서 AWS 인프라 및 IAM 리소스 만들기 를 참조하십시오.
다음 예제에서는 AWS의 형식을 보여줍니다.
apiVersion: v1 metadata: name: my-aws-cred namespace: default # Where you create HypershiftDeployment resources type: Opaque kind: Secret stringData: ssh-publickey: # Value ssh-privatekey: # Value pullSecret: # Value, required baseDomain: # Value, required aws_secret_access_key: # Value, required aws_access_key_id: # Value, required
- 콘솔을 사용하여 이 시크릿을 생성하려면 탐색 메뉴의 자격 증명에 액세스하여 인증 정보 생성 단계를 따르십시오.
명령줄을 사용하여 보안을 생성하려면 다음 명령을 실행합니다.
oc create secret generic <my-secret> -n <hypershift-deployment-namespace> --from-literal=baseDomain='your.domain.com' --from-literal=aws_access_key_id='your-aws-access-key' --from-literal=aws_secret_access_key='your-aws-secret-key' --from-literal=pullSecret='your-quay-pull-secret' --from-literal=ssh-publickey='your-ssh-publickey' --from-literal=ssh-privatekey='your-ssh-privatekey'
참고: 시크릿에 대한 재해 복구 백업은 자동으로 활성화되지 않습니다. 다음 명령을 실행하여 재해 복구를 위해 보안을 백업할 수 있는 레이블을 추가합니다.
oc label secret <my-secret> -n <hypershift-deployment-namespace> cluster.open-cluster-management.io/backup=""
클라우드 공급자 시크릿 네임스페이스에서
HypershiftDeployment
사용자 지정 리소스 파일을 생성합니다.HypershiftDeployment
사용자 지정 리소스는 공급자 계정에서 인프라를 생성하고, 생성된 인프라에서 인프라 컴퓨팅 용량을 구성하고, 호스팅 컨트롤 플레인을 사용하는nodePool
을 프로비저닝하며, 호스팅 서비스 클러스터에서 호스팅된 컨트롤 플레인을 생성합니다.다음 예와 유사한 정보가 포함된 파일을 생성합니다.
apiVersion: cluster.open-cluster-management.io/v1alpha1 kind: HypershiftDeployment metadata: name: <cluster> namespace: default spec: hostingCluster: <hosting-service-cluster> hostingNamespace: clusters hostedClusterSpec: networking: machineCIDR: 10.0.0.0/16 # Default networkType: OpenShiftSDN podCIDR: 10.132.0.0/14 # Default serviceCIDR: 172.31.0.0/16 # Default platform: type: AWS pullSecret: name: <cluster>-pull-secret # This secret is created by the controller release: image: quay.io/openshift-release-dev/ocp-release:4.10.15-x86_64 # Default services: - service: APIServer servicePublishingStrategy: type: LoadBalancer - service: OAuthServer servicePublishingStrategy: type: Route - service: Konnectivity servicePublishingStrategy: type: Route - service: Ignition servicePublishingStrategy: type: Route sshKey: {} nodePools: - name: <cluster> spec: clusterName: <cluster> management: autoRepair: false replace: rollingUpdate: maxSurge: 1 maxUnavailable: 0 strategy: RollingUpdate upgradeType: Replace platform: aws: instanceType: m5.large type: AWS release: image: quay.io/openshift-release-dev/ocp-release:4.10.15-x86_64 # Default replicas: 2 infrastructure: cloudProvider: name: <my-secret> configure: True platform: aws: region: <region>
cluster
를 클러스터 이름으로 교체합니다.hosting-service-cluster
를 HyperShift Operator를 호스팅하는 클러스터 이름으로 교체합니다.my-secret
을 시크릿으로 교체하여 클라우드 공급자에 액세스합니다.리전
을 클라우드 공급자의 리전으로 바꿉니다.다음 명령을 입력하여 파일을 적용합니다.
oc apply -f <filename>
API의 필드 정의를 참조하여 올바르게 수행할 수 있습니다.
다음 명령을 실행하여
HypershiftDeployment
상태를 확인합니다.oc get hypershiftdeployment -n default hypershift-demo -w
호스팅 클러스터가 생성되면 자동으로 허브로 가져옵니다. Red Hat Advanced Cluster Management 콘솔에서 클러스터 목록을 보거나 다음 명령을 실행하여 이를 확인할 수 있습니다.
oc get managedcluster <hypershiftDeployment.Spec.infraID>
1.17.1.3. 호스팅 서비스 클러스터에 액세스
이제 클러스터에 액세스할 수 있습니다. 액세스 보안은 hypershift-hosting-service-cluster
네임스페이스에 저장됩니다. 이 네임스페이스는 호스팅 서비스 클러스터의 이름과 동일합니다. 다음 형식의 시크릿 이름 형식을 확인합니다.
-
kubeconfig
secret: <hypershiftDeployment.Spec.Spec.hostingNamespace>-<hypershiftDeployment.Name>-admin-kubeconfig
(clusters-hypershift-demo-admin-kubeconfig) -
kubeadmin
암호 보안: <hypershiftDeployment.Spec.hostingNamespace>-<hypershiftDeployment.Name>-kubeadmin-password
(clusters-hypershift-demo-kubeadmin-password)
1.17.2. 호스팅된 컨트롤 플레인 리소스 비활성화
호스트된 컨트롤 플레인 클러스터 기능을 비활성화하는 경우 HyperShift 호스팅 클러스터를 제거하고 HyperShift Operator를 제거해야 합니다.
1.17.2.1. HyperShift 호스트 클러스터 삭제
HyperShift 호스팅 클러스터를 삭제하려면 다음 명령 중 하나를 실행하여 HypershiftDeployment
리소스를 삭제합니다.
oc delete -f <HypershiftDeployment_yaml_file_name>
또는
oc delete hd -n <HypershiftDeployment_namespace> <HypershiftDeployment_resource_name>
1.17.2.2. HyperShift Operator 설치 제거
관리 또는 호스팅 서비스 클러스터에서 HyperShift Operator를 제거하려면 다음 명령을 실행하여 관리 클러스터에서 hypershift-addon
ManagedClusterAddon
을 삭제합니다.
oc delete managedclusteraddon -n <hypershift-management-cluster> hypershift-addon