如何在没有SSH的情况下在GAE和Cloud Run上执行命令行任务



我想找到一种方法,在App Engine Flex和Cloud Run的生产环境中调用CLI任务,同时留在本地机器的终端中。通过";CLI任务";我指的是flask shellrails consolerakeyarn run和其他特定于应用程序的命令行工具。

理想情况下,这将是一个命令,它将启动一个与实际生产实例具有相同配置的实例——相同的docker容器、环境变量等等——并在完成后将其删除。

我发现在Heroku上做这件事的方式是最直接和有用的:

Heroku允许您使用Heroku run命令在一次性dyno中运行命令——只需要在需要时执行的脚本和应用程序。使用它可以启动连接到本地终端的Rails控制台进程,以便在应用程序的环境中进行实验

heroku run rails console
irb(main):001:0> puts 1+1
2

我可以通过应用程序引擎调试模式获得类似的结果。要做到这一点,我将SSH连接到实例中(或者Cloud Run(,使用docker exec -it gae /bin/sh调出bash shell,然后运行任务。这有很多缺点,而且通常不受欢迎,因为它使用的实例与生产流量相同。它可能会减慢Web服务器的速度,甚至完全停止。

在类似于heroku一次性dyno方法的单独实例中运行任务的惯用GCP方法是什么?

如今,如果不通过SSH访问,就无法在生产环境中运行GAE Flex和Cloud run中的CLI命令。

为了在未来实现这一点,您可以请求此功能。

最新更新