写点什么

Anthos Config Management 快速入门

  • 2020-05-25
  • 本文字数:4271 字

    阅读完需:约 14 分钟

Anthos Config Management 快速入门

本快速入门使用 foo-corp 示例代码库向您展示如何在新集群上开始使用 Anthos Config Management。在开始编写自己的配置之前,学习快速入门将有助于您了解 Anthos Config Management 的工作原理。

准备工作

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


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


  • Google Kubernetes Engine 用户:创建集群

  • 安装 Config Management Operator

  • 安装 nomos 命令

  • 如果您没有 GitHub 帐号,请创建一个

  • 安装 jq 命令,该命令将在本指南的部分内容中使用

配置集群

创建代码库

本快速入门通过创建 foo-corp 代码库的分支来创建您的代码库,然后创建其本地克隆作为您的工作副本。


1、在浏览器中,转到 foo-corp 代码库,然后点击 Fork 按钮。


2、您的分支会在浏览器中打开。复制其网址,同时省略所有参数(? 字符后面的任何内容以及 ? 字符本身)。


3、在本地系统上,克隆您的分支。将 [GIT-FORK-URL] 替换为分支的网址。


 git clone [GIT-FORK-URL]
复制代码

创建 nomos vet 预提交钩子

您可以安装预提交钩子,以便 nomos vet 命令在您将更改提交到本地代码库之前,检查您的更改是否存在语法错误或其他修改问题。


注意:预提交钩子不会提交到代码库,并且必须在克隆代码库的每个系统上配置。您可以将这些文件提交到代码库中的其他位置,并要求用户将其复制到本地系统上的正确位置。


1、在终端中,转到您克隆了代码库的目录。


2、修改 .git/hooks/pre-commit 文件。请注意 .git/ 目录中的 . 字符。


3、将以下内容添加到该文件中,将 [/path/to/] 替换为安装了 nomos 命令的完全限定路径。


nomos vet --path=/path/to/repo
复制代码


保存该文件。


4、确保 .git/hooks/pre-commit 文件是可执行文件:


chmod +x .git/hooks/pre-commit
复制代码

创建 git-creds Secret

按照安装 Anthos Config Management 中的说明创建 git-creds Secret,Config Management Operator 可使用该对象读取代码库的内容。将该部署密钥添加到 GitHub 时,请勿授予写入权限。


注意:创建 Secret 后删除私钥或妥善保护。

配置 Config Management Operator

将此 YAML 清单复制到名为 config-management.yaml 的文件中。将 spec.clusterName 的值更改为您的集群的名称。将 spec.syncRepo 的值更改为 GitHub 中代码库的网址,同时省略该部分。请勿更改字符串的 git@github.com 部分。


apiVersion: addons.sigs.k8s.io/v1alpha1 kind: ConfigManagement metadata:   name: config-management spec:   # The name of your cluster. If omitted, this cluster cannot be selected by   # a ClusterSelector.   clusterName: my-gke-cluster   git:     syncRepo: git@github.com:my-git-username/foo-corp-example.git     syncBranch: 0.1.0     secretType: ssh
复制代码


policyDir: “foo-corp”


使用 kubectl apply 将配置应用于您的集群:


kubectl apply -f config-management.yaml
复制代码


如果命令成功,则 Config Management Operator 会部署到集群中,而且会读取代码库的内容,并将集群的配置与代码库中的现有配置同步。如需验证 Config Management Operator 是否正在运行,列出 config-management-system Namespace 中运行的所有 Pod:



Pod 名称中的字母数字后缀是唯一的,因此您的输出与上面的示例类似但不完全相同。

检查您的集群和代码库

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


由 Anthos Config Management 管理的所有对象都将注释 configmanagement.gke.io/managed 设置为 enabled。


本部分的命令使用 jq 命令根据注释过滤资源,因为 kubectl 命令不支持按注释过滤。


列出由 Anthos Config Management 管理的 Namespace:


kubectl get namespaces -o json | jq -cr '.items[] | select( .metadata.annotations."configmanagement.gke.io/managed" == "enabled" ) | .metadata.name'
auditshipping-devshipping-prodshipping-staging
复制代码


检查引发系统创建这些 Namespace 的配置,例如 namespaces/audit/namespace.yaml 和 namespaces/online/shipping-app-backend/shipping-dev/namespace.yaml。


列出由 Anthos Config Management 管理的 ClusterRole:


