快速入门:与多个代码库同步

在本快速入门中,您将创建一个新的 Google Kubernetes Engine (GKE) 集群,并使用 Config Sync 同步到 Anthos Config Management 示例代码库中的配置。

假设您的合规团队负责确保组织中的所有人都遵循内部规则。为了强制执行这些规则,合规团队创建了配置,这些配置已添加到示例代码库中。组织中的每个集群都必须同步到该代码库,并且您需要负责创建和同步集群。

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。

    在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

    确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

    在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

    确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

准备环境

在以下部分中,您将创建并配置可与 Config Sync 结合使用的集群。

创建集群

如需创建可与 Config Sync 结合使用的集群,请完成以下步骤:

  1. 在 Google Cloud Console 中,转到 Google Kubernetes Engine 页面。

    转到 Google Kubernetes Engine

  2. 点击 创建

  3. 标准部分中,点击配置

  4. 集群基本信息部分,完成以下操作:

    1. 输入 cs-cluster 作为集群的名称
    2. 将其他所有字段保留为建议的默认值。
  5. 在左侧菜单中的集群 下,选择安全

  6. 安全页面中,选中启用 Workload Identity 复选框。

  7. 点击创建。创建集群可能需要几分钟时间。

为您自己授予管理员权限

创建集群后,请授予您自己在 Google Cloud Console 中使用 Config Sync 所需的 GKE Hub Admin 角色。

  1. 在 Cloud Console 中,转到 IAM 页面。

    转到 IAM

  2. 点击添加

  3. 新建主帐号字段中,输入您用于向 Google Cloud 注册的电子邮件地址。

  4. 选择角色下拉列表中,搜索并选择 GKE Hub Admin

  5. 点击保存

启用 Anthos Config Management

如需启用 Anthos Config Management,请完成以下步骤:

  1. 在 Cloud Console 中,转到 Config Management 页面。

    转到 Config Management

  2. 点击设置 Config Management

  3. 要启用 Config Management API,请点击下一步。 点击下一步后,您将进入为 Config Management 选择已注册的集群页面,您可以在其中注册集群。

注册集群

创建集群后,向舰队注册集群:

  1. 为 Config Management 选择已注册的集群页面中,找到从此项目取消注册的集群表,然后找到 cs-cluster
  2. 点击 cs-cluster 旁边的注册

    成功注册集群后,它将显示在为 Config Management 选择已注册的集群表中。

配置集群

现在您已创建了一个集群,接下来可以配置 Config Sync 以同步到 Anthos Config Management 示例代码库的 quickstart 目录中的配置。

如需在 Google Cloud Console 上配置 Config Sync,请完成以下步骤:

  1. 为 Config Management 选择已注册的集群表中,选择 cs-cluster 并点击下一步
  2. 在显示的配置同步页面中,选择 1.7.0 或更高版本的 Anthos Config Management 版本。默认情况下,此版本允许从多个代码库同步。
  3. 使启用 Config Sync 复选框保持选中状态。
  4. 网址字段中,添加 https://github.com/GoogleCloudPlatform/anthos-config-management-samples
  5. 身份验证类型下拉列表中,选择
  6. 分支字段中,添加 main
  7. 由于我们使用默认值 HEAD,因此将标记/提交字段留空。
  8. 政策目录字段中,添加 quickstart/multirepo/root
  9. 由于我们使用其默认值(分别为 15 秒和 HTTPS),因此将同步等待时间Git 代理留空。
  10. 源格式下拉列表中,选择非结构化。我们建议您使用非结构化格式,因为它可以让您以最方便的方式组织配置。
  11. 点击下一步
  12. 清除启用政策控制器复选框,然后点击完成

    您将返回到 Config Management 菜单。几分钟后,您应该会在 cs-cluster 旁边的 Config Sync 状态列中看到已同步

现在 Config Sync 已同步到代码库,因此它会持续协调集群的状态与代码库中的配置。

探索和测试 Config Sync 安装

在以下部分中,您将使用 Cloud Shell 探索 Config Sync 安装,然后尝试修改托管对象。

打开 Cloud Shell

如需启动 Cloud Shell,请完成以下命令:

  1. 转到 Google Cloud Console。

    转到 Google Cloud Console

  2. 在控制台的右上角,点击激活 Cloud Shell 按钮:

    控制台下方的框架内会打开一个 Cloud Shell 会话。请使用此 Shell 来运行 gcloudnomoskubectl 命令。

  3. 如需使用以下部分中的命令,请运行以下命令来配置 kubectl 命令行访问权限:

    gcloud container clusters get-credentials cs-cluster \
        --zone ZONE \
        --project PROJECT_ID
    

    替换以下内容:

    • ZONE:您在其中创建集群的可用区
    • PROJECT_ID:您的项目 ID

    预期输出:

    Fetching cluster endpoint and auth data.
    kubeconfig entry generated for cs-cluster.
    

检查您的集群和代码库

quickstart 目录包含 ClusterRole、CustomResourceDefinition、用于监控的 Prometheus Operator 的配置、Rolebinding、Namespace 和 RepoSync。Config Sync 配置为从代码库中读取内容后,系统会立即应用这些配置。

由 Config Sync 管理的所有对象都将 app.kubernetes.io/managed-by 标签设置为 configmanagement.gke.io

如需列出由 Config Sync 管理的命名空间,请运行以下命令:

kubectl get ns -l app.kubernetes.io/managed-by=configmanagement.gke.io

预期输出:

NAME         STATUS   AGE
gamestore    Active   58s
monitoring   Active   58s

您可以转到 GitHub 中 Anthos Config Management 代码库的 /quickstart/multirepo/ 文件夹,探索引发系统创建这些命名空间的配置。

您可以通过相同的方式检查其他对象,例如 ClusterRole、Reposync、CRD 和 Rolebinding。

尝试手动修改托管对象

Config Sync 通过准入网络钩子来防止托管对象发生变更。

如果您尝试通过手动修改 Config Sync 管理的 Kubernetes 对象来进行有冲突的更改,则会收到错误。

如需对此行为进行测试,请尝试删除 gamestore 命名空间。

kubectl delete namespace gamestore

预期输出:

error: admission webhook "v1.admission-webhook.configsync.gke.io" denied the request: requester is not authorized to delete managed resources

清理

如要您要按照有关 Config Sync 编写配置的教程操作,请不要进行清理。本快速入门是该教程的前提条件,其中还包括有关清理的说明。

如果您不想完成该教程,则可以通过删除该教程中使用的集群进行清理:

  1. 转至 Cloud Console 中的 GKE 菜单。

    转到 GKE

  2. cs-cluster 旁边,点击 操作,然后点击 删除

  3. 当系统提示您确认时,再次点击删除

后续步骤