18.9. 带有 SiteConfig 资源的高级受管集群配置


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

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

您可以定义一组额外的清单,以包含在 GitOps Zero Touch Provisioning (ZTP) 管道的安装阶段。这些清单链接到 siteConfig 自定义资源(CR),并在安装过程中应用到集群。在安装时包括 MachineConfig CR 可提高安装过程的效率。

先决条件

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

流程

  1. 创建 GitOps ZTP 管道用于自定义集群安装的一组额外清单 CR。
  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 存储库。

18.9.2. 使用 siteConfig 过滤器过滤自定义资源

通过使用过滤器,您可以轻松地自定义 SiteConfig 自定义资源 (CR),使其包含或排除其他 CR,以便在 GitOps Zero Touch Provisioning (ZTP) 管道的安装阶段使用。

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

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

另外还介绍了一些额外的可选过滤场景。

先决条件

  • 配置了 hub 集群来生成所需的安装和策略 CR。
  • 您创建了 Git 存储库,用于管理自定义站点配置数据。该存储库必须可从 hub 集群访问,并定义为 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.14"
      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

18.9.3. 使用 SiteConfig CR 删除节点

通过使用 SiteConfig 自定义资源(CR),您可以删除并重新创建节点。这个方法比手动删除节点更高效。

先决条件

  • 您已将 hub 集群配置为生成所需的安装和策略 CR。
  • 您已创建了 Git 存储库,您可以在其中管理自定义站点配置数据。存储库必须可从 hub 集群访问,并定义为 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. 运行以下命令,验证 worker 节点的 BareMetalHostAgent CR 已从 hub 集群中删除:

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

    $ oc get nodes
    注意

    如果使用 secret,删除 secret 太早可能会导致问题,因为 ArgoCD 需要 secret 在删除后完成重新同步。只有在当前 ArgoCD 同步完成后,仅在节点清理后删除 secret。

后续步骤

要重新置备节点,请删除之前添加到 SiteConfig 中的更改,将更改推送到 Git 存储库,并等待同步完成。这会重新生成 worker 节点的 BareMetalHost CR,并触发重新安装节点。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.