如何在实例启动时将文件从 GCP 存储桶下载到容器优化操作系统 (COS)?
我知道以下解决方案:
然而,所有这些都必须在实例启动后手动和外部完成。
还有cloud init,但我找不到有关如何从存储桶复制文件的任何信息。示例似乎表明最好将文件内容直接包含在云初始化文件中,因为安全性,这不是我想做的事情。是否可以使用 cloud init 从 Storge 存储桶下载文件?
我考虑过使用启动脚本gcloud
,但 COS 缺少 CLI 工具,例如gsutil
无法在启动脚本中运行任何此类命令。
我知道我可以手动复制文件,然后将映像保存为启动盘,但我希望有一些解决方案可以避免这样做。
最重要的是,我假设我不是在要求不可能的事情,因为 COS 实例设置允许我指定可以挂载到起始容器上的 Docker 卷。这似乎表明,当 COS 尝试在启动时运行我的映像时,我应该能够在实例上拥有一些私有文件。但是怎么做?
尝试使用 cloud-sdk 映像执行启动脚本并按照 Guillaume 的建议将文件复制到那里并没有为我工作一段时间,显示此日志。最终我意识到cloud-sdk
图像在未压缩时为 2.41GB,需要 2 多分钟才能完成拉取。我再次尝试了一个空的 COS 实例,启动脚本成功完成,从存储桶下载数据。
然而,一个 2.41GB 的图像和超过 2 分钟的启动时间听起来有点像下载一个 2KB 的文件。不是吗?
我很高兴看到我的问题的有效解决方案(感谢纪尧姆!)尽管我仍然想知道:没有更好的方法来做到这一点吗?我觉得这种方法比手动把文件放到COS实例上,然后创建一个机器映像以备将来使用更不整洁。