同步到只读代码库

本快速入门介绍了如何使用 foo-corp 示例代码库引导具有一组配置的集群,从而在新集群上开始使用 Anthos Config Management。在本快速入门中,您无需具备对代码库的写入权限。假设您组织中的合规团队负责创建配置,并且每个集群都需要同步到代码库。

完成本快速入门后,您可以按照有关编写、测试和同步配置的高级快速入门进行操作。

准备工作

  1. 登录您的 Google 帐号。

    如果您还没有 Google 帐号,请注册一个新帐号

  2. 在 Cloud Console 的项目选择器页面上,选择或创建 Cloud 项目。

    转到项目选择器页面

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

  4. 启用 Anthos API。

    启用 API

  5. 安装并初始化 Cloud SDK

要求

Anthos Config Management 需要有效的 Anthos 授权。如需了解详情,请参阅 Anthos 的定价

集群设置

GKE 用户

  1. 创建集群

  2. 设置 kubectl 命令以向集群验证身份,然后使用以下命令创建 RoleBinding,将您自己设置为集群管理员。在显示 [MY-CLUSTER] 的位置使用您的集群名称,并在显示 [USER-ACCOUNT] 的位置使用您的 Google Cloud 帐号的电子邮件地址。根据您在本地系统上配置 gcloud 命令的方式,您可能需要添加 --project--zone 字段。

    gcloud container clusters get-credentials [MY-CLUSTER]
    
    kubectl create clusterrolebinding cluster-admin-binding \
        --clusterrole cluster-admin --user [USER_ACCOUNT]
    

Anthos GKE On-Prem 用户

Anthos Config Management 安装

  1. nomos 命令安装到本地系统上

  2. 如果您要手动安装,请在您刚刚创建的集群中安装 Config Management Operator

  3. 使用 Connect 将您的集群注册到 Anthos Environ。

配置集群

您可以使用 kubectl 或 Google Cloud Console 配置集群。

kubectl

创建文件 config-management.yaml 并将以下 YAML 文件复制到其中。由于代码库是人人可读的,因此 secretType 设置为 none。如需了解各个字段,请参阅 Git 代码库的配置

apiVersion: configmanagement.gke.io/v1
kind: ConfigManagement
metadata:
  name: config-management
spec:
  # clusterName is required and must be unique among all managed clusters
  clusterName: my-cluster
  git:
    syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/
    syncBranch: 1.0.0
    secretType: none
    policyDir: "foo-corp"

将配置应用到您的集群:

kubectl apply -f config-management.yaml

如果命令成功,则 Kubernetes 会更新集群上的 Config Management Operator,以开始从代码库同步集群的配置。要验证 Config Management Operator 是否正在运行,请列出 config-management-system 命名空间中运行的所有 Pod:

kubectl get pods -n config-management-system

输出:

NAME                                   READY     STATUS    RESTARTS   AGE
git-importer-5f8bdb59bd-7nn5m          2/2       Running   0          2m
monitor-58c48fbc66-ggrmd               1/1       Running   0          2m
syncer-7bbfd7686b-dxb45                1/1       Running   0          2m

控制台

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

  1. 访问 Google Cloud Console 中的 Anthos Config Management 菜单。

    访问 Anthos Config Management 菜单

  2. 选择已注册的集群,然后点击配置

  3. ACM 的 Git 存储区身份验证部分,完成以下操作:

    1. 对于密钥类型,选择,因为此示例中的代码库是全局可读的。
    2. 点击继续
  4. 集群的 ACM 设置部分,完成以下操作:

    1. 网址字段中,添加 https://github.com/GoogleCloudPlatform/csp-config-management/
    2. 分支字段中,添加 1.0.0
    3. 点击显示高级选项
    4. 政策目录字段中,添加 foo-corp
  5. 点击完成。您将返回到 Anthos Config Management 菜单。几分钟后,刷新页面。您应该会在配置的集群旁边的状态列中看到 Synced

检查您的集群和代码库

foo-corp 代码库包含 cluster/namespaces/ 目录中的配置。Config Management Operator 配置为从代码库中读取内容后,系统会立即应用这些配置。

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

列出由 Anthos Config Management 管理的命名空间:

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

输出:

NAME               STATUS   AGE
audit              Active   4m
shipping-dev       Active   4m
shipping-prod      Active   4m
shipping-staging   Active   4m

检查引发系统创建这些命名空间的配置,例如 namespaces/audit/namespace.yamlnamespaces/online/shipping-app-backend/shipping-dev/namespace.yaml

列出由 Anthos Config Management 管理的 ClusterRole:

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

输出:

NAME               AGE
namespace-reader   6m52s
pod-creator        6m52s

检查 ClusterRole 配置声明:

  • cluster/namespace-reader-clusterrole.yaml
  • cluster/pod-creator-clusterrole.yaml

您可以通过相同的方式检查其他对象,例如 Role 和 PodSecurityPolicy。

尝试手动修改托管对象

如果手动修改由 Anthos Config Management 管理的 Kubernetes 对象,系统会自动更新该对象的配置以与代码库中对象的配置匹配。如需对此进行测试,请删除 shipping-dev 命名空间。

kubectl delete namespace shipping-dev

如果您立即检查,Namespace 可能会缺失,但在几秒钟内,它会重新出现:例如:

kubectl get ns shipping-dev

输出:

Error from server (NotFound): namespaces "shipping-dev" not found

几秒钟后:

kubectl get ns shipping-dev

输出:

NAME           STATUS   AGE
shipping-dev   Active   3s

清理

完成本主题中的练习后,您可以通过删除用于测试的集群进行清理。

后续步骤