云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名备案_阿里云直播_免费1年

小七 141 0

使用CloudBees核心和Google Cloud Run的无服务器预览环境和GitOps

Logan Donley合著googlecloudrun是googlecloud的无服务器平台,用于利用HTTP和事件驱动的工作负载的无状态容器化应用程序。cloudrun可以完全管理,或者可以使用cloudrunforanthos在Google云上运行的Anthos-GKE集群中部署应用程序。CloudBees Core是Jenkins的一个企业版本,它通过运行和利用Kubernetes提供更好的可伸缩性、可管理性、安全性和可用性。在这篇文章中,我们将探索在Kubernetes上使用CloudBees Core将GitHub Pull Requests(PR)部署到云运行的无服务器预览开发环境,允许开发人员在将这些更改合并到主分支并部署到之前检查和测试web应用程序的更改生产。在PR被审查并合并到主分支机构之后,web应用程序将被部署到Google云上运行cloudrunforanthos的GKE上。最后,CloudBees用于CloudBees跨团队协作的核心外部HTTP端点将用于自动清理PR云运行预览环境。为什么没有服务器?当然,无服务器并不意味着没有任何服务器。无服务器指的是减少或完全不需要管理应用程序的基础设施,并使这些应用程序的部署更容易。cloudrun通过提供托管的自动调整、冗余和TLS,将应用程序部署的自动管理提升到一个新的水平。当您的应用程序不为请求提供服务时,它就会停止运行,而您不需要支付任何费用。为什么云运行?已经有很多文章将云运行与其他无服务器产品进行了比较。而且要明确的是,cloudrun并不是一种功能即服务(FaaS)产品。cloudrun更类似于容器即服务(CaaS),因此与FaaS产品相比有几个优势。这些优势包括更大的灵活性,更好的可测试性和可移植性,正如guillaumeblaquiere的这篇文章所概述的那样。在那篇文章中,guillaumeblaquiere得出的结论是,他宁愿在自己的大多数用例中使用cloudrun而不是Google云函数。编织基础提供便携性。Cloud Run是在开源Knative项目的基础上构建的,Knative项目自称是"部署和管理现代无服务器工作负载的平台"。这提供了一种可移植性,这是其他云提供商提供的大多数其他无服务器产品的典型。以下是从部署到托管云运行服务得到的Kubernetes Knative YAML清单:API版本:serving.knative.dev/v1种类:服务元数据:姓名:雨果云润命名空间:云运行自链接:/API/serving.knative.dev/v1/namespaces/cloud-跑步/服务/雨果云跑步油:86050f4c-0555-11ea-a0c6-42010a9600e6资源版本:"82604296"世代:1创建时间戳:"2019-11-12T14:05:46Z"注释:client.knative.dev/用户-图片:gcr.io/核心-车间/雨果云-运行:master-4serving.knative.dev/creator服务: core-cloud-run@core-workshop.iam.gserviceaccount.comserving.knative.dev/lastModifier服务: core-cloud-run@core-workshop.iam.gserviceaccount.com规格:交通:-百分比:100晚视:是的模板:元数据:标签:client.knative.dev/nonce客户机:oxxBNDXLD初始值设定项:{}规格:超时秒数:300容器:-容器用户名图片:gcr.io/核心-车间/雨果云-运行:master-4资源:{}读写探测:成功阈值:1云运行服务的YAML规范可以通过云运行>服务详细信息控制台的UI获得。您也可以使用以下Google Cloud SDK命令检索它:gcloud测试运行服务描述了雨果云运行——gke平台\--集群核心实验室cb sa——集群位置us-east4-b\--命名空间cloud run--format=yaml此外,googlecloudsdk的当前alpha版本允许根据这样的YAML规范创建或替换云运行服务。使用CloudBees Core和Cloud Run实现连续交付的短暂预览环境当开发人员提交可部署代码时,他们希望看到它能正常工作,特别是对于基于web的应用程序。GitHub Pull请求的预览环境是Jenkins X提供的一个对开发人员友好的功能,但预览环境并不局限于Jenkins X。Cloud Run提供了一个极好的平台,可以为利用HTTP工作负载的无状态容器创建轻量级的短暂预览环境,甚至更好,当您的应用程序没有收到请求时,您的服务将缩减为零,而您不需要支付任何费用。因此,即使公关停留了几天,你也只需为你的应用程序的使用时间付费,而这几天可能只需几分钟。CloudBees Core为管道提供了灵活性和操作一致性的完美平衡,以便使用GitHub和Cloud Run来协调预览环境和gitop。通过将特定于团队的Jenkins Masters与管道模板和外部事件通知相结合,我们能够创建一个便于开发人员使用的复杂编排,这样他们就可以专注于自己的代码。CloudBees管道模板目录CloudBees管道模板目录与管道共享库相结合,提供了一个易于管理和可扩展的解决方案,支持将数百个应用程序无缝部署到云端运行,同时为Jenkins管道采用安全、合规、性能和代理管理的最佳实践。开发人员所要做的就是填写一些模板参数,它们有一个即时的多分支管道,为主分支提供从PR预览环境到生产部署的端到端部署。更好的是,一旦创建了模板化的Jenkins管道,他们就不必离开GitHub,因为Hugo管道模板将为更新后的博客站点提供指向完全托管的云运行预览环境的链接来更新PR,而与主分支的合并将自动触发到Cloud Run的生产部署。雨果管道模板将:参数化以允许部署到完全管理的云运行,在Google云或prem上运行的Anthos Anthos GKE集群的云运行,并且可以为PRs和主分支部署选择不同的部署目标。使用雨果生成静态网站。使用img构建一个容器映像,并使用GKE工作负载标识push to GCR。使用带有GKE工作负载标识的googlecloudsdk将容器部署为云运行服务(PRs的临时预览环境和主分支的生产云运行部署)。对于GitHub Pull Requests(PR),使用GitHub API向PR添加注释,其中包含指向正在运行的云运行服务的链接。对于合并/关闭的PR,使用Google Cloud SDK with GKE Workload Identity删除PR相关的Cloud Run部署。管道共享库管道共享库提供在目录模板中使用的可重用全局变量,这些变量在使用中与内置管道步骤类似。共享库还将为短暂的集装箱化代理提供kubernetespod规范(Jenkins代理模板)。与Hugo Pipeline模板一起使用的共享库的结构和相关文件如下所述:+-变量| +- cloudRunDeploy.groovy#使用googlecloudsdk将容器映像部署到Cloud Run,并通过云运行服务的链接更新PRs| +- cloudRunDelete.groovy#使用Google Cloud SDK删除云运行服务|+-连续inerBuildPushGeneric.groovy#使用img构建容器映像并将其推送到容器注册表+-资源#资源文件|+-pod模板| +- 容器BuildPush.yml#为img提供googlecloudsdk,用于构建和处理conta使用的容器图像inerBuildPushGeneric.groovy|+-云-运行.yml#提供Google Cloud SDK,两者都使用cloudRunDeploy.groovy以及删除.cloudruny|+-雨果| +- 豆荚#提供用于生成静态内容的Hugo图像,由巨大的管道模板Jenkinsfile直接使用安全通过利用GKE的Workload Identity,我们可以安全地提供GCP IAM权限,而无需导出服务帐户密钥(除非手动旋转,否则密钥不会过期10年)。你会注意到cloudRunDeploy.groovy也不是cloudRunDelete.groovy共享库脚本有任何显式的Google云身份验证步骤。这是因为Google Cloud SDK提供了与GKE工作负载标识的无缝集成,并在访问Google云api时使用Kubernetes服务帐户(绑定到具有工作负载标识的IAM服务帐户)自动进行身份验证。要设置此功能,请执行以下操作:创建了一个GCP IAM服务帐户,该帐户拥有一组最有限的权限来推拉GCR容器映像以及部署、描述和删除云运行服务。在我们的CloudBees Core GKE集群中创建了一个特定于云运行的Kubernetes命名空间和Kubernetes ServiceAccount。API版本:v1种类:名称空间元数据:名称:云运行---API版本:v1种类:服务帐户元数据:名称:云润sa命名空间:云运行帐户绑定到服务。gcloud iam服务帐户添加iam策略绑定\--角色角色/iam.工作负载标识用户\--"servi"会员c账号:core-workshop.svc.id.goog[云运行/云运行sa]"\core-cloud-run@core-workshop.iam.gserviceaccount.com创建了一个Jenkins-Kubernetes云,配置为使用绑定到IAM的Kubernetes ServiceAccount Cloud run sa连接到CloudBees Core GKE集群。云:-库伯内特斯:连接超时:5容器容器容器:"10"证书ID:"k8s cloud run sa"defaultsProviderTemplate:"默认jnlp"maxRequestsPerHostStr:"32"名字:"库伯内特斯"命名空间:"云运行"k8s cloud run sa credentialsId指的是詹金斯的一个Sec