将配置添加到 Git 代码库中

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

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

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

本页面介绍了如何将配置添加到代码库中。如需了解如何创建配置,请参阅创建配置

选择如何组织配置

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

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

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

建议大多数用户采用非结构化格式。此外,命名空间代码库必须使用非结构化代码库格式。

非结构化代码库和分层代码库支持的功能

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

功能 非结构化格式(推荐) 分层格式
用作根代码库的格式 支持 支持
用作命名空间代码库的格式 支持 不支持
与层次结构控制器搭配使用 支持 不推荐
集群选择器 支持 支持
命名空间选择器 支持 支持
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 的配置。除了代码库的位置之外,您还可以指定要监控的 Git 分支和子目录(如果 Git 代码库包含除配置之外的其他内容)。

如果您使用的是分层代码库,并且使用 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 忽略变更的对象。如需使用注释,您需要启用从多个代码库同步,并使用 1.7.0 版或更高版本。如果您使用 Google Cloud Console 或 Google Cloud CLI 安装了 1.7.0 版或更高版本的 Config Sync,则系统会默认启用从多个代码库同步。如果您使用 kubectl 安装了 Config Sync,请在 ConfigManagement 对象中将 spec.enableMultiRepo 设置为 true

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

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

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

后续步骤