如何利用helm来部署Superset
Superset支持多种的部署方式,其部署方式详情可以在其官网上进行查看
https://superset.apache.org/docs/installation/kubernetes
内部包含诸如Kubernetes作为管理平台,也支持使用Docker Compose作为管理平台。
不过在这一章,我们将主要说如何将Superset部署在helm之上
从最简单的部署运行,到修改配置文件,到多配置文件应用多方面。
那么如何想要开始这一章,我们需要首先安装helm
对于Windows平台,直接从https://helm.sh/ helm官网下载,然后在环境变量的path中配置一下,helm会自动尝试读取本地的.kube配置。
在安装完成了helm之后,按照官方文档的指引,配置对应的Charts仓库并进行安装
helm repo add superset https://apache.github.io/superset
其次就是第一次进行部署
helm upgrade –install –values my-values.yaml superset superset/superset
这个values.yaml可以在superset目录下的helm/superset找到
之后就可以看到部署的各个pods
NAME READY STATUS RESTARTS AGE
superset-celerybeat-7cdcc9575f-k6xmc 1/1 Running 0 119s
superset-f5c9c667-dw9lp 1/1 Running 0 4m7s
superset-f5c9c667-fk8bk 1/1 Running 0 4m11s
superset-init-db-zlm9z 0/1 Completed 0 111s
superset-postgresql-0 1/1 Running 0 6d20h
superset-redis-master-0 1/1 Running 0 6d20h
superset-worker-75b48bbcc-jmmjr 1/1 Running 0 4m8s
superset-worker-75b48bbcc-qrq49 1/1 Running 0 4m12s
分别是定时任务,服务节点,初始化服务,postgre, redis,以及定时任务执行节点。
除此也部署了些相关的service供我们对外暴露,可以通过设置Ingress,或者修改Service为NodePort或者LoadBalancer进行访问
那么到这里,我们就完成了最基本的部署运行。
之后我们看下如何修改配置文件。
最简单的就是进入helm下的superset中的values.yaml进行修改,比如我们希望使用oicd,就需要安装Authlib相关依赖。可以修改
pip install \
psycopg2-binary==2.9.1 \
PyAthenaJDBC==3.0.1 \
PyAthena==2.18.1 \
redis==3.5.3 && \
增加Authlib
如果我们希望修改使用自己的postgres作为信息存储。
那么就可以先在values.yaml之中,关闭helm部署postgres
postgresql:
##
## Use the PostgreSQL chart dependency.
## Set to false if bringing your own PostgreSQL.
enabled: false
然后在SupersetNode之中配置postgres的host,post, user, pass,之后在helm upgrade的时候,就会关闭postgres,并应用下来。
之后是进行多应用文件部署
譬如我们会遇到在测试环境中使用账号密码登录即可,但是在线上环境中,我们需要集成SSO服务器进行登录。那么就需要准备不同环境的values.yaml,但是我们只想修改自己需要修改的部分配置,那么就需要进行多文件部署。
可以书写多个values.yaml,每个values.yaml中只有部分修改,比如只修改数据库连接
supersetNode:
connections: redis_host: “superset.redis.prod.cn-north-1.aws.com” redis_port: “6379” db_host: “supersetmeta.prod.cn-north-1.aws.com ” db_port: “5432” db_user: postgres db_pass: password001 db_name: postgres |
最后
helm upgrade –install superset -f ../values.yaml -f values.yaml -n superset ./superset
需要注意,-f 右边的优先级高
所以需要我们将环境的values.yaml放在右边,左边一层层的嵌套。