背景
我有一个运行在Tomcat中的Java Servlet应用程序,该Tomcat运行在Docker容器中,该容器又在Google Container Engine上运行。扩展Docker镜像以获取和更新证书没有问题(每个域只有一个Pod,因此不需要跨Pod通信)。但是Certbot需要将其凭据和证书保存在某个地方,Pod的文件系统似乎不是很合适,因为它是临时性的,并且无法在Pod重启后恢复。根据存储选项表,Google Cloud Storage似乎是个好主意,因为成本非常低,卷大小是自动调整的,而且我还可以从多个位置访问它(我不需要为每个单独的Pod创建一个空的磁盘),包括Web UI(后者对于调试可能有用),吞吐量和延迟对于这种用例来说真的不是问题。
问题
我创建了一个Bucket,现在我想从容器中访问该Bucket。Google在这里以及这里描述了可以使用FUSE挂载Bucket。但是他们没有提到,您需要将容器设为特权才能使用FUSE,这对我来说不太合适。 此外,我需要安装整个Google Cloud SDK并设置身份验证(我将在哪里存储身份验证?)。 但实际上,我不需要FUSE访问。 只需在启动时下载配置文件,并在每次更新后上传配置文件即可。 因此,类似于SCP的工作原理就足够了......
有一个gcloud
可以通过命令行访问文件,而无需使用FUSE,但仍然需要使用凭据进行初始化。
这里 的 user326502 提到:
如果安装了App Engine SDK,则零配置是不起作用的[...]只要容器位于Google Compute Engine实例上,您就可以访问同一项目中的任何Bucket。
他进一步解释说,在只使用库时,我神奇地不需要任何凭据。 我想我可以使用这些库编写自己的复制应用程序,但是事实上我没有从网络上找到类似于这样的东西,这让我感觉我完全走错了路。
那么,如何在容器内部访问Google Cloud Storage Bucket(尽可能简单)?