OpenIM k8s部署-待完善
OpenIM支持多种集群部署方法,包括但不限于helm
、sealos
、kustomize
。
多个贡献者和之前的官方版本都提供了一些可供参考的解决方案:
依赖性检查
Kubernetes: >= 1.16.0-0
Helm: >= 3.0
最小配置
生产环境推荐的最小配置如下:
CPU: 4
内存: 8G
硬盘: 100G
配置文件生成
我们已经自动化了所有的文件,使得为OpenIM生成配置文件成为可选项。但如果你希望自定义配置,你可以按照以下步骤操作:
$ make init
# 或者使用脚本:
# ./scripts/init-config.sh
此时,配置文件将在deployments/openim/config
下生成,您可以根据需要进行修改。
安装helm
Helm通过打包提供版本控制和发布管理,大大简化了Kubernetes应用的部署和管理。
使用脚本:
$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
添加仓库:
$ helm repo add brigade https://openimsdk.github.io/openim-charts
OpenIM镜像策略
自动化提供的包括aliyun, ghcr, docker hub:镜像文档
本地测试构建方法:
$ make image
此命令有助于快速在本地构建所需的镜像。关于详细的构建策略,请参考构建文档。
安装
浏览我们的Helm-Charts仓库并仔细阅读:Helm-Charts仓库
使用helm charts仓库,您可以忽略以下配置,但如果您只想使用服务器并在其上进行扩展,您可以继续:
使用Helmfile:
GO111MODULE=on go get github.com/roboll/helmfile@latest
export MYSQL_ADDRESS=im-mysql
export MYSQL_PORT=3306
export MONGO_ADDRESS=im-mongo
export MONGO_PORT=27017
export REDIS_ADDRESS=im-redis-master
export REDIS_PORT=6379
export KAFKA_ADDRESS=im-kafka
export KAFKA_PORT=9092
export OBJECT_APIURL="https://openim.server.com/api"
export MINIO_ENDPOINT="http://im-minio:9000"
export MINIO_SIGN_ENDPOINT="https://openim.server.com/im-minio-api"
mkdir ./charts/generated-configs
../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/openim.yaml > ./charts/generated-configs/config.yaml
cp ../config/notification.yaml ./charts/generated-configs/notification.yaml
../scripts/genconfig
集群设置参考
如果你已经有一个kubernetes
集群,或者你希望从头开始构建一个kubernetes
集群,你可以跳过这一步。
为了快速启动,我使用sealos迅速建立集群,sealos在其核心也是kubeadm的封装:
$ SEALOS_VERSION=`curl -s https://api.github.com/repos/labring/sealos/releases/latest | grep -oE '"tag_name": "[^"]+"' | head -n1 | cut -d'"' -f4` && \
curl -sfL https://raw.githubusercontent.com/labring/sealos/${SEALOS_VERSION}/scripts/install.sh |
sh -s ${SEALOS_VERSION} labring/sealos
支持的版本:
- docker:
labring/kubernetes-docker
:(v1.24.0~v1.27.0) - containerd:
labring/kubernetes
:(v1.24.0~v1.27.0)
集群安装:
集群的详细信息如下:
主机名 | IP地址 | 系统信息 |
---|---|---|
master01 | 10.0.0.9 | Linux VM-0-9-ubuntu 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
node01 | 10.0.0.4 | 与master01相似 |
node02 | 10.0.0.10 | 与master01相似 |
$ export CLUSTER_USERNAME=ubuntu
$ export CLUSTER_PASSWORD=123456
$ sudo sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \
--masters 10.0.0.9 \
--nodes 10.0.0.4,10.0.0.10 \
-u "$CLUSTER_USERNAME" \
-p "$CLUSTER_PASSWORD"
注意 卸载方法:使用
kubeadm
进行卸载并不会删除etcd
和cni
相关的配置。需要手动清除或使用sealos
进行卸载。$ sealos reset
如果您在本地,您还可以使用Kind和Minikube进行测试,例如使用Kind:
$ kind create cluster