将配置添加到可靠来源

本页面介绍了如何添加和整理存储在可信来源中的配置。

Config Sync 专为管理多个集群的集群运维人员而设计。允许 Config Sync 管理整个舰队中的命名空间、Role、RoleBinding、ResourceQuota 和其他重要的 Kubernetes 对象,可以确保您的集群符合业务与合规性标准。

当 Config Sync 管理这些资源时,它会使用配置使已注册的集群保持同步。配置是存储在可靠来源中的 YAML 或 JSON 文件。Config Sync 支持使用 Git 代码库、OCI 映像和 Helm 图表作为可靠来源。配置包含您可以通过 kubectl apply 命令手动应用于集群的相同类型的配置详细信息。您可以为集群中存在的任何 Kubernetes 对象创建配置。但是,某些 Kubernetes 对象(如 Secret)包含可能不适合存储在可信来源中的敏感信息。在考虑是否使用 Config Sync 来管理这些类型的对象时,请自行判断。

您还可以将 Config Sync 与 Config Connector 搭配使用,以同步 Google Cloud 资源的配置。如需详细了解如何使用 Config Connector,请参阅使用 Config Connector 管理 Google Cloud 资源。您还可以通过设置 Config Controller 来简化 Config Sync 和 Config Connector 的安装。

本页面介绍了如何将配置添加到可靠来源。如需了解如何发布 OCI 映像,请参阅从 Artifact Registry 同步 OCI 工件。如需了解如何从 Helm 图表同步,请参阅从 Artifact Registry 同步 Helm 图表

选择如何组织配置

Config Sync 使用可靠来源进行配置存储和版本控制。您可以为可信来源选择两种不同的格式:非结构化分层

通过非结构化源格式,您可以通过最方便的任何方式组织配置。如果您使用 KustomizekptHelm 等工具组织或生成配置,则此格式尤其有用。如需查看如何组织配置的示例,请参阅非结构化代码库的示例格式

分层或结构化源格式将配置分为不同的类别,可帮助您整理配置。这些类别包括系统配置、集群元数据、集群级层配置和命名空间配置。如需详细了解分层源格式,请参阅分层代码库的结构

建议大多数用户采用非结构化格式。此外,在配置 RepoSync 对象时,您必须使用非结构化源格式。

支持的非结构化格式和分层格式功能

下表重点介绍了非结构化格式与分层格式之间的差异:

特性 非结构化格式(推荐) 分层格式
用作 RootSync 对象或中央可信来源的格式 受支持 受支持
用作 RepoSync 对象的格式 受支持 不支持
ClusterSelector 受支持 支持
NamespaceSelector 支持 受支持
nomos hydrate 命令 通过 --source-format=unstructured 标志支持 受支持
nomos init 命令 不支持 受支持
nomos vet 命令 通过 --source-format=unstructured 标志支持 支持
所有其他 nomos 命令 受支持 受支持
抽象命名空间 不支持 支持
Repo 个对象 不支持 支持
HierarchyConfig 对象 不支持 受支持

将配置添加到可信来源

如果要创建非结构化格式,则可以在创建该格式后立即开始向其添加配置。如果要创建分层格式,请使用 nomos init 命令初始化可靠来源,或手动创建目录结构。

空目录不能提交到 Git 代码库,因此在配置 Config Sync 之前,您必须创建配置并将其添加到代码库中。

创建可靠来源并向其添加配置后,请使用 nomos vet 命令验证可靠来源的结构并检查配置的语法和有效性。

将 Config Sync 配置为从可靠来源读取数据

创建可靠来源并将配置放入来源后,您便可以将 Config Sync 配置为从来源读取数据。完成此步骤后,Config Sync 会将配置从可信来源同步到您的集群。

您可以在安装 Config Sync 时配置可信来源的位置,之后可以修改 Config Sync 的配置。除了可靠来源的位置之外,如果来源包含配置以外的内容,您还可以指定要监视的分支或子目录。

如果您使用的是分层格式,并且使用 kubectl 手动安装 Config Sync,请勿将 Operator 的配置放在 system/ 目录或任何其他预留目录(例如 cluster/namespaces/)中。将配置放入某个预留的目录会导致 nomos vet 失败,同时会记录错误,例如 KNV1033: IllegalSystemResourcePlacementErrorKNV1038: IllegalKindInNamespacesErrorKNV1039: IllegalKindInClusterError

您可以授予用户对给定产品团队的部署可靠来源的访问权限。但是,当您向用户授予对部署可靠来源的访问权限时,该用户也会获得与为该可靠来源运行的协调器相同的 RBAC。

如需配置 Config Sync 和可信来源之间的身份验证和授权,请参阅有关配置 git-creds Secret 的安装步骤。

忽略对象变更

如果您不希望 Config Sync 在集群存在后保留该对象的状态,则可以将 client.lifecycle.config.k8s.io/mutation: ignore 注解添加到您希望 Config Sync 忽略变更的对象。

要使用注解,您必须启用 RootSync API 和 RepoSync API

以下示例向您展示如何将注解添加到对象中:

metadata:
  annotations:
    client.lifecycle.config.k8s.io/mutation: ignore 

您无法在集群中的受管对象上手动修改此注解。

后续步骤