什么是Cloud Run
来自chatgpt:
Google Cloud Run 是一项全托管的服务器托管平台,它允许您在容器化的环境中运行无服务器应用程序。Cloud Run 提供了一种简单而灵活的方式来构建、部署和扩展应用程序,无需管理底层基础设施。
以下是 Cloud Run 的一些关键特点和功能:
无服务器架构:Cloud Run 是一种无服务器计算平台,您只需要提供应用程序的容器镜像,而无需关注服务器的管理和配置。它会根据请求的负载自动扩展和缩减容器实例的数量,以确保您的应用程序能够处理任意数量的请求。
容器化支持:Cloud Run 使用 Docker 容器来封装和交付应用程序。您可以使用任何支持 Docker 的编程语言和框架来构建应用程序,并将其打包为容器镜像。这使得应用程序的开发、测试和部署变得更加简单和一致。
快速启动时间:Cloud Run 具有快速的启动时间,可以在几秒钟内启动新的容器实例来处理请求。这意味着您的应用程序可以快速响应流量峰值,并在需要时自动扩展容量。
支持自动扩展:Cloud Run 可以根据负载自动扩展容器实例的数量。当请求量增加时,它会自动创建新的容器实例来处理更多的请求。当负载减少时,它会自动缩减容器实例的数量,以节省资源和成本。
事件驱动的计算:Cloud Run 还支持事件驱动的计算模型。您可以将 Cloud Run 与其他 GCP 服务(如 Pub/Sub、Cloud Scheduler、Cloud Storage)集成,以响应事件触发器并执行相应的操作。
支持多种语言和框架:Cloud Run 支持多种编程语言和框架,包括但不限于 Java、Python、Go、Node.js 和 Ruby。您可以选择最适合您的应用程序的语言和框架来开发和部署。
安全和身份验证:Cloud Run 提供了集成的身份验证和授权功能,使您能够保护您的应用程序和数据。您可以配置访问控制策略、使用身份令牌进行认证,并通过 Cloud Identity-Aware Proxy(IAP)实现更精细的访问控制。
总之,Google Cloud Run 提供了一种简单、灵活和可扩展的方式来构建和运行无服务器应用程序。它使开发者能够专注于应用程序的开发和功能,而无需担心底层基础设施的管理和扩展。
第一步 构建docker 镜像
构建1个docker image 在 Google Artifact Repository 上.
参考:
https://e.coding.net/nvd11/Jenkins_lib_java_docker/Jenkins_Libs.git
第二步 打开GCP Console 并进入Cloud Run Create Service 页面
https://console.cloud.google.com/run/create?project=jason-hsbc
自行替换gcp project id
第三步 选择部署的docker 镜像
如上图, 这里有两个选项
-
Deploy one revision from existing container image
这个就是让你再GAR 上选择1个镜像 , 一般是选这个 -
Continuously deploy new revisions from a source repository
这个是用CLoud build 去部署某个 github url , 这里不研究
第四步 确定service name
这里自己想怎么写了
当然, 如果已经存在1个同名的cloud run service 是不允许的。 除非你先删除重名的那个service
第五步 选择region
看你自己怎么选了, 个人建议选择跟其他GCP prodution 相同的region
这里选择大伦敦
第六步 选择CPU 分配类型
第一种是只在你的service 被请求时cpu才活动, 第2种是完全占用cpu, 这里省钱选择第一种
第七步 配置auto scale
配置就是这么简单!
最小选择0, 但是当一段时间没有负载的话, GCP甚至会将你的service 关机, 所以在生产上选择1, 避免冷启动!
第八步 配置访问控制
第一种是内部访问, 必须经过VPC SC 控制。
第二种是允许外网访问, 这里选择2
第九步 配置权限验证方法
第一种是无需任何验证, 但是这种方法被公司紧选了(组织策略)
第二种是用GCP IAM 管理, 就是需要用idenity token 去call
第十步 配置镜像启动参数
主要是包括 容器的端口要正确, 然后可以配置cpu 和内存大小
最后配置一下用什么gcp service account去启动这个容器
第十一步 按下上面的CREATE Button
当然其实还有很多参数可以配置, 例如网络等, 这里不深究,保持默认。
然后等待service 部署成功即可, 如果有错误需要检查日志
第十二步 测试service
上图右上 已经给出了这个service 的api
下面是测试命令和结果
curl -H "Authorization: Bearer $(gcloud auth print-identity-token)" https://helloservice2-7hq3m4pdya-nw.a.run.app/api/hello
Hello, Jason!% ~/scripts