×

您可以使用SiteConfig自定义资源(CR)在安装时在托管集群中部署自定义功能和配置。

在GitOps ZTP管道中自定义额外的安装清单

您可以定义一组额外的清单,以便在GitOps零触摸配置(ZTP)管道的安装阶段包含。这些清单与SiteConfig自定义资源(CR)链接,并在安装期间应用于集群。在安装时包含MachineConfig CR可以提高安装效率。

先决条件
  • 创建一个Git仓库,在其中管理您的自定义站点配置数据。该仓库必须可以从hub集群访问,并被定义为Argo CD应用程序的源仓库。

步骤
  1. 创建一组额外的清单CR,GitOps ZTP管道使用它们来自定义集群安装。

  2. 在自定义的/siteconfig目录中,为您的额外清单创建一个子目录/custom-manifest。以下示例说明了包含/custom-manifest文件夹的示例/siteconfig

    siteconfig
    ├── site1-sno-du.yaml
    ├── site2-standard-du.yaml
    ├── extra-manifest/
    └── custom-manifest
        └── 01-example-machine-config.yaml

    文中多次用到的子目录名/custom-manifest/extra-manifest仅为示例名称。无需使用这些名称,对这些子目录的命名也没有限制。在本例中,/extra-manifest指的是存储ztp-site-generate容器中/extra-manifest内容的Git子目录。

  3. 将您自定义的额外清单 CR 添加到siteconfig/custom-manifest目录。

  4. 在您的SiteConfig CR 中,输入extraManifests.searchPaths字段中的目录名,例如

    clusters:
    - clusterName: "example-sno"
      networkType: "OVNKubernetes"
      extraManifests:
        searchPaths:
          - extra-manifest/ (1)
          - custom-manifest/ (2)
    1 ztp-site-generate容器复制清单的文件夹。
    2 自定义清单的文件夹。
  5. 保存SiteConfig/extra-manifest/custom-manifest CR,并将它们推送到站点配置仓库。

在集群配置过程中,GitOps ZTP 管道会将/custom-manifest目录中的 CR 追加到存储在extra-manifest/中的默认额外清单集。

从 4.14 版本开始,extraManifestPath已收到弃用警告。

虽然仍然支持extraManifestPath,但我们建议您使用extraManifests.searchPaths。如果您在SiteConfig文件中定义extraManifests.searchPaths,则 GitOps ZTP 管道在站点安装期间不会从ztp-site-generate容器获取清单。

如果您在Siteconfig CR 中同时定义了extraManifestPathextraManifests.searchPaths,则extraManifests.searchPaths的设置将优先。

强烈建议您提取ztp-site-generate容器中的/extra-manifest内容并将其推送到 GIT 仓库。

使用 SiteConfig 过滤器过滤自定义资源

通过使用过滤器,您可以轻松自定义SiteConfig自定义资源 (CR),以包含或排除其他 CR 用于 GitOps 零接触配置 (ZTP) 管道的安装阶段。

您可以为SiteConfig CR 指定inclusionDefault值为includeexclude,以及您想要包含或排除的特定extraManifest RAN CR 列表。将inclusionDefault设置为include会使 GitOps ZTP 管道在安装期间应用/source-crs/extra-manifest中的所有文件。将inclusionDefault设置为exclude则相反。

您可以排除默认情况下包含的/source-crs/extra-manifest文件夹中的单个 CR。以下示例配置自定义单节点 OpenShift SiteConfig CR,以在安装时排除/source-crs/extra-manifest/03-sctp-machine-config-worker.yaml CR。

还描述了一些其他可选的过滤场景。

先决条件
  • 您已配置中心集群以生成所需的安装和策略 CR。

  • 您已创建了一个 Git 仓库,您可以在其中管理自定义站点配置数据。该仓库必须可从中心集群访问,并定义为 Argo CD 应用的源仓库。

