![b9f3b8d22dc44f4599af58d5f0be98d6.png](https://i-blog.csdnimg.cn/blog_migrate/af3571afc1f951f3160c49c15fed655a.jpeg)
全球含金量容器认证CKA培训北京站文末招生了
谷歌上周在其Cloud Next '19会议上推出了Cloud Run,这是一种基于Docker容器运行无服务器应用程序的新解决方案。可以说这是无服务器计算的重要一步——部署到Cloud Run要比在Kubernetes上运行容器容易得多,而且它也没有Lambda功能的架构限制。
![8dbbb2fd6db1c4d43ed9413fbe4958d5.png](https://i-blog.csdnimg.cn/blog_migrate/a215ef4882e16ee03d193c591fa3282e.jpeg)
什么是谷歌 Cloud Run?
谷歌Cloud Run是一个完全托管的平台,可以获取Docker容器镜像并将其作为无状态的自动扩展HTTP服务运行。
Cloud Run与第一代无服务器平台(例如AWS Lambda、Google Cloud功能或Azure功能)之间的区别在于:它允许你运行为多个端点提供服务的任意应用程序(而不是具有特定接口的小型功能)。
Cloud Run基于Knative,这意味着类似的解决方案可能会出现在其他托管的Kubernetes平台上。
我的项目是否能在Cloud Run上运行?
谷歌发布了一个Container运行时契约,其中列出了对容器的要求,包括:
——容器是为64位Linux编译的;
——容器侦听端口8080上的HTTP请求;
——最高可容纳2GB内存;
——容器实例必须在收到请求后的四分钟内启动HTTP服务器;
——你的应用程序应该工作(容器从0自动缩放到多个运行实例);
——所有计算都是无状态的,并且作用于请求。
只要你的项目符合上述一般要求,你就可以在Cloud Run上运行使用任何编程语言编写的任何应用程序。
请注意,Cloud Run目前处于测试阶段,因此这些要求可能会随时间而变化。
没有workflow(这是一件好事)
已经熟悉Docker或Heroku等传统PaaS解决方案的开发人员会感到十分亲切。
一旦你的应用程序打包在Docker中,只需:
将容器镜像推送到Google Container Registry;
运行gcloud beta run deploy。
几分钟后,Cloud Run将在域下配置一个新的应用程序,你可以自定义并公开。
示例:使用Semaphore进行持续部署
在下面的演示中,我们将使用Semaphore配置无服务器CI / CD管道,用于微服务,它将执行以下任务:
——运行自动化测试;
——构建一个Docker容器;
——将容器镜像推送到Google Container Registry;
——提供一键式手动部署到暂存Cloud Run环境;
——在主Git分支上成功构建之后,自动部署到生产Cloud Run环境。
![492c15b43b1bc07cc533f05ea4840e48.png](https://i-blog.csdnimg.cn/blog_migrate/3bfec3249a1e75e74cefb6eee60034f6.jpeg)
你可以在GitHub上找到项目的完整源代码。
启用Cloud Run
谷歌官方快速入门指南提供了Cloud Run入门的路线图。
第一步是:
——在你的帐户中启用Cloud Run API;
——安装Google Cloud SDK;
——使用gcloud组件安装测试版安装测试版组件,或者如果你之前使用gcloud组件更新安装了测试版组件,进行更新。
Docker化应用程序
在该示例中,我们将使用与以下Dockerfile打包在一起的简单Sinatra Web应用程序:
![b514c771a3994af8dbee69a65f0b2ea9.png](https://i-blog.csdnimg.cn/blog_migrate/cd69f8f6e08bfa4849a7a17a5e36c225.jpeg)
在调整现有Dockerfile时,确保应用程序在端口8080上运行可能是需要进行的唯一更改。如果不这样做,你可能会看到如下错误:
![6469e7ed1f0952495fee40cd851a1d0b.png](https://i-blog.csdnimg.cn/blog_migrate/a9856a46551960d3eac1037988216916.jpeg)
使用Google Cloud和Container Registry(GCR)进行身份验证
为了在CI / CD管道中自动将Docker镜像推送到GCR,Semaphore需要使用Google Cloud进行身份验证。为安全起见,我们需要根据Google Cloud服务帐户的身份验证密钥创建Semaphore秘密。
获得身份验证密钥后,使用Semaphore CLI将其作为秘密上传到Semaphore。秘密应该定义一个文件,让我们称之为.secrets.gcp.json:
1 sem create secret google-cloud-stg --file ~/Downloads/account-name-27f3a5bcea2d.json:.secrets.gcp.json
定义交付管道
现在可以编写一个Semaphore管道来构建、标记并将Docker容器推送到GCR:
![a8366f215377d79fa2cb7d1004bb0cd1.png](https://i-blog.csdnimg.cn/blog_migrate/83e198d53059b8607a69fe45ec098b49.jpeg)
![137e7bec804ca40e094e3072cad2e374.png](https://i-blog.csdnimg.cn/blog_migrate/eae833209bf63f9f0f6e7619fe982ccd.jpeg)
deploy-staging.yml和deploy-production.yml中定义的管道运行相同的步骤,区别在于服务的名称。
以下是生产部署的运行方式:
![233f006293a7cddb5a34b3594c7482b0.png](https://i-blog.csdnimg.cn/blog_migrate/8020a6cdfdcf95f2235e360b945e3719.jpeg)
上线
本地终端或Semaphore作业中部署日志的最后一行将包含新应用程序所在的URL,例如:
https://semaphore-demo-cloud-run-ud2bmvsmda-uc.a.run.app.
第一次打开URL时,你将看到:
![f40de266d74edfcfc57becb4ab2e72fb.png](https://i-blog.csdnimg.cn/blog_migrate/1c214d9492c24f49eecf7e31ba470927.jpeg)
这是因为还有一个步骤要做,那就是在Cloud Run控制台中公开你的服务。 瞧:
![cb953a9a6275f4de159a063dc667cdcb.png](https://i-blog.csdnimg.cn/blog_migrate/c312e691e99f52ba4de8870ef1e8a043.jpeg)
最后
希望本文能够鼓励你使用运行良好的CI / CD管道为Cloud Run构建和运送内容。接下来就看你的了。
文章推荐:
- 2019假说大乱斗:云和容器世界即将发生什么?
- 一场车库项目引发的Kubernetes开发者斗争
- AT&T的八位数大单 示意Kubernetes或成5G操作系统?
- 微服务、Kubernetes和无服务器之后,即将发生的……
- 游走于云原生与DevOps世界的开源存亡
![ea74549017fe4995e25f0071aeb47bbb.gif](https://i-blog.csdnimg.cn/blog_migrate/8b340153a14e326997431f1d02e09506.gif)
4月25-28日CKA北京站报名啦!!!
北京(4.25-4.28)、深圳(待定)、广州(待定),其它城市根据参与人数安排,大家快来报名吧!
![eb4f582f2bc4c11ce08c5cc18db78296.png](https://i-blog.csdnimg.cn/blog_migrate/124b825d4a3e7ac4fd70378f8816cf3c.jpeg)