kubectl get clusterroles -o json | jq -cr '.items[] | select( .metadata.annotations."configmanagement.gke.io/managed" == "enabled" ) | .metadata.name'
namespace-readerpod-creator
复制代码


检查代码库中的 cluster/namespace-reader-clusterrole.yaml 和 cluster/pod-creator-clusterrole.yaml 文件,这些文件引发系统创建这些 ClusterRole。


列出由 Anthos Config Management 管理的角色:


kubectl get rolebinding -n backend -o json | jq -cr '.items[] | select(.metadata.annotations."configmanagement.gke.io/managed" == "enabled" ) | [.metadata.name,.metadata.namespace] | @tsv'
shipping-dev job-creator
复制代码


检查 namespaces/online/shipping-app-backend/shipping-dev/job-creator-role.yaml 配置,该配置引发此角色的创建。


列出由 Anthos Config Management 管理的 PodSecurityPolicies:


kubectl get psp -o json | jq -cr '.items[] | select( .metadata.annotations."configmanagement.gke.io/managed" == "enabled" ) | .metadata.name'
psp
复制代码


检查 cluster/pod-security-policy.yaml 配置,该配置引发系统创建此 PodSecurityPolicy。

尝试手动修改托管对象

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


kubectl delete namespace shipping-dev
复制代码


注意:如果 shipping-dev Namespace 包含任何并非由 Anthos Config Management 管理的对象,那么这些 Namespace 也会被删除。本示例假设所有对象都由 Anthos Config Management 管理,但删除 Namespace 是针对活跃集群的破坏性操作。


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


kubectl get namespaces -o json | jq -r '.items[] | select( .metadata.annotations."configmanagement.gke.io/managed" == "enabled" ) | .metadata.name'
auditshipping-prodshipping-staging
# Wait a few seconds
kubectl get namespaces -o json | jq -r '.items[] | select( .metadata.annotations."configmanagement.gke.io/managed" == "enabled" ) | .metadata.name'
复制代码


auditshipping-devshipping-prod
复制代码


shipping-staging


同样,如果您手动更新由 Anthos Config Management 管理的 Kubernetes 对象,您的更改会快速更新以与代码库中的配置匹配。要对此进行测试,请更新 namespace-reader ClusterRole 以移除 watch 动词。


检查 ClusterRole:


kubectl get ClusterRole namespace-reader -oyaml
复制代码


注意 verbs 的值。


在一个终端中,监控 namespace-reader 对象是否发生变化。此命令会一直运行,监控与该对象相关的事件,直到您将其终止:


kubectl get clusterrole namespace-reader -o yaml --watch
复制代码


在另一个终端中,使用 kubectl edit 命令修改 ClusterRole。kubectl edit 会在默认编辑器(通常是 vi)中打开,并在保存文件时应用您的更改。


kubectl edit clusterrole namespace-reader
复制代码


注意:此示例使用 kubectl edit(而不是 kubectl apply)处理 YAML 清单。如果使用 kubectl apply,则必须修改 YAML 清单以手动添加 configmanagement.gke.io/managed: enabled 注释并将其设置为 enabled。否则,Anthos Config Management 将停止管理此对象。


删除包含 -watch 内容的一整行并保存文件。返回正在监控 ClusterRole 的终端。请注意,watch 动词已移除,但这个更改将在几秒钟内还原。


按 Control+C 停止监控此对象。


此练习显示,即使有人进行手动更改,Anthos Config Management 也会使对象与您代码库中的配置保持同步。

更新代码库中的配置

当您通过将 Git 提交推送到代码库来更新代码库中的配置时,Anthos Config Management 会检测到相应的更改并将新配置应用于相关的 Kubernetes 对象。


在此示例中,您将用户 jane@foo-corp.com 添加到 namespace-readers ClusterRoleBinding。


打开终端,发出以下命令以监控 namespace-readers ClusterRoleBinding 是否发生变化:


kubectl get clusterrolebindings namespace-readers -o yaml --watch
复制代码


打开另一个终端,转到您代码库的本地克隆。修改 cluster/namespace-reader-clusterrolebinding.yaml 文件,以将 jane@foo-corp.com 添加到 subjects 字段。修改完之后,该文件将包含以下内容:


kind: ClusterRoleBindingapiVersion: rbac.authorization.k8s.io/v1metadata:   name: namespace-readerssubjects:-kind: User  name: cheryl@foo-corp.com  apiGroup: rbac.authorization.k8s.io-kind: User  name: jane@foo-corp.com  apiGroup: rbac.authorization.k8s.io roleRef:  kind: ClusterRole  name: namespace-reader  apiGroup: rbac.authorization.k8s.io
复制代码


保存该文件。创建一个提交命令,并将更改推送到您的代码库。


git add cluster/namespace-reader-clusterrolebinding.yamlgit commit -m "Add Jane to namespace-reader"git push origin master
复制代码


返回正在监控 namespace-reader 对象的终端。几秒钟后,更改即会生效。


还原更改也很容易。返回用于 Git 的终端。使用 git log 命令查找哈希值(在此示例中是最上面的条目),并将其还原。在以下命令中,在显示 [HASH] 的位置使用提交命令的哈希值。


git revert [HASH]git push origin master
复制代码


返回您正在监控 namespace-reader 对象的终端,您会发现 jane@foo-corp.com 不再列在 ClusterRole 的主题中。


按 Control+C 可停止监控 namespace-reader 对象。


此练习显示,当您向代码库提交更改时,Anthos Config Management 会使对象与代码库中的配置保持同步。

清理

完成本主题中的练习后,请执行以下操作以进行清理:


  • 删除 foo-corp 代码库的分支。您添加到分支的部署密钥也会被删除。

  • 删除分支的本地克隆。

  • 删除用于测试的集群。


原文链接


2020-05-25 21:531093

评论

发布
暂无评论
发现更多内容

Docker 教程(三):Docker 命令

看山

Docker

2021十大区块链领域即将起飞

CECBC

区块链 投资

Go Channel源码分析

非晓为骁

源码分析 channel Go 语言

央行数字人民币“可控匿名”会侵犯隐私吗?最新解读来了

CECBC

数字货币

在离开新手村后,你该如何的走出呢?打造属于你的快与慢的能力。

叶小鍵

探索 Snabbdom 模块系统原理

Geek_z9ygea

JavaScript Vue Web Vue 3 Snabbdom

银行业只是开始,60个可以被区块链改变的行业

CECBC

数字技术

hive数据倾斜解决办法

五分钟学大数据

大数据 hive 28天写作 3月日更

《青春有你3》的子弹时间舞台,凝筑了自由视角技术进化史

脑极体

工作多年后我更明白了UT的重要性

好好学习,天天向上

2.3 Go语言从入门到精通:数据类型

xcbeyond

3月日更 Go 语言

领域驱动设计101 - 通用语言

luojiahu

领域驱动设计 DDD

FISCO BCOS 开发环境节点搭建 | 联盟链开发(一)

李大狗

区块链 联盟链 FISCO BCOS 狗哥

架构师训练营 4 期 第12周

引花眠

架构师训练营 4 期

为何数字人民币要采用“小额匿名、大额可溯”的设计?

CECBC

数字货币

从Nacos客户端视角来分析配置中心原理

麦洛

nacos SpringCloud Alibaba 动态配置

产品训练营第八周作业——用户路径地图

innovator琳

用户研究 用户地图 用户数据 用户模型

【LeetCode】矩阵置零Java题解

Albert

算法 LeetCode 28天写作 3月日更

控制台的安装与使用 | 联盟链开发(二)

李大狗

联盟链 FISCO BCOS 狗哥

Java8中的 Stream 那么彪悍,你知道它的原理是什么吗?

Java小咖秀

Java 面试 stream java8 开发

Vue3源码 | createApp都干了什么?

梁龙先森

源码分析 大前端 Vue3

数据仓库设计

大数据技术指南

大数据 28天写作 3月日更

IO 模型

无心

Netty

一文搞定Diff算法

执鸢者

Vue 大前端 Diff

Spark详细剖析

五分钟学大数据

大数据 spark 28天写作 3月日更

大数据中流量分析常见分类

大数据技术指南

大数据 28天写作 3月日更

OpenCV 写图像也有讲究,取经之路第 5 天

梦想橡皮擦

28天写作 3月日更

产品训练营第八章作业

Arnold

谈兼职创业

Ryan Zheng

架构 idea

型火🔥

架构 原则 架构之道

科技强国的使命召唤中,百度AI埋下三根未来“引线”

脑极体

Anthos Config Management 快速入门_服务革新_Google Cloud_InfoQ精选文章