快速入门:从代码库同步配置
在本教程中,您将创建一个 Google Kubernetes Engine (GKE) Enterprise 版本集群,并使用 Config Sync 同步到多代码库示例代码库中的配置。
假设您的合规团队负责确保组织中的所有人都遵循内部规则。为了强制执行这些规则,合规团队创建了配置,这些配置已添加到示例代码库中。组织中的每个集群都必须同步到该代码库,并且您需要负责创建和同步集群。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
确保您拥有项目的以下一个或多个角色: GKE Hub Admin
检查角色
-
在 Google Cloud 控制台中,前往 IAM 页面。
转到 IAM - 选择项目。
-
在主账号列中,找到您的电子邮件地址所在的行。
如果您的电子邮件地址不在此列,则表示您没有任何角色。
- 在您的电子邮件地址所在的行对应的角色列中,检查角色列表是否包含所需的角色。
授予角色
-
在 Google Cloud 控制台中,前往 IAM 页面。
转到 IAM - 选择项目。
- 点击 授予访问权限。
- 在新的主账号字段中,输入您的电子邮件地址。
- 在选择角色列表中,选择一个角色。
- 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
- 点击 Save(保存)。
-
创建集群
在本部分中,您将创建一个集群,供本教程使用。在实际场景中,您可能会管理多个集群,但为了简化本教程,您只需创建和管理一个集群。
如需创建集群,请完成以下步骤:
在 Google Cloud 控制台中,转到 Kubernetes Engine 页面。
如果您是首次使用 GKE,请点击启用以启用 Kubernetes Engine API。
点击 add_box 创建。
在 Autopilot 部分中,选择配置。
在集群基本信息部分的名称字段中输入
cs-cluster
,并将其他所有字段保留为建议的默认值。点击创建。您将转到 Kubernetes 集群页面。创建集群需要几分钟时间。如果您在集群旁边的状态列中看到绿色对勾标记,则表示该集群已准备就绪。
配置集群
现在您已经创建了一个集群,接下来可以配置 Config Sync 以同步到示例代码库 config-sync-quickstart
目录中的配置。
如需在 Google Cloud 控制台中配置 Config Sync,请完成以下步骤:
在 Google Cloud 控制台中,启用 GKE Hub API。
- 在 Google Cloud 控制台中,前往功能部分下的配置页面。
点击 add 安装 Config Sync。
选择自动升级,以启用 Config Sync 以自动升级版本。
在安装选项下,选择在各个集群上安装 Config Sync。
在可用集群表中,选择
cs-cluster
,然后点击安装 Config Sync。几分钟后,您应该会在设置标签页中看到cs-cluster
的状态为已启用。在 Config Sync 信息中心上,点击部署软件包。
在选择要部署软件包的集群表中,选择
cs-cluster
,然后点击继续。保留托管在 Git 上的软件包,然后点击继续。
在软件包名称字段中,输入
sample-repository
。在代码库网址字段中,输入
https://github.com/GoogleCloudPlatform/anthos-config-management-samples
。在路径字段中,输入
config-sync-quickstart/multirepo/root
。其他所有字段保留默认值。
点击部署软件包。
几分钟后,您应该会在
cs-cluster
的同步状态列中看到已同步。
现在 Config Sync 已同步到代码库,因此它会持续协调集群的状态与代码库中的配置。
探索 Config Sync 安装
在以下部分中,您将使用 Cloud Shell 浏览 cs-cluster
从中同步的代码库,并确认代码库中的配置正在部署。
打开 Cloud Shell
-
在 Google Cloud 控制台中,激活 Cloud Shell。
Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。
-
如需使用以下部分中的命令,请配置
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.
如果系统要求您授权,请点击授权。
检查您的集群和代码库
config-sync-quickstart
目录包含 ClusterRole、CustomResourceDefinition、Rolebinding、命名空间和 RepoSync 配置。它还包含供 Prometheus Operator 监控的配置。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 中代码库的 /config-sync-quickstart/multirepo/ 文件夹,以浏览引发系统创建这些命名空间的配置。
您可以通过相同的方式检查其他对象,例如 ClusterRole、Reposync、CRD 和 Rolebinding。
检查同步状态
使用 Config Sync 时,您可以使用 nomos
命令行工具。此工具为您提供了 Config Sync 的其他功能。
在本部分中,您将使用 nomos status
命令检查 Config Sync 是否已成功将所有配置同步到您的集群:
nomos status
输出类似于以下内容:
*gke_PROJECT_ID_ZONE_cs-cluster
--------------------
<root>:root-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/root@main
SYNCED @ 2023-02-03 16:58:42 +0000 UTC 1fbab5c90af9029b26451fec92e9900d8db23aee
Managed resources:
NAMESPACE NAME STATUS SOURCEHASH
clusterrole.rbac.authorization.k8s.io/namespace-reader Current 1fbab5c
clusterrole.rbac.authorization.k8s.io/prometheus-acm Current 1fbab5c
clusterrole.rbac.authorization.k8s.io/prometheus-operator Current 1fbab5c
clusterrole.rbac.authorization.k8s.io/webstore-admin Current 1fbab5c
clusterrolebinding.rbac.authorization.k8s.io/prometheus-acm Current 1fbab5c
clusterrolebinding.rbac.authorization.k8s.io/prometheus-operator Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/alertmanagerconfigs.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/alertmanagers.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/anvils.acme.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/podmonitors.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/probes.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/prometheuses.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/prometheusrules.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/servicemonitors.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/thanosrulers.monitoring.coreos.com Current 1fbab5c
customresourcedefinition.apiextensions.k8s.io/webstores.marketplace.com Current 1fbab5c
namespace/gamestore Current 1fbab5c
namespace/monitoring Current 1fbab5c
gamestore reposync.configsync.gke.io/repo-sync Current 1fbab5c
gamestore rolebinding.rbac.authorization.k8s.io/gamestore-admin Current 1fbab5c
gamestore rolebinding.rbac.authorization.k8s.io/gamestore-webstore-admin Current 1fbab5c
monitoring deployment.apps/prometheus-operator Current 1fbab5c
monitoring prometheus.monitoring.coreos.com/acm Current 1fbab5c
monitoring service/prometheus-acm Current 1fbab5c
monitoring service/prometheus-operator Current 1fbab5c
monitoring serviceaccount/prometheus-acm Current 1fbab5c
monitoring serviceaccount/prometheus-operator Current 1fbab5c
monitoring servicemonitor.monitoring.coreos.com/acm-service Current 1fbab5c
--------------------
gamestore:repo-sync https://github.com/GoogleCloudPlatform/anthos-config-management-samples/config-sync-quickstart/multirepo/namespaces/gamestore@main
SYNCED @ 2023-02-03 16:58:51 +0000 UTC 1fbab5c90af9029b26451fec92e9900d8db23aee
Managed resources:
NAMESPACE NAME STATUS SOURCEHASH
gamestore configmap/store-inventory Current 1fbab5c
gamestore webstore.marketplace.com/gameplace Current 1fbab5c
在此输出中,您可以看到 cs-cluster
成功从两个代码库进行同步。此外,由于所有资源的状态均为 Current
,因此资源的状态与您所需的状态匹配。
清理
转到 Google Cloud 控制台中的 GKE 菜单。
在
cs-cluster
旁边,点击 more_vert 操作,然后点击 delete 删除。当系统提示您确认时,再次点击删除。
后续步骤
- 了解如何验证配置。