在本教程中,您将创建一个 Google Kubernetes Engine (GKE) Enterprise 版本集群,并使用 Config Sync 同步到多代码库示例代码库中的配置。
假设您的合规团队负责确保组织中的所有人都遵循内部规则。为了强制执行这些规则,合规团队创建了配置,这些配置已添加到示例代码库中。组织中的每个集群都必须同步到该代码库,并且您需要负责创建和同步集群。
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that you have the following role or roles on the project: GKE Hub Admin
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the project.
-
In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.
- For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.
Grant the roles
-
In the Google Cloud console, go to the IAM page.
前往 IAM - 选择项目。
- 点击 授予访问权限。
-
在新的主账号字段中,输入您的用户标识符。 这通常是 Google 账号的电子邮件地址。
- 在选择角色列表中,选择一个角色。
- 如需授予其他角色,请点击 添加其他角色,然后添加其他各个角色。
- 点击保存。
创建集群
在本部分中,您将创建一个集群,供本教程使用。在实际场景中,您可能会管理多个集群,但为了简化本教程,您只需创建和管理一个集群。
如需创建集群,请完成以下步骤:
在 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 可以自动升级版本。
在安装选项下,选择 Install Config Sync on individual clusters(在个别集群上安装 Config Sync)。
在可用集群表中,选择
cs-cluster
,然后点击 Install Config Sync(安装 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
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
-
如需使用以下部分中的命令,请配置
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、Namespace 和 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 删除。当系统提示您确认时,再次点击删除。
后续步骤
- 了解如何验证配置。
-