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
关注小猿姐,一起学习更多云原生技术干货。