This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.19.16. 为多个受管集群创建 ZTP 自定义资源
如果您要安装多个受管集群,则 ZTP 使用 ArgoCD 和 SiteConfig
来管理创建自定义资源 (CR) 的进程,并使用 GitOps 方法为多个集群 (每次批处理不超过 100 个) 生成并应用策略。
安装和部署集群分为两个阶段,如下所示:
19.16.1. 部署 ZTP 管道的先决条件 复制链接链接已复制到粘贴板!
- OpenShift Container Platform 集群版本 4.8 或更高版本,并安装 Red Hat GitOps Operator。
- 已安装 Red Hat Advanced Cluster Management(RHACM)版本 2.3 或更高版本。
-
对于断开连接的环境,请确保您的源数据 Git 存储库和
ztp-site-generator
容器镜像可从 hub 集群中访问。 如果您需要额外的自定义内容,如额外安装清单或策略的自定义资源(CR),请将它们添加到
/usr/src/hook/ztp/source-crs/extra-manifest/
目录中。同样,您可以将从PolicyGenTemplate
引用的额外配置 CR 添加到/usr/src/hook/ztp/source-crs/
目录中。创建一个将额外清单添加到红帽提供的镜像的
Containerfile
,例如:FROM <registry fqdn>/ztp-site-generator:latest COPY myInstallManifest.yaml /usr/src/hook/ztp/source-crs/extra-manifest/ COPY mySourceCR.yaml /usr/src/hook/ztp/source-crs/
FROM <registry fqdn>/ztp-site-generator:latest
1 COPY myInstallManifest.yaml /usr/src/hook/ztp/source-crs/extra-manifest/ COPY mySourceCR.yaml /usr/src/hook/ztp/source-crs/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- <registry fqdn> 必须指向包含红帽提供的
ztp-site-generator
容器镜像的 registry。
构建包含这些额外文件的新容器镜像:
$> podman build Containerfile.example
$> podman build Containerfile.example
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.16.2. 安装 GitOps ZTP 管道 复制链接链接已复制到粘贴板!
本节中的步骤告诉您如何完成以下任务:
- 准备托管站点配置数据所需的 Git 存储库。
- 配置 hub 集群以生成所需的安装和策略自定义资源 (CR)。
- 使用 ZTP 部署受管集群。
19.16.2.1. 准备 ZTP Git 存储库 复制链接链接已复制到粘贴板!
创建用于托管站点配置数据的 Git 存储库。ZTP 管道需要读取此存储库。
流程
-
使用
SiteConfig
和PolicyGenTemplate
自定义资源 (CR) 的单独路径创建一个目录结构。 -
将
pre-sync.yaml
和post-sync.yaml
从resource-hook-example/<policygentemplates>/
添加到PolicyGenTemplate
CR 的路径。 将
pre-sync.yaml
和post-sync.yaml
从resource-hook-example/<siteconfig>/
添加到SiteConfig
CR 的路径。注意如果您的 hub 集群在断开连接的环境中工作,则必须为所有四个 pre 和 post 同步 hook CR 更新
镜像
。-
应用
policygentemplates.ran.openshift.io
和siteconfigs.ran.openshift.io
CR 定义。
19.16.2.2. 为 ZTP 准备 hub 集群 复制链接链接已复制到粘贴板!
您可以使用一组 ArgoCD 应用程序来配置 hub 集群,这些应用程序会根据 ZTP GitOps 流为每个站点生成所需的安装和策略自定义资源 (CR)。
流程
- 在 hub 集群上安装 Red Hat OpenShift GitOps Operator。
提取 ArgoCD 的管理员密码:
oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d
$ oc get secret openshift-gitops-cluster -n openshift-gitops -o jsonpath='{.data.admin\.password}' | base64 -d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 准备 ArgoCD 管道配置:
使用最新的容器镜像版本从 ZTP 站点生成器容器中提取 ArgoCD 部署 CR:
mkdir ztp podman run --rm -v `pwd`/ztp:/mnt/ztp:Z registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.9.0-1 /bin/bash -c "cp -ar /usr/src/hook/ztp/* /mnt/ztp/"
$ mkdir ztp $ podman run --rm -v `pwd`/ztp:/mnt/ztp:Z registry.redhat.io/openshift4/ztp-site-generate-rhel8:v4.9.0-1 /bin/bash -c "cp -ar /usr/src/hook/ztp/* /mnt/ztp/"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本节中剩余的步骤与
ztp/gitops-subscriptions/argocd/
目录相关。使用适当的 URL、
targetRevision
分支和路径值修改两个 ArgoCD 应用程序deployment/clusters-app.yaml
和deployment/policies-app.yaml
的源值。路径值必须与 Git 存储库中使用的值匹配。修改
deployment/clusters-app.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改
deployment/policies-app.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
要将管道配置应用到 hub 集群,请输入以下命令:
oc apply -k ./deployment
$ oc apply -k ./deployment
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.16.3. 创建站点 secret 复制链接链接已复制到粘贴板!
将站点所需的 secret 添加到 hub 集群。这些资源必须位于带有与集群名称匹配的名称的命名空间中。
流程
创建用于向站点 Baseboard Management Controller (BMC) 进行身份验证的 secret。确保 secret 名称与
SiteConfig
中使用的名称匹配。在本例中,secret 名称为test-sno-bmh-secret
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为站点创建 pull secret。pull secret 必须包含安装 OpenShift 和所有附加组件 Operator 所需的所有凭证。在本例中,secret 名称是
assisted-deployment-pull-secret
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
secret 根据名称从 SiteConfig
自定义资源 (CR) 引用。命名空间必须与 SiteConfig
命名空间匹配。
19.16.4. 创建 SiteConfig 自定义资源 复制链接链接已复制到粘贴板!
ArgoCD 充当站点部署的 GitOps 方法引擎。完成包含站点安装所需自定义资源的站点计划后,策略生成器会创建清单并将其应用到 hub 集群。
流程
创建一个或多个
SiteConfig
自定义资源(site-config.yaml
文件),其中包含集群的站点计划数据。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 如果您使用
UEFI SecureBoot
,请添加这一行以防止因为无效或本地证书而失败。
- 保存文件并将其推送到可从 hub 集群访问的 ZTP Git 存储库,并定义为 ArgoCD 应用程序的源存储库。
ArgoCD 检测到应用没有同步。同步后,ArgoCD 会自动或手动将 PolicyGenTemplate
与 hub 集群同步,并启动关联的资源 hook。这些 hook 负责生成应用到 spoke 集群的策略封装配置 CR。资源 hook 将站点定义转换为安装自定义资源,并将其应用到 hub 集群:
-
Namespace
- 每个站点都是唯一的 -
AgentClusterInstall
-
BareMetalHost
-
ClusterDeployment
-
InfraEnv
-
NMStateConfig
-
ExtraManifestsConfigMap
- Extra 清单。其他清单包括工作负载分区、chronyd、挂载点隐藏、sctp 启用等等。 -
ManagedCluster
-
KlusterletAddonConfig
Red Hat Advanced Cluster Management (RHACM) (ACM) 会部署 hub 集群。
19.16.5. 创建 PolicyGenTemplates 复制链接链接已复制到粘贴板!
使用以下步骤创建在 hub 集群的 Git 仓库中生成策略所需的 PolicyGenTemplates
。
流程
-
创建
PolicyGenTemplates
,并将其保存到可从 hub 集群访问 ZTP Git 存储库,并定义为 ArgoCD 应用程序的源存储库。 ArgoCD 检测到应用没有同步。同步后,ArgoCD 会将新的
PolicyGenTemplate
应用到 hub 集群,并启动相关的资源 hook。这些 hook 负责生成应用到 spoke 集群的策略封装配置 CR 并执行以下操作:- 根据基本分布式单元 (DU) 配置集和所需的自定义,创建 Red Hat Advanced Cluster Management (RHACM) 策略。
- 将生成的策略应用到 hub 集群。
ZTP 进程创建定向 ACM 的策略,以将所需的配置应用到集群节点。
19.16.6. 检查安装状态 复制链接链接已复制到粘贴板!
ArgoCD 管道检测到 Git 存储库中的 SiteConfig
和 PolicyGenTemplate
自定义资源 (CR),并将它们同步到 hub 集群。在此过程中,它会生成安装和策略 CR,并将其应用到 hub 集群。您可以在 ArgoCD 仪表板中监控此同步的进度。
流程
使用以下命令监控集群安装进度:
export CLUSTER=<cluster_name>
$ export CLUSTER=<cluster_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get agentclusterinstall -n $CLUSTER $CLUSTER -o jsonpath='{.status.conditions[?(@.type=="Completed")]}' | jq
$ oc get agentclusterinstall -n $CLUSTER $CLUSTER -o jsonpath='{.status.conditions[?(@.type=="Completed")]}' | jq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl -sk $(oc get agentclusterinstall -n $CLUSTER $CLUSTER -o jsonpath='{.status.debugInfo.eventsURL}') | jq '.[-2,-1]'
$ curl -sk $(oc get agentclusterinstall -n $CLUSTER $CLUSTER -o jsonpath='{.status.debugInfo.eventsURL}') | jq '.[-2,-1]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 使用 Red Hat Advanced Cluster Management (RHACM) 仪表板来监控策略协调的进度。
19.16.7. 站点清理 复制链接链接已复制到粘贴板!
要删除站点以及关联的安装和策略自定义资源 (CR),请从 Git 仓库中删除 SiteConfig
和特定于站点的 PolicyGenTemplate
CR。Pipeline hook 删除生成的 CR。
在删除 SiteConfig
CR 前,您必须将集群从 ACM 分离。
19.16.7.1. 删除 ArgoCD 管道 复制链接链接已复制到粘贴板!
如果要删除 ArgoCD 管道和所有生成的工件,请使用以下步骤。
流程
- 从 ACM 分离所有集群。
-
从 Git 仓库中删除所有
SiteConfig
和PolicyGenTemplate
自定义资源 (CR)。 删除以下命名空间:
所有策略命名空间:
oc get policy -A
$ oc get policy -A
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
clusters-sub
-
policies-sub
使用 Kustomize 工具处理目录:
oc delete -k cnf-features-deploy/ztp/gitops-subscriptions/argocd/deployment
$ oc delete -k cnf-features-deploy/ztp/gitops-subscriptions/argocd/deployment
Copy to Clipboard Copied! Toggle word wrap Toggle overflow