7.1.2 在本地集群中管理数据服务
正如您在第 5 章中所学到的,数据服务是系统的有状态组件,由于存储处理的挑战,在云环境中需要特别关注。在 Kubernetes 中管理持久化和存储是一个复杂的话题,通常不是开发人员的职责。
当您在生产环境中部署 Polar Bookshop 系统时,将依赖云提供商提供的托管数据服务,因此我已为您准备了在本地 Kubernetes 集群中部署 PostgreSQL 的配置。请查看本书附带的源代码仓库(Chapter07/07-end),将 polar-deployment/kubernetes/platform/development 文件夹的内容复制到您的 polar-deployment 仓库中相同路径下。该文件夹包含运行 PostgreSQL 数据库的基本 Kubernetes 清单。
打开终端窗口,导航到 polar-deployment 仓库中的 kubernetes/platform/development 文件夹,运行以下命令在本地集群中部署 PostgreSQL:
$ kubectl apply -f services
注意:上述命令创建 services 文件夹中清单内定义的资源。在下一节中,您将了解更多关于 kubectl apply 命令和 Kubernetes 清单的信息。
结果将是在本地 Kubernetes 集群中运行 PostgreSQL 容器的 Pod。您可以使用以下命令检查:
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
polar-postgres-677b76bfc5-lkkqn 1/1 Running 0 48s
提示:您可以通过运行
kubectl logs deployment/polar-postgres来检查数据库日志。
使用 Helm 运行 Kubernetes 服务
在 Kubernetes 集群中运行第三方服务的一种流行方式是通过 Helm(https://helm.sh)。可以将其想象为包管理器。要在计算机上安装软件,可以使用操作系统包管理器之一,如 Apt(Ubuntu)、Homebrew(macOS)或 Chocolatey(Windows);在 Kubernetes 中,您可以类似地使用 Helm,但我们称之为 chart 而非 package。
在云原生旅程的这个阶段,使用 Helm 还为时过早,可能会造成混淆。要充分理解它的工作原理,必须先对 Kubernetes 有更多的了解。
在本章剩余部分,我将假设您的本地集群中运行着 PostgreSQL 实例。如果任何时候需要取消部署数据库,可以在同一文件夹中运行 kubectl delete -f services 命令。
下一节将介绍主要的 Kubernetes 概念,并引导您在本地集群上部署 Spring Boot 应用程序。