是时候将你在本节学到的知识应用到边缘服务、调度服务和订单服务上了。

更新提交阶段的工作流,使每个发布候选人都具有唯一标识。

将更改推送到GitHub,确保工作流成功完成,并检查容器镜像是否发布到GitHub容器注册表。

创建一个验收阶段的工作流,将更改推送到GitHub,并在提交阶段工作流完成后验证其是否正确触发。

在本书的源代码仓库中,您可以在第15章/15-end文件夹中查看最终结果(https://github.com/ThomasVitale/cloud-native-spring-in-action)。

部署到生产环境需要结合发布候选人和其配置。现在我们已经验证了发布候选人是否准备好投入生产,现在是时候自定义其配置了。

我们越来越接近将云原生应用程序部署到生产环境的Kubernetes集群中。到目前为止,我们已经使用minikube在本地集群中工作。现在我们需要一个完整的Kubernetes集群来作为我们的生产环境。在继续阅读本节之前,请按附录B(第B.1至B.6节)中的说明,在DigitalOcean公共云上初始化一个Kubernetes集群。如果您想使用其他云提供商,您还可以找到一些提示。

一旦您在云上运行并且成功启动了一个Kubernetes集群,您可以继续阅读本节,本节将介绍我们在部署到生产环境之前需要为Spring Boot应用程序提供的附加配置。

在前一章中,您了解了Kustomize和覆盖技术,用于在共同基础之上管理不同部署环境的自定义。您还尝试了为临时环境自定义目录服务部署。在本节中,我们将为生产环境做类似的事情。在第14章中看到的基础上进行扩展,我将向您展示如何为ConfigMap和Secrets自定义卷挂载。此外,您将了解如何配置Kubernetes中运行的容器的CPU和内存,并且您将了解有关Paketo Buildpacks如何在每个容器中管理Java虚拟机(JVM)资源的更多信息。

首先,我们需要定义一个新的覆盖来自定义目录服务在生产环境中的部署。您可能还记得前一章中,目录服务的Kustomization基础存储在目录服务存储库中。我们将覆盖存储在polar-deployment存储库中。

继续在kubernetes/applications/catalog-service(在polar-deployment存储库中)中创建一个新的“production”文件夹。我们将使用它来存储与生产环境相关的所有自定义内容。任何基础或覆盖都需要一个kustomization.yml文件,因此让我们为生产覆盖创建一个。请记住,在下面的列表中,将<your_github_username>替换为您的小写GitHub用户名。还要用<release_sha>替换为与目录服务的最新发布候选人关联的唯一标识符。您可以从目录服务GitHub存储库主页的“Packages”部分检索该版本。

我假设您为Polar Bookshop创建的所有GitHub存储库都可以公开访问。如果不是这样的话,您可以转到GitHub上的特定存储库页面,并访问该存储库的“设置”部分。滚动到设置页面底部,点击“更改可见性”按钮,将软件包设为公开。

我们将首先应用的自定义是一个环境变量,以激活目录服务的prod Spring配置文件。与上一章中的方法相同,创建一个patch-env.yml文件,放在目录服务的生产覆盖中(kubernetes/applications/catalog-service/production)。

接下来,我们需要指示Kustomize应用该补丁。在目录服务的生产覆盖的kustomization.yml文件中,如下所示列出patch-env.yml文件。

在上一章中,您学习了如何定义ConfigMaps和Secrets,并了解了如何将它们作为卷挂载到Spring Boot容器中。在基础Kustomization中,我们没有配置任何Secrets,因为我们依赖于开发中的相同默认值。在生产环境中,我们需要传递不同的URL和凭据,以使目录服务能够访问PostgreSQL数据库和Keycloak。

当您在之前设置DigitalOcean上的生产环境时,您还创建了一个用于访问PostgreSQL数据库的Secret(polar-postgres-catalog-credentials)和另一个用于Keycloak的Secret(keycloak-issuer-resourceserver-secret)。现在我们可以将它们作为卷挂载到目录服务容器中,类似于我们在第14章中对ConfigMaps所做的操作。我们将在一个专用的补丁中实现这一点。

在目录服务的生产覆盖中(kubernetes/applications/catalog-service/production)创建一个patch-volumes.yml文件,并按照列表15.8中所示的配置进行设置。当Kustomize将此补丁应用于基本部署清单时,它将合并在基本部署中定义的ConfigMap卷和在补丁中定义的Secret卷。

然后,就像您在上一节中学到的那样,我们需要在生产覆盖的kustomization.yml文件中引用该补丁。

目前,Secrets已配置为提供给容器,但Spring Boot尚未知道

请翻译:It’s time to apply what you learned in this section to Edge Service Dispatcher Service and Order ServiceUpdate the commit stage workflow so that each release candidate is uniquely identifiedPush y

原文地址: https://www.cveoy.top/t/topic/iuOv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录