OpenIM 的Kubernetes 系统的helm chart部署脚本,一共分三部分,一部分是基础组件(Prometheus,loki,可选部分),一部分是应用中间件(kafka,mongodb,mysql,redis,minio), 一部分是应用服务(openim-server,openim-chat,openim-web,openim-admin)
目前最新版本如下: 服务 chart-version imageVersion openim-server 0.1.2 release-v3.6 openim-chat 0.1.2 release-v1.6 openim-admin 0.1.2 toc-base-open-k8s.35 openim-web 0.1.1 preview-k8s
关于helm chart版本管理
- 系统环境要求
- Kubernetes version:1.20+
- Helm chart version:3.0+
- Memory free size:8G+
- Disk free size:20G+
- Kubernetes 环境要求
- 安装部署了StorageClass 用于持久化.在这个仓库,在 infra/nfs-subdir-external-provisioner 目录,我们提供了用NFS实现StorageClass 的简单方式.
- 如果你有自己更专业的storageclass持久化存储实现,请替换在各chart脚本文件中的storageClass 名称.
- 安装了Ingress-nginx-controller.如果你使用的是其他ingress-controller,请更改各chart的ingress配置.
- 域名要求:
- 最好有两个域名, 一个域名用于 OpenIM API, 一个域名用于 Grafana 网页访问.如果你只有一个域名或者没有域名,那么只能使用OpenIM API的功能.
注意: 下个版本,我们将适配chart脚本的ingress配置适用traefik和istio.
- docs/: 用户操作文档,主要关于怎么使用grafana查看Prometheus监控和loki日志
- charts/: "openim-admin","openim-chat","openim-server","openim-web"四个业务服务的helm chart脚本
- infra: 中间件的helm chart脚本和config配置文件(e.g. kafka,minio,mongodb,mysql,redis;prometheus and loki 也包含在里面).
- config-imserver.yaml: openim-server的配置文件,会被用于创建k8s的configmap,挂载到openim-server的容器目录中.
- config-chatserver.yaml: openim-chat的配置文件,会被用于创建k8s的configmap,挂载到openim-chat的容器目录中.
- k8s-adminfront-config.yaml: openim-admin 前端服务helm chart 变量的自定义配置文件
- k8s-chat-server-config.yaml: openim-chat服务helm chart 变量的自定义配置文件
- k8s-open-im-server-config.yaml: openim-server服务helm chart 变量的自定义配置文件
- k8s-webfront-config.yaml: openim-web前端服务helm chart 变量的自定义配置文件
安装 kube-prometheus-stack 组件:
- 安装kube-prometheus-stack 组件,你需要一个域名用于grafana网页访问. 请修改 prometheus-config.yaml 里面的域名信息和对应的kubernetes tls名称.
- 用'kubectl create secret tls --cert=domain.crt --key=domain.key -n openim' 导入你域名的https文件证书创建你的域名的tls名称.
helm install kube-prometheus-stack infra/kube-prometheus-stack/ -f infra/prometheus-config.yaml -n openim
注意 如果你想使用Prometheus的告警功能,请修改alertmanager.config 文件中的邮件名称和授权码成真实有效的.
安装 loki-stack 组件: 修改 infra/loki-stack/values.yaml文件中loki.persistence.storageClassName成你k8s系统真实的storageclass.
helm install loki-stack infra/loki-stack/ -n openim
livekit 目前还没有集成到 helm charts 中,如果有音视频的需求,那么请你参考 livekit 的 helm charts 部署:https://github.com/livekit/livekit-helm。除此之外,还需要修改对应的 config-chatserver.yaml 中关于 livekit 的配置项。
注意 这里我们使用的是 kube-prometheus-stack组件中的grafana,所以你应该在grafana的数据源配置loki使用url= "http://loki-stack:3100"
通过helm chart脚本部署中间件服务:
- 安装im-kafka,修改 infra/kafka-config.yaml 文件中global.storageClass变量成你真实的storageClass.
helm install im-kafka infra/kafka -f infra/kafka-config.yaml -n openim
- 安装im-mongodb,修改 infra/mongodb-config.yaml 文件中global.storageClass变量成你真实的storageClass.
helm install im-mongodb infra/mongodb -f infra/mongodb-config.yaml -n openim
- 安装im-redis,修改 infra/redis-config.yaml 文件中global.storageClass变量成你真实的storageClass.
helm install im-redis infra/redis -f infra/redis-config.yaml -n openim
- 安装im-minio,修改 infra/minio-config.yaml 文件中global.storageClass变量成你真实的storageClass; 并且修改域名信息成你真实的域名和tls名称.
helm install im-minio infra/minio -f infra/minio-config.yaml -n openim
- 修改 k8s-open-im-server-config.yaml文件中的域名和tls名称成你系统真实的域名和tls名称.
- 修改 config-imserver.yaml 文件中的对象存储配置部分的域名成你系统真实的域名:
object:
enable: "minio"
apiURL: "https://openim1.server.top/api"# 修改openim1.server.top 成你真实的域名
minio:
bucket: "openim"
endpoint: "http://im-minio:9000"
accessKeyID: "root"
secretAccessKey: "openIM123"
sessionToken: ''
signEndpoint: "https://openim1.server.top/im-minio-api" # 修改openim1.server.top 成你真实的域名
- 假如你想Prometheus拉取openimserver的metrics数据你需要设置config-imserver.yaml文件中两处 enable=true
global:
monitor:
enabled: true #set true
config:
prometheus:
enable: true #set true
prometheusUrl: "https://openim2.server.top/" # 修改openim2.server.top 成你真实的grafana域名
- 安装openim-server
helm install openimserver -f k8s-open-im-server-config.yaml -f config-imserver.yaml -f notification.yaml ./charts/openim-server/ -n openim
- 修改 k8s-chat-server-config.yaml文件中的域名和tls名称成你系统真实的域名和tls名称 .
- 安装openimchat
helm install openimchat -f k8s-chat-server-config.yaml -f config-chatserver.yaml ./charts/openim-chat/ -n openim
- 修改 k8s-webfront-config.yaml文件中的域名和tls名称成你系统真实的域名和tls名称 .
- 安装openim-web
helm install openim-web -f k8s-webfront-config.yaml ./charts/openim-web/ -n openim
- 修改 k8s-adminfront-config.yaml文件中的域名和tls名称成你系统真实的域名和tls名称 .
- 安装openim-admin
helm install openim-admin -f k8s-adminfront-config.yaml ./charts/openim-admin/ -n openim