跳到主要内容

k8s-deployment

OpenIM应用容器化部署指南

OpenIM支持多种集群部署方法,包括但不限于helmsealoskustomize

多个贡献者和之前的官方版本都提供了一些可供参考的解决方案:

依赖性检查

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地址系统信息
master0110.0.0.9Linux 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
node0110.0.0.4与master01相似
node0210.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进行卸载并不会删除etcdcni相关的配置。需要手动清除或使用sealos进行卸载。

$ sealos reset

如果您在本地,您还可以使用Kind和Minikube进行测试,例如使用Kind:

$ kind create cluster