在新的 GKE 集群上以编程方式 运行 Kubernetes 命令

Programmatically run Kubernetes commands on a fresh GKE cluster

为了 运行 我正在开发的应用程序的负载测试,我正在创建一个 Google 容器引擎 (GKE) 集群,创建几个永久性磁盘,运行 一大堆 kubectl 命令,运行 我的基准测试,保存结果,然后再次删除 GKE 集群。

kubectl 命令负责标记 GKE 集群的节点子集(以保证它们仅 运行 我的应用程序,而基准基础设施位于其余节点上)并创建秘密、复制控制器和服务。

我正在寻找一种自动化所有这些的方法。我知道我可以编写一个自定义程序来为我完成所有这些,但我想知道是否已经有这样的程序。

我已经简要地研究了 https://www.terraform.io/,但它看起来只涵盖了 GKE 设置,而不是 Kubernetes 资源。

是否可以将 terraform 与 运行kubectl 命令的脚本结合起来?还是有其他编排 Kubernetes 的工具?

查看 Cloud Deployment Manager. It allows you to declaratively create a GKE cluster and then adding resources to the cluster. I'm not sure if it will label the nodes for you. To accomplish that, one option is to create multiple node pools。每个节点池都将自动标有节点池的名称,这应该可以帮助您减少需要 运行 的手动 kubectl 命令的数量。

对于现在登陆这里的任何人,Terraform 现在(7 月 18 日)也支持配置 kubernetes 资源,因此您的 Terraform 可以生成 Kubernetes 部署、服务等。

唯一真正需要注意的是,提供商已决定仅支持 GA(非 alpha 或 beta)资源,在撰写本文时,这些资源仍然很少(例如,没有 Ingress)。

我正在使用 terraform 在不同的云中创建基础设施,然后使用 Helm 进行配置。如果不使用 K8s PaaS,我将添加到 Ansible 循环中。

Ansible 可以部署也可以部署在kubernetes 中,但是我认为Helm 增加的额外价值很好。

希望对您有所帮助。