19.5. ZTP로 단일 노드 OpenShift 클러스터 수동 설치
RHACM(Red Hat Advanced Cluster Management) 및 지원 서비스를 사용하여 관리형 단일 노드 OpenShift 클러스터를 배포할 수 있습니다.
여러 개의 관리 클러스터를 생성하는 경우 ZTP를 사용하여 멀리 엣지 사이트 배포에 설명된 site Config
방법을 사용하십시오.
대상 베어 메탈 호스트는 vDU 애플리케이션 워크로드에 대한 권장 클러스터 구성에 나열된 네트워킹, 펌웨어 및 하드웨어 요구 사항을 충족해야 합니다.
19.5.1. 수동으로 GitOps 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.13 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을 수정하여 설치하려는 사이트 및 베어 메탈 호스트의 세부 정보와 일치하도록 수정합니다.# example-node1-bmh-secret & assisted-deployment-pull-secret need to be created under same namespace example-sno --- apiVersion: ran.openshift.io/v1 kind: SiteConfig metadata: name: "example-sno" namespace: "example-sno" spec: baseDomain: "example.com" cpuPartitioningMode: AllNodes pullSecretRef: name: "assisted-deployment-pull-secret" clusterImageSetNameRef: "openshift-4.10" sshPublicKey: "ssh-rsa AAAA..." clusters: - clusterName: "example-sno" networkType: "OVNKubernetes" installConfigOverrides: | { "capabilities": { "baselineCapabilitySet": "None", "additionalEnabledCapabilities": [ "marketplace", "NodeTuning" ] } } clusterLabels: common: true group-du-sno: "" sites : "example-sno" 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" nodes: - hostName: "example-node1.example.com" role: "master" bmcAddress: "idrac-virtualmedia+https://[1111:2222:3333:4444::bbbb:1]/redfish/v1/Systems/System.Embedded.1" bmcCredentialsName: name: "example-node1-bmh-secret" bootMACAddress: "AA:BB:CC:DD:EE:11" bootMode: "UEFI" rootDeviceHints: wwn: "0x11111000000asd123" # diskPartition: # - device: /dev/disk/by-id/wwn-0x11111000000asd123 # match rootDeviceHints # partitions: # - mount_point: /var/imageregistry # size: 102500 # start: 344844 ignitionConfigOverride: | { "ignition": { "version": "3.2.0" }, "storage": { "disks": [ { "device": "/dev/disk/by-id/wwn-0x11111000000asd123", "wipeTable": false, "partitions": [ { "sizeMiB": 16, "label": "httpevent1", "startMiB": 350000 }, { "sizeMiB": 16, "label": "httpevent2", "startMiB": 350016 } ] } ], "filesystem": [ { "device": "/dev/disk/by-partlabel/httpevent1", "format": "xfs", "wipeFilesystem": true }, { "device": "/dev/disk/by-partlabel/httpevent2", "format": "xfs", "wipeFilesystem": true } ] } } nodeNetwork: interfaces: - name: eno1 macAddress: "AA:BB:CC:DD:EE:11" config: interfaces: - name: eno1 type: ethernet state: up ipv4: enabled: false ipv6: 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
다음 명령을 실행하여 수정된
SiteConfig
CRsite-1-sno.yaml
을 처리하여 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.13 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.13 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
이전 단계의
PolicyGenTemplate
CR 참조를 사용하여 Day 2 구성 CR을 생성하고 내보냅니다. 다음 명령을 실행합니다.Day 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.13 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을 클러스터에 적용할 수 있습니다.
19.5.2. 관리형 베어 메탈 호스트 시크릿 생성
관리 베어 메탈 호스트에 필요한 Secret
CR(사용자 정의 리소스)을 hub 클러스터에 추가합니다. BMC(Baseboard Management Controller)에 액세스하려면 GTP(Baseboard Management Controller) 파이프라인과 지원 설치 관리자 서비스에 대한 시크릿이 레지스트리에서 클러스터 설치 이미지를 가져오는 데 필요한 secret이 필요합니다.
보안은 이름으로 site Config CR
에서 참조됩니다. 네임스페이스는 site Config 네임스페이스와
일치해야 합니다.
절차
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
에 추가합니다.
19.5.3. GitOps ZTP를 사용하여 수동 설치를 위한 Discovery ISO 커널 인수 구성
GitOps Zero 10.0.0.1 Provisioning (ZTP) 워크플로우는 관리 베어 메탈 호스트에서 OpenShift Container Platform 설치 프로세스의 일부로 Discovery ISO를 사용합니다. InfraEnv
리소스를 편집하여 Discovery ISO에 대한 커널 인수를 지정할 수 있습니다. 이는 특정 환경 요구 사항이 있는 클러스터 설치에 유용합니다. 예를 들어 Discovery ISO의 rd.net.timeout.carrier
커널 인수를 구성하여 클러스터의 정적 네트워킹을 용이하게 하거나 설치 중에 루트 파일 시스템을 다운로드하기 전에 DHCP 주소를 수신합니다.
OpenShift Container Platform 4.13에서는 커널 인수만 추가할 수 있습니다. 커널 인수를 교체하거나 삭제할 수 없습니다.
사전 요구 사항
- OpenShift CLI(oc)가 설치되어 있습니다.
- cluster-admin 권한이 있는 사용자로 hub 클러스터에 로그인했습니다.
- 수동으로 설치 및 구성 CR(사용자 정의 리소스)이 생성되어 있습니다.
절차
-
InfraEnv
CR에서spec.kernelArguments
사양을 편집하여 커널 인수를 구성합니다.
apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: name: <cluster_name> namespace: <cluster_name> spec: kernelArguments: - operation: append 1 value: audit=0 2 - operation: append value: trace=1 clusterRef: name: <cluster_name> namespace: <cluster_name> pullSecretRef: name: pull-secret
SiteConfig
CR은 day-0 설치 CR의 일부로 InfraEnv
리소스를 생성합니다.
검증
커널 인수가 적용되었는지 확인하려면 Discovery 이미지가 OpenShift Container Platform을 설치할 준비가 되었는지 확인한 후 설치 프로세스를 시작하기 전에 대상 호스트에 SSH를 실행할 수 있습니다. 이 시점에서 /proc/cmdline
파일에서 Discovery ISO에 대한 커널 인수를 볼 수 있습니다.
대상 호스트로 SSH 세션을 시작합니다.
$ ssh -i /path/to/privatekey core@<host_name>
다음 명령을 사용하여 시스템의 커널 인수를 확인합니다.
$ cat /proc/cmdline
19.5.4. 단일 관리형 클러스터 설치
지원 서비스 및 RHACM(Red Hat Advanced Cluster Management)을 사용하여 단일 관리 클러스터를 수동으로 배포할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
권한이 있는 사용자로 hub 클러스터에 로그인했습니다. -
베이스 보드 관리 컨트롤러 (BMC)
Secret
및 이미지 pull-secretSecret
(CR)을 생성했습니다. 자세한 내용은 "관리된 베어 메탈 호스트 시크릿 생성"을 참조하십시오. - 대상 베어 메탈 호스트는 관리 클러스터의 네트워킹 및 하드웨어 요구 사항을 충족합니다.
절차
배포할 각 특정 클러스터 버전에 대한
ClusterImageSet
을 생성합니다(예:clusterImageSet-4.13.yaml
).ClusterImageSet
의 형식은 다음과 같습니다.apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: openshift-4.13.0 1 spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.13.0-x86_64 2
clusterImageSet
CR을 적용합니다.$ oc apply -f clusterImageSet-4.13.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
19.5.5. 관리형 클러스터 설치 상태 모니터링
클러스터 상태를 확인하여 클러스터 프로비저닝에 성공했는지 확인합니다.
사전 요구 사항
-
모든 사용자 정의 리소스가 구성 및 프로비저닝되고, 관리 클러스터의 허브에
에이전트
사용자 정의 리소스가 생성됩니다.
절차
관리 클러스터의 상태를 확인합니다.
$ oc get managedcluster
true
는 관리형 클러스터가 준비되었음을 나타냅니다.에이전트 상태를 확인합니다.
$ oc get agent -n <cluster_name>
describe
명령을 사용하여 에이전트 상태에 대한 자세한 설명을 제공합니다. 알 수 있는 상태에는BackendError
,InputError
,ValidationsFailing
,InstallationFailed
,AgentIsConnected
가 포함됩니다. 이러한 상태는 에이전트 및Agent
ClusterInstall$ 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
19.5.6. 관리형 클러스터 문제 해결
관리 클러스터에서 발생할 수 있는 설치 문제를 진단하려면 다음 절차를 사용하십시오.
절차
관리 클러스터의 상태를 확인합니다.
$ oc get managedcluster
출력 예
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE SNO-cluster true True True 2d19h
AVAILABLE
열의 상태가True
이면 관리 클러스터가 hub에 의해 관리됩니다.AVAILABLE
열의 상태가Unknown
인 경우 관리 클러스터가 hub에 의해 관리되지 않습니다. 자세한 정보를 얻으려면 계속 확인하려면 다음 단계를 사용하십시오.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 삭제가 완료될 때까지 기다려야 합니다.- 관리 클러스터에 대한 사용자 정의 리소스를 다시 생성합니다.
19.5.7. 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 오브젝트는 해당 인터페이스를 제공합니다. | hub는 이 리소스를 사용하여 관리되는 클러스터의 상태를 관리하고 표시합니다. |
|
|
|
|
허브에 있는 |
리소스를 |
|
|
|
| 리포지토리 및 이미지 이름과 같은 OpenShift Container Platform 이미지 정보를 포함합니다. | OpenShift Container Platform 이미지를 제공하기 위해 리소스에 전달됩니다. |