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 在 数据库接口
每月下载量:727
在 2 crates 中使用
1.5MB
26K SLoC
Tembo Operator
Tembo Operator 是一个 Kubernetes Operator,用于创建、更新和删除 PostgreSQL (Postgres) 实例。
Tembo Operator 的关键区别在于
- 独特的扩展管理体验
- 堆栈概念
- 轻松将应用集成到与 Postgres 一起运行
目录
快速入门
虽然在本地上运行 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
一样
- 尝试使用 消息队列栈 和 sample-message-queue.yaml。
- 尝试使用 OLAP 栈 和 sample-olap.yaml。
- 尝试使用 MongoAlternative 栈 和 sample-document.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