191 个版本 (49 个破坏性更改)

新版本 0.49.7 2024 年 8 月 20 日
0.49.5 2024 年 7 月 16 日
0.43.2 2024 年 3 月 30 日
0.29.2 2023 年 12 月 29 日
0.0.1 2023 年 5 月 22 日

#184数据库接口

Download history 406/week @ 2024-05-01 719/week @ 2024-05-08 157/week @ 2024-05-15 135/week @ 2024-05-22 233/week @ 2024-05-29 302/week @ 2024-06-05 112/week @ 2024-06-12 125/week @ 2024-06-19 318/week @ 2024-06-26 48/week @ 2024-07-03 362/week @ 2024-07-10 121/week @ 2024-07-17 223/week @ 2024-07-24 198/week @ 2024-07-31 170/week @ 2024-08-07 122/week @ 2024-08-14

每月下载量:727
2 crates 中使用

Apache-2.0

1.5MB
26K SLoC

Tembo Operator

Tembo Operator 是一个 Kubernetes Operator,用于创建、更新和删除 PostgreSQL (Postgres) 实例。

Tembo Operator 的关键区别在于

  • 独特的扩展管理体验
  • 堆栈概念
  • 轻松将应用集成到与 Postgres 一起运行

目录

  1. 快速入门
    1. 集群操作
  2. 示例
    1. 尝试 Postgres 扩展
    2. 尝试 Tembo 堆栈
  3. 使用 curl 进行可观察性
  4. 使用 OpenTelemetry 和 Jaeger 进行可观察性

快速入门

虽然在本地上运行 Tembo Operator 相对简单,但在开始之前您需要满足一些先决条件。有关完整列表,请参阅项目的贡献指南

集群操作

要销毁任何现有集群并启动新集群所需的容器,只需运行

just start-kind

除了启动集群外,子任务还安装了几个必要的依赖项。如果您好奇,可以查看 justfile 中的定义,它都是相当可组合的。

一旦启动了 kind 集群,您就可以启动 Tembo Operator 的本地副本以使用它。同样,这很简单

just run

示例

集群运行后,您就可以测试 Tembo Operator 的一些内置功能了。

1. 尝试 Postgres 扩展

💡以下步骤假设您已经完成了快速入门部分

首先,应用您选择的 YAML 模板,该模板托管在 ./yaml

kubectl apply -f yaml/sample-standard.yaml

一旦建立,使用 psql 进入 pod。这需要密码,具体说明请参阅 CONTRIBUTING.md 文件的通过 psql 连接部分。

psql postgres://postgres:$PGPASSWORD@sample-standard.localhost:5432

这将允许您看到已启用的扩展

\dx

以及已安装但尚未启用的扩展

SELECT * FROM pg_available_extensions;

使用 \q 退出 Postgres,使用 Ctl-D 退出 pod。

现在,尝试通过以下方式执行 pod

kubectl exec -it sample-standard-1 -- /bin/bash

如上所述,Tembo Operator 预装了 Postgres 扩展管理功能。这以 Trunk 扩展注册表的形式提供,可以在 Kubernetes pod 内部使用。

尝试运行以下命令

trunk install pgmq

💡 注意,您可以选择安装 Trunk 注册表中发现的任何扩展。

考虑到您仍然在 pod 中,只需运行 psql,您应该会发现自己处于 Postgres 实例中。

和之前一样,尝试运行

SELECT * FROM pg_available_extensions WHERE name = 'pgmq'

您应该在结果中看到扩展,然后可以运行以启用

CREATE EXTENSION pgmq CASCADE;

2. 尝试 Tembo Stacks

在上面的示例中,我们使用了 sample-standard.yaml 文件,但还有其他一些文件提供了不同的配置。请查看 yaml 目录中的其他文件。以下是一些选择选项,就像 sample-standard.yaml 一样

使用 curl 进行可观察性

在上述任何情况下,您的应用程序都在 8080 端口上监听,并将观察事件。

协调器将运行并每次更改时写入状态对象。您应该在 pod 的日志中看到结果,或者在 kubectl get coredb -o yaml 的 .status 对象输出中看到。

Webapp 输出

示例 Web 服务器公开了一些可以与 curl 一起检查的示例指标和调试信息。

$ kubectl apply -f yaml/sample-coredb.yaml
$ curl 0.0.0.0:8080/metrics
# HELP cdb_controller_reconcile_duration_seconds The duration of reconcile to complete in seconds
# TYPE cdb_controller_reconcile_duration_seconds histogram
cdb_controller_reconcile_duration_seconds_bucket{le="0.01"} 1
cdb_controller_reconcile_duration_seconds_bucket{le="0.1"} 1
cdb_controller_reconcile_duration_seconds_bucket{le="0.25"} 1
cdb_controller_reconcile_duration_seconds_bucket{le="0.5"} 1
cdb_controller_reconcile_duration_seconds_bucket{le="1"} 1
cdb_controller_reconcile_duration_seconds_bucket{le="5"} 1
cdb_controller_reconcile_duration_seconds_bucket{le="15"} 1
cdb_controller_reconcile_duration_seconds_bucket{le="60"} 1
cdb_controller_reconcile_duration_seconds_bucket{le="+Inf"} 1
cdb_controller_reconcile_duration_seconds_sum 0.013
cdb_controller_reconcile_duration_seconds_count 1
# HELP cdb_controller_reconciliation_errors_total reconciliation errors
# TYPE cdb_controller_reconciliation_errors_total counter
cdb_controller_reconciliation_errors_total 0
# HELP cdb_controller_reconciliations_total reconciliations
# TYPE cdb_controller_reconciliations_total counter
cdb_controller_reconciliations_total 1
$ curl 0.0.0.0:8080/
{"last_event":"2019-07-17T22:31:37.591320068Z"}

使用 OpenTelemetry 和 Jaeger 进行可观察性

OpenTelemetry 是一个专注于生成、收集、管理和导出遥测数据的可观察性框架。另一方面,Jaeger 是一个具有伴随 UI 的可观察性平台,它消耗 OpenTelemetry 数据。通过将两者集成到 Tembo Operator 中,用户能够更深入地了解他们的操作。

如果您还没有,可以通过运行以下命令启动本地 Kubernetes 集群

just start-kind

完成后,只需运行

just run-telemetry

从那里,您就可以访问以下 URL 并导航您的遥测数据了

https://127.0.0.1:16686

依赖关系

~86MB
~1.5M SLoC