步骤
  1. 要阻止 GitOps ZTP 管道应用03-sctp-machine-config-worker.yaml CR 文件,请在SiteConfig CR 中应用以下 YAML

    apiVersion: ran.openshift.io/v1
    kind: SiteConfig
    metadata:
      name: "site1-sno-du"
      namespace: "site1-sno-du"
    spec:
      baseDomain: "example.com"
      pullSecretRef:
        name: "assisted-deployment-pull-secret"
      clusterImageSetNameRef: "openshift-4.17"
      sshPublicKey: "<ssh_public_key>"
      clusters:
    - clusterName: "site1-sno-du"
      extraManifests:
        filter:
          exclude:
            - 03-sctp-machine-config-worker.yaml

    GitOps ZTP 管道在安装期间跳过03-sctp-machine-config-worker.yaml CR。/source-crs/extra-manifest中的所有其他 CR 都将被应用。

  2. 保存SiteConfig CR 并将更改推送到站点配置仓库。

    GitOps ZTP 管道根据SiteConfig过滤器指令监控和调整它应用的 CR。

  3. 可选:要阻止 GitOps ZTP 管道在集群安装期间应用所有/source-crs/extra-manifest CR,请在SiteConfig CR 中应用以下 YAML

    - clusterName: "site1-sno-du"
      extraManifests:
        filter:
          inclusionDefault: exclude
  4. 可选:要排除所有/source-crs/extra-manifest RAN CR,并在安装期间包含自定义 CR 文件,请编辑自定义SiteConfig CR 以设置自定义清单文件夹和include文件,例如

    clusters:
    - clusterName: "site1-sno-du"
      extraManifestPath: "<custom_manifest_folder>" (1)
      extraManifests:
        filter:
          inclusionDefault: exclude  (2)
          include:
            - custom-sctp-machine-config-worker.yaml
    1 <custom_manifest_folder>替换为包含自定义安装 CR 的文件夹的名称,例如user-custom-manifest/
    2 inclusionDefault设置为exclude以阻止 GitOps ZTP 管道在安装期间应用/source-crs/extra-manifest中的文件。

    以下示例说明了自定义文件夹结构

    siteconfig
      ├── site1-sno-du.yaml
      └── user-custom-manifest
            └── custom-sctp-machine-config-worker.yaml

使用 SiteConfig CR 删除节点

使用SiteConfig自定义资源 (CR),您可以删除和重新配置节点。此方法比手动删除节点更有效。

先决条件
  • 您已配置中心集群以生成所需的安装和策略 CR。

  • 您已创建了一个 Git 仓库,您可以在其中管理自定义站点配置数据。该仓库必须可从中心集群访问,并定义为 Argo CD 应用的源仓库。

步骤
  1. 更新SiteConfig CR 以包含bmac.agent-install.openshift.io/remove-agent-and-node-on-delete=true注释,并将更改推送到 Git 仓库

    apiVersion: ran.openshift.io/v1
    kind: SiteConfig
    metadata:
      name: "cnfdf20"
      namespace: "cnfdf20"
    spec:
      clusters:
        nodes:
        - hostname: node6
          role: "worker"
          crAnnotations:
            add:
              BareMetalHost:
                bmac.agent-install.openshift.io/remove-agent-and-node-on-delete: true
    # ...
  2. 通过运行以下命令验证BareMetalHost对象是否已添加注释

    oc get bmh -n <managed-cluster-namespace> <bmh-object> -ojsonpath='{.metadata}' | jq -r '.annotations["bmac.agent-install.openshift.io/remove-agent-and-node-on-delete"]'
    示例输出
    true
  3. 通过更新SiteConfig CR 以包含crSuppression.BareMetalHost注释来抑制BareMetalHost CR 的生成

    apiVersion: ran.openshift.io/v1
    kind: SiteConfig
    metadata:
      name: "cnfdf20"
      namespace: "cnfdf20"
    spec:
      clusters:
      - nodes:
        - hostName: node6
          role: "worker"
          crSuppression:
          - BareMetalHost
    # ...
  4. 将更改推送到 Git 仓库并等待取消配置开始。BareMetalHost CR 的状态应更改为deprovisioning。等待BareMetalHost完成取消配置并完全删除。

验证
  1. 通过运行以下命令验证工作节点的BareMetalHostAgent CR 是否已从中心集群中删除

    $ oc get bmh -n <cluster-ns>
    $ oc get agent -n <cluster-ns>
  2. 通过运行以下命令验证节点记录是否已从 spoke 集群中删除

    $ oc get nodes

    如果您正在使用密钥,过早删除密钥可能会导致问题,因为 ArgoCD 需要密钥才能在删除后完成重新同步。只有在节点清理完成且当前 ArgoCD 同步完成后,才能删除密钥。

后续步骤

要重新配置节点,请删除之前添加到SiteConfig的更改,将更改推送到 Git 仓库,然后等待同步完成。这将重新生成工作节点的BareMetalHost CR 并触发节点的重新安装。