【问题标题】:Is there a way to execute gcloud commands via node js?有没有办法通过节点 js 执行 gcloud 命令?
【发布时间】:2021-08-30 09:43:15
【问题描述】:

所以,我有一个特定的 kubernetes 和 bash 命令链,我必须在 gcloud 上执行,我想知道是否有任何方法可以通过脚本自动执行这些命令,而无需实际打开并与 gcloud CLI 交互。也许使用 npm 包,但我不知道是否有这种用法的包。

我已经在本地安装了 gcloud cli,exec 和/或 spawn 命令应该可以工作吗?我尝试过,但最终失败了。

TL;DR:我只想知道如何使用代码自动执行 gcloud 命令!最好在 node.js 上,但我也可以用另一种语言学习。

【问题讨论】:

  • CLI gcloud 不是程序。它是一个 Python 脚本。该脚本需要 Python 环境和大量依赖项。 Node.js 可以启动程序但不能提供依赖项。如果您的环境可以,那么可以。
  • 您可以直接向谷歌云发出 API 请求:cloud.google.com/apis。有 npm 包也可以做到这一点,但他们中的大多数说它们已被弃用。就我个人而言,我只是使用 node-fetch 并自己发出 API 请求

标签: node.js kubernetes google-cloud-platform automation gcloud


【解决方案1】:

请提供更多详细信息,说明您尝试自动化的内容,因为这将有助于指导建议。

在另一个程序中自动化子进程(例如调用 bash 并运行 gcloud)存在一些挑战。其中最重要的是,shell 脚本不提供非常强大的参数传递(并且除了字符串之外没有输入)并且错误处理很困难。

对于 NodeJS,您可以使用 child_process。您需要确保子进程环境能够访问gcloud 二进制文件及其配置,并且它也可以进行身份​​验证。由于您正在运行与gcloud 交互的程序,因此如果您选择此方法,我建议您使用服务帐户进行身份验证,然后您可能需要(如果您运行非 GCP)为您的代码提供服务帐户密钥也是。

虽然需要更多工作,但还有其他替代方案,但它们提供了更强大的解决方案:

  1. 使用明确的“基础设施即代码”工具(例如terraform)。 Google Cloud 为 Terraform 提供 templates
  2. 使用 Google Cloud SDK(有两种风格 explained),这些 SDK 涵盖了除 Kubernetes 本身(您可以管理 GKE 集群)和 NodeJS Kubernetes client library 之外的所有内容

如果您在问题中添加更多详细信息,我可以在此答案中添加更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-30
    • 2014-03-31
    • 2017-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多