19.13. 단일 관리 클러스터 설치를 위한 사용자 정의 리소스 생성
이 절차에서는 단일 관리 클러스터를 수동으로 생성하고 배포하는 방법을 설명합니다. 여러 클러스터를 생성하는 경우 수백 개의 클러스터를 생성하는 경우 "여러 관리 클러스터에 대해 ZTP 사용자 정의 리소스 생성"에 설명된 SiteConfig
방법을 사용하십시오.
사전 요구 사항
- Assisted Installer 서비스 활성화.
네트워크 연결을 확인합니다.
- 허브 내의 컨테이너는 대상 베어 메탈 호스트의 BMC(Baseboard Management Controller) 주소에 도달할 수 있어야 합니다.
관리 클러스터는 허브의 API
호스트
이름과*.app
호스트 이름을 확인하고 도달할 수 있어야 합니다. 허브 API 및*.app
호스트 이름 예:console-openshift-console.apps.hub-cluster.internal.domain.com api.hub-cluster.internal.domain.com
허브가 관리 클러스터의 API 및
*.app
호스트 이름을 확인하고 도달할 수 있어야 합니다. 다음은 관리 클러스터의 API 및*.app 호스트 이름의 예입니다.
console-openshift-console.apps.sno-managed-cluster-1.internal.domain.com api.sno-managed-cluster-1.internal.domain.com
- 대상 베어 메탈 호스트에서 IP에 연결할 수 있는 DNS 서버입니다.
다음 하드웨어 최소가 있는 관리 클러스터의 대상 베어 메탈 호스트:
- CPU 4개 또는 8 vCPU
- 32GiB RAM
- 루트 파일 시스템용 120GiB 디스크
연결이 끊긴 환경에서 작업하는 경우 릴리스 이미지를 미러링해야 합니다. 릴리스 이미지를 미러링하려면 다음 명령을 사용합니다.
oc adm release mirror -a <pull_secret.json> --from=quay.io/openshift-release-dev/ocp-release:{{ mirror_version_spoke_release }} --to={{ provisioner_cluster_registry }}/ocp4 --to-release-image={{ provisioner_cluster_registry }}/ocp4:{{ mirror_version_spoke_release }}
spoke 클러스터 ISO를 HTTP 서버에 생성하는 데 사용되는 ISO 및
rootfs
를 미러링하고 해당 서버에서 이미지를 가져오도록 설정을 구성했습니다.이미지는
ClusterImageSet
버전과 일치해야 합니다. 4.9.0 버전을 배포하려면 4.9.0에서rootfs
및 ISO를 설정해야 합니다.
절차
배포해야 하는 각 특정 클러스터 버전에 대한
ClusterImageSet
을 생성합니다.ClusterImageSet
의 형식은 다음과 같습니다.apiVersion: hive.openshift.io/v1 kind: ClusterImageSet metadata: name: openshift-4.9.0-rc.0 1 spec: releaseImage: quay.io/openshift-release-dev/ocp-release:4.9.0-x86_64 2
관리되는 클러스터에 대한
네임스페이스
정의를 생성합니다.apiVersion: v1 kind: Namespace metadata: name: <cluster_name> 1 labels: name: <cluster_name> 2
BMC Secret
사용자 정의 리소스를 생성합니다.apiVersion: v1 data: password: <bmc_password> 1 username: <bmc_username> 2 kind: Secret metadata: name: <cluster_name>-bmc-secret namespace: <cluster_name> type: Opaque
Image Pull Secret
사용자 정의 리소스를 생성합니다.apiVersion: v1 data: .dockerconfigjson: <pull_secret> 1 kind: Secret metadata: name: assisted-deployment-pull-secret namespace: <cluster_name> type: kubernetes.io/dockerconfigjson
- 1
- OpenShift Container Platform 풀 시크릿입니다. base-64로 인코딩되어야 합니다.
AgentClusterInstall
사용자 정의 리소스를 생성합니다.apiVersion: extensions.hive.openshift.io/v1beta1 kind: AgentClusterInstall metadata: # Only include the annotation if using OVN, otherwise omit the annotation annotations: agent-install.openshift.io/install-config-overrides: '{"networking":{"networkType":"OVNKubernetes"}}' name: <cluster_name> namespace: <cluster_name> spec: clusterDeploymentRef: name: <cluster_name> imageSetRef: name: <cluster_image_set> 1 networking: clusterNetwork: - cidr: <cluster_network_cidr> 2 hostPrefix: 23 machineNetwork: - cidr: <machine_network_cidr> 3 serviceNetwork: - <service_network_cidr> 4 provisionRequirements: controlPlaneAgents: 1 workerAgents: 0 sshPublicKey: <public_key> 5
- 1
- 베어 메탈 호스트에 OpenShift Container Platform을 설치하는 데 사용되는 ClusterImageSet 사용자 정의 리소스의 이름입니다.
- 2
- 클러스터 노드 간 통신에 사용되는 CIDR 표기법의 IPv4 또는 IPv6 주소 블록입니다.
- 3
- 대상 베어 메탈 호스트 외부 통신에 사용되는 CIDR 표기법의 IPv4 또는 IPv6 주소 블록입니다. DU 단일 노드 클러스터를 프로비저닝할 때 API 및 Ingress VIP 주소를 결정하는 데에도 사용됩니다.
- 4
- 클러스터 서비스 내부 통신에 사용되는 CIDR 표기법의 IPv4 또는 IPv6 주소 블록입니다.
- 5
- 일반 텍스트로 입력합니다. 설치를 마친 후 공개 키를 사용하여 노드에 SSH를 수행할 수 있습니다.
참고이 시점에서 관리 클러스터의 고정 IP를 구성하려면 이 문서의 절차를 참조하십시오. 관리 클러스터에 대한 고정 IP 주소를 구성하려면 이 문서의 절차를 참조하십시오.
ClusterDeployment
사용자 정의 리소스를 생성합니다.apiVersion: hive.openshift.io/v1 kind: ClusterDeployment metadata: name: <cluster_name> namespace: <cluster_name> spec: baseDomain: <base_domain> 1 clusterInstallRef: group: extensions.hive.openshift.io kind: AgentClusterInstall name: <cluster_name> version: v1beta1 clusterName: <cluster_name> platform: agentBareMetal: agentSelector: matchLabels: cluster-name: <cluster_name> pullSecretRef: name: assisted-deployment-pull-secret
- 1
- 관리형 클러스터의 기본 도메인.
KlusterletAddonConfig
사용자 정의 리소스를 생성합니다.apiVersion: agent.open-cluster-management.io/v1 kind: KlusterletAddonConfig metadata: name: <cluster_name> namespace: <cluster_name> spec: clusterName: <cluster_name> clusterNamespace: <cluster_name> clusterLabels: cloud: auto-detect vendor: auto-detect applicationManager: enabled: true certPolicyController: enabled: false iamPolicyController: enabled: false policyController: enabled: true searchCollector: enabled: false 1
- 1
- KlusterletAddonConfig 또는
false
를 활성화하려면 KlusterletAddonConfig를 비활성화하려면true
로 설정합니다.searchoctetsor를
사용하지 않도록 설정합니다.
ManagedCluster
사용자 정의 리소스를 생성합니다.apiVersion: cluster.open-cluster-management.io/v1 kind: ManagedCluster metadata: name: <cluster_name> spec: hubAcceptsClient: true
InfraEnv
사용자 정의 리소스를 생성합니다.apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: name: <cluster_name> namespace: <cluster_name> spec: clusterRef: name: <cluster_name> namespace: <cluster_name> sshAuthorizedKey: <public_key> 1 agentLabels: 2 location: "<label-name>" pullSecretRef: name: assisted-deployment-pull-secret
BareMetalHost
사용자 정의 리소스를 생성합니다.apiVersion: metal3.io/v1alpha1 kind: BareMetalHost metadata: name: <cluster_name> namespace: <cluster_name> annotations: inspect.metal3.io: disabled labels: infraenvs.agent-install.openshift.io: "<cluster_name>" spec: bootMode: "UEFI" bmc: address: <bmc_address> 1 disableCertificateVerification: true credentialsName: <cluster_name>-bmc-secret bootMACAddress: <mac_address> 2 automatedCleaningMode: disabled online: true
선택적으로
bmac.agent-install.openshift.io/hostname: <host-name>
을 주석으로 추가하여 관리 클러스터의 호스트 이름을 설정할 수 있습니다. 주석을 추가하지 않으면 호스트 이름은 DHCP 서버 또는 로컬 호스트의 호스트 이름으로 기본 설정됩니다.- 사용자 지정 리소스를 생성한 후 생성된 사용자 지정 리소스의 전체 디렉터리를 사용자 지정 리소스를 저장하기 위해 생성한 Git 리포지토리로 내보냅니다.
다음 단계
추가 클러스터를 프로비저닝하려면 각 클러스터에 대해 이 절차를 반복합니다.
19.13.1. 관리 클러스터의 고정 IP 주소 구성
선택적으로 에이전트ClusterInstall
사용자 정의 리소스를 생성한 후 관리 클러스터에 대한 고정 IP 주소를 구성할 수 있습니다.
ClusterDeployment
사용자 정의 리소스를 생성하기 전에 이 사용자 정의 리소스를 생성해야 합니다.
사전 요구 사항
-
AgentClusterInstall
사용자 정의 리소스를 배포하고 구성합니다.
절차
NMStateConfig
사용자 정의 리소스를 생성합니다.apiVersion: agent-install.openshift.io/v1beta1 kind: NMStateConfig metadata: name: <cluster_name> namespace: <cluster_name> labels: sno-cluster-<cluster-name>: <cluster_name> spec: config: interfaces: - name: eth0 type: ethernet state: up ipv4: enabled: true address: - ip: <ip_address> 1 prefix-length: <public_network_prefix> 2 dhcp: false dns-resolver: config: server: - <dns_resolver> 3 routes: config: - destination: 0.0.0.0/0 next-hop-address: <gateway> 4 next-hop-interface: eth0 table-id: 254 interfaces: - name: "eth0" 5 macAddress: <mac_address> 6
-
BareMetalHost
사용자 정의 리소스를 생성할 때 mac 주소 중 하나가NMStateConfig
대상 베어 메탈 호스트의 mac 주소와 일치하는지 확인합니다. InfraEnv
사용자 정의 리소스를 생성할 때InfraEnv
사용자 정의 리소스의NMStateConfig
사용자 정의 리소스에서 라벨을 참조합니다.apiVersion: agent-install.openshift.io/v1beta1 kind: InfraEnv metadata: name: <cluster_name> namespace: <cluster_name> spec: clusterRef: name: <cluster_name> namespace: <cluster_name> sshAuthorizedKey: <public_key> agentLabels: 1 location: "<label-name>" pullSecretRef: name: assisted-deployment-pull-secret nmStateConfigLabelSelector: matchLabels: sno-cluster-<cluster-name>: <cluster_name> # Match this label
- 1
- 일치하는 레이블을 설정합니다. 이 레이블은 에이전트가 부팅될 때 적용됩니다.
19.13.2. 클러스터 프로비저닝을 위한 자동화된 검색 이미지 ISO 프로세스
사용자 정의 리소스를 생성한 후 다음 작업이 자동으로 수행됩니다.
- 검색 이미지 ISO 파일이 타겟 시스템에서 생성 및 부팅됩니다.
- ISO 파일이 대상 시스템에서 성공적으로 부팅되면 대상 시스템의 하드웨어 정보를 보고합니다.
- 모든 호스트가 발견되면 OpenShift Container Platform이 설치됩니다.
-
OpenShift Container Platform 설치를 완료하면 허브에서 대상 클러스터에
klusterlet
서비스를 설치합니다. - 요청된 애드온 서비스는 대상 클러스터에 설치됩니다.
관리 클러스터의 허브에 에이전트
사용자 지정 리소스가 생성되면 검색 이미지 ISO 프로세스가 완료됩니다.
19.13.3. 관리 클러스터 상태 확인
클러스터 상태를 확인하여 클러스터 프로비저닝에 성공했는지 확인합니다.
사전 요구 사항
-
모든 사용자 지정 리소스가 구성 및 프로비저닝되었으며,
에이전트
사용자 지정 리소스는 관리 클러스터의 허브에 생성됩니다.
절차
관리 클러스터의 상태를 확인합니다.
$ oc get managedcluster
True
는 관리 클러스터가 준비되었음을 나타냅니다.에이전트 상태를 확인합니다.
$ oc get agent -n <cluster_name>
describe
명령을 사용하여 에이전트 상태에 대한 자세한 설명을 제공합니다.BackendError,
,InputError
ValidationsFailing
,InstallationFailed
및AgentIsConnected가
포함된 상태를 인식합니다. 이러한 상태는Agent 및 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.13.4. 연결이 끊긴 환경에 대한 관리형 클러스터 구성
이전 절차를 완료한 후 다음 단계를 수행하여 연결이 끊긴 환경에 대해 관리되는 클러스터를 구성합니다.
사전 요구 사항
- RHACM(Red Hat Advanced Cluster Management) 2.3의 연결이 끊긴 설치.
-
HTTPD 서버에서
rootfs
및iso
이미지를 호스팅합니다.
절차
미러 레지스트리 구성이 포함된
ConfigMap
을 생성합니다.apiVersion: v1 kind: ConfigMap metadata: name: assisted-installer-mirror-config namespace: assisted-installer labels: app: assisted-service data: ca-bundle.crt: <certificate> 1 registries.conf: | 2 unqualified-search-registries = ["registry.access.redhat.com", "docker.io"] [[registry]] location = <mirror_registry_url> 3 insecure = false mirror-by-digest-only = true
그러면 다음과 같이
AgentServiceConfig 사용자 정의 리소스에서
mirrorRegistryRef
가 업데이트되었습니다.출력 예
apiVersion: agent-install.openshift.io/v1beta1 kind: AgentServiceConfig metadata: name: agent namespace: assisted-installer spec: databaseStorage: volumeName: <db_pv_name> accessModes: - ReadWriteOnce resources: requests: storage: <db_storage_size> filesystemStorage: volumeName: <fs_pv_name> accessModes: - ReadWriteOnce resources: requests: storage: <fs_storage_size> mirrorRegistryRef: name: 'assisted-installer-mirror-config' osImages: - openshiftVersion: <ocp_version> rootfs: <rootfs_url> 1 url: <iso_url> 2
연결이 끊긴 설치의 경우 연결이 끊긴 네트워크를 통해 연결할 수 있는 NTP 시계를 배포해야 합니다. 서버 역할을 하도록 chrony를 구성하고,
/etc/chrony.conf
파일을 편집하고, 다음과 같은 허용된 IPv6 범위를 추가하여 이 작업을 수행할 수 있습니다.# Allow NTP client access from local network. #allow 192.168.0.0/16 local stratum 10 bindcmdaddress :: allow 2620:52:0:1310::/64
19.13.5. 연결이 끊긴 환경에 대한 IPv6 주소 구성
선택적으로 AgentClusterInstall
사용자 정의 리소스를 생성할 때 관리 클러스터에 대한 IPv6 주소를 구성할 수 있습니다.
절차
AgentClusterInstall
사용자 정의 리소스에서 IPv6 주소의 inclusterNetwork
및serviceNetwork
를 수정합니다.apiVersion: extensions.hive.openshift.io/v1beta1 kind: AgentClusterInstall metadata: # Only include the annotation if using OVN, otherwise omit the annotation annotations: agent-install.openshift.io/install-config-overrides: '{"networking":{"networkType":"OVNKubernetes"}}' name: <cluster_name> namespace: <cluster_name> spec: clusterDeploymentRef: name: <cluster_name> imageSetRef: name: <cluster_image_set> networking: clusterNetwork: - cidr: "fd01::/48" hostPrefix: 64 machineNetwork: - cidr: <machine_network_cidr> serviceNetwork: - "fd02::/112" provisionRequirements: controlPlaneAgents: 1 workerAgents: 0 sshPublicKey: <public_key>
-
NMStateConfig
사용자 지정 리소스를 사용자가 정의한 IPv6 주소로 업데이트합니다.
19.13.6. 관리 클러스터 문제 해결
관리 클러스터에서 발생할 수 있는 설치 문제를 진단하려면 다음 절차를 사용하십시오.
절차
관리 클러스터의 상태를 확인합니다.
$ oc get managedcluster
출력 예
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE SNO-cluster true True True 2d19h
AVAILABLE
열의 상태가True
이면 관리 클러스터가 허브에서 관리되고 있습니다.AVAILABLE
열의 상태가Unknown
이면 관리 클러스터가 허브에서 관리되지 않습니다. 다음 단계를 사용하여 자세한 정보를 확인하십시오.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 삭제가 완료될 때까지 기다려야 합니다.- 관리 클러스터에 대한 사용자 정의 리소스를 다시 생성합니다.