提问者:小点点

如何从部署在k8s中的Rails应用程序使用Google Cloud进行身份验证


我们在java中使用了第一个代码块中的方法,但是我在rails留档中没有看到相应的方法,只有第二个代码块:

存储存储=StorageOptions. getDefaultInstance().getService();

storage = Google::Cloud::Storage.new(
  project: "my-todo-project",
  keyfile: "/path/to/keyfile.json"
)

如果我们在kubernetes集群中使用特定于应用程序的服务号。我们如何配置Rails应用程序以在本地开发人员环境中工作并与k8s集群一起运行?

此外,我不希望使用project_id和密钥文件来初始化,因为在开发、质量保证、登台、生产环境的初始化过程中,我必须管理多个这样的JSON文件。


共2个答案

匿名用户

我建议不带参数进行初始化并使用身份验证指南中讨论的默认凭据发现。

在Google Cloud Platform(GCP)(包括Google Compute Engine(GCE)、Google库伯内特斯Engine(GKE)、Google App Engine(GAE)、Google Cloud Functions(GCF)和Cloud Run)上运行时,将自动发现凭据。

对于本地开发人员环境,我们总是使用没有参数的初始化和默认发现的环境变量。

匿名用户

在将您的应用程序移动到多个环境之前,您应该设置您的部署管道,该管道将处理您的应用程序如何为不同的环境进行配置,包括服务帐户的配置。

下面你可以找到两个关于如何做到这一点的官方谷歌云文档,以及gitlab中的一个示例,这样你就可以遵循更适合你的。

持续部署到谷歌库伯内特斯引擎使用Jenkins

使用Spinnaker和Google库伯内特斯引擎的持续交付管道

Git Lab-Kubernetes上的持续部署

此外,关于云存储对象实例化的参数,正如您在问题中提供的同一留档中看到的,项目参数是您在云中存储的标识符,因此如果您不设置,您的应用程序将无法找到它。对于Keyfile,它允许您的服务号进行身份验证,因此没有它也无法使其工作。

我希望这些信息对你有所帮助。