我对 Google Cloud 的世界还很陌生,对此我感到十分困惑。我利用永久免费套餐获得了一个 Google Cloud Engine VM 实例,并想用它来测试我正在开发的几样东西。
我以前使用 VPS 实例管理过 Linux 服务器,但是在这种特定情况下,我很困惑如何真正自动将我的任何应用程序部署到这个 GCE VM。
我的应用程序托管在 Github 上,因此我尝试使用 Github Actions,但不幸的是,大多数可用选项都要求我创建 Docker 映像,将它们推送到 Google 的容器注册表,然后部署它们(就像这个官方的)。
不幸的是,文档告诉我每个虚拟机实例只能运行一个映像,这是公平的,因为我认为这是 docker 的限制。
问题是,我没有足够的知识来设置 docker compose 或协调将图像推送到 Google Cloud 的容器注册表。我根本不知道如何开始学习。
我是否真的没有办法通过使用 SSH 登录 VM 实例并从 Github 中提取更改来运行更传统的 Web 服务器(Nginx 托管 API + 前端)?
我尝试使用该ssh
命令登录服务器上的某个帐户,但我认为端口尚未打开,无法允许我执行此操作。
该gcloud
命令似乎不允许我提供服务帐户登录的 JSON 密钥,所以我完全不知道如何才能做到这一点。
关于如何解决这些问题,有什么建议吗?
答案1
我无法帮助您解决 CI/CD 问题。但是,您可以配置 OS Login 以使用您的服务帐户访问您的 VM:
- - 在项目范围的元数据中启用 OS Login,以便它适用于项目中的所有实例:
gcloud compute project-info add-metadata --metadata enable-oslogin=TRUE
- 生成服务帐户密钥文件:
gcloud iam service-accounts keys create --iam-account [ACCOUNT] [FILE].json
[FILE].json 文件将被下载到您运行命令的路径目录中。
- 激活服务帐号:
gcloud auth activate-service-account --key-file=[FILE].json
将 SSH 密钥添加到用户账户
- 切换到服务帐号
gcloud config set account [ACCOUNT]
- 添加 SSH 密钥
gcloud compute os-login ssh-keys add --key-file ~/.ssh/id_rsa.pub
- 从服务帐号切换回来
gcloud config set account [email protected]
收集服务帐户唯一标识
gcloud iam service-accounts describe [ACCOUNT] --format='value(uniqueId)'
您现在可以使用服务帐户通过 ssh 进入项目的任何实例:
ssh -i .ssh/id_rsa [sa_<uniqueId>]@[INSTANCE_IP]
请注意,我们在 uniqueId 前面添加了sa_
更多信息:操作系统登录