本页面介绍了如何添加和组织存储在可靠来源中的配置。
配置简介
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 使用可靠来源进行配置存储和版本控制。您可以为可靠来源选择两种不同的格式:非结构化和分层。
非结构化来源格式让您可以采用最方便的方式组织配置。如果您使用 Kustomize、kpt 或 Helm 等工具组织或生成配置,则此格式尤其有用。如需查看如何组织配置的示例,请参阅非结构化代码库的示例格式。
分层或结构化源格式将配置分为不同的类别,可帮助您整理配置。这些类别包括系统配置、集群元数据、集群级层配置和命名空间配置。如需详细了解分层来源格式,请参阅分层代码库的结构。
建议大多数用户采用非结构化格式。此外,配置 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: IllegalSystemResourcePlacementError、KNV1038: IllegalKindInNamespacesError 或 KNV1039: 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
您无法在集群中的受管对象上手动修改此注释。
后续步骤
- 了解如何管理命名空间和命名空间范围对象。
- 如需了解如何发布 OCI 映像,请参阅从 Artifact Registry 同步 OCI 工件。
- 如需了解如何从 Helm 图表同步,请参阅从 Artifact Registry 同步 Helm 图表。