集群部署-kubernetes -待完善
Deployment 部署
OpenIM Server 部署
资源要求
- CPU:2 核心
- 内存:4 GiB
- 磁盘使用:20 GiB(在节点上)
前提条件
确保您已经部署了以下组件:
- Redis
- MongoDB
- Kafka
- MinIO
原生部署
进入目标目录
cd ./deployments/deploy/
部署配置和依赖
更新您的 openim-config.yml
配置映射。您可以查阅官方文档获取更多详情。
在 openim-config.yml
中,您需要修改以下配置:
discovery.yml
kubernetes.namespace
:默认是default
,您可以将其更改为您的 namespace。
mongodb.yml
address
:设置为已部署的 MongoDB 地址或 Mongo 服务名称和端口。database
:设置为您的 MongoDB 数据库名称(需要事先创建数据库)。authSource
:设置为您的 MongoDB 用户认证源数据库(authSource
是指定与用户凭证关联的数据库名称,用户需要在该数据库中创建)。
kafka.yml
address
:设置为已部署的 Kafka 地址或 Kafka 服务名称和端口。
redis.yml
address
:设置为已部署的 Redis 地址或 Redis 服务名称和端口。
minio.yml
internalAddress
:设置为已部署的 MinIO 服务名称和端口。externalAddress
:设置为您已暴露的 MinIO 外部地址。
设置 Secret
Secret 是一个包含少量敏感数据的对象。例如密码和密钥。Secret 类似于 ConfigMaps。
Redis:
在 redis-secret.yml
中更新 redis-password
的值,将其设置为您的 Redis 密码,需进行 base64 编码。
apiVersion: v1
kind: Secret
metadata:
name: openim-redis-secret
...
data:
redis-password: b3BlbklNMTIz # update to your redis password encoded in base64, if need empty, you can set to ""
Mongo:
在 mongo-secret.yml
文件中更新 mongo_openim_username
和 mongo_openim_password
的值,将其设置为您的 MongoDB 用户名和密码,需进行 base64 编码。
apiVersion: v1
kind: Secret
metadata:
name: openim-mongo-secret
type: Opaque
data:
mongo_openim_username: b3BlbklN # update to your mongo username encoded in base64, if need empty, you can set to "" (this user credentials need in authSource database)
mongo_openim_password: b3BlbklNMTIz # update to your mongo password encoded in base64, if need empty, you can set to ""
Minio:
在 minio-secret.yml
文件中更新 minio-root-user
和 minio-root-password
的值,将其设置为您的 MinIO accessKeyID
和 secretAccessKey
,需进行 base64 编码。
apiVersion: v1
kind: Secret
metadata:
name: openim-minio-secret
type: Opaque
data:
minio-root-user: cm9vdA== # update to your minio accessKeyID encoded in base64, if need empty, you can set to ""
minio-root-password: b3BlbklNMTIz # update to your minio secretAccessKey encoded in base64, if need empty, you can set to ""
Kafka:
在 kafka-secret.yml
文件中更新 kafka-password
的值,将其设置为您的 Kafka 密码,需进行 base64 编码。
apiVersion: v1
kind: Secret
metadata:
name: openim-kafka-secret
type: Opaque
data:
kafka-password: '' # update to your kafka password encoded in base64, if need empty, you can set to ""
应用 Secrets
kubectl apply -f redis-secret.yml -f minio-secret.yml -f mongo-secret.yml -f kafka-secret.yml
应用所有配置
kubectl apply -f ./openim-config.yml
注意:如果您使用的是
default
命名空间,您可以执行clusterRile.yml
来为默认服务账户创建集群角色绑定。您可以在
openim-config.yml
中的discovery.yml
文件中修改命名空间,改变kubernetes.namespace
为您的命名空间。
执行 clusterRole.yml
kubectl apply -f ./clusterRole.yml
运行所有 Deployment 和 Service
注意:在部署主要应用程序之前,请确保像 MinIO、Redis 和 Kafka 这样的基础设施服务已经运行。
kubectl apply \
-f openim-api-deployment.yml \
-f openim-api-service.yml \
-f openim-crontask-deployment.yml \
-f openim-rpc-user-deployment.yml \
-f openim-rpc-user-service.yml \
-f openim-msggateway-deployment.yml \
-f openim-msggateway-service.yml \
-f openim-push-deployment.yml \
-f openim-push-service.yml \
-f openim-msgtransfer-service.yml \
-f openim-msgtransfer-deployment.yml \
-f openim-rpc-conversation-deployment.yml \
-f openim-rpc-conversation-service.yml \
-f openim-rpc-auth-deployment.yml \
-f openim-rpc-auth-service.yml \
-f openim-rpc-group-deployment.yml \
-f openim-rpc-group-service.yml \
-f openim-rpc-friend-deployment.yml \
-f openim-rpc-friend-service.yml \
-f openim-rpc-msg-deployment.yml \
-f openim-rpc-msg-service.yml \
-f openim-rpc-third-deployment.yml \
-f openim-rpc-third-service.yml
认证
在部署完成后,您可以使用以下检测已部署的信息:
# Check the status of all pods
kubectl get pods
# Check the status of services
kubectl get svc
# Check the status of deployments
kubectl get deployments
# View all resources
kubectl get all
清除所有部署内容
kubectl delete -f ./
注意事项:
- 如果您为部署使用了特定的命名空间,请在 kubectl 命令中添加
-n <namespace>
参数。
OpenIM Chat 部署
先决条件
- 确保已部署 OpenIM Server 及其依赖项。
- Redis
- MongoDB
- Kafka
- MinIO
- 暴露 OpenIM Server 的相应服务和端口。
部署 OpenIM Chat
Chat 依赖于 OpenIM Server,因此您需要先部署 OpenIM Server。
进入目标目录
cd deployments/deploy
修改 ConfigMap
您需要修改 chat-config.yml
文件以匹配您的环境。重点关注以下字段:
discovery.yml
kubernetes.namespace
: 默认是default
,您可以将其更改为您的命名空间。
mongodb.yml
address
:设置为已部署的 MongoDB 地址或 Mongo 服务名称和端口。database
:设置为您的 MongoDB 数据库名称(需要事先创建数据库)。authSource
:设置为您的 MongoDB 用户认证源数据库(authSource
是指定与用户凭证关联的数据库名称,用户需要在该数据库中创建)。redis.yml
address
: 设置为已部署的 Redis 地址或 Redis 服务名称和端口。
share.yml
openIM.apiURL
: 修改为您的 IM Server API 地址或使用您的openim-api
服务名称和端口openIM.secret
: 与 IM Servershare.secret
值相同。
设置 secret
Secret 是一个包含少量敏感数据的对象。例如密码和密钥。Secret 类似于 ConfigMaps。
Redis:
在 redis-secret.yml
中更新 redis-password
的值,将其设置为您的 Redis 密码,需进行 base64 编码。
apiVersion: v1
kind: Secret
metadata:
name: openim-redis-secret
type: Opaque
data:
redis-password: b3BlbklNMTIz # update to your redis password encoded in base64, if need empty, you can set to ""
Mongo:
在 mongo-secret.yml
文件中更新 mongo_openim_username
和 mongo_openim_password
的值,将其设置为您的 MongoDB 用户名和密码,需进行 base64 编码。
apiVersion: v1
kind: Secret
metadata:
name: openim-mongo-secret
type: Opaque
data:
mongo_openim_username: b3BlbklN # update to your mongo username encoded in base64, if need empty, you can set to "" (this user credentials need in authSource database)
mongo_openim_password: b3BlbklNMTIz # update to your mongo password encoded in base64, if need empty, you can set to ""
应用 Secrets
kubectl apply -f redis-secret.yml -f mongo-secret.yml
应用配置和服务
部署配置和服务
kubectl apply -f chat-config.yml -f openim-admin-api-service.yml -f openim-chat-api-service.yml -f openim-admin-rpc-service.yml -f openim-chat-rpc-service.yml
启动 Chat 部署
kubectl apply -f openim-chat-api-deployment.yml -f openim-admin-api-deployment.yml -f openim-chat-rpc-deployment.yml -f openim-admin-rpc-deployment.yml
验证
部署完成后,您可以验证部署状态。
# Check the status of all pods
kubectl get pods
# Check the status of services
kubectl get svc
# Check the status of deployments
kubectl get deployments
# View all resources
kubectl get all
清除所有部署内容
kubectl delete -f ./
注意事项:
- 如果您为部署使用了特定的命名空间,请在 kubectl 命令中添加
-n <namespace>
参数。