【发布时间】:2021-02-09 18:28:26
【问题描述】:
如何在实例启动时将文件从 GCP 存储桶下载到容器优化操作系统 (COS)?
我知道以下解决方案:
然而,所有这些都必须在实例启动后手动和外部完成。
还有cloud init,但我找不到有关如何从存储桶复制文件的任何信息。 Examples seem to be suggesting 最好直接在云初始化文件中包含文件内容,这不是我想做的事情,因为安全性。是否可以使用 cloud init 从 Storge 存储桶下载文件?
我考虑过使用startup script,但 COS 缺少诸如 gcloud 或 gsutil 之类的 CLI 工具,无法在启动脚本中运行任何此类命令。
我知道我可以手动复制文件,然后将图像另存为 boot disk,但我希望有一些解决方案可以避免这样做。
最重要的是,我假设我不是在要求不可能的事情,因为 COS 实例设置允许我指定可以挂载到起始容器上的 Docker 卷。这似乎表明,当 COS 尝试在启动时运行我的映像时,我应该能够在实例上拥有一些私有文件。但是怎么做呢?
尝试使用 cloud-sdk 映像执行启动脚本并将文件复制到那里 as suggested by Guillaume 有一段时间对我不起作用,showing this log。最终我意识到cloud-sdk 图像在未压缩时为 2.41GB,需要 2 多分钟才能完成拉取。我再次尝试了一个空的 COS 实例,启动脚本成功完成,从存储桶下载数据。
但是,2.41GB 的图像和超过 2 分钟的启动时间听起来有点过分下载 2KB 的文件。不是吗?
我很高兴看到我的问题的有效解决方案(感谢 Guillaume!)虽然我仍然想知道:没有更好的方法来做到这一点吗?我觉得这种方式比手动把文件放到COS实例上,然后再创建一个机器镜像,以备日后使用更不整洁。
【问题讨论】:
标签: google-cloud-platform google-cloud-storage google-compute-engine google-container-os