将配置添加到可靠来源

本页面介绍了如何添加和组织存储在可靠来源中的配置。

配置简介

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 的安装。

限制

您无法通过更改可靠来源中的值来更改配置中的任何不可变字段。如果您需要更新不可变字段,请手动删除集群中的对象。然后,Config Sync 可以使用新字段值重新创建对象。

选择如何组织配置

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 

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

后续步骤