StackGres 的重要概念

StackGres 是 Kubernetes 的全栈、生产级 PostgreSQL 发行版。StackGres 提供了在生产环境中运行 PostgreSQL 所需的所有特性和管理选项,除此之外,它还附带了合理的默认选项。

"StackGres" 这个名字来源于运行生产级 PostgreSQL 实例所需的 “组件堆栈”。

在这一页,我们将介绍 StackGres 的重要概念。

生产级数据库管理

生产就绪的数据库管理是 StackGres 的核心。StackGres 以一种简单的声明性方式支持所有常见的(和一些不常见的)数据库管理操作。在这样做的同时,StackGres 坚持生产级行为。这意味着不只是盲目地执行某些操作(例如,当用户更新数据库实例的目标状态时),而是以一种最小化应用程序和用户中断的方式,就像优秀的 DBA 所做的那样。

因此,您可以将 StackGres 视为您友好的 DBA 的 Kubernetes 版本-只是使用 Kubernetes API,更快的响应时间和更少的咖啡休息时间。

以 Kubernetes 为中心

StackGres 是一个基于 Kubernetes 的平台,它以 Kubernetes operator 的形式提供生产级 PostgreSQL。所以 StackGres 的一切都与 Kubernetes 紧密相连。

Kubernetes operator 是一种打包、部署和管理基于 Kubernetes 的应用程序或平台的方法。
有些工作负载(如数据库)需要更多的手工操作,而云原生 Postgres 部署需要了解如何维护状态和集成所有组件。
StackGres operator 允许使用用户创建的一些自定义资源来部署 StackGres 集群。

除此之外,StackGres 还遵循了工程师所熟悉和喜欢的 Kubernetes 的可用性和观感。用户自定义的 StackGres 资源意味着在 Kubernetes 中我们所知道的相同的方便的声明式模型中使用。也就是说,用户定义一个期望的目标状态(通常是YAML,尽管也可能有其他选项),StackGres operator 完成如何达到该目标状态的繁重工作。

单点接入 - 多种方式

StackGres 平台为所有与 Postgres 相关的操作提供了一个单一的访问点。
用户有多种方式访问和修改 Postgres 集群,即通过 Kubernetes API(例如使用 kubectl), REST API 或 web UI。
无论选择哪种方式或哪种组合,StackGres 都确保状态和所有操作始终一致。

这为用户提供了最大的灵活性和简单性。例如,如果 StackGres 设置由三个用户操作,其中一个用户使用 kubectl 处理所有事情,第二个用户使用自己的 curl 脚本,第三个用户使用 UI,那么他们都可以执行相同的操作并访问相同的信息。所有不同的方式都能实现所有的功能。

Sidecar - 提供生态堆栈功能

StackGres "stack" 的组件由部署在主 Postgres 容器旁边的 sidecar 容器提供。

所有容器基础镜像都是由 StackGres 构建和提供的。
轻量级和安全的容器映像基于 RedHat 的 UBI 8。

StackGres 集群

当我们提到 "cluster" 时,我们指的是由 StackGres 管理的 PostgreSQL 服务器的集合。

因此,StackGres 集群(由自定义 Kubernetes 资源类型 SGCluster 定义)是一个复制、管理、生产就绪和优化的 PostgreSQL 服务器。StackGres 集群具有固定的、合理的配置默认值,所有这些都偏向于生产级体验。因此,对于一个工作设置,定义一个 StackGres 集群已经足够了。