19.2. ZTP용 hub 클러스터 준비
연결이 끊긴 환경에서 RHACM을 사용하려면 필요한 Operator 이미지가 포함된 OpenShift Container Platform 릴리스 이미지 및 OLM(Operator Lifecycle Manager) 카탈로그를 미러링하는 미러 레지스트리를 생성합니다. OLM은 Operator 및 클러스터의 종속 항목을 관리, 설치, 업그레이드합니다. 연결이 끊긴 미러 호스트를 사용하여 베어 메탈 호스트를 프로비저닝하는 데 사용되는 RHCOS ISO 및 RootFS 디스크 이미지를 제공할 수도 있습니다.
19.2.1. telco RAN 4.12 검증 솔루션 소프트웨어 버전
Red Hat Telco radio Access Network (RAN) 버전 4.12 솔루션은 다음 Red Hat 소프트웨어 제품을 사용하여 검증되었습니다.
제품 | 소프트웨어 버전 |
---|---|
Hub 클러스터 OpenShift Container Platform 버전 | 4.12 |
GitOps ZTP plugin | 4.10, 4.11 또는 4.12 |
Red Hat Advanced Cluster Management (RHACM) | 2.6, 2.7 |
Red Hat OpenShift GitOps | 1.9, 1.10 |
토폴로지 Aware Lifecycle Manager (TALM) | 4.10, 4.11 또는 4.12 |
19.2.2. 연결이 끊긴 환경에서 GitOps ZTP 설치
연결이 끊긴 환경의 허브 클러스터에서 RHACM (RHACM), Red Hat OpenShift GitOps 및 Topology Aware Lifecycle Manager (TALM)를 사용하여 여러 관리 클러스터의 배포를 관리합니다.
사전 요구 사항
-
OpenShift Container Platform CLI(
oc
)를 설치했습니다. -
cluster-admin
권한이 있는 사용자로 로그인했습니다. 클러스터에서 사용할 연결이 끊긴 미러 레지스트리를 구성했습니다.
참고생성한 연결이 끊긴 미러 레지스트리에는 허브 클러스터에서 실행되는 TALM 버전과 일치하는 TALM 백업 버전 및 사전 캐시 이미지가 포함되어야 합니다. 스포크 클러스터는 연결이 끊긴 미러 레지스트리에서 이러한 이미지를 해결할 수 있어야 합니다.
절차
- hub 클러스터에 RHACM을 설치합니다. 연결이 끊긴 환경에서 RHACM 설치를 참조하십시오.
- hub 클러스터에 GitOps 및 TALM을 설치합니다.
19.2.3. 연결이 끊긴 미러 호스트에 RHCOS ISO 및 RootFS 이미지 추가
RHACM(Red Hat Advanced Cluster Management)을 사용하여 연결이 끊긴 환경에서 클러스터를 설치하기 전에 먼저 사용할 RHCOS(Red Hat Enterprise Linux CoreOS) 이미지를 호스팅해야 합니다. 연결이 끊긴 미러를 사용하여 RHCOS 이미지를 호스팅합니다.
사전 요구 사항
- 네트워크에서 RHCOS 이미지 리소스를 호스팅하도록 HTTP 서버를 배포하고 구성합니다. 사용자 컴퓨터에서 HTTP 서버에 액세스하고 사용자가 생성한 시스템에서 액세스할 수 있어야 합니다.
RHCOS 이미지는 OpenShift Container Platform 릴리스에 따라 변경되지 않을 수 있습니다. 설치하는 버전과 같거나 그 이하의 버전 중 가장 높은 버전의 이미지를 다운로드해야 합니다. 사용 가능한 경우 OpenShift Container Platform 버전과 일치하는 이미지 버전을 사용합니다. 호스트에 RHCOS를 설치하려면 ISO 및 RootFS 이미지가 필요합니다. 이 설치 유형에서는 RHCOS QCOW2 이미지가 지원되지 않습니다.
절차
- 미러 호스트에 로그인합니다.
mirror.openshift.com 에서 RHCOS ISO 및 RootFS 이미지를 가져옵니다. 예를 들면 다음과 같습니다.
필요한 이미지 이름과 OpenShift Container Platform 버전을 환경 변수로 내보냅니다.
$ export ISO_IMAGE_NAME=<iso_image_name> 1
$ export ROOTFS_IMAGE_NAME=<rootfs_image_name> 1
$ export OCP_VERSION=<ocp_version> 1
필요한 이미지를 다운로드합니다.
$ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/${OCP_VERSION}/${ISO_IMAGE_NAME} -O /var/www/html/${ISO_IMAGE_NAME}
$ sudo wget https://mirror.openshift.com/pub/openshift-v4/dependencies/rhcos/4.12/${OCP_VERSION}/${ROOTFS_IMAGE_NAME} -O /var/www/html/${ROOTFS_IMAGE_NAME}
검증 단계
다운로드한 이미지가 연결이 끊긴 미러 호스트에 제공되어 있는지 확인합니다. 예를 들면 다음과 같습니다.
$ wget http://$(hostname)/${ISO_IMAGE_NAME}
출력 예
Saving to: rhcos-4.12.1-x86_64-live.x86_64.iso rhcos-4.12.1-x86_64-live.x86_64.iso- 11%[====> ] 10.01M 4.71MB/s
추가 리소스
19.2.4. 지원 서비스 활성화
RHACM(Red Hat Advanced Cluster Management)은 지원 서비스를 사용하여 OpenShift Container Platform 클러스터를 배포합니다. RHACM(Red Hat Advanced Cluster Management)에서 MultiClusterHub Operator를 활성화하면 Helped 서비스가 자동으로 배포됩니다. 그 후에는 모든 네임스페이스를 감시하고 AgentServiceConfig
CR(사용자 정의 리소스)을 미러 레지스트리 HTTP 서버에서 호스팅되는 ISO 및 RootFS 이미지에 대한 참조로 업데이트하도록 Provisioning
리소스를 구성해야 합니다.
사전 요구 사항
-
OpenShift CLI(
oc
)가 설치되어 있습니다. -
cluster-admin
권한이 있는 사용자로 hub 클러스터에 로그인했습니다. - MultiClusterHub가 활성화된 RHACM이 있어야 합니다.
절차
-
프로비저닝
리소스를 활성화하여 모든 네임스페이스를 조사하고 연결이 끊긴 환경에 대한 미러를 구성합니다. 자세한 내용은 중앙 인프라 관리 서비스 활성화를 참조하십시오. 다음 명령을 실행하여
AgentServiceConfig
CR을 업데이트합니다.$ oc edit AgentServiceConfig
CR의
items.spec.osImages
필드에 다음 항목을 추가합니다.- cpuArchitecture: x86_64 openshiftVersion: "4.12" rootFSUrl: https://<host>/<path>/rhcos-live-rootfs.x86_64.img url: https://<mirror-registry>/<path>/rhcos-live.x86_64.iso
다음과 같습니다.
- <host>
- 대상 미러 레지스트리 HTTP 서버의 FQDN(정규화된 도메인 이름)입니다.
- <path>
- 대상 미러 레지스트리의 이미지 경로입니다.
편집기를 저장하고 종료하여 변경 사항을 적용합니다.
19.2.5. 연결이 끊긴 미러 레지스트리를 사용하도록 hub 클러스터 구성
연결이 끊긴 환경에 연결이 끊긴 미러 레지스트리를 사용하도록 hub 클러스터를 구성할 수 있습니다.
사전 요구 사항
- RHACM(Red Hat Advanced Cluster Management) 2.7이 설치된 연결이 끊긴 허브 클러스터 설치가 있어야 합니다.
-
HTTP 서버에
rootfs
및iso
이미지를 호스팅했습니다. OpenShift Container Platform 이미지 리포지토리 미러링에 대한 지침은 추가 리소스 섹션을 참조하십시오.
HTTP 서버에 대해 TLS를 활성화하는 경우 루트 인증서가 클라이언트가 신뢰하는 기관에서 서명한지 확인하고 OpenShift Container Platform 허브와 관리형 클러스터와 HTTP 서버 간의 신뢰할 수 있는 인증서 체인을 확인해야 합니다. 신뢰할 수 없는 인증서로 구성된 서버를 사용하면 이미지를 이미지 생성 서비스로 다운로드할 수 없습니다. 신뢰할 수 없는 HTTPS 서버 사용은 지원되지 않습니다.
절차
미러 레지스트리 구성이 포함된
ConfigMap
을 생성합니다.apiVersion: v1 kind: ConfigMap metadata: name: assisted-installer-mirror-config namespace: multicluster-engine 1 labels: app: assisted-service data: ca-bundle.crt: <certificate> 2 registries.conf: | 3 unqualified-search-registries = ["registry.access.redhat.com", "docker.io"] [[registry]] location = <mirror_registry_url> 4 insecure = false mirror-by-digest-only = true
- 1
ConfigMap
네임스페이스는multicluster-engine
으로 설정해야 합니다.- 2
- 미러 레지스트리를 생성할 때 사용되는 미러 레지스트리의 인증서입니다.
- 3
- 미러 레지스트리의 구성 파일입니다. 미러 레지스트리 구성은 Discovery 이미지의
/etc/containers/registries.conf
에 미러 정보를 추가합니다. 미러 정보는 설치 프로그램에 전달될 때install-config.yaml
파일의imageContentSources
섹션에 저장됩니다. HUB 클러스터에서 실행 중인 지원 서비스 Pod는 구성된 미러 레지스트리에서 컨테이너 이미지를 가져옵니다. - 4
- 미러 레지스트리의 URL입니다. 미러 레지스트리를 구성할 때
oc adm release mirror
명령을 실행하여imageContentSources
섹션의 URL을 사용해야 합니다. 자세한 내용은 OpenShift Container Platform 이미지 저장소 미러링 섹션을 참조하십시오.
이 업데이트는 다음과 같이
AgentServiceConfig
사용자 정의 리소스에서mirrorRegistryRef
를 업데이트합니다.출력 예
apiVersion: agent-install.openshift.io/v1beta1 kind: AgentServiceConfig metadata: name: agent namespace: multicluster-engine 1 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 2 osImages: - openshiftVersion: <ocp_version> url: <iso_url> 3
클러스터 설치 중에 유효한 NTP 서버가 필요합니다. 적절한 NTP 서버를 사용할 수 있고 연결이 끊긴 네트워크를 통해 설치된 클러스터에서 도달할 수 있는지 확인합니다.
19.2.6. 인증되지 않은 레지스트리를 사용하도록 hub 클러스터 구성
인증되지 않은 레지스트리를 사용하도록 hub 클러스터를 구성할 수 있습니다. 인증되지 않은 레지스트리는 이미지에 액세스하여 다운로드하는 데 인증이 필요하지 않습니다.
사전 요구 사항
- hub 클러스터를 설치 및 구성하고 hub 클러스터에 RHACM(Red Hat Advanced Cluster Management)을 설치했습니다.
- OpenShift Container Platform CLI(oc)가 설치되어 있습니다.
-
cluster-admin
권한이 있는 사용자로 로그인했습니다. - hub 클러스터에서 사용할 인증되지 않은 레지스트리를 구성했습니다.
절차
다음 명령을 실행하여
AgentServiceConfig
CR(사용자 정의 리소스)을 업데이트합니다.$ oc edit AgentServiceConfig agent
CR에
unauthenticatedRegistries
필드를 추가합니다.apiVersion: agent-install.openshift.io/v1beta1 kind: AgentServiceConfig metadata: name: agent spec: unauthenticatedRegistries: - example.registry.com - example.registry2.com ...
인증되지 않은 레지스트리는
AgentServiceConfig
리소스의spec.unauthenticatedRegistries
에 나열됩니다. 이 목록의 레지스트리는 설명된 클러스터 설치에 사용된 풀 시크릿에 항목이 필요하지 않습니다.assisted-service
는 설치에 사용되는 모든 이미지 레지스트리에 대한 인증 정보가 포함되어 있는지 확인하여 풀 시크릿을 검증합니다.
미러 레지스트리는 무시 목록에 자동으로 추가되며 spec.unauthenticatedRegistries
에서 추가할 필요가 없습니다. ConfigMap
에서 PUBLIC_CONTAINER_REGISTRIES
환경 변수를 지정하면 기본값이 지정된 값으로 재정의됩니다. PUBLIC_CONTAINER_REGISTRIES
기본값은 quay.io 및 registry.svc.ci.openshift.org 입니다.
검증
다음 명령을 실행하여 hub 클러스터에서 새로 추가된 레지스트리에 액세스할 수 있는지 확인합니다.
hub 클러스터에 대한 디버그 쉘 프롬프트를 엽니다.
$ oc debug node/<node_name>
다음 명령을 실행하여 인증되지 않은 레지스트리에 대한 액세스를 테스트합니다.
sh-4.4# podman login -u kubeadmin -p $(oc whoami -t) <unauthenticated_registry>
다음과 같습니다.
- <unauthenticated_registry>
-
새 레지스트리(예:
unauthenticated-image-registry.openshift-image-registry.svc:5000
)입니다.
출력 예
Login Succeeded!
19.2.7. ArgoCD로 hub 클러스터 구성
GitOps zero touch provisioning(ZTP)을 사용하여 각 사이트에 필요한 설치 및 정책 CR(사용자 정의 리소스)을 생성하는 ArgoCD 애플리케이션 세트로 hub 클러스터를 구성할 수 있습니다.
RHACM(Red Hat Advanced Cluster Management)은 site Config
CR을 사용하여 ArgoCD의 1일 차 관리 클러스터 설치 CR을 생성합니다. 각 ArgoCD 애플리케이션은 최대 300개의 site Config CR을
관리할 수 있습니다.
사전 요구 사항
- RHACM(Red Hat Advanced Cluster Management) 및 Red Hat OpenShift GitOps가 설치된 OpenShift Container Platform 허브 클러스터가 있어야 합니다.
-
" GitOps ZTP 사이트 구성 리포지토리 준비" 섹션에 설명된 대로 ZTP GitOps 플러그인 컨테이너에서 참조 배포를 추출했습니다. 참조 배포를 추출하면 다음 절차에서 참조되는
out/argocd/deployment
디렉터리가 생성됩니다.
절차
ArgoCD 파이프라인 구성을 준비합니다.
- 예제 디렉터리와 유사한 디렉터리 구조를 사용하여 Git 리포지토리를 생성합니다. 자세한 내용은 " GitOps ZTP 사이트 구성 리포지토리 준비"를 참조하십시오.
ArgoCD UI를 사용하여 리포지토리에 대한 액세스를 구성합니다. 설정에서 다음을 구성합니다.
-
리포지토리 - 연결 정보를 추가합니다. URL은
.git
로 끝나야 합니다(예:https://repo.example.com/repo.git
및 인증 정보). - 인증서 - 필요한 경우 리포지토리의 공용 인증서를 추가합니다.
-
리포지토리 - 연결 정보를 추가합니다. URL은
Git 리포지토리를 기반으로 두 개의 ArgoCD 애플리케이션
out/argocd/deployment/clusters-app.yaml
및out/argocd/deployment/policies-app.yaml
을 수정합니다.-
Git 리포지토리를 가리키도록 URL을 업데이트합니다. URL은
.git
로 끝납니다(예:https://repo.example.com/repo.git)
. -
targetRevision
은 모니터링할 Git 리포지토리 분기를 나타냅니다. -
path
는 각각 siteConfig 및
PolicyGenTemplate
CR의 경로를 지정합니다.
-
Git 리포지토리를 가리키도록 URL을 업데이트합니다. URL은
ZTP GitOps 플러그인을 설치하려면 이전에
out/argocd/deployment/
디렉터리에 추출된 패치 파일을 사용하여 hub 클러스터의 ArgoCD 인스턴스를 패치해야 합니다. 다음 명령을 실행합니다.$ oc patch argocd openshift-gitops \ -n openshift-gitops --type=merge \ --patch-file out/argocd/deployment/argocd-openshift-gitops-patch.json
참고연결이 끊긴 환경의 경우 로컬 레지스트리에 미러링된
ztp-site-generate
이미지를 사용하여out/argocd/deployment/argocd-openshift-gitops-patch.json
파일을 수정합니다. 다음 명령을 실행합니다.$ oc patch argocd openshift-gitops -n openshift-gitops --type='json' \ -p='[{"op": "replace", "path": "/spec/repo/initContainers/0/image", \ "value": "<local_registry>/<ztp_site_generate_image_ref>"}]'
다음과 같습니다.
- <local_registry>
-
연결이 끊긴 레지스트리의 URL입니다(예:
my.local.registry:5000
). - <ztp-site-generate-image-ref>
-
로컬 레지스트리의 미러링된
ztp-site-generate
이미지의 경로입니다(예:openshift4-ztp-site-generate:custom
).
RHACM 2.7 이상에서는 다중 클러스터 엔진에서 기본적으로
cluster-proxy-addon
기능을 활성화합니다. 이 기능을 비활성화하려면 다음 패치를 적용하여 이 애드온을 담당하는 관련 허브 클러스터 및 관리 클러스터 Pod를 비활성화하고 제거합니다.$ oc patch multiclusterengines.multicluster.openshift.io multiclusterengine --type=merge --patch-file out/argocd/deployment/disable-cluster-proxy-addon.json
다음 명령을 사용하여 허브 클러스터에 파이프라인 구성을 적용합니다.
$ oc apply -k out/argocd/deployment
19.2.8. GitOps ZTP 사이트 구성 리포지토리 준비
ZTP GitOps 파이프라인을 사용하려면 먼저 사이트 구성 데이터를 호스팅할 Git 리포지토리를 준비해야 합니다.
사전 요구 사항
- 필요한 설치 및 정책 CR(사용자 정의 리소스)을 생성하기 위해 hub 클러스터 GitOps 애플리케이션을 구성했습니다.
- ZTP(zero touch provisioning)를 사용하여 관리형 클러스터를 배포했습니다.
절차
-
site
Config 및
별도의 경로를 사용하여 디렉터리 구조를 생성합니다.PolicyGenTemplate
CR에 대한 다음 명령을 사용하여
ztp-site-generate
컨테이너 이미지에서argocd
디렉터리를 내보냅니다.$ podman pull registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12
$ mkdir -p ./out
$ podman run --log-driver=none --rm registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.12 extract /home/ztp --tar | tar x -C ./out
out
디렉터리에 다음 하위 디렉터리가 포함되어 있는지 확인합니다.-
아웃/extra-manifest
에는SiteConfig
에서 추가 매니페스트configMap
을 생성하는 데 사용하는 소스 CR 파일이 포함되어 있습니다. -
out/source-crs
에는PolicyGenTemplate
이 RHACM(Red Hat Advanced Cluster Management) 정책을 생성하는 데 사용하는 소스 CR 파일이 포함되어 있습니다. -
out/argocd/deployment
에는 이 프로세스의 다음 단계에서 사용할 수 있도록 hub 클러스터에 적용하는 패치 및 YAML 파일이 포함되어 있습니다. -
out/argocd/example
에는 권장 구성을 나타내는SiteConfig
및PolicyGenTemplate
파일의 예가 포함되어 있습니다.
-
out/argocd/example
아래의 디렉터리 구조는 Git 리포지토리의 구조 및 콘텐츠에 대한 참조 역할을 합니다. 이 예제에는 단일 노드, 3-노드 및 표준 클러스터에 대한 SiteConfig
및 PolicyGenTemplate
참조 CR이 포함됩니다. 사용하지 않는 클러스터 유형에 대한 참조를 제거합니다. 다음 예제에서는 단일 노드 클러스터 네트워크에 대한 CR 세트를 설명합니다.
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
SiteConfig
및 PolicyGenTemplate
CR을 별도의 디렉터리에 보관합니다. SiteConfig
및 PolicyGenTemplate
디렉터리에는 해당 디렉터리에 파일을 명시적으로 포함하는 kustomization.yaml
파일이 포함되어야 합니다.
이 디렉터리 구조와 kustomization.yaml
파일을 커밋하고 Git 리포지토리로 내보내야 합니다. Git의 초기 푸시에는 kustomization.yaml
파일이 포함되어야 합니다. SiteConfig
(예-sno.yaml
) 및 PolicyGenTemplate
(Common-ranGen.yaml
,group-du
배포할 때 필요에 따라 나중에 생략하고 내보낼 수 있습니다.
-sno*.yaml
.yaml )은 사이트를
KlusterletAddonConfigOverride.yaml
파일은 하나 이상의 SiteConfig
CR을 커밋하고 Git로 푸시하는 경우에만 필요합니다. 사용 방법의 예는 example-sno.yaml
을 참조하십시오.