写点什么

KubeBlocks v0.8.0 发布!Component API 让数据库引擎组装更简单!

作者:小猿姐
  • 2024-01-15
    浙江
  • 本文字数:1909 字

    阅读完需:约 6 分钟

KubeBlocks v0.8.0 版本发布了!


KubeBlocks v0.8.0 推出了 Component API,让数据库引擎的组装变得更加简单。举个例子,我们可以将 etcd 和 zookeeper 这两种数据库做成了标准组件,开发者在定义 Kafka 或者 Pulsar 等复杂引擎时可以直接引用;再举个例子,我们还可以将 Proxy 做成了标准组件,开发者在定义各种发行版的 MySQL 或 PostgreSQL 引擎读写分离拓扑时无需重复劳动(heavy lifting)。Addon 机制也有了重大改进,数据库引擎的 helm chart 从 KubeBlocks repo 中拆分出去,从此数据库引擎或者版本的变动已与 KubeBlocks 发版解绑。

Highlights

  • 独立的 Component API

在集成新数据库引擎的过程中,我们发现了 KubeBlocks 抽象设计上的不足。v0.8.0 将 Component 从 Cluster 定义中拆分出来,更好地支持含有多个组件的数据库类型。支持了 Component 之间的变量引用,包括 ConfigMap, Secret, Service, ServiceReference 等几种变量引用类型,可以更好的串联组件间的关系,为构建不同拓扑形态的集群奠定基础。

  • Addon helm chart 移出 KubeBlocks repo

在 v0.8.0 之前,数据库引擎的 Helm Chart 都是放在 deploy 目录下,与 KubeBlocks Operator 耦合在一起。这样存在两个问题,一是 KubeBlocks 升级时会同步升级数据库引擎,二是数据库引擎升级时会覆盖已有的 CD/CV,导致 Cluster 全部重启。为了解决这两个问题,在 0.8 中我们将数据库引擎拆分到了 kubeblocks-addon 这个独立的代码仓库下,同时数据库引擎和所有资源均加上了版本号,安装时不会覆盖原有资源导致 Cluster 重启。 配套提供了 kbcli addon 相关命令,用户可以进行下载、安装、使用、卸载对应版本的 addon,非常方便。

  • 支持多版本的数据库引擎定义

在 v0.8.0 之前,KubeBlocks 升级可能会触发数据库集群的重启。在 v0.8.0 上,结合新的 Component API 和 Addon helm chart 存储机制,这个问题得到了一定程度的解决。后面我们还会继续优化多版本的设计,最终实现毫无负担地升级。

What's Changed

新功能

Pika

  • 支持分片集群,允许用户通过调整组件的方式,增加存量集群的分片

Clickhouse

  • 集成监控、scale out、高可用

Oceanbase

  • 新增主备集群模式,支持完整生命周期,并集成了备份恢复、监控和切换

MySQL

  • 社区版 MySQL 5.7 和 8.0 支持了完整的生命周期,并集成了备份恢复、监控和 HA

  • ApeCloud MySQL 新增日志审计功能

PostgreSQL

  • Postgresql 支持 wal-g 全量备份和按时间点恢复

支持 NodePort

  • Redis 支持 nodePort 访问方式

OpsRequest

  • 支持自定义 OpsRequest,可用于创建和删除 Kafka Topic

备份恢复

  • 新增 FTP 和 NFS 作为备份存储

易用性

  • 允许用户一次性提交多个 opsRequest,并做了一定程度的并发控制

  • 安装 KubeBlocks 时支持指定镜像仓库地址,加快镜像拉取速度

可观测性

  • 统一日志和 mertrics 采集的配置管理 Kubeblocks monitor specification

API

  • 新增 ComponentDefinition 接口定义

  • 新增 OpsDefinition API

  • ActionSet 新增 PreDelete Action,可以在删除备份之前执行此动作

kbcli

  • 增强 addon 子命令,支持从 addon 索引仓库检索和安装 addon

不兼容的改动

  • 在 KubeBlocks v0.8 我们对 Oceanbase 做了非常多的改进(支持创建主备集群, 支持主机网络和动态端口, 支持备份/恢复, 监控, 日志等能力),0.7 版本创建的集群和 0.8 版本创建的集群不兼容,如果您正在使用 0.7 版本的 Oceanbase,建议您升级到 0.8 的 KubeBlocks 之后,升级 Oceanbase Addon,再将 0.7 版本的 Oceanbase cluster 迁移至 0.8 版本的 Oceanbase cluster 使用,以体验更丰富的功能. 推荐使用 OceanBase 官方数据导入导出工具(OBLOADER 和 OBDUMPER)来迁移数据.

  • KubeBlocks v0.8.0 精简了部署 KubeBlocks 时默认安装的数据引擎,删除 greptime,influxdb,neon,oracle-mysql,orioledb,tdengine,mariadb,nebula,risingwave,starrocks,tidb,zookeeper。用户可以通过 kbcli addon 子命令或者 kubectl apply 命令从 addon 索引仓库中按需安装;如果用户从低版本升级至该版本,请按照升级手册操作,避免正在使用的 addon 被删除从而影响正在运行的集群。

  • KubeBlocks 0.8 的 Helm Chart 中不再包含依赖的 CRD,在使用 helm 命令安装或升级 KubeBlocks 时需要先安装对应的 CRD,然后再安装或升级 KubeBlocks,请参照升级手册进行操作。

End

小猿姐诚邀各位体验 KubeBlocks,也欢迎您成为产品的使用者和项目的贡献者。跟我们一起构建云原生数据基础设施吧!


💻 官网: www.kubeblocks.io


🌟 GitHub: https://github.com/apecloud/kubeblocks


🚀 Get started: https://kubeblocks.io/docs/release-0.7/user_docs/try-out-on-playground/try-kubeblocks-on-your-laptop


关注小猿姐,一起学习更多云原生技术干货。

用户头像

小猿姐

关注

还未添加个人签名 2022-08-11 加入

每个开发者都想知道的云原生和数据库技术

评论

发布
暂无评论
KubeBlocks v0.8.0 发布!Component API 让数据库引擎组装更简单!_数据库_小猿姐_InfoQ写作社区