本快速入门介绍了如何使用 foo-corp 示例代码库引导具有一组配置的集群,在新集群上开始使用 Anthos Config Management。在本快速入门中,您无需具备对该代码库的写入权限。假设您的组织中的合规性团队负责创建配置,并且每个集群都必须同步到代码库。
准备工作
-
登录您的 Google 帐号。
如果您还没有 Google 帐号,请注册新帐号。
-
在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。
-
确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能。
- 启用 Anthos API。
- 安装并初始化 Cloud SDK。
集群设置
GKE 用户
创建集群。
设置
kubectl
命令以向集群验证身份,然后使用以下命令创建 RoleBinding,将您自己设置为集群管理员。在显示[MY-CLUSTER]
的位置使用您的集群名称,并在显示 [USER-ACCOUNT] 的位置使用您的 Cloud Billing 帐号的电子邮件地址。根据您在本地系统上配置gcloud
命令的方式,您可能需要添加--project
和--zone
字段。gcloud container clusters get-credentials [MY-CLUSTER] kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole cluster-admin --user [USER_ACCOUNT]
Anthos clusters on VMware 用戶
准备 Anthos Config Management
如需准备本快速入门所需的工具,请完成以下步骤:
如果您是首次使用 Anthos Config Management,请通过 Google Cloud Console 或使用
gcloud
命令行工具启用该功能。控制台
如需启用 Anthos Config Management,请执行以下操作:
访问 Google Cloud Console 中的“Anthos 功能”页面。
在 Config Managemen 行中,点击启用。
在确认窗口中,点击启用 Config Management。
gcloud
如需启用 Anthos Config Management,请运行以下命令:
gcloud alpha container hub config-management enable
如果您要使用
kubectl
安装 Config Sync,请将 Config Management Operator 部署到刚刚创建的集群上。
配置集群
您可以使用 Google Cloud Console、gcloud
命令行工具或 kubectl
配置您的集群。
控制台
如需在 Google Cloud Console 上配置 Anthos Config Management,请完成以下步骤:
访问 Google Cloud Console 中的 Anthos Config Management 菜单。
选择已注册的集群,然后点击配置。
在针对 ACM 的 Git 代码库身份验证部分中,选择无,因为此示例中的代码库是所有人都可读的。
点击继续。
在您的集群的 ACM 设置部分中,完成以下操作:
- 在版本字段中,选择 Anthos Config Management 的任何版本。
- 选中启用 Config Sync 复选框。
在显示的下拉菜单中,完成以下操作:
- 在网址字段中,添加
https://github.com/GoogleCloudPlatform/csp-config-management/
- 在分支字段中,添加
1.0.0
- 由于我们使用默认值
HEAD
,因此将标记/提交字段留空。 - 在政策目录字段中,添加
foo-corp
。 - 将其他所有字段保留为默认值。
- 在网址字段中,添加
点击完成。您将返回到 Anthos Config Management 菜单。几分钟后,您应该会在配置的集群旁边的状态列中看到
Synced
。
gcloud
创建文件 config-management.yaml
并将以下 YAML 文件复制到其中。由于代码库是所有人都可读的,因此 secretType
设置为 none
。如需了解各个字段,请参阅 Git 代码库的配置。
创建文件
config-management.yaml
并将以下 YAML 文件复制到其中:# config-management.yaml apiVersion: configmanagement.gke.io/v1 kind: ConfigManagement metadata: name: config-management namespace: config-management-system spec: git: syncRepo: https://github.com/GoogleCloudPlatform/csp-config-management/ syncBranch: 1.0.0 secretType: none policyDir: "foo-corp"
设置变量:
export CONFIG_YAML=PATH_TO_CONFIG_YAML
应用
config-management.yaml
文件:gcloud alpha container hub config-management apply \ --membership=CLUSTER_NAME \ --config=$CONFIG_YAML \ --project=PROJECT_ID
请替换以下内容:
- CLUSTER_NAME:添加您要将此配置应用于的已注册集群。
- PROJECT_ID:添加您的项目 ID。
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 会更新集群上的 Anthos Config Management,以开始从代码库同步集群的配置。如需验证 Anthos Config Management 是否正在运行,请列出 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
检查您的集群和代码库
foo-corp
代码库包含 cluster/
和 namespaces/
目录中的配置。将 Anthos Config Management 配置为从代码库中读取内容后,系统便会应用上述配置。
由 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.yaml
和 namespaces/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
如果您立即检查,命名空间可能会缺失,但在几秒钟内,它会重新出现。例如:
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
清理
如要按照有关 Config Sync 编写配置的快速入门进行操作,请不要进行清理。本快速入门是该主题的前提条件,其中还包括有关清理的说明。
如果您不想参阅高级快速入门,则可以通过删除用于测试的集群进行清理。
后续步骤
- 完成有关编写、测试和同步配置的高级快速入门。
- 详细了解如何编写配置。
- 了解如何验证配置。