写点什么

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:531110

评论

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

0 Token 间间隔 100% GPU 利用率,百度百舸 AIAK 大模型推理引擎极限优化 TPS

百度Geek说

百度云 大模型、 #GPU

酒店有数,人间有味,伙伴有华为

脑极体

AI

软件工程3.0时代,AI落地研效成熟时

思码逸研发效能

研发效能 AIGC 研发效能度量 研发效能管理

基于Flexus X实例搭建Nginx网站服务

平平无奇爱好科技

前端怎么做好稳定性保障体系建设?精准搞定“白虎”,不用叫“广智”!

京东科技开发者

API对于程序员的多元用法:从基础到实战

科普小能手

学习 编程语言 编程学习 API 接口 Python API

COB LED屏幕在小间距显示时代的机遇与挑战

Dylan

cobra LED显示屏 全彩LED显示屏 led显示屏厂家 市场

如何通过物化视图加速数据湖查询?

镜舟科技

sql 数据湖 数据分析 StarRocks 物化视图

信息安全小课堂开讲啦!大伙看这里!

行云管家

网络安全 信息安全 数据安全

华为云弹性云服务器FlexusX实例下的Nginx性能测试

平平无奇爱好科技

2024 京东零售技术年度总结

京东科技开发者

使用sysbench对Flexus X实例对mysql进行性能测评

平平无奇爱好科技

NocoBase 本周更新汇总:详情区块联动规则

NocoBase

开源 低代码 零代码 无代码 版本更新

电商平台API与ERP的无缝对接:策略与实践探索

代码忍者

ERP系统 API 策略

Three.js 开发框架的主要特点

北京木奇移动技术有限公司

three.js 软件外包公司 webgl开发

《HAP信创生态白皮书》正式发布

明道云

基于Flexus X实例安装YesPlayMusic在线音乐播放器

平平无奇爱好科技

部署在线文档应用程序CodeX Docs

平平无奇爱好科技

WebGL 开发框架及其分析

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

鸿蒙原生游戏上新!《王者荣耀》鸿蒙版上线华为游戏中心

最新动态

新能源电池行业MES系统解决方案

万界星空科技

mes 锂电池 万界星空科技 电池mes 新能源电池

部署个人知识管理系统SiyuanNote

平平无奇爱好科技

华为云Flexus X实例性能实测:速度与稳定性的完美结合

平平无奇爱好科技

首批!云高性能计算平台CHPC通过云超算资质测评,百度智能云引领算力服务新高度!

Baidu AICLOUD

高性能 高性能计算

阿里云 EMR 发布托管弹性伸缩功能,支持自动调整集群大小,最高降本60%

阿里云大数据AI技术

大数据 阿里云 弹性伸缩 EMR

稳定性方法论:可灰度 & 可监控 & 可回滚

京东科技开发者

爆肝整理!一文带你吃透软件测试

测试人

软件测试

广州11号线地铁智慧公厕案例:光明源智能科技的智慧创新实践

光明源智慧厕所

智慧厕所 智慧公厕

车联网服务平台的数据安全监测、共享、流通

芯盾时代

车联网 物联网 智能汽车

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