22.5. ZTP로 단일 노드 OpenShift 클러스터 수동 설치
RHACM(Red Hat Advanced Cluster Management) 및 지원 서비스를 사용하여 관리형 단일 노드 OpenShift 클러스터를 배포할 수 있습니다.
여러 개의 관리형 클러스터를 생성하는 경우 ZTP와 함께 far edge 사이트 배포에 설명된 site Config
방법을 사용합니다.
대상 베어 메탈 호스트는 vDU 애플리케이션 워크로드에 대한 권장 클러스터 구성에 나열된 네트워킹, 펌웨어 및 하드웨어 요구 사항을 충족해야 합니다.
22.5.1. 수동으로 ZTP 설치 및 구성 CR 생성
ztp-site-generate
컨테이너의 생성기
진입점을 사용하여 site Config
및 PolicyGenTemplate
CR을 기반으로 클러스터의 사이트 설치 및 구성 CR(사용자 정의 리소스)을 생성합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
권한이 있는 사용자로 hub 클러스터에 로그인했습니다.
절차
다음 명령을 실행하여 출력 폴더를 생성합니다.
$ mkdir -p ./out
ztp-site-generate
컨테이너 이미지에서argocd
디렉터리를 내보냅니다.$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.11 extract /home/ztp --tar | tar x -C ./out
./out
디렉터리에는out/argocd/example/
폴더에 참조PolicyGenTemplate
및SiteConfig
CR이 있습니다.출력 예
out └── argocd └── example ├── policygentemplates │ ├── common-ranGen.yaml │ ├── example-sno-site.yaml │ ├── group-du-sno-ranGen.yaml │ ├── group-du-sno-validator-ranGen.yaml │ ├── kustomization.yaml │ └── ns.yaml └── siteconfig ├── example-sno.yaml ├── KlusterletAddonConfigOverride.yaml └── kustomization.yaml
사이트 설치 CR의 출력 폴더를 생성합니다.
$ mkdir -p ./site-install
설치하려는 클러스터 유형의
SiteConfig
CR 예제를 수정합니다.example-sno.yaml
을site-1-sno.yaml
에 복사하고 CR을 수정하여 설치하려는 사이트 및 베어 메탈 호스트의 세부 정보와 일치하도록 수정합니다.단일 노드 OpenShift 클러스터 siteConfig CR의 예
apiVersion: ran.openshift.io/v1 kind: SiteConfig metadata: name: "<site_name>" namespace: "<site_name>" spec: baseDomain: "example.com" pullSecretRef: name: "assisted-deployment-pull-secret" 1 clusterImageSetNameRef: "openshift-4.11" 2 sshPublicKey: "ssh-rsa AAAA..." 3 clusters: - clusterName: "<site_name>" networkType: "OVNKubernetes" clusterLabels: 4 common: true group-du-sno: "" sites : "<site_name>" clusterNetwork: - cidr: 1001:1::/48 hostPrefix: 64 machineNetwork: - cidr: 1111:2222:3333:4444::/64 serviceNetwork: - 1001:2::/112 additionalNTPSources: - 1111:2222:3333:4444::2 #crTemplates: # KlusterletAddonConfig: "KlusterletAddonConfigOverride.yaml" 5 nodes: - hostName: "example-node.example.com" 6 role: "master" bmcAddress: idrac-virtualmedia://<out_of_band_ip>/<system_id>/ 7 bmcCredentialsName: name: "bmh-secret" 8 bootMACAddress: "AA:BB:CC:DD:EE:11" bootMode: "UEFI" 9 rootDeviceHints: wwn: "0x11111000000asd123" cpuset: "0-1,52-53" 10 nodeNetwork: 11 interfaces: - name: eno1 macAddress: "AA:BB:CC:DD:EE:11" config: interfaces: - name: eno1 type: ethernet state: up ipv4: enabled: false ipv6: 12 enabled: true address: - ip: 1111:2222:3333:4444::aaaa:1 prefix-length: 64 dns-resolver: config: search: - example.com server: - 1111:2222:3333:4444::2 routes: config: - destination: ::/0 next-hop-interface: eno1 next-hop-address: 1111:2222:3333:4444::1 table-id: 254
- 1
- site
Config CR과 동일한 네임스페이스를 사용하여
을 생성합니다.assisted-deployment-pull-secret
CR - 2
clusterImageSetNameRef
는 hub 클러스터에서 사용 가능한 이미지 세트를 정의합니다. hub 클러스터에서 지원되는 버전 목록을 보려면oc get clusterimagesets
를 실행합니다.- 3
- 클러스터에 액세스하는 데 사용되는 SSH 공개 키를 구성합니다.
- 4
- 클러스터 레이블은 사용자가 정의한
PolicyGenTemplate
CR의bindingRules
필드에 대응해야 합니다. 예를 들어policygentemplates/common-ranGen.yaml
은common: true
set,policygentemplates/group-du-sno-ranGen.yaml
이group-du-sno: ""
가 설정된 모든 클러스터에 적용됩니다. - 5
- 선택사항입니다.
KlusterletAddonConfig
아래에 있는 CR 사양을 사용하여 클러스터에 대해 생성된 기본KlusterletAddonConfig
를 덮어씁니다. - 6
- 단일 노드 배포의 경우 단일 호스트를 정의합니다. 3-노드 배포의 경우 3개의 호스트를 정의합니다. 표준 배포의 경우
master와 role
으로 정의된 두 개 이상의 호스트인worker
를 사용하여 3개의 호스트를 정의합니다. - 7
- 호스트에 액세스하는 데 사용하는 BMC 주소입니다. 모든 클러스터 유형에 적용됩니다.
- 8
- 호스트 BMC 자격 증명을 사용하여 별도로 생성하는
bmh-secret
CR의 이름입니다.bmh-secret
CR을 생성할 때 호스트를 프로비저닝하는 siteConfig CR
과 동일한 네임스페이스를 사용합니다. - 9
- 호스트의 부팅 모드를 구성합니다. 기본값은
UEFI
입니다.UEFISecureBoot
를 사용하여 호스트에서 보안 부팅을 활성화합니다. - 10
cpuset
는 워크로드 파티셔닝을 위해 클러스터PerformanceProfile
CRspec.cpu.reserved
필드에 설정된 값과 일치해야 합니다.- 11
- 노드의 네트워크 설정을 지정합니다.
- 12
- 호스트의 IPv6 주소를 구성합니다. 고정 IP 주소가 있는 단일 노드 OpenShift 클러스터의 경우 노드별 API 및 Ingress IP가 동일해야 합니다.
다음 명령을 실행하여 수정된 site
Config
CRsite-1-sno.yaml
을 처리하여 day-0 설치 CR을 생성합니다.$ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-install:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.11.1 generator install site-1-sno.yaml /output
출력 예
site-install └── site-1-sno ├── site-1_agentclusterinstall_example-sno.yaml ├── site-1-sno_baremetalhost_example-node1.example.com.yaml ├── site-1-sno_clusterdeployment_example-sno.yaml ├── site-1-sno_configmap_example-sno.yaml ├── site-1-sno_infraenv_example-sno.yaml ├── site-1-sno_klusterletaddonconfig_example-sno.yaml ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml ├── site-1-sno_machineconfig_predefined-extra-manifests-worker.yaml ├── site-1-sno_managedcluster_example-sno.yaml ├── site-1-sno_namespace_example-sno.yaml └── site-1-sno_nmstateconfig_example-node1.example.com.yaml
선택 사항:
-E
옵션을 사용하여 참조 siteConfig
CR을 처리하여 특정 클러스터 유형의 Day-0MachineConfig
설치 CR만 생성합니다. 예를 들어 다음 명령을 실행합니다.MachineConfig
CR의 출력 폴더를 생성합니다.$ mkdir -p ./site-machineconfig
MachineConfig
설치 CR을 생성합니다.$ podman run -it --rm -v `pwd`/out/argocd/example/siteconfig:/resources:Z -v `pwd`/site-machineconfig:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.11.1 generator install -E site-1-sno.yaml /output
출력 예
site-machineconfig └── site-1-sno ├── site-1-sno_machineconfig_02-master-workload-partitioning.yaml ├── site-1-sno_machineconfig_predefined-extra-manifests-master.yaml └── site-1-sno_machineconfig_predefined-extra-manifests-worker.yaml
이전 단계의 참조를 사용하여 Day-2
구성 CR
을 생성하고 내보냅니다. 다음 명령을 실행합니다.2일 차 CR의 출력 폴더를 생성합니다.
$ mkdir -p ./ref
Day-2 구성 CR을 생성하고 내보냅니다.
$ podman run -it --rm -v `pwd`/out/argocd/example/policygentemplates:/resources:Z -v `pwd`/ref:/output:Z,U registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.11.1 generator config -N . /output
이 명령은 단일 노드 OpenShift, 3 노드 클러스터 및
./ref
폴더에 표준 클러스터에 대한 예제 그룹 및 사이트별PolicyGenTemplate
CR을 생성합니다.출력 예
ref └── customResource ├── common ├── example-multinode-site ├── example-sno ├── group-du-3node ├── group-du-3node-validator │ └── Multiple-validatorCRs ├── group-du-sno ├── group-du-sno-validator ├── group-du-standard └── group-du-standard-validator └── Multiple-validatorCRs
- 생성된 CR을 클러스터를 설치하는 데 사용하는 CR의 기준으로 사용합니다. "단일 관리 클러스터 설치"에 설명된 대로 hub 클러스터에 설치 CR을 적용합니다. 클러스터 설치가 완료된 후 구성 CR을 클러스터에 적용할 수 있습니다.
22.5.2. 관리형 베어 메탈 호스트 시크릿 생성
관리 베어 메탈 호스트에 필요한 Secret
CR(사용자 정의 리소스)을 hub 클러스터에 추가합니다. 레지스트리에서 클러스터 설치 이미지를 가져오기 위해 BMC(Baseboard Management Controller) 및 지원 설치 서비스 시크릿에 액세스하려면 ZTP 파이프라인의 시크릿이 필요합니다.
보안은 이름으로 site Config CR
에서 참조됩니다. 네임스페이스는 SiteConfig
네임스페이스와 일치해야 합니다.
절차
OpenShift 및 모든 애드온 클러스터 Operator를 설치하는 데 필요한 BMC(Host Baseboard Management Controller) 및 풀 시크릿(pull secret)의 인증 정보가 포함된 YAML 시크릿 파일을 생성합니다.
다음 YAML을
example-sno-secret.yaml
파일로 저장합니다.apiVersion: v1 kind: Secret metadata: name: example-sno-bmc-secret namespace: example-sno 1 data: 2 password: <base64_password> username: <base64_username> type: Opaque --- apiVersion: v1 kind: Secret metadata: name: pull-secret namespace: example-sno 3 data: .dockerconfigjson: <pull_secret> 4 type: kubernetes.io/dockerconfigjson
-
클러스터를 설치하는 데 사용하는
kustomization.yaml
파일에 상대 경로를example-sno-secret.yaml
에 추가합니다.
22.5.3. 단일 관리형 클러스터 설치
지원 서비스 및 RHACM(Red Hat Advanced Cluster Management)을 사용하여 단일 관리 클러스터를 수동으로 배포할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
권한이 있는 사용자로 hub 클러스터에 로그인했습니다. -
베이스 보드 관리 컨트롤러 (BMC)
Secret
및 이미지 pull-secretSecret
(CR)을 생성했습니다. 자세한 내용은 "관리된 베어 메탈 호스트 시크릿 생성"을 참조하십시오. - 대상 베어 메탈 호스트는 관리 클러스터의 네트워킹 및 하드웨어 요구 사항을 충족합니다.
절차
배포할 각 특정 클러스터 버전에 대한
ClusterImageSet
을 생성합니다(예:clusterImageSet-4.11.yaml
).ClusterImageSet
의 형식은 다음과 같습니다.apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: openshift-4.11.0 1 spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.11.0-x86_64 2
clusterImageSet
CR을 적용합니다.$ oc apply -f clusterImageSet-4.11.yaml
cluster-namespace.yaml
파일에Namespace
CR을 생성합니다.apiVersion: v1 kind: Namespace metadata: name: <cluster_name> 1 labels: name: <cluster_name> 2
다음 명령을 실행하여
Namespace
CR을 적용합니다.$ oc apply -f cluster-namespace.yaml
ztp-site-generate
컨테이너에서 추출하고 요구 사항을 충족하도록 사용자 정의된 생성된 day-0 CR을 적용합니다.$ oc apply -R ./site-install/site-sno-1
22.5.4. 관리형 클러스터 설치 상태 모니터링
클러스터 상태를 확인하여 클러스터 프로비저닝이 성공했는지 확인합니다.
사전 요구 사항
-
모든 사용자 지정 리소스가 구성 및 프로비저닝되고
Agent
사용자 지정 리소스는 관리 클러스터의 허브에 생성됩니다.
절차
관리형 클러스터의 상태를 확인합니다.
$ oc get managedcluster
true
는 관리형 클러스터가 준비되었음을 나타냅니다.에이전트 상태를 확인합니다.
$ oc get agent -n <cluster_name>
describe
명령을 사용하여 에이전트 상태에 대한 자세한 설명을 제공합니다.BackendError
,InputError
,ValidationsFailing
,InstallationFailed
,AgentIConnected가
포함된 상태를 알 수 있습니다. 이러한 상태는Agent
및AgentClusterInstall
사용자 정의 리소스와 관련이 있습니다.$ oc describe agent -n <cluster_name>
클러스터 프로비저닝 상태를 확인합니다.
$ oc get agentclusterinstall -n <cluster_name>
describe
명령을 사용하여 클러스터 프로비저닝 상태에 대한 자세한 설명을 제공합니다.$ oc describe agentclusterinstall -n <cluster_name>
관리형 클러스터의 애드온 서비스 상태를 확인합니다.
$ oc get managedclusteraddon -n <cluster_name>
관리 클러스터의
kubeconfig
파일의 인증 정보를 검색합니다.$ oc get secret -n <cluster_name> <cluster_name>-admin-kubeconfig -o jsonpath={.data.kubeconfig} | base64 -d > <directory>/<cluster_name>-kubeconfig
22.5.5. 관리형 클러스터 문제 해결
관리 클러스터에서 발생할 수 있는 설치 문제를 진단하려면 다음 절차를 사용하십시오.
절차
관리형 클러스터의 상태를 확인합니다.
$ oc get managedcluster
출력 예
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE SNO-cluster true True True 2d19h
AVAILABLE
열의 상태가True
이면 관리 클러스터가 허브에 의해 관리되고 있습니다.AVAILABLE
열의 상태를알 수 없는
경우 관리 클러스터는 허브에서 관리되지 않습니다. 자세한 정보를 얻으려면 다음 단계를 계속 확인하십시오.AgentClusterInstall
상태를 확인합니다.$ oc get clusterdeployment -n <cluster_name>
출력 예
NAME PLATFORM REGION CLUSTERTYPE INSTALLED INFRAID VERSION POWERSTATE AGE Sno0026 agent-baremetal false Initialized 2d14h
INSTALLED
열의 상태가false
이면 설치에 실패했습니다.설치에 실패한 경우 다음 명령을 입력하여
AgentClusterInstall
리소스의 상태를 확인합니다.$ oc describe agentclusterinstall -n <cluster_name> <cluster_name>
오류를 해결하고 클러스터를 재설정합니다.
클러스터의 관리 클러스터 리소스를 제거합니다.
$ oc delete managedcluster <cluster_name>
클러스터의 네임스페이스를 제거합니다.
$ oc delete namespace <cluster_name>
이렇게 하면 이 클러스터에 대해 생성된 모든 네임스페이스 범위의 사용자 정의 리소스가 삭제됩니다. 계속하기 전에
ManagedCluster
CR 삭제가 완료될 때까지 기다려야 합니다.- 관리형 클러스터에 대한 사용자 정의 리소스를 다시 생성합니다.
22.5.6. RHACM 생성 클러스터 설치 CR 참조
RHACM(Red Hat Advanced Cluster Management)은 각 사이트에 대해 site Config
CR을 사용하여 생성하는 특정 설치 사용자 정의 리소스(CR) 세트가 있는 단일 노드 클러스터, 3-노드 클러스터, 표준 클러스터 배포를 지원합니다.
모든 관리형 클러스터에는 고유한 네임스페이스가 있으며 ManagedCluster
및 ClusterImageSet
을 제외한 모든 설치 CR이 해당 네임스페이스에 있습니다. ManagedCluster
및 ClusterImageSet
은 네임스페이스 범위가 아닌 cluster-scoped입니다. 네임스페이스 및 CR 이름은 클러스터 이름과 일치합니다.
다음 표에는 구성하는 site Config
CR을 사용하여 클러스터를 설치할 때 RHACM 지원 서비스에서 자동으로 적용하는 설치 CR이 나열되어 있습니다.
CR | 설명 | 사용법 |
---|---|---|
| 대상 베어 메탈 호스트의 BMC(Baseboard Management Controller)에 대한 연결 정보를 포함합니다. | Redfish 프로토콜을 사용하여 대상 서버에서 검색 이미지를 로드하고 부팅하기 위해 BMC에 액세스할 수 있습니다. |
| 대상 베어 메탈 호스트에 OpenShift Container Platform을 설치하는 데 필요한 정보를 포함합니다. |
|
|
네트워킹 및 컨트롤 플레인 노드 수와 같은 관리 클러스터 구성의 세부 정보를 지정합니다. 설치가 완료되면 클러스터 | 관리형 클러스터 구성 정보를 지정하고 클러스터를 설치하는 동안 상태를 제공합니다. |
|
사용할 |
|
|
| 관리형 클러스터의 Kube API 서버의 고정 IP 주소를 설정합니다. |
| 대상 베어 메탈 호스트에 대한 하드웨어 정보를 포함합니다. | 대상 시스템의 검색 이미지가 부팅될 때 허브에서 자동으로 생성됩니다. |
| 허브에서 클러스터를 관리하는 경우 이를 가져와서 알아야 합니다. 이 Kubernetes 오브젝트는 해당 인터페이스를 제공합니다. | 허브는 이 리소스를 사용하여 관리 클러스터의 상태를 관리하고 표시합니다. |
|
|
|
|
허브에 있는 |
리소스를 |
|
|
|
| 리포지토리 및 이미지 이름과 같은 OpenShift Container Platform 이미지 정보가 포함되어 있습니다. | OpenShift Container Platform 이미지를 제공하기 위해 리소스로 전달됩니다. |