mirror of
				https://github.com/openimsdk/open-im-server.git
				synced 2025-11-04 11:22:10 +08:00 
			
		
		
		
	增加k8s部署方案
This commit is contained in:
		
							parent
							
								
									13efbf5f98
								
							
						
					
					
						commit
						8631c90290
					
				
							
								
								
									
										3
									
								
								deploy/k8s/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								deploy/k8s/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
*Open-IM-SDK-Core.tar.gz
 | 
			
		||||
*Open-IM-Server.tar.gz
 | 
			
		||||
*development.yaml
 | 
			
		||||
							
								
								
									
										32
									
								
								deploy/k8s/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								deploy/k8s/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
# openim开源项目k8s部署
 | 
			
		||||
## 需要的环境
 | 
			
		||||
    MacOS OR Linux
 | 
			
		||||
## 需要安装的软件
 | 
			
		||||
- wget
 | 
			
		||||
- docker
 | 
			
		||||
- kubectl
 | 
			
		||||
## k8s配置
 | 
			
		||||
    编辑 setting.env
 | 
			
		||||
```shell
 | 
			
		||||
#docker镜像tag前缀
 | 
			
		||||
DOCKER_REGISTRY_ADDR="harbor.local/"
 | 
			
		||||
#nodePort暴露端口号 api
 | 
			
		||||
NODE_PORT_API="10100"
 | 
			
		||||
#nodePort暴露端口号 msg_gateway
 | 
			
		||||
NODE_PORT_MSG_GATEWAY="10101"
 | 
			
		||||
#nodePort暴露端口号 sdk_server
 | 
			
		||||
NODE_PORT_SDK_SERVER="10102"
 | 
			
		||||
#nodePort暴露端口号 demo
 | 
			
		||||
NODE_PORT_DEMO="10103"
 | 
			
		||||
#部署在哪个命名空间
 | 
			
		||||
K8S_NAMESPACE="openim"
 | 
			
		||||
```
 | 
			
		||||
## 单个服务部署
 | 
			
		||||
```shell
 | 
			
		||||
cd $服务路径 && \
 | 
			
		||||
bash build.sh
 | 
			
		||||
```
 | 
			
		||||
## 全部部署
 | 
			
		||||
```shell
 | 
			
		||||
go run .
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										111
									
								
								deploy/k8s/build-all.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								deploy/k8s/build-all.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,111 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bufio"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"golang.org/x/text/encoding/simplifiedchinese"
 | 
			
		||||
	"io"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
	"path"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// docker rm -f registry-srv  && rm -rf /root/docker/dockerRegistry && mkdir -p dockerRegistry && docker run -d -p 80:5000 --restart=always --name registry-srv -v /root/docker/dockerRegistry:/var/lib/registry registry
 | 
			
		||||
func main() {
 | 
			
		||||
	var paths = map[string]string{}
 | 
			
		||||
	pwd, _ := os.Getwd()
 | 
			
		||||
	readDir, _ := os.ReadDir(".")
 | 
			
		||||
	for _, dir := range readDir {
 | 
			
		||||
		if dir.IsDir() {
 | 
			
		||||
			if strings.HasPrefix(dir.Name(), "open_im") {
 | 
			
		||||
				paths[path.Join(pwd, dir.Name())] = ""
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	for dir := range paths {
 | 
			
		||||
		//execCommand("docker", "rmi",  "$(docker images -a | awk '/<none>/{print $3}')")
 | 
			
		||||
		/*go */func(dir string) {
 | 
			
		||||
			fmt.Printf("\n----------------------------------------%s构建开始----------------------------------------\n", dir)
 | 
			
		||||
			execCommand("bash", "-c", fmt.Sprintf(""+
 | 
			
		||||
				"cd %s"+
 | 
			
		||||
				" && "+
 | 
			
		||||
				"bash build.sh", dir))
 | 
			
		||||
			fmt.Printf("\n----------------------------------------%s构建完成----------------------------------------\n", dir)
 | 
			
		||||
			delete(paths, dir)
 | 
			
		||||
		}(dir)
 | 
			
		||||
	}
 | 
			
		||||
	for {
 | 
			
		||||
		if len(paths) == 0 {
 | 
			
		||||
			fmt.Println("----------------------------------------全部构建成功----------------------------------------")
 | 
			
		||||
			os.Exit(0)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//封装一个函数来执行命令
 | 
			
		||||
func execCommand(commandName string, params ...string) bool {
 | 
			
		||||
 | 
			
		||||
	//执行命令
 | 
			
		||||
	cmd := exec.Command(commandName, params...)
 | 
			
		||||
 | 
			
		||||
	//显示运行的命令
 | 
			
		||||
	fmt.Println(cmd.Args)
 | 
			
		||||
 | 
			
		||||
	stdout, err := cmd.StdoutPipe()
 | 
			
		||||
	errReader, errr := cmd.StderrPipe()
 | 
			
		||||
 | 
			
		||||
	if errr != nil {
 | 
			
		||||
		fmt.Println("err:" + errr.Error())
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	//开启错误处理
 | 
			
		||||
	go handlerErr(errReader)
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		fmt.Println(err)
 | 
			
		||||
		return false
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmd.Start()
 | 
			
		||||
	in := bufio.NewScanner(stdout)
 | 
			
		||||
	for in.Scan() {
 | 
			
		||||
		cmdRe := ConvertByte2String(in.Bytes(), "UTF-8")
 | 
			
		||||
		fmt.Println(cmdRe)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	cmd.Wait()
 | 
			
		||||
	cmd.Wait()
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
//开启一个协程来错误
 | 
			
		||||
func handlerErr(errReader io.ReadCloser) {
 | 
			
		||||
	in := bufio.NewScanner(errReader)
 | 
			
		||||
	for in.Scan() {
 | 
			
		||||
		cmdRe := ConvertByte2String(in.Bytes(), "UTF-8")
 | 
			
		||||
		fmt.Errorf(cmdRe)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type Charset string
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	UTF8    = Charset("UTF-8")
 | 
			
		||||
	GB18030 = Charset("GB18030")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
//对字符进行转码
 | 
			
		||||
func ConvertByte2String(byte []byte, charset Charset) string {
 | 
			
		||||
	var str string
 | 
			
		||||
	switch charset {
 | 
			
		||||
	case GB18030:
 | 
			
		||||
		var decodeBytes, _ = simplifiedchinese.GB18030.NewDecoder().Bytes(byte)
 | 
			
		||||
		str = string(decodeBytes)
 | 
			
		||||
	case UTF8:
 | 
			
		||||
		fallthrough
 | 
			
		||||
	default:
 | 
			
		||||
		str = string(byte)
 | 
			
		||||
	}
 | 
			
		||||
	return str
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								deploy/k8s/go.mod
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								deploy/k8s/go.mod
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,5 @@
 | 
			
		||||
module github.com/showurl/deploy-openim
 | 
			
		||||
 | 
			
		||||
go 1.17
 | 
			
		||||
 | 
			
		||||
require golang.org/x/text v0.3.7
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_admin_cms/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_admin_cms/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_admin_cms.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_admin_cms.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_admin_cms.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_admin_cms.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_admin_cms/build-open_im_admin_cms.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_admin_cms/build-open_im_admin_cms.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_admin_cms"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_admin_cms/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_admin_cms/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_admin_cms:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
rm -rf development.yaml
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成"
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										92
									
								
								deploy/k8s/open_im_admin_cms/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								deploy/k8s/open_im_admin_cms/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,92 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: admin-cms
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: admin-cms
 | 
			
		||||
      workload.auth.cattle.io/workloadselector: statefulSet-openim-admin-cms
 | 
			
		||||
  serviceName: admin-cms
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: admin-cms
 | 
			
		||||
        workload.auth.cattle.io/workloadselector: statefulSet-openim-admin-cms
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p11000
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 11000
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: admin-cms
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: admin-cms
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p11000
 | 
			
		||||
      port: 11000
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 11000
 | 
			
		||||
  selector:
 | 
			
		||||
    app: admin-cms
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										36
									
								
								deploy/k8s/open_im_admin_cms/start-open_im_admin_cms.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								deploy/k8s/open_im_admin_cms/start-open_im_admin_cms.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_admin_cms"
 | 
			
		||||
service_port_name="openImAdminCmsPort"
 | 
			
		||||
K8sServiceName="admin-cms"
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_api/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_api/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_api.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_api.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_api.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_api.sh"]
 | 
			
		||||
							
								
								
									
										25
									
								
								deploy/k8s/open_im_api/build-open_im_api.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								deploy/k8s/open_im_api/build-open_im_api.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/open_im_api && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build open_im_api success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved open_im_api to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_api/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_api/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_api:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										94
									
								
								deploy/k8s/open_im_api/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								deploy/k8s/open_im_api/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: api
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: api
 | 
			
		||||
      workload.user.cattle.io/workloadselector: statefulSet-openim-api
 | 
			
		||||
  serviceName: api
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: api
 | 
			
		||||
        workload.user.cattle.io/workloadselector: statefulSet-openim-api
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10000
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10000
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: api
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: api
 | 
			
		||||
spec:
 | 
			
		||||
  externalTrafficPolicy: Cluster
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10000
 | 
			
		||||
      nodePort: NODE_PORT_API
 | 
			
		||||
      port: 10000
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10000
 | 
			
		||||
  selector:
 | 
			
		||||
    app: api
 | 
			
		||||
  type: NodePort
 | 
			
		||||
							
								
								
									
										36
									
								
								deploy/k8s/open_im_api/start-open_im_api.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								deploy/k8s/open_im_api/start-open_im_api.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_api"
 | 
			
		||||
service_port_name="openImApiPort"
 | 
			
		||||
K8sServiceName="api"
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_auth/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_auth/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_auth.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_auth.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_auth.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_auth.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_auth/build-open_im_auth.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_auth/build-open_im_auth.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_auth"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_auth/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_auth/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_auth:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										92
									
								
								deploy/k8s/open_im_auth/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								deploy/k8s/open_im_auth/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,92 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: auth
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: auth
 | 
			
		||||
      workload.auth.cattle.io/workloadselector: statefulSet-openim-auth
 | 
			
		||||
  serviceName: auth
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: auth
 | 
			
		||||
        workload.auth.cattle.io/workloadselector: statefulSet-openim-auth
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10600
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10600
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: auth
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: auth
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10600
 | 
			
		||||
      port: 10600
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10600
 | 
			
		||||
  selector:
 | 
			
		||||
    app: auth
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										36
									
								
								deploy/k8s/open_im_auth/start-open_im_auth.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								deploy/k8s/open_im_auth/start-open_im_auth.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_auth"
 | 
			
		||||
service_port_name="openImAuthPort"
 | 
			
		||||
K8sServiceName="auth"
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_cms_api/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_cms_api/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_cms_api.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_cms_api.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_cms_api.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_cms_api.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_cms_api/build-open_im_cms_api.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_cms_api/build-open_im_cms_api.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_cms_api"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_cms_api/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_cms_api/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_cms_api:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										94
									
								
								deploy/k8s/open_im_cms_api/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								deploy/k8s/open_im_cms_api/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: cms-api
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: cms-api
 | 
			
		||||
      workload.user.cattle.io/workloadselector: statefulSet-openim-cms-api
 | 
			
		||||
  serviceName: cms-api
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: cms-api
 | 
			
		||||
        workload.user.cattle.io/workloadselector: statefulSet-openim-cms-api
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10000
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10000
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: cms-api
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: cms-api
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p8000
 | 
			
		||||
      port: 8000
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 8000
 | 
			
		||||
  selector:
 | 
			
		||||
    app: cms-api
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										37
									
								
								deploy/k8s/open_im_cms_api/start-open_im_cms_api.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								deploy/k8s/open_im_cms_api/start-open_im_cms_api.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_cms_api"
 | 
			
		||||
service_port_name="openImCmsApiPort"
 | 
			
		||||
K8sServiceName="cms-api"
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
echo "$POD_IP $K8sServiceName">> /etc/hosts
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_demo/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_demo/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_demo.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_demo.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_demo.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_demo.sh"]
 | 
			
		||||
							
								
								
									
										28
									
								
								deploy/k8s/open_im_demo/build-open_im_demo.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								deploy/k8s/open_im_demo/build-open_im_demo.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,28 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_demo"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
sed -i 's#utils.ServerIP#"api"#g' /Open-IM-Server/internal/demo/register/login.go
 | 
			
		||||
sed -i 's#"Open_IM/pkg/utils"##g' /Open-IM-Server/internal/demo/register/login.go
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_demo/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_demo/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_demo:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										96
									
								
								deploy/k8s/open_im_demo/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								deploy/k8s/open_im_demo/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,96 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: demo
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: demo
 | 
			
		||||
      workload.user.cattle.io/workloadselector: statefulSet-openim-demo
 | 
			
		||||
  serviceName: demo
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: demo
 | 
			
		||||
        workload.user.cattle.io/workloadselector: statefulSet-openim-demo
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p42233
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 42233
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: demo
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: demo-remote
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  externalTrafficPolicy: Cluster
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p42233
 | 
			
		||||
      nodePort: NODE_PORT_DEMO
 | 
			
		||||
      port: 42233
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 42233
 | 
			
		||||
  selector:
 | 
			
		||||
    app: demo
 | 
			
		||||
  type: NodePort
 | 
			
		||||
							
								
								
									
										36
									
								
								deploy/k8s/open_im_demo/start-open_im_demo.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								deploy/k8s/open_im_demo/start-open_im_demo.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
ulimit -n 200000
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_demo"
 | 
			
		||||
K8sServiceName="demo"
 | 
			
		||||
binary_root="/Open-IM-Server/bin"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
switch=$(cat $config_path | grep demoswitch |awk -F '[:]' '{print $NF}')
 | 
			
		||||
if [ ${switch} != "true" ]; then
 | 
			
		||||
      echo -e ${YELLOW_PREFIX}" demo service switch is false not start demo "${COLOR_SUFFIX}
 | 
			
		||||
      exit 0
 | 
			
		||||
fi
 | 
			
		||||
list1=$(cat $config_path | grep openImDemoPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string $list1
 | 
			
		||||
api_ports=($ports_array)
 | 
			
		||||
 | 
			
		||||
#Check if the service exists
 | 
			
		||||
#If it is exists,kill this process
 | 
			
		||||
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
 | 
			
		||||
if [ $check -ge 1 ]; then
 | 
			
		||||
  oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
 | 
			
		||||
    kill -9 ${oldPid}
 | 
			
		||||
fi
 | 
			
		||||
#Waiting port recycling
 | 
			
		||||
sleep 1
 | 
			
		||||
cd ${binary_root}
 | 
			
		||||
./${service_filename} -port ${api_ports[$i]}
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_friend/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_friend/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_friend.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_friend.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_friend.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_friend.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_friend/build-open_im_friend.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_friend/build-open_im_friend.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_friend"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_friend/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_friend/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_friend:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										94
									
								
								deploy/k8s/open_im_friend/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								deploy/k8s/open_im_friend/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: friend
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: friend
 | 
			
		||||
      workload.friend.cattle.io/workloadselector: statefulSet-openim-friend
 | 
			
		||||
  serviceName: friend
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: friend
 | 
			
		||||
        workload.friend.cattle.io/workloadselector: statefulSet-openim-friend
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10200
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10200
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: friend
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: friend
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10200
 | 
			
		||||
      port: 10200
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10200
 | 
			
		||||
  selector:
 | 
			
		||||
    app: friend
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										36
									
								
								deploy/k8s/open_im_friend/start-open_im_friend.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								deploy/k8s/open_im_friend/start-open_im_friend.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_friend"
 | 
			
		||||
service_port_name="openImFriendPort"
 | 
			
		||||
K8sServiceName="friend"
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_group/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_group/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_group.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_group.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_group.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_group.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_group/build-open_im_group.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_group/build-open_im_group.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_group"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_group/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_group/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_group:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										94
									
								
								deploy/k8s/open_im_group/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								deploy/k8s/open_im_group/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: group
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: group
 | 
			
		||||
      workload.group.cattle.io/workloadselector: statefulSet-openim-group
 | 
			
		||||
  serviceName: group
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: group
 | 
			
		||||
        workload.group.cattle.io/workloadselector: statefulSet-openim-group
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10500
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10500
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: group
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: group
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10500
 | 
			
		||||
      port: 10500
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10500
 | 
			
		||||
  selector:
 | 
			
		||||
    app: group
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										36
									
								
								deploy/k8s/open_im_group/start-open_im_group.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								deploy/k8s/open_im_group/start-open_im_group.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_group"
 | 
			
		||||
service_port_name="openImGroupPort"
 | 
			
		||||
K8sServiceName="group"
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_message_cms/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_message_cms/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_message_cms.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_message_cms.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_message_cms.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_message_cms.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_message_cms/build-open_im_message_cms.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_message_cms/build-open_im_message_cms.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_message_cms"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_message_cms/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_message_cms/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_message_cms:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										94
									
								
								deploy/k8s/open_im_message_cms/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								deploy/k8s/open_im_message_cms/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: message-cms
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: message-cms
 | 
			
		||||
      workload.auth.cattle.io/workloadselector: statefulSet-openim-message-cms
 | 
			
		||||
  serviceName: message-cms
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: message-cms
 | 
			
		||||
        workload.auth.cattle.io/workloadselector: statefulSet-openim-message-cms
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10900
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10900
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: message-cms
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: message-cms
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10900
 | 
			
		||||
      port: 10900
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10900
 | 
			
		||||
  selector:
 | 
			
		||||
    app: message-cms
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										36
									
								
								deploy/k8s/open_im_message_cms/start-open_im_message_cms.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								deploy/k8s/open_im_message_cms/start-open_im_message_cms.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_message_cms"
 | 
			
		||||
service_port_name="openImMessageCmsPort"
 | 
			
		||||
K8sServiceName="message-cms"
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_msg/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_msg/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_msg.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_msg.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_msg.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_msg.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_msg/build-open_im_msg.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_msg/build-open_im_msg.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_msg"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_msg/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_msg/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_msg:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										94
									
								
								deploy/k8s/open_im_msg/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								deploy/k8s/open_im_msg/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: msg
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: msg
 | 
			
		||||
      workload.msg.cattle.io/workloadselector: statefulSet-openim-msg
 | 
			
		||||
  serviceName: msg
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: msg
 | 
			
		||||
        workload.msg.cattle.io/workloadselector: statefulSet-openim-msg
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10300
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10300
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: msg
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: msg
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10300
 | 
			
		||||
      port: 10300
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10300
 | 
			
		||||
  selector:
 | 
			
		||||
    app: msg
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										36
									
								
								deploy/k8s/open_im_msg/start-open_im_msg.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								deploy/k8s/open_im_msg/start-open_im_msg.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_msg"
 | 
			
		||||
service_port_name="openImOfflineMessagePort"
 | 
			
		||||
K8sServiceName="msg"
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_msg_gateway/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_msg_gateway/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_msg_gateway.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_msg_gateway.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_msg_gateway.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_msg_gateway.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_msg_gateway/build-open_im_msg_gateway.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_msg_gateway/build-open_im_msg_gateway.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_msg_gateway"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_msg_gateway/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_msg_gateway/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_msg_gateway:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										119
									
								
								deploy/k8s/open_im_msg_gateway/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								deploy/k8s/open_im_msg_gateway/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,119 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: msg-gateway
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: msg-gateway
 | 
			
		||||
      workload.user.cattle.io/workloadselector: statefulSet-openim-msg-gateway
 | 
			
		||||
  serviceName: msg-gateway
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: msg-gateway
 | 
			
		||||
        workload.user.cattle.io/workloadselector: statefulSet-openim-msg-gateway
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10400
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10400
 | 
			
		||||
          - name: p17778
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 17778
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: msg-gateway
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: msg-gateway
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10400
 | 
			
		||||
      port: 10400
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10400
 | 
			
		||||
    - name: p17778
 | 
			
		||||
      port: 17778
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 17778
 | 
			
		||||
  selector:
 | 
			
		||||
    app: msg-gateway
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: msg-gateway-remote
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  externalTrafficPolicy: Cluster
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p17778
 | 
			
		||||
      nodePort: NODE_PORT_MSG_GATEWAY
 | 
			
		||||
      port: 17778
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 17778
 | 
			
		||||
  selector:
 | 
			
		||||
    app: msg-gateway
 | 
			
		||||
  type: NodePort
 | 
			
		||||
							
								
								
									
										39
									
								
								deploy/k8s/open_im_msg_gateway/start-open_im_msg_gateway.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								deploy/k8s/open_im_msg_gateway/start-open_im_msg_gateway.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
ulimit -n 200000
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_msg_gateway"
 | 
			
		||||
K8sServiceName="msg-gateway"
 | 
			
		||||
binary_root="/Open-IM-Server/bin"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
list1=$(cat $config_path | grep openImOnlineRelayPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string $list1
 | 
			
		||||
rpc_ports=($ports_array)
 | 
			
		||||
list_to_string $list2
 | 
			
		||||
ws_ports=($ports_array)
 | 
			
		||||
if [ ${#rpc_ports[@]} -ne ${#ws_ports[@]} ]; then
 | 
			
		||||
 | 
			
		||||
  echo -e ${RED_PREFIX}"ws_ports does not match push_rpc_ports in quantity!!!"${COLOR_SUFFIX}
 | 
			
		||||
  exit 0
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
#Check if the service exists
 | 
			
		||||
#If it is exists,kill this process
 | 
			
		||||
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
 | 
			
		||||
if [ $check -ge 1 ]; then
 | 
			
		||||
  oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
 | 
			
		||||
    kill -9 ${oldPid}
 | 
			
		||||
fi
 | 
			
		||||
#Waiting port recycling
 | 
			
		||||
sleep 1
 | 
			
		||||
cd ${binary_root}
 | 
			
		||||
./${service_filename} -rpc_port ${rpc_ports[$i]} -ws_port ${ws_ports[$i]}
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_msg_transfer/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_msg_transfer/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_msg_transfer.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_msg_transfer.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_msg_transfer.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_msg_transfer.sh"]
 | 
			
		||||
@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_msg_transfer"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_msg_transfer/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_msg_transfer/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_msg_transfer:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										75
									
								
								deploy/k8s/open_im_msg_transfer/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								deploy/k8s/open_im_msg_transfer/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: msg-transfer
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: msg-transfer
 | 
			
		||||
      workload.user.cattle.io/workloadselector: statefulSet-openim-msg-transfer
 | 
			
		||||
  serviceName: msg-transfer
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: msg-transfer
 | 
			
		||||
        workload.user.cattle.io/workloadselector: statefulSet-openim-msg-transfer
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: msg-transfer
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
@ -0,0 +1,39 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
ulimit -n 200000
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_msg_transfer"
 | 
			
		||||
K8sServiceName="msg-transfer"
 | 
			
		||||
binary_root="/Open-IM-Server/bin"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
list1=$(cat $config_path | grep openImOnlineRelayPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string $list1
 | 
			
		||||
rpc_ports=($ports_array)
 | 
			
		||||
list_to_string $list2
 | 
			
		||||
ws_ports=($ports_array)
 | 
			
		||||
if [ ${#rpc_ports[@]} -ne ${#ws_ports[@]} ]; then
 | 
			
		||||
 | 
			
		||||
  echo -e ${RED_PREFIX}"ws_ports does not match push_rpc_ports in quantity!!!"${COLOR_SUFFIX}
 | 
			
		||||
  exit 0
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
#Check if the service exists
 | 
			
		||||
#If it is exists,kill this process
 | 
			
		||||
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
 | 
			
		||||
if [ $check -ge 1 ]; then
 | 
			
		||||
  oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
 | 
			
		||||
    kill -9 ${oldPid}
 | 
			
		||||
fi
 | 
			
		||||
#Waiting port recycling
 | 
			
		||||
sleep 1
 | 
			
		||||
cd ${binary_root}
 | 
			
		||||
./${service_filename} -rpc_port ${rpc_ports[$i]} -ws_port ${ws_ports[$i]}
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_push/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_push/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_push.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_push.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_push.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_push.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_push/build-open_im_push.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_push/build-open_im_push.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_push"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_push/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_push/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_push:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										94
									
								
								deploy/k8s/open_im_push/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								deploy/k8s/open_im_push/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: push
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: push
 | 
			
		||||
      workload.user.cattle.io/workloadselector: statefulSet-openim-push
 | 
			
		||||
  serviceName: push
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: push
 | 
			
		||||
        workload.user.cattle.io/workloadselector: statefulSet-openim-push
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10700
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10700
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: push
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: push
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10700
 | 
			
		||||
      port: 10700
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10700
 | 
			
		||||
  selector:
 | 
			
		||||
    app: push
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										32
									
								
								deploy/k8s/open_im_push/start-open_im_push.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								deploy/k8s/open_im_push/start-open_im_push.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,32 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
ulimit -n 200000
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_push"
 | 
			
		||||
K8sServiceName="push"
 | 
			
		||||
binary_root="/Open-IM-Server/bin"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
list1=$(cat $config_path | grep openImPushPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string $list1
 | 
			
		||||
rpc_ports=($ports_array)
 | 
			
		||||
 | 
			
		||||
#Check if the service exists
 | 
			
		||||
#If it is exists,kill this process
 | 
			
		||||
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
 | 
			
		||||
if [ $check -ge 1 ]; then
 | 
			
		||||
  oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
 | 
			
		||||
    kill -9 ${oldPid}
 | 
			
		||||
fi
 | 
			
		||||
#Waiting port recycling
 | 
			
		||||
sleep 1
 | 
			
		||||
cd ${binary_root}
 | 
			
		||||
./${service_filename} -port ${rpc_ports[$i]}
 | 
			
		||||
							
								
								
									
										48
									
								
								deploy/k8s/open_im_sdk_server/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								deploy/k8s/open_im_sdk_server/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,48 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
RUN rm -rf /Open-IM-Server/cmd/Open-IM-SDK-Core/ws_wrapper/cmd/open_im_sdk_server.go
 | 
			
		||||
COPY open_im_sdk_server.go /Open-IM-Server/cmd/Open-IM-SDK-Core/ws_wrapper/cmd
 | 
			
		||||
COPY build-open_im_sdk_server.sh /Open-IM-Server/script
 | 
			
		||||
COPY serverip.go /Open-IM-Server/cmd/Open-IM-SDK-Core/ws_wrapper/utils
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_sdk_server.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_sdk_server.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_sdk_server.sh"]
 | 
			
		||||
							
								
								
									
										25
									
								
								deploy/k8s/open_im_sdk_server/build-open_im_sdk_server.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								deploy/k8s/open_im_sdk_server/build-open_im_sdk_server.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,25 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="Open-IM-SDK-Core"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_sdk_server/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_sdk_server/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_sdk_server:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										96
									
								
								deploy/k8s/open_im_sdk_server/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								deploy/k8s/open_im_sdk_server/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,96 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: sdk-server
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: sdk-server
 | 
			
		||||
      workload.user.cattle.io/workloadselector: statefulSet-openim-sdk-server
 | 
			
		||||
  serviceName: sdk-server
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: sdk-server
 | 
			
		||||
        workload.user.cattle.io/workloadselector: statefulSet-openim-sdk-server
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p30000
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 30000
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: sdk-server
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: sdk-server-remote
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  externalTrafficPolicy: Cluster
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p30000
 | 
			
		||||
      nodePort: NODE_PORT_SDK_SERVER
 | 
			
		||||
      port: 30000
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 30000
 | 
			
		||||
  selector:
 | 
			
		||||
    app: sdk-server
 | 
			
		||||
  type: NodePort
 | 
			
		||||
							
								
								
									
										73
									
								
								deploy/k8s/open_im_sdk_server/open_im_sdk_server.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								deploy/k8s/open_im_sdk_server/open_im_sdk_server.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,73 @@
 | 
			
		||||
/*
 | 
			
		||||
** description("").
 | 
			
		||||
** copyright('open-im,www.open-im.io').
 | 
			
		||||
** author("fg,Gordon@tuoyun.net").
 | 
			
		||||
** time(2021/9/8 14:35).
 | 
			
		||||
 */
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"flag"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"open_im_sdk/sdk_struct"
 | 
			
		||||
 | 
			
		||||
	//"open_im_sdk/open_im_sdk"
 | 
			
		||||
	"open_im_sdk/pkg/log"
 | 
			
		||||
	"open_im_sdk/ws_wrapper/utils"
 | 
			
		||||
	"open_im_sdk/ws_wrapper/ws_local_server"
 | 
			
		||||
	"runtime"
 | 
			
		||||
	"sync"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	var sdkWsPort, openIMApiPort, openIMWsPort *int
 | 
			
		||||
	var openIMWsAddress, openIMApiAddress *string
 | 
			
		||||
	//
 | 
			
		||||
	//openIMTerminalType := flag.String("terminal_type", "web", "different terminal types")
 | 
			
		||||
 | 
			
		||||
	sdkWsPort = flag.Int("sdk_ws_port", 30000, "openIMSDK ws listening port")
 | 
			
		||||
	openIMApiPort = flag.Int("openIM_api_port", 10000, "openIM api listening port")
 | 
			
		||||
	openIMWsPort = flag.Int("openIM_ws_port", 17778, "openIM ws listening port")
 | 
			
		||||
	flag.Parse()
 | 
			
		||||
	//switch *openIMTerminalType {
 | 
			
		||||
	//case "pc":
 | 
			
		||||
	//	openIMWsAddress = flag.String("openIM_ws_address", "web", "different terminal types")
 | 
			
		||||
	//	openIMApiAddress = flag.String("openIM_api_address", "web", "different terminal types")
 | 
			
		||||
	//	flag.Parse()
 | 
			
		||||
	//case "web":
 | 
			
		||||
	//	openIMApiPort = flag.Int("openIM_api_port", 0, "openIM api listening port")
 | 
			
		||||
	//	openIMWsPort = flag.Int("openIM_ws_port", 0, "openIM ws listening port")
 | 
			
		||||
	//	flag.Parse()
 | 
			
		||||
	//}
 | 
			
		||||
	APIADDR := "http://1.14.194.38:10000"
 | 
			
		||||
	WSADDR := "ws://1.14.194.38:17778"
 | 
			
		||||
 | 
			
		||||
	sysType := runtime.GOOS
 | 
			
		||||
	switch sysType {
 | 
			
		||||
 | 
			
		||||
	case "darwin":
 | 
			
		||||
		ws_local_server.InitServer(&sdk_struct.IMConfig{ApiAddr: *openIMApiAddress,
 | 
			
		||||
			WsAddr: *openIMWsAddress, Platform: utils.OSXPlatformID, DataDir: "./"})
 | 
			
		||||
	case "linux":
 | 
			
		||||
		//sdkDBDir:= flag.String("sdk_db_dir","","openIMSDK initialization path")
 | 
			
		||||
		ws_local_server.InitServer(&sdk_struct.IMConfig{ApiAddr: "http://" + utils.ApiServerIP + ":" + utils.IntToString(*openIMApiPort),
 | 
			
		||||
			WsAddr: "ws://" + utils.WsServerIP + ":" + utils.IntToString(*openIMWsPort), Platform: utils.WebPlatformID, DataDir: "../db/sdk/"})
 | 
			
		||||
 | 
			
		||||
	case "windows":
 | 
			
		||||
		//	sdkWsPort = flag.Int("sdk_ws_port", 7799, "openIM ws listening port")
 | 
			
		||||
		//flag.Parse()
 | 
			
		||||
		ws_local_server.InitServer(&sdk_struct.IMConfig{ApiAddr: APIADDR,
 | 
			
		||||
			WsAddr: WSADDR, Platform: utils.WebPlatformID, DataDir: "./"})
 | 
			
		||||
	default:
 | 
			
		||||
		fmt.Println("this os not support", sysType)
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	var wg sync.WaitGroup
 | 
			
		||||
	wg.Add(1)
 | 
			
		||||
	log.NewPrivateLog("sdk", 6)
 | 
			
		||||
	fmt.Println("ws server is starting")
 | 
			
		||||
	ws_local_server.WS.OnInit(*sdkWsPort)
 | 
			
		||||
	ws_local_server.WS.Run()
 | 
			
		||||
	wg.Wait()
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										6
									
								
								deploy/k8s/open_im_sdk_server/serverip.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								deploy/k8s/open_im_sdk_server/serverip.go
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
package utils
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	ApiServerIP = "api"
 | 
			
		||||
	WsServerIP  = "msg-gateway"
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_sdk_server/start-open_im_sdk_server.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_sdk_server/start-open_im_sdk_server.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
ulimit -n 200000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_sdk_server"
 | 
			
		||||
binary_root="/Open-IM-Server/bin"
 | 
			
		||||
K8sServiceName="sdk-server"
 | 
			
		||||
K8sServiceNameForApi="api"
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$K8sServiceNameForApi.$NAMESPACE#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
list1=$(cat $config_path | grep openImApiPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list3=$(cat $config_path | grep openImSdkWsPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
logLevel=$(cat $config_path | grep remainLogLevel | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string $list1
 | 
			
		||||
api_ports=($ports_array)
 | 
			
		||||
list_to_string $list2
 | 
			
		||||
ws_ports=($ports_array)
 | 
			
		||||
list_to_string $list3
 | 
			
		||||
sdk_ws_ports=($ports_array)
 | 
			
		||||
list_to_string $list4
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
 | 
			
		||||
if [ $check -ge 1 ]; then
 | 
			
		||||
  oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
 | 
			
		||||
    kill -9 ${oldPid}
 | 
			
		||||
fi
 | 
			
		||||
#Check if the service exists
 | 
			
		||||
#If it is exists,kill this process
 | 
			
		||||
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
 | 
			
		||||
if [ $check -ge 1 ]; then
 | 
			
		||||
  oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
 | 
			
		||||
    kill -9 ${oldPid}
 | 
			
		||||
fi
 | 
			
		||||
#Waiting port recycling
 | 
			
		||||
sleep 1
 | 
			
		||||
cd ${binary_root}
 | 
			
		||||
./${service_filename} -openIM_api_port ${api_ports[0]} -openIM_ws_port ${ws_ports[0]} -sdk_ws_port ${sdk_ws_ports[0]}
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_statistics/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_statistics/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_statistics.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_statistics.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_statistics.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_statistics.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_statistics/build-open_im_statistics.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_statistics/build-open_im_statistics.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_statistics"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_statistics/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_statistics/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_statistics:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										94
									
								
								deploy/k8s/open_im_statistics/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								deploy/k8s/open_im_statistics/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: statistics
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: statistics
 | 
			
		||||
      workload.statistics.cattle.io/workloadselector: statefulSet-openim-statistics
 | 
			
		||||
  serviceName: statistics
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: statistics
 | 
			
		||||
        workload.statistics.cattle.io/workloadselector: statefulSet-openim-statistics
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10800
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10800
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: statistics
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: statistics
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10800
 | 
			
		||||
      port: 10800
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10800
 | 
			
		||||
  selector:
 | 
			
		||||
    app: statistics
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										36
									
								
								deploy/k8s/open_im_statistics/start-open_im_statistics.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								deploy/k8s/open_im_statistics/start-open_im_statistics.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_statistics"
 | 
			
		||||
service_port_name="openImStatisticsPort"
 | 
			
		||||
K8sServiceName="statistics"
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_timer_task/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_timer_task/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_timer_task.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_timer_task.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_timer_task.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_timer_task.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_timer_task/build-open_im_timer_task.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_timer_task/build-open_im_timer_task.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_timer_task"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_timer_task/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_timer_task/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_timer_task:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										75
									
								
								deploy/k8s/open_im_timer_task/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								deploy/k8s/open_im_timer_task/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,75 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: timer-task
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: timer-task
 | 
			
		||||
      workload.user.cattle.io/workloadselector: statefulSet-openim-timer-task
 | 
			
		||||
  serviceName: timer-task
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: timer-task
 | 
			
		||||
        workload.user.cattle.io/workloadselector: statefulSet-openim-timer-task
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: timer-task
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
							
								
								
									
										39
									
								
								deploy/k8s/open_im_timer_task/start-open_im_timer_task.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								deploy/k8s/open_im_timer_task/start-open_im_timer_task.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,39 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
ulimit -n 200000
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_timer_task"
 | 
			
		||||
K8sServiceName="timer-task"
 | 
			
		||||
binary_root="/Open-IM-Server/bin"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
list1=$(cat $config_path | grep openImOnlineRelayPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list2=$(cat $config_path | grep openImWsPort | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string $list1
 | 
			
		||||
rpc_ports=($ports_array)
 | 
			
		||||
list_to_string $list2
 | 
			
		||||
ws_ports=($ports_array)
 | 
			
		||||
if [ ${#rpc_ports[@]} -ne ${#ws_ports[@]} ]; then
 | 
			
		||||
 | 
			
		||||
  echo -e ${RED_PREFIX}"ws_ports does not match push_rpc_ports in quantity!!!"${COLOR_SUFFIX}
 | 
			
		||||
  exit 0
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
#Check if the service exists
 | 
			
		||||
#If it is exists,kill this process
 | 
			
		||||
check=$(ps aux | grep -w ./${service_filename} | grep -v grep | wc -l)
 | 
			
		||||
if [ $check -ge 1 ]; then
 | 
			
		||||
  oldPid=$(ps aux | grep -w ./${service_filename} | grep -v grep | awk '{print $2}')
 | 
			
		||||
    kill -9 ${oldPid}
 | 
			
		||||
fi
 | 
			
		||||
#Waiting port recycling
 | 
			
		||||
sleep 1
 | 
			
		||||
cd ${binary_root}
 | 
			
		||||
./${service_filename}
 | 
			
		||||
							
								
								
									
										46
									
								
								deploy/k8s/open_im_user/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								deploy/k8s/open_im_user/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,46 @@
 | 
			
		||||
FROM golang as build
 | 
			
		||||
 | 
			
		||||
# go mod Installation source, container environment variable addition will override the default variable value
 | 
			
		||||
ENV GO111MODULE=on
 | 
			
		||||
ENV GOPROXY=https://goproxy.cn,direct
 | 
			
		||||
ENV VERSION_TAG="2.0.2"
 | 
			
		||||
 | 
			
		||||
# Set up the working directory
 | 
			
		||||
#WORKDIR /Open-IM-Server
 | 
			
		||||
# add all files to the container
 | 
			
		||||
#COPY . .
 | 
			
		||||
 | 
			
		||||
COPY Open-IM-Server.tar.gz /
 | 
			
		||||
COPY Open-IM-SDK-Core.tar.gz /
 | 
			
		||||
 | 
			
		||||
WORKDIR /
 | 
			
		||||
RUN tar -zxvf Open-IM-Server.tar.gz && \
 | 
			
		||||
    mv Open-IM-Server-$VERSION_TAG Open-IM-Server && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
    tar -zxvf Open-IM-SDK-Core.tar.gz && \
 | 
			
		||||
    rm -rf Open-IM-Server/cmd/Open-IM-SDK-Core/ && \
 | 
			
		||||
    mv Open-IM-SDK-Core-$VERSION_TAG Open-IM-Server/cmd/Open-IM-SDK-Core && \
 | 
			
		||||
    rm -rf Open-IM-Server.tar.gz
 | 
			
		||||
 | 
			
		||||
COPY build-open_im_user.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
RUN chmod +x *.sh && \
 | 
			
		||||
    cd /Open-IM-Server/cmd && sed -i "s#GOARCH=amd64##g" `grep "amd64" -rl .` && \
 | 
			
		||||
    cd /Open-IM-Server/script && \
 | 
			
		||||
    /bin/sh -c ./build-open_im_user.sh
 | 
			
		||||
 | 
			
		||||
#Blank image Multi-Stage Build
 | 
			
		||||
FROM showurl/openim-base:v2.0.2
 | 
			
		||||
 | 
			
		||||
#set directory to map logs,config file,script file.
 | 
			
		||||
VOLUME ["/Open-IM-Server/logs","/Open-IM-Server/script","/Open-IM-Server/db/sdk"]
 | 
			
		||||
 | 
			
		||||
#Copy scripts files and binary files to the blank image
 | 
			
		||||
COPY --from=build /Open-IM-Server/script /Open-IM-Server/script
 | 
			
		||||
COPY --from=build /Open-IM-Server/bin /Open-IM-Server/bin
 | 
			
		||||
COPY start-open_im_user.sh /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
WORKDIR /Open-IM-Server/script
 | 
			
		||||
 | 
			
		||||
CMD ["bash", "start-open_im_user.sh"]
 | 
			
		||||
							
								
								
									
										26
									
								
								deploy/k8s/open_im_user/build-open_im_user.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								deploy/k8s/open_im_user/build-open_im_user.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
serviceName="open_im_user"
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
bin_dir="../bin"
 | 
			
		||||
logs_dir="../logs"
 | 
			
		||||
sdk_db_dir="../db/sdk/"
 | 
			
		||||
#Automatically created when there is no bin, logs folder
 | 
			
		||||
if [ ! -d $bin_dir ]; then
 | 
			
		||||
  mkdir -p $bin_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $logs_dir ]; then
 | 
			
		||||
  mkdir -p $logs_dir
 | 
			
		||||
fi
 | 
			
		||||
if [ ! -d $sdk_db_dir ]; then
 | 
			
		||||
  mkdir -p $sdk_db_dir
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
#begin path
 | 
			
		||||
 | 
			
		||||
cd /Open-IM-Server/cmd/rpc/${serviceName} && echo -e "${SKY_BLUE_PREFIX}Current directory: $PWD $COLOR_SUFFIX"
 | 
			
		||||
make install && echo -e "${SKY_BLUE_PREFIX}build ${serviceName} success,moving binary file to the bin directory${COLOR_SUFFIX}" &&
 | 
			
		||||
echo -e "${SKY_BLUE_PREFIX}Successful moved ${serviceName} to the bin directory${COLOR_SUFFIX}\n"
 | 
			
		||||
							
								
								
									
										44
									
								
								deploy/k8s/open_im_user/build.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								deploy/k8s/open_im_user/build.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,44 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
source ../setting.env
 | 
			
		||||
VERSION_TAG="2.0.2"
 | 
			
		||||
IMAGE_TAG="${DOCKER_REGISTRY_ADDR}open_im_user:v$VERSION_TAG"
 | 
			
		||||
 | 
			
		||||
if [ ! -f "./Open-IM-SDK-Core.tar.gz" ];then
 | 
			
		||||
 | 
			
		||||
rm -rf Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-Server/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-Server.tar.gz && \
 | 
			
		||||
wget https://github.91chi.fun//https://github.com//OpenIMSDK/Open-IM-SDK-Core/archive/refs/tags/v$VERSION_TAG.tar.gz && \
 | 
			
		||||
mv v$VERSION_TAG.tar.gz Open-IM-SDK-Core.tar.gz
 | 
			
		||||
 | 
			
		||||
fi
 | 
			
		||||
echo  "下载完成" && \
 | 
			
		||||
docker build . -t $IMAGE_TAG --no-cache && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
echo "构建完成" && \
 | 
			
		||||
docker push $IMAGE_TAG && \
 | 
			
		||||
cp development.tmp.yaml development.yaml
 | 
			
		||||
 | 
			
		||||
if [[ `uname` == 'Darwin' ]]; then
 | 
			
		||||
    sed -i "" "s#IMAGE_TAG#${IMAGE_TAG}#g" ./development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
    sed -i "" "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
elif [[ `uname` == 'Linux' ]]; then
 | 
			
		||||
  sed -i "s#IMAGE_TAG#${IMAGE_TAG}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_API#${NODE_PORT_API}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_MSG_GATEWAY#${NODE_PORT_MSG_GATEWAY}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_SDK_SERVER#${NODE_PORT_SDK_SERVER}#g" development.yaml
 | 
			
		||||
  sed -i "s#NODE_PORT_DEMO#${NODE_PORT_DEMO}#g" development.yaml
 | 
			
		||||
fi
 | 
			
		||||
echo "推送镜像完成" && kubectl -n ${K8S_NAMESPACE} delete -f development.yaml
 | 
			
		||||
kubectl -n ${K8S_NAMESPACE} apply -f development.yaml
 | 
			
		||||
							
								
								
									
										94
									
								
								deploy/k8s/open_im_user/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										94
									
								
								deploy/k8s/open_im_user/development.tmp.yaml
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,94 @@
 | 
			
		||||
---
 | 
			
		||||
apiVersion: apps/v1
 | 
			
		||||
kind: StatefulSet
 | 
			
		||||
metadata:
 | 
			
		||||
  name: user
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  podManagementPolicy: OrderedReady
 | 
			
		||||
  replicas: 1
 | 
			
		||||
  revisionHistoryLimit: 10
 | 
			
		||||
  selector:
 | 
			
		||||
    matchLabels:
 | 
			
		||||
      app: user
 | 
			
		||||
      workload.user.cattle.io/workloadselector: statefulSet-openim-user
 | 
			
		||||
  serviceName: user
 | 
			
		||||
  template:
 | 
			
		||||
    metadata:
 | 
			
		||||
      labels:
 | 
			
		||||
        app: user
 | 
			
		||||
        workload.user.cattle.io/workloadselector: statefulSet-openim-user
 | 
			
		||||
    spec:
 | 
			
		||||
      containers:
 | 
			
		||||
        - image: "IMAGE_TAG"
 | 
			
		||||
          env:
 | 
			
		||||
          - name: NODE_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                fieldPath: spec.nodeName
 | 
			
		||||
          - name: POD_NAME
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.name
 | 
			
		||||
          - name: NODE_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.hostIP
 | 
			
		||||
          - name: POD_IP
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: status.podIP
 | 
			
		||||
          - name: NAMESPACE
 | 
			
		||||
            valueFrom:
 | 
			
		||||
              fieldRef:
 | 
			
		||||
                apiVersion: v1
 | 
			
		||||
                fieldPath: metadata.namespace
 | 
			
		||||
          ports:
 | 
			
		||||
          - name: p10100
 | 
			
		||||
            protocol: TCP
 | 
			
		||||
            containerPort: 10100
 | 
			
		||||
          imagePullPolicy: Always
 | 
			
		||||
          name: user
 | 
			
		||||
          stdin: true
 | 
			
		||||
          terminationMessagePath: /dev/termination-log
 | 
			
		||||
          terminationMessagePolicy: File
 | 
			
		||||
          tty: true
 | 
			
		||||
          volumeMounts:
 | 
			
		||||
            - mountPath: /Open-IM-Server/config.tmp.yaml
 | 
			
		||||
              name: vol2
 | 
			
		||||
              readOnly: true
 | 
			
		||||
              subPath: config.yaml
 | 
			
		||||
      dnsConfig: {}
 | 
			
		||||
      dnsPolicy: ClusterFirst
 | 
			
		||||
      restartPolicy: Always
 | 
			
		||||
      schedulerName: default-scheduler
 | 
			
		||||
      securityContext: {}
 | 
			
		||||
      terminationGracePeriodSeconds: 30
 | 
			
		||||
      volumes:
 | 
			
		||||
        - configMap:
 | 
			
		||||
            defaultMode: 256
 | 
			
		||||
            name: config.yaml
 | 
			
		||||
            optional: false
 | 
			
		||||
          name: vol2
 | 
			
		||||
  updateStrategy:
 | 
			
		||||
    rollingUpdate:
 | 
			
		||||
      partition: 0
 | 
			
		||||
    type: RollingUpdate
 | 
			
		||||
---
 | 
			
		||||
apiVersion: v1
 | 
			
		||||
kind: Service
 | 
			
		||||
metadata:
 | 
			
		||||
  name: user
 | 
			
		||||
 | 
			
		||||
spec:
 | 
			
		||||
  ports:
 | 
			
		||||
    - name: p10100
 | 
			
		||||
      port: 10100
 | 
			
		||||
      protocol: TCP
 | 
			
		||||
      targetPort: 10100
 | 
			
		||||
  selector:
 | 
			
		||||
    app: user
 | 
			
		||||
  type: ClusterIP
 | 
			
		||||
							
								
								
									
										37
									
								
								deploy/k8s/open_im_user/start-open_im_user.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								deploy/k8s/open_im_user/start-open_im_user.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
source ./style_info.cfg
 | 
			
		||||
source ./path_info.cfg
 | 
			
		||||
source ./function.sh
 | 
			
		||||
 | 
			
		||||
service_filename="open_im_user"
 | 
			
		||||
service_port_name="openImUserPort"
 | 
			
		||||
K8sServiceName="user"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#Check whether the service exists
 | 
			
		||||
service_name="ps -aux |grep -w ${service_filename} |grep -v grep"
 | 
			
		||||
count="${service_name}| wc -l"
 | 
			
		||||
 | 
			
		||||
rm -rf /Open-IM-Server/config
 | 
			
		||||
mkdir /Open-IM-Server/config
 | 
			
		||||
cp /Open-IM-Server/config.tmp.yaml /Open-IM-Server/config/config.yaml
 | 
			
		||||
sed -i "s#openim-all#$POD_NAME.$K8sServiceName.$NAMESPACE.svc.cluster.local#g" /Open-IM-Server/config/config.yaml
 | 
			
		||||
 | 
			
		||||
if [ $(eval ${count}) -gt 0 ]; then
 | 
			
		||||
  pid="${service_name}| awk '{print \$2}'"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${service_filename} service has been started,pid:$(eval $pid)$COLOR_SUFFIX"
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}Killing the service ${service_filename} pid:$(eval $pid)${COLOR_SUFFIX}"
 | 
			
		||||
  #kill the service that existed
 | 
			
		||||
  kill -9 $(eval $pid)
 | 
			
		||||
  sleep 0.5
 | 
			
		||||
fi
 | 
			
		||||
cd ../bin && echo -e "${SKY_BLUE_PREFIX}${service_filename} service is starting${COLOR_SUFFIX}"
 | 
			
		||||
#Get the rpc port in the configuration file
 | 
			
		||||
portList=$(cat $config_path | grep ${service_port_name} | awk -F '[:]' '{print $NF}')
 | 
			
		||||
list_to_string ${portList}
 | 
			
		||||
#Start related rpc services based on the number of ports
 | 
			
		||||
for j in ${ports_array}; do
 | 
			
		||||
  echo -e "${SKY_BLUE_PREFIX}${POD_NAME} Service is starting,port number:$j $COLOR_SUFFIX"
 | 
			
		||||
  ./${service_filename} -port $j
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										6
									
								
								deploy/k8s/setting.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								deploy/k8s/setting.env
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
DOCKER_REGISTRY_ADDR="harbor.local/"
 | 
			
		||||
NODE_PORT_API="10100"
 | 
			
		||||
NODE_PORT_MSG_GATEWAY="10101"
 | 
			
		||||
NODE_PORT_SDK_SERVER="10102"
 | 
			
		||||
NODE_PORT_DEMO="10103"
 | 
			
		||||
K8S_NAMESPACE="openim"
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user