当部署 Cassandra 到 Kubernetes 时,一个常见的需求是对数据库进行初始化,包括创建 key space 和表。本文说明了如何使用 helmfile 和 Bitnami Cassandra helm 图表来实现。
在 Kubernetes 上,Cassandra 初始化脚本需要保存在 config map 中。最简单的做法是创建一个新的 helm 图表来管理这些初始化脚本。在使用 helm create db-config
命令创建出新的图表之后, 删除 templates
目录中除了 _helpers.tpl
之外的全部文件,并且添加名为 configmap.yaml
的新文件。
在下面的 configmap.yaml
文件中,每个名值对都是一个 Cassandra CQL 文件。这些初始化脚本会按照文件名的字母顺序来依次执行,因此需要在文件名前加上类似 01-
这样的前缀来保证执行顺序。
apiVersion: v1
kind: ConfigMap
metadata:
name: init-db
labels:
{
{- include "db-config.labels" . | nindent 4 }}
data:
"01-init.cql": |
CREATE KEYSPACE IF NOT EXISTS myapp
WITH REPLICATION = {
'class': 'SimpleStrategy',