Compare commits
35 Commits
sweep/add-
...
v3.3.3-rc.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4888bc2d17 | ||
|
|
9e44a39d2e | ||
|
|
8f590d4a9d | ||
|
|
26b2e4e713 | ||
|
|
b3a7fcdbed | ||
|
|
a1547af65d | ||
|
|
deacd63dfc | ||
|
|
afd7bd5a50 | ||
|
|
18437073ff | ||
|
|
061ac4abd4 | ||
|
|
38ab3e0ed7 | ||
|
|
cb0394392b | ||
|
|
8a13017665 | ||
|
|
e4f3e34249 | ||
|
|
6ffcfbe68e | ||
|
|
b1415473ff | ||
|
|
ba190fde13 | ||
|
|
088b143300 | ||
|
|
9cd8fb2b01 | ||
|
|
363deff6f8 | ||
|
|
c69d4da8b8 | ||
|
|
4b231716c3 | ||
|
|
b3d2f3b182 | ||
|
|
8a54e465a2 | ||
|
|
1c1f2a96ba | ||
|
|
5e7e619d10 | ||
|
|
2840bc27fe | ||
|
|
2d86a1a0e5 | ||
|
|
0363763171 | ||
|
|
a648beecb3 | ||
|
|
abf8e37e78 | ||
|
|
81cc1f355a | ||
|
|
8e6430625c | ||
|
|
b783f0eb98 | ||
|
|
9218f0d928 |
@@ -1,4 +1,4 @@
|
|||||||
<!-- # Ignore files and directories starting with a dot
|
# Ignore files and directories starting with a dot
|
||||||
|
|
||||||
# Ignore specific files
|
# Ignore specific files
|
||||||
.dockerignore
|
.dockerignore
|
||||||
@@ -29,4 +29,4 @@ assets/
|
|||||||
components/
|
components/
|
||||||
|
|
||||||
# Ignore tools and scripts
|
# Ignore tools and scripts
|
||||||
.github/ -->
|
.github/
|
||||||
|
|||||||
11
.env
11
.env
@@ -30,11 +30,18 @@ MINIO_ENDPOINT=http://172.28.0.1:10005
|
|||||||
|
|
||||||
# Base URL for the application programming interface (API).
|
# Base URL for the application programming interface (API).
|
||||||
# Default: API_URL=http://172.28.0.1:10002
|
# Default: API_URL=http://172.28.0.1:10002
|
||||||
API_URL=http://127.0.0.1:10002
|
API_URL=http://14.155.86.214:10002
|
||||||
|
|
||||||
# Directory path for storing data files or related information.
|
# Directory path for storing data files or related information.
|
||||||
# Default: DATA_DIR=./
|
# Default: DATA_DIR=./
|
||||||
DATA_DIR=./
|
DATA_DIR=/root/workspaces/openim/Open-IM-Server
|
||||||
|
|
||||||
|
# Choose the appropriate image address, the default is GITHUB image,
|
||||||
|
# you can choose docker hub, for Chinese users can choose Ali Cloud
|
||||||
|
# export IMAGE_REGISTRY="ghcr.io/openimsdk"
|
||||||
|
# export IMAGE_REGISTRY="openim"
|
||||||
|
# export IMAGE_REGISTRY="registry.cn-hangzhou.aliyuncs.com/openimsdk"
|
||||||
|
IMAGE_REGISTRY=ghcr.io/openimsdk
|
||||||
|
|
||||||
# ======================================
|
# ======================================
|
||||||
# ========= Network Configuration ======
|
# ========= Network Configuration ======
|
||||||
|
|||||||
3
.github/workflows/bot-cherry-pick.yml
vendored
3
.github/workflows/bot-cherry-pick.yml
vendored
@@ -19,7 +19,8 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
cherry-pick:
|
cherry-pick:
|
||||||
name: Cherry Pick
|
name: Cherry Pick
|
||||||
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/cherry-pick') && github.event.comment.user.login=='kubbot'
|
# && github.event.comment.user.login=='kubbot'
|
||||||
|
if: github.event.issue.pull_request != '' && contains(github.event.comment.body, '/cherry-pick')
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout the latest code
|
- name: Checkout the latest code
|
||||||
|
|||||||
9
.github/workflows/build-docker-image.yml
vendored
9
.github/workflows/build-docker-image.yml
vendored
@@ -120,6 +120,15 @@ jobs:
|
|||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-server
|
images: ghcr.io/openimsdk/openim-server
|
||||||
|
# generate Docker tags based on the following events/attributes
|
||||||
|
tags: |
|
||||||
|
type=schedule
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=pr
|
||||||
|
type=semver,pattern={{version}}
|
||||||
|
type=semver,pattern={{major}}.{{minor}}
|
||||||
|
type=semver,pattern={{major}}
|
||||||
|
type=sha
|
||||||
|
|
||||||
- name: Log in to GitHub Container Registry
|
- name: Log in to GitHub Container Registry
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
|
|||||||
43
.github/workflows/build-openim-web-image.yml
vendored
43
.github/workflows/build-openim-web-image.yml
vendored
@@ -114,15 +114,12 @@ jobs:
|
|||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
# ghcr.io/openimsdk/openim-web:latest
|
||||||
|
- name: Extract metadata (tags, labels) for Docker
|
||||||
|
id: meta2
|
||||||
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
install: true
|
images: ghcr.io/openimsdk/openim-web
|
||||||
- name: Cache Docker layers
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
path: /tmp/.buildx-cache
|
|
||||||
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-buildx-
|
|
||||||
|
|
||||||
- name: Log in to GitHub Container Registry
|
- name: Log in to GitHub Container Registry
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
@@ -131,38 +128,12 @@ jobs:
|
|||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Extract metadata (tags, labels) for Docker openim-web
|
- name: Build and push Docker image
|
||||||
id: meta1
|
|
||||||
uses: docker/metadata-action@v5.0.0
|
|
||||||
with:
|
|
||||||
images: ghcr.io/openimsdk/openim-web
|
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-web
|
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: ./build/images/openim-tools/openim-web/Dockerfile
|
file: ./build/images/openim-tools/openim-web/Dockerfile
|
||||||
platforms: linux/amd64,linux/arm64
|
platforms: linux/amd64,linux/arm64
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
tags: ${{ steps.meta1.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta1.outputs.labels }}
|
|
||||||
cache-from: type=local,src=/tmp/.buildx-cache
|
|
||||||
cache-to: type=local,dest=/tmp/.buildx-cache
|
|
||||||
|
|
||||||
- name: Extract metadata (tags, labels) for Docker openim-web
|
|
||||||
id: meta2
|
|
||||||
uses: docker/metadata-action@v5.0.0
|
|
||||||
with:
|
|
||||||
images: ghcr.io/openimsdk/component
|
|
||||||
|
|
||||||
- name: Build and push Docker image for component
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
file: ./build/images/openim-tools/component/Dockerfile
|
|
||||||
platforms: linux/amd64,linux/arm64
|
|
||||||
push: ${{ github.event_name != 'pull_request' }}
|
|
||||||
tags: ${{ steps.meta2.outputs.tags }}
|
tags: ${{ steps.meta2.outputs.tags }}
|
||||||
labels: ${{ steps.meta2.outputs.labels }}
|
labels: ${{ steps.meta2.outputs.labels }}
|
||||||
cache-from: type=local,src=/tmp/.buildx-cache
|
|
||||||
cache-to: type=local,dest=/tmp/.buildx-cache
|
|
||||||
4
.github/workflows/create_branch_on_tag.yml
vendored
4
.github/workflows/create_branch_on_tag.yml
vendored
@@ -48,7 +48,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Push Changes
|
- name: Push Changes
|
||||||
uses: stefanzweifel/git-auto-commit-action@v4
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
with:
|
with:
|
||||||
commit_message: "Auto Commit CHANGELOG"
|
commit_message: "Auto Commit CHANGELOG"
|
||||||
branch: release-v${VERSION_PARTS[0]}.${VERSION_PARTS[1]}
|
branch: release-v${VERSION_PARTS[0]}.${VERSION_PARTS[1]}
|
||||||
@@ -68,7 +68,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Push Changes
|
- name: Push Changes
|
||||||
uses: stefanzweifel/git-auto-commit-action@v4
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
with:
|
with:
|
||||||
commit_message: "Auto Commit CHANGELOG"
|
commit_message: "Auto Commit CHANGELOG"
|
||||||
branch: main
|
branch: main
|
||||||
|
|||||||
79
.github/workflows/docker-buildx.yml
vendored
79
.github/workflows/docker-buildx.yml
vendored
@@ -54,6 +54,19 @@ jobs:
|
|||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Log in to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Log in to AliYun Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: registry.cn-hangzhou.aliyuncs.com
|
||||||
|
username: ${{ secrets.ALIREGISTRY_USERNAME }}
|
||||||
|
password: ${{ secrets.ALIREGISTRY_TOKEN }}
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
# build/
|
# build/
|
||||||
# └── docker
|
# └── docker
|
||||||
@@ -89,7 +102,10 @@ jobs:
|
|||||||
id: meta1
|
id: meta1
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-api
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-api
|
||||||
|
openim/openim-api
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-api
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-api
|
- name: Build and push Docker image for openim-api
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -107,7 +123,10 @@ jobs:
|
|||||||
id: meta2
|
id: meta2
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-cmdutils
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-cmdutils
|
||||||
|
openim/openim-cmdutils
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-cmdutils
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-cmdutils
|
- name: Build and push Docker image for openim-cmdutils
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -125,7 +144,10 @@ jobs:
|
|||||||
id: meta3
|
id: meta3
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-crontask
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-crontask
|
||||||
|
openim/openim-crontask
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-crontask
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-crontask
|
- name: Build and push Docker image for openim-crontask
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -143,7 +165,10 @@ jobs:
|
|||||||
id: meta4
|
id: meta4
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-msggateway
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-msggateway
|
||||||
|
openim/openim-msggateway
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-msggateway
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-msggateway
|
- name: Build and push Docker image for openim-msggateway
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -161,7 +186,10 @@ jobs:
|
|||||||
id: meta5
|
id: meta5
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-msgtransfer
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-msgtransfer
|
||||||
|
openim/openim-msgtransfer
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-msgtransfer
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-msgtransfer
|
- name: Build and push Docker image for openim-msgtransfer
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -179,7 +207,10 @@ jobs:
|
|||||||
id: meta6
|
id: meta6
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-push
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-push
|
||||||
|
openim/openim-push
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-push
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-push
|
- name: Build and push Docker image for openim-push
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -197,7 +228,10 @@ jobs:
|
|||||||
id: meta7
|
id: meta7
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-rpc-auth
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-rpc-auth
|
||||||
|
openim/openim-rpc-auth
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-auth
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-rpc-auth
|
- name: Build and push Docker image for openim-rpc-auth
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -215,7 +249,10 @@ jobs:
|
|||||||
id: meta8
|
id: meta8
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-rpc-conversation
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-rpc-conversation
|
||||||
|
openim/openim-rpc-conversation
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-conversation
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-rpc-conversation
|
- name: Build and push Docker image for openim-rpc-conversation
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -233,7 +270,10 @@ jobs:
|
|||||||
id: meta9
|
id: meta9
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-rpc-friend
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-rpc-friend
|
||||||
|
openim/openim-rpc-friend
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-friend
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-rpc-friend
|
- name: Build and push Docker image for openim-rpc-friend
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -251,7 +291,10 @@ jobs:
|
|||||||
id: meta10
|
id: meta10
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-rpc-group
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-rpc-group
|
||||||
|
openim/openim-rpc-group
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-group
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-rpc-group
|
- name: Build and push Docker image for openim-rpc-group
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -269,7 +312,10 @@ jobs:
|
|||||||
id: meta11
|
id: meta11
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-rpc-msg
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-rpc-msg
|
||||||
|
openim/openim-rpc-msg
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-msg
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-rpc-msg
|
- name: Build and push Docker image for openim-rpc-msg
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -287,7 +333,10 @@ jobs:
|
|||||||
id: meta12
|
id: meta12
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-rpc-third
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-rpc-third
|
||||||
|
openim/openim-rpc-third
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-third
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-rpc-third
|
- name: Build and push Docker image for openim-rpc-third
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -305,7 +354,10 @@ jobs:
|
|||||||
id: meta13
|
id: meta13
|
||||||
uses: docker/metadata-action@v5.0.0
|
uses: docker/metadata-action@v5.0.0
|
||||||
with:
|
with:
|
||||||
images: ghcr.io/openimsdk/openim-rpc-user
|
images: |
|
||||||
|
ghcr.io/openimsdk/openim-rpc-user
|
||||||
|
openim/openim-rpc-user
|
||||||
|
registry.cn-hangzhou.aliyuncs.com/openimsdk/openim-rpc-user
|
||||||
|
|
||||||
- name: Build and push Docker image for openim-rpc-user
|
- name: Build and push Docker image for openim-rpc-user
|
||||||
uses: docker/build-push-action@v5
|
uses: docker/build-push-action@v5
|
||||||
@@ -318,4 +370,3 @@ jobs:
|
|||||||
labels: ${{ steps.meta13.outputs.labels }}
|
labels: ${{ steps.meta13.outputs.labels }}
|
||||||
cache-from: type=local,src=/tmp/.buildx-cache
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
cache-to: type=local,dest=/tmp/.buildx-cache
|
cache-to: type=local,dest=/tmp/.buildx-cache
|
||||||
|
|
||||||
|
|||||||
25
.github/workflows/openimci.yml
vendored
25
.github/workflows/openimci.yml
vendored
@@ -48,7 +48,7 @@ jobs:
|
|||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go_version: ["1.18","1.19","1.20","1.21"]
|
go_version: ["1.19","1.20","1.21"]
|
||||||
os: [ubuntu-latest]
|
os: [ubuntu-latest]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -86,7 +86,7 @@ jobs:
|
|||||||
run: sudo make clean
|
run: sudo make clean
|
||||||
|
|
||||||
- name: Push Changes to Main
|
- name: Push Changes to Main
|
||||||
uses: stefanzweifel/git-auto-commit-action@v4
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
with:
|
with:
|
||||||
commit_message: "cicd: robot automated Change"
|
commit_message: "cicd: robot automated Change"
|
||||||
branch: main
|
branch: main
|
||||||
@@ -170,3 +170,24 @@ jobs:
|
|||||||
- name: Print OpenIM Logs
|
- name: Print OpenIM Logs
|
||||||
run: sudo cat ./_output/logs/* 2>/dev/null
|
run: sudo cat ./_output/logs/* 2>/dev/null
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
|
|
||||||
|
openim-build-image:
|
||||||
|
name: Build OpenIM Docker Image
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
environment:
|
||||||
|
name: openim
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Set up Go ${{ matrix.go_version }}
|
||||||
|
uses: actions/setup-go@v4
|
||||||
|
with:
|
||||||
|
go-version: ${{ matrix.go_version }}
|
||||||
|
id: go
|
||||||
|
- name: Install Task
|
||||||
|
uses: arduino/setup-task@v1
|
||||||
|
with:
|
||||||
|
version: 2.x
|
||||||
|
- name: Test Docker Build
|
||||||
|
run: |
|
||||||
|
sudo make image
|
||||||
14
.gitignore
vendored
14
.gitignore
vendored
@@ -29,6 +29,7 @@ tmp/
|
|||||||
bin/
|
bin/
|
||||||
output/
|
output/
|
||||||
_output/
|
_output/
|
||||||
|
deployments/charts/generated-configs/
|
||||||
|
|
||||||
### OpenIM Config ###
|
### OpenIM Config ###
|
||||||
config/config.yaml
|
config/config.yaml
|
||||||
@@ -37,18 +38,7 @@ config/config.yaml
|
|||||||
./.env
|
./.env
|
||||||
|
|
||||||
### OpenIM deploy ###
|
### OpenIM deploy ###
|
||||||
deploy/openim_demo
|
deployments/openim-server/charts
|
||||||
deploy/openim-api
|
|
||||||
deploy/openim-rpc-msg_gateway
|
|
||||||
deploy/openim-msgtransfer
|
|
||||||
deploy/openim-push
|
|
||||||
deploy/openim_timer_task
|
|
||||||
deploy/openim-rpc-user
|
|
||||||
deploy/openim-rpc-friend
|
|
||||||
deploy/openim-rpc-group
|
|
||||||
deploy/openim-rpc-msg
|
|
||||||
deploy/openim-rpc-auth
|
|
||||||
deploy/Open-IM-SDK-Core
|
|
||||||
|
|
||||||
# files used by the developer
|
# files used by the developer
|
||||||
.idea.md
|
.idea.md
|
||||||
|
|||||||
@@ -171,7 +171,7 @@ linters-settings:
|
|||||||
# exclude_godoc_examples: false
|
# exclude_godoc_examples: false
|
||||||
funlen:
|
funlen:
|
||||||
lines: 150
|
lines: 150
|
||||||
statements: 50
|
statements: 80
|
||||||
gci:
|
gci:
|
||||||
# put imports beginning with prefix after 3rd-party packages;
|
# put imports beginning with prefix after 3rd-party packages;
|
||||||
# only support one prefix
|
# only support one prefix
|
||||||
@@ -715,83 +715,18 @@ linters:
|
|||||||
# enable-all: true
|
# enable-all: true
|
||||||
disable-all: true
|
disable-all: true
|
||||||
enable:
|
enable:
|
||||||
- typecheck
|
- typecheck # 基本的类型检查
|
||||||
- asciicheck
|
- gofmt # 格式检查
|
||||||
- bodyclose
|
- govet # Go 语言的标准检查工具
|
||||||
- cyclop
|
- gosimple # 简化代码的建议
|
||||||
# - depguard
|
- misspell # 拼写错误
|
||||||
- dogsled
|
- staticcheck # 静态检查
|
||||||
- dupl
|
- unused # 未使用的代码检查
|
||||||
- durationcheck
|
- goimports # 检查导入是否正确排序和格式化
|
||||||
- errcheck
|
- godot # 注释句点检查
|
||||||
- errorlint
|
- bodyclose # 确保 HTTP response body 被关闭
|
||||||
- exhaustive
|
- errcheck # 检查是否遗漏了错误返回值
|
||||||
- exportloopref
|
fast: true
|
||||||
# - forbidigo
|
|
||||||
- funlen
|
|
||||||
# - gci
|
|
||||||
# - gochecknoinits
|
|
||||||
- gocognit
|
|
||||||
- goconst
|
|
||||||
- gocyclo
|
|
||||||
- godot
|
|
||||||
- godox
|
|
||||||
- gofmt
|
|
||||||
- gofumpt
|
|
||||||
- goheader
|
|
||||||
- goimports
|
|
||||||
- gomoddirectives
|
|
||||||
- gomodguard
|
|
||||||
- goprintffuncname
|
|
||||||
- gosec
|
|
||||||
- gosimple
|
|
||||||
- govet
|
|
||||||
- importas
|
|
||||||
- ineffassign
|
|
||||||
- lll
|
|
||||||
- makezero
|
|
||||||
- misspell
|
|
||||||
- nakedret
|
|
||||||
- nestif
|
|
||||||
- nilerr
|
|
||||||
- nlreturn
|
|
||||||
- noctx
|
|
||||||
- nolintlint
|
|
||||||
- paralleltest
|
|
||||||
- prealloc
|
|
||||||
- predeclared
|
|
||||||
- promlinter
|
|
||||||
- revive
|
|
||||||
- rowserrcheck
|
|
||||||
- sqlclosecheck
|
|
||||||
- staticcheck
|
|
||||||
- stylecheck
|
|
||||||
- thelper
|
|
||||||
- tparallel
|
|
||||||
- unconvert
|
|
||||||
- unparam
|
|
||||||
- unused
|
|
||||||
- wastedassign
|
|
||||||
- whitespace
|
|
||||||
- bidichk
|
|
||||||
- wastedassign
|
|
||||||
- execinquery
|
|
||||||
- nosprintfhostport
|
|
||||||
- grouper
|
|
||||||
- decorder
|
|
||||||
- errchkjson
|
|
||||||
- maintidx
|
|
||||||
#- containedctx
|
|
||||||
#- tagliatelle
|
|
||||||
#- nonamedreturns
|
|
||||||
#- nilnil
|
|
||||||
#- tenv
|
|
||||||
#- varnamelen
|
|
||||||
#- contextcheck
|
|
||||||
#- errname
|
|
||||||
#- ForceTypeAssert
|
|
||||||
#- nilassign
|
|
||||||
fast: false
|
|
||||||
|
|
||||||
issues:
|
issues:
|
||||||
# List of regexps of issue texts to exclude, empty list by default.
|
# List of regexps of issue texts to exclude, empty list by default.
|
||||||
|
|||||||
8
Makefile
8
Makefile
@@ -73,9 +73,9 @@ gen:
|
|||||||
demo:
|
demo:
|
||||||
@$(MAKE) go.demo
|
@$(MAKE) go.demo
|
||||||
|
|
||||||
## versionchecker: Check version of openim. ✨
|
## version: Check version of openim. ✨
|
||||||
.PHONY: versionchecker
|
.PHONY: version
|
||||||
versionchecker:
|
version:
|
||||||
@$(MAKE) go.versionchecker
|
@$(MAKE) go.versionchecker
|
||||||
|
|
||||||
## build: Build binaries by default ✨
|
## build: Build binaries by default ✨
|
||||||
@@ -95,7 +95,7 @@ stop:
|
|||||||
|
|
||||||
## restart: Restart openim ✨
|
## restart: Restart openim ✨
|
||||||
.PHONY: restart
|
.PHONY: restart
|
||||||
restart: clean stop build init start
|
restart: clean stop build init start check
|
||||||
|
|
||||||
## multiarch: Build binaries for multiple platforms. See option PLATFORMS. ✨
|
## multiarch: Build binaries for multiple platforms. See option PLATFORMS. ✨
|
||||||
.PHONY: multiarch
|
.PHONY: multiarch
|
||||||
|
|||||||
359
README-zh_CN.md
359
README-zh_CN.md
@@ -1,5 +1,5 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://www.openim.online">
|
<a href="https://openim.io">
|
||||||
<img src="./assets/logo-gif/openim-logo.gif" width="60%" height="30%"/>
|
<img src="./assets/logo-gif/openim-logo.gif" width="60%" height="30%"/>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
@@ -23,336 +23,117 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="./README.md"><b> English </b></a> •
|
<a href="./README.md"><b> English </b></a> •
|
||||||
<a href="./README-zh_CN.md"><b> 简体中文 </b></a> •
|
<a href="./README-zh_CN.md"><b> 简体中文 </b></a> •
|
||||||
<a href="https://www.openim.online/en"><b> Docs </b></a>
|
<a href="https://openim.io/en"><b> Docs </b></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
## ✨ 关于 OpenIM
|
## Ⓜ️ 关于 OpenIM
|
||||||
|
|
||||||
Open-IM-Server 是使用纯 Golang 精心制作的强大的即时消息服务器。其通过 JSON over WebSocket 进行通信的独特方法将每次交互都视为消息。这简化了定制并消除了修改服务器代码的需求。通过利用微服务架构,服务器可以通过集群部署,保证出色的性能和可伸缩性。
|
OpenIM 不仅仅是一个开源的即时消息组件,它是你的应用程序生态系统的一个不可或缺的部分。查看下面的图表,了解 AppServer、AppClient、OpenIMServer 和 OpenIMSDK 是如何交互的。
|
||||||
|
|
||||||
Open-IM-Server 不仅仅是一个即时消息服务器;它是将实时网络集成到您的应用程序中的强大工具,定位为您集成的首选选择!🚀
|

|
||||||
|
|
||||||
请注意,Open-IM-Server 不作为独立产品运行,也不提供内置的帐户注册或登录服务。为了简化您的实施过程,我们已开源了 [chat repository](https://github.com/OpenIMSDK/chat),其中包括这些功能。与 Open-IM-Server 一起部署此聊天业务服务器可加快全面的聊天产品的设置。👥
|
## 🚀 关于 OpenIMSDK
|
||||||
|
|
||||||
为了进一步增强您的体验,我们还提供了 SDK 客户端,在其中实现了大多数复杂逻辑。可以在 [此链接](https://github.com/OpenIMSDK/openim-sdk-core) 找到 [SDK repository](https://github.com/OpenIMSDK/openim-sdk-core)。[chat repository](https://github.com/OpenIMSDK/chat) 是我们的业务服务器,而 'core' 代表 SDK 的高级封装,它们协同工作以提供卓越的结果。✨
|
**OpenIMSDK** 无缝集成到您的应用中,提供丰富、实时的消息体验,无需复杂的 UI 集成。它提供:
|
||||||
|
|
||||||
## :star2: 为什么选择 OpenIM
|
+ **本地存储**:用于快速数据检索和消息同步。
|
||||||
|
+ **监听器回调**:确保实时消息交互性。
|
||||||
|
+ **API 封装**:简化开发流程。
|
||||||
|
+ **连接管理**:保证可靠的消息传递。
|
||||||
|
|
||||||
**🔍 功能截图显示**
|
它使用 Golang 构建,并支持跨平台部署,确保在所有平台上提供一致的消息体验。
|
||||||
|
|
||||||
<div align="center">
|
👉 **[探索 GO SDK](https://github.com/openimsdk/openim-sdk-core)**
|
||||||
|
|
||||||
| 💻🔄📱 多终端同步 🔄🖥️ | 📅⚡ 高效会议 🚀💼 |
|
## 🌐 关于 OpenIMServer
|
||||||
| :----------------------------------------------------------: | :----------------------------------------------------------: |
|
|
||||||
|  |  |
|
|
||||||
| 📲🔄 **一对一和群聊** 👥🗣️ | 🎁💻 **特殊功能 - 自定义消息** ✉️🎨 |
|
|
||||||
|  |  |
|
|
||||||
|
|
||||||
</div>
|
精心用 Golang 开发的 **OpenIMServer** 通过多重方式确保了卓越的即时消息服务器能力:
|
||||||
|
|
||||||
1. **全面的消息类型支持 :speech_balloon:**
|
+ **模块组成**:它由多个模块组成,例如网关和多个 RPC 服务,提供一个多功能的消息环境。
|
||||||
|
+ **微服务架构**:支持集群模式,确保出色的性能和可伸缩性,以有效管理各个实例间的通信。
|
||||||
|
+ **多样的部署选项**:适应你的操作偏好,通过源代码、Kubernetes 或 Docker 提供部署选项。
|
||||||
|
|
||||||
✅ 支持几乎所有类型的消息,包括文本、图片、表情符号、语音、视频、地理位置、文件、报价、名片、系统通知、自定义消息等
|
### 增强的业务功能:
|
||||||
|
|
||||||
✅ 支持一对一和多人音视频通话
|
+ **REST API**:OpenIMServer 为业务系统提供 REST API,旨在通过后端接口为您的操作提供附加功能,如群组创建和消息推送。
|
||||||
|
+ **回调**:为了扩展其在各种业务形式中的实用性,OpenIMServer 提供了回调能力。即,在事件发生之前或之后,它向业务服务器发送请求,比如发送消息,丰富通信过程中的交互和数据交换流。
|
||||||
|
|
||||||
✅ 为 iOS、Android、Flutter、uni-app、ReactNative、Electron、Web、H5 等多个平台提供终端支持
|
👉 **[了解更多](https://doc.rentsoft.cn/guides/introduction/product)**
|
||||||
|
|
||||||
2. **随时随地的高效会议 :earth_americas:**
|
|
||||||
|
|
||||||
✅ 基于具有 100% 可靠强制信令功能的 IM (Instant Messaging),为与聊天应用程序深度集成的 IM 系统铺平了道路
|
|
||||||
|
|
||||||
✅ 支持单次会议中的数百人,订阅人数达到数千,以及服务器端音视频录制
|
|
||||||
|
|
||||||
3. **适用于各种社交场景的一对一和群聊 :busts_in_silhouette:**
|
|
||||||
|
|
||||||
✅ OpenIM 有四种角色:应用程序管理员、群主、群管理员和普通成员
|
|
||||||
|
|
||||||
✅ 强大的群特性,如静音、群公告、群验证、无限群成员和根据需要加载群消息
|
|
||||||
|
|
||||||
4. **独特的功能 :star2:**
|
|
||||||
|
|
||||||
✅ 支持读取并烧毁私人聊天,可自定义时长
|
|
||||||
|
|
||||||
✅ 消息编辑功能扩大了社交场景,使即时通讯变得更加多样化和有趣
|
|
||||||
|
|
||||||
5. **开源 :open_hands:**
|
|
||||||
|
|
||||||
✅ OpenIM 的代码是开源的,数据自控,旨在构建一个全球领先的 IM 开源社区,包括客户端 SDK 和服务器
|
|
||||||
|
|
||||||
✅ 基于开源服务器,已经开发了许多出色的开源项目,例如 [OpenKF](https://github.com/OpenIMSDK/OpenKF) (开源 AI 客户服务系统)
|
|
||||||
|
|
||||||
6. **易于扩展 :wrench:**
|
|
||||||
|
|
||||||
✅ OpenIM 服务器是用 Golang 实现的,引入了创新的 "一切都是消息" 通信模型,简化了自定义消息和扩展功能的实现
|
|
||||||
|
|
||||||
7. **高性能 :racing_car:**
|
|
||||||
|
|
||||||
✅ OpenIM 支持集群中的分层治理架构,经过大量用户的测试,并抽象了在线消息、离线消息和历史消息的存储模型
|
|
||||||
|
|
||||||
8. **全平台支持 :tv:**
|
|
||||||
|
|
||||||
✅ 支持原生 iOS、Android;跨平台 Flutter、uni-app、ReactNative;主要的 Web 前端框架如 React、Vue;小程序和 Electron 支持的 PC 平台
|
|
||||||
|
|
||||||
9. **终极部署体验 🤖**
|
|
||||||
|
|
||||||
✅ 支持 [集群部署](https://github.com/openimsdk/open-im-server/edit/main/deployments/README.md)
|
|
||||||
|
|
||||||
✅ 支持多架构镜像,我们的 Docker 镜像不仅托管在 GitHub 上,而且还在阿里云和 Docker Hub 上支持多个架构。请访问 [我们的 GitHub packages](https://github.com/orgs/OpenIMSDK/packages?repo_name=Open-IM-Server) 并阅读我们的 [版本管理文档](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/version.md) 以获取更多信息。
|
|
||||||
|
|
||||||
10. **开源社区的大生态系统 🤲**
|
|
||||||
|
|
||||||
✅ 我们有数万用户和许多解决方案来解决问题。
|
|
||||||
|
|
||||||
✅ 我们有一个大型的开源社区叫 [OpenIMSDK](https://github.com/OpenIMSDK),它运行核心模块,我们还有一个开源社区叫 [openim-sigs](https://github.com/openim-sigs) 以探索更多基于 IM 的基础设施产品。
|
|
||||||
|
|
||||||
## :rocket: 快速开始
|
## :rocket: 快速开始
|
||||||
|
|
||||||
<details> <summary>使用 Docker Compose 部署</summary>
|
你只需要一个简单的命令,就可以快速学习 OpenIM 的工程解决方案:
|
||||||
|
|
||||||
1. 克隆项目
|
|
||||||
|
|
||||||
```
|
```
|
||||||
# 选择您需要的
|
bashCopy code
|
||||||
BRANCH=release-v3.1
|
$ make demo
|
||||||
git clone -b $BRANCH https://github.com/openimsdk/open-im-server openim && export openim=$(pwd)/openim && cd $openim && make build
|
|
||||||
```
|
```
|
||||||
|
|
||||||
> **注意** 阅读我们的发布策略:https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/version.md
|
🤲 为了方便用户体验,我们提供了多种部署解决方案,您可以根据下面的列表选择自己的部署方法:
|
||||||
|
|
||||||
1. 修改 `.env`
|
+ **[源代码部署指南](https://doc.rentsoft.cn/guides/gettingStarted/imSourceCodeDeployment)**
|
||||||
|
+ **[Docker 部署指南](https://doc.rentsoft.cn/guides/gettingStarted/dockerCompose)**
|
||||||
```
|
+ **[Kubernetes 部署指南](https://github.com/openimsdk/open-im-server/tree/main/deployments)**
|
||||||
USER=root #无需修改
|
|
||||||
PASSWORD=openIM123 #8位或更多数字和字母的组合,此密码适用于redis、mysql、mongo,以及config/config.yaml中的accessSecret
|
|
||||||
ENDPOINT=http://127.0.0.1:10005 #minio的外部服务IP和端口,或使用域名storage.xx.xx,应用程序必须能够访问此IP和端口或域名,
|
|
||||||
API_URL=http://127.0.0.1:10002/object/ #应用程序必须能够访问此IP和端口或域名,
|
|
||||||
DATA_DIR=./ #指定大磁盘目录
|
|
||||||
```
|
|
||||||
|
|
||||||
1. 部署并启动
|
|
||||||
|
|
||||||
> **注意** 此命令只能执行一次。它会基于 `.env` 中的 `PASSWORD` 变量修改 docker-compose 中的组件密码,并修改 `config/config.yaml` 中的组件密码。如果 `.env` 中的密码发生变化,您需要首先执行 `docker-compose down`;`rm components -rf` 然后执行此命令。
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
make install
|
|
||||||
```
|
|
||||||
|
|
||||||
1. 检查服务
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
make check
|
|
||||||
```
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
</details> <details> <summary>从源码编译</summary>
|
|
||||||
|
|
||||||
您需要 `Go 1.18` 或更高版本,以及 `make`。
|
|
||||||
|
|
||||||
版本详情:https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/version.md
|
|
||||||
|
|
||||||
```
|
|
||||||
# 选择您需要的
|
|
||||||
BRANCH=release-v3.1
|
|
||||||
git clone -b $BRANCH https://github.com/openimsdk/open-im-server openim && export openim=$(pwd)/openim && cd $openim && make build
|
|
||||||
```
|
|
||||||
|
|
||||||
阅读关于 [OpenIM 版本策略](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/version.md)
|
|
||||||
|
|
||||||
使用 `make help` 来查看 OpenIM 支持的指令。
|
|
||||||
|
|
||||||
如图所示,所有服务已成功构建
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
</details> <details> <summary>组件配置说明</summary>
|
|
||||||
|
|
||||||
config/config.yaml 文件为存储组件提供了详细的配置说明。
|
|
||||||
|
|
||||||
- Zookeeper
|
|
||||||
|
|
||||||
- 用于 RPC 服务发现和注册,支持集群。
|
|
||||||
|
|
||||||
```
|
|
||||||
zookeeper:
|
|
||||||
schema: openim #不建议修改
|
|
||||||
address: [ 127.0.0.1:2181 ] #地址
|
|
||||||
username: #用户名
|
|
||||||
password: #密码
|
|
||||||
```
|
|
||||||
|
|
||||||
- MySQL
|
|
||||||
|
|
||||||
- 用于存储用户、关系和群组,支持主从数据库。
|
|
||||||
|
|
||||||
```
|
|
||||||
mysql:
|
|
||||||
address: [ 127.0.0.1:13306 ] #地址
|
|
||||||
username: root #用户名
|
|
||||||
password: openIM123 #密码
|
|
||||||
database: openIM_v2 #不建议修改
|
|
||||||
maxOpenConn: 1000 #最大连接
|
|
||||||
maxIdleConn: 100 #最大空闲连接
|
|
||||||
maxLifeTime: 60 #连接可重用的最大时间(秒)
|
|
||||||
logLevel: 4 #日志级别 1=静音 2=错误 3=警告 4=信息
|
|
||||||
slowThreshold: 500 #慢语句阈值(毫秒)
|
|
||||||
```
|
|
||||||
|
|
||||||
- Mongo
|
|
||||||
|
|
||||||
- 用于存储离线消息,支持 mongo 分片集群。
|
|
||||||
|
|
||||||
```
|
|
||||||
mongo:
|
|
||||||
uri: #如果不为空,则直接使用此值
|
|
||||||
address: [ 127.0.0.1:37017 ] #地址
|
|
||||||
database: openIM #默认 mongo 数据库
|
|
||||||
username: root #用户名
|
|
||||||
password: openIM123 #密码
|
|
||||||
maxPoolSize: 100 #最大连接数
|
|
||||||
```
|
|
||||||
|
|
||||||
- Redis
|
|
||||||
|
|
||||||
- 用于存储消息序列号、最新消息、用户令牌和 mysql 缓存,支持集群部署。
|
|
||||||
|
|
||||||
```
|
|
||||||
redis:
|
|
||||||
clusterMode: false #是否为 redis cluster 模式
|
|
||||||
address: [ 127.0.0.1:16379 ] #地址
|
|
||||||
username: #用户名
|
|
||||||
password: openIM123 #密码
|
|
||||||
```
|
|
||||||
|
|
||||||
- Kafka
|
|
||||||
|
|
||||||
- 用于消息队列,用于消息解耦,支持集群部署。
|
|
||||||
|
|
||||||
```
|
|
||||||
kafka:
|
|
||||||
username: #用户名
|
|
||||||
password: #密码
|
|
||||||
addr: [ 127.0.0.1:9092 ] #地址
|
|
||||||
latestMsgToRedis:
|
|
||||||
topic: "latestMsgToRedis"
|
|
||||||
offlineMsgToMongo:
|
|
||||||
topic: "offlineMsgToMongoMysql"
|
|
||||||
msgToPush:
|
|
||||||
topic: "msqToPush"
|
|
||||||
msgToModify:
|
|
||||||
topic: "msgToModify"
|
|
||||||
consumerGroupID:
|
|
||||||
msgToRedis: redis
|
|
||||||
msgToMongo: mongo
|
|
||||||
msgToMySql: mysql
|
|
||||||
msgToPush: push
|
|
||||||
msgToModify: modify
|
|
||||||
```
|
|
||||||
|
|
||||||
</details> <details> <summary>启动和停止服务</summary>
|
|
||||||
|
|
||||||
启动服务
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
./scripts/start-all.sh;
|
|
||||||
```
|
|
||||||
|
|
||||||
检查服务
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
./scripts/check-all.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
停止服务
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
./scripts/stop-all.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
<details> <summary>开放 IM 端口</summary>
|
|
||||||
|
|
||||||
| TCP 端口 | 描述 | 操作 |
|
|
||||||
| --------- | --------------------------------------------------- | --------------------------------------- |
|
|
||||||
| TCP:10001 | ws 协议,消息端口如消息发送、推送等,用于客户端 SDK | 端口释放或 nginx 反向代理,并关闭防火墙 |
|
|
||||||
| TCP:10002 | api 端口,如用户、朋友、组、消息接口。 | 端口释放或 nginx 反向代理,并关闭防火墙 |
|
|
||||||
| TCP:10005 | 选择 minio 存储时所需 (openIM 默认使用 minio 存储) | 端口释放或 nginx 反向代理,并关闭防火墙 |
|
|
||||||
|
|
||||||
</details> <details> <summary>开放聊天端口</summary>
|
|
||||||
|
|
||||||
- 聊天仓库: https://github.com/OpenIMSDK/chat
|
|
||||||
|
|
||||||
| TCP 端口 | 描述 | 操作 |
|
|
||||||
| --------- | ------------------------ | --------------------------------------- |
|
|
||||||
| TCP:10008 | 业务系统,如注册、登录等 | 端口释放或 nginx 反向代理,并关闭防火墙 |
|
|
||||||
| TCP:10009 | 管理后台,如统计、封禁等 | 端口释放或 nginx 反向代理,并关闭防火墙 |
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## :link: APP 和 OpenIM 之间的关系
|
|
||||||
|
|
||||||
OpenIM 不仅仅是一个开源的即时消息组件,它是您的应用程序生态系统的一个不可分割的部分。查看此图表以了解 AppServer、AppClient、Open-IM-Server 和 Open-IM-SDK 如何互动。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## :building_construction: 总体架构
|
|
||||||
|
|
||||||
深入了解 Open-IM-Server 的功能与我们的架构图。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## :hammer_and_wrench: 开始开发 OpenIM
|
## :hammer_and_wrench: 开始开发 OpenIM
|
||||||
|
|
||||||
OpenIM 我们的目标是建立一个顶级的开源社区。我们有一套标准,在 [Community repository](https://github.com/OpenIMSDK/community) 中。
|
OpenIM 我们的目标是建立一个顶级的开源社区。我们有一套标准,在[社区仓库](https://github.com/OpenIMSDK/community)中。
|
||||||
|
|
||||||
如果您想为这个 Open-IM-Server 仓库做贡献,请阅读我们的 [贡献者文档](https://github.com/openimsdk/open-im-server/blob/main/CONTRIBUTING.md)。
|
如果你想为这个 Open-IM-Server 仓库做贡献,请阅读我们的[贡献者文档](https://github.com/openimsdk/open-im-server/blob/main/CONTRIBUTING.md)。
|
||||||
|
|
||||||
在您开始之前,请确保您的更改是需要的。最好的方法是创建一个 [新的讨论](https://github.com/openimsdk/open-im-server/discussions/new/choose) 或 [Slack 通讯](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q),或者如果您发现一个问题,首先 [报告它](https://github.com/openimsdk/open-im-server/issues/new/choose)。
|
在开始之前,请确保你的更改是有需求的。最好的方法是创建一个[新的讨论](https://github.com/openimsdk/open-im-server/discussions/new/choose) 或 [Slack 通信](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q),或者如果你发现一个问题,首先[报告它](https://github.com/openimsdk/open-im-server/issues/new/choose)。
|
||||||
|
|
||||||
- [代码标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/go_code.md)
|
+ [代码标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/go_code.md)
|
||||||
- [Docker 图像标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/images.md)
|
|
||||||
- [目录标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/directory.md)
|
|
||||||
- [提交标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/commit.md)
|
|
||||||
- [版本控制标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/version.md)
|
|
||||||
- [接口标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/api.md)
|
|
||||||
- [日志标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/)
|
|
||||||
- [错误代码标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/error_code.md)
|
|
||||||
|
|
||||||
## :busts_in_silhouette: 社区
|
+ [Docker 镜像标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/images.md)
|
||||||
|
|
||||||
- 📚 [OpenIM 社区](https://github.com/OpenIMSDK/community)
|
+ [目录标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/directory.md)
|
||||||
- 💕 [OpenIM 兴趣小组](https://github.com/Openim-sigs)
|
|
||||||
- 🚀 [加入我们的 Slack 社区](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)
|
|
||||||
- :eyes: [加入我们的微信群 (微信群)](https://openim-1253691595.cos.ap-nanjing.myqcloud.com/WechatIMG20.jpeg)
|
|
||||||
|
|
||||||
## :calendar: 社区会议
|
+ [提交标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/commit.md)
|
||||||
|
|
||||||
我们希望任何人都可以参与我们的社区并贡献代码,我们提供礼物和奖励,欢迎您每周四晚上加入我们。
|
+ [版本控制标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/version.md)
|
||||||
|
|
||||||
我们的会议在 [OpenIM Slack](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q) 🎯,然后您可以搜索 Open-IM-Server 管道加入。
|
+ [接口标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/interface.md)
|
||||||
|
|
||||||
我们在 [GitHub 讨论](https://github.com/openimsdk/open-im-server/discussions/categories/meeting) 中记下每次 [双周会议](https://github.com/orgs/OpenIMSDK/discussions/categories/meeting) 的笔记,我们的历史会议记录以及会议回放都可在 [Google Docs :bookmark_tabs:](https://docs.google.com/document/d/1nx8MDpuG74NASx081JcCpxPgDITNTpIIos0DS6Vr9GU/edit?usp=sharing) 中找到。
|
+ [OpenIM配置和环境变量设置](https://github.com/openimsdk/open-im-server/blob/main/docs/contrib/environment.md)
|
||||||
|
|
||||||
## :eyes: 谁在使用 OpenIM
|
> **Note**
|
||||||
|
> 针对中国的用户,阅读我们的 [Docker 镜像标准](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/images.md) 以便使用国内 aliyun 的镜像地址。OpenIM 也有针对中国的 gitee 同步仓库,你可以在 [gitee.com](https://gitee.com/openimsdk) 上找到它。
|
||||||
|
|
||||||
查看我们的 [用户案例研究](https://github.com/OpenIMSDK/community/blob/main/ADOPTERS.md) 页面以获取项目用户列表。不要犹豫,留下一个 [📝评论](https://github.com/openimsdk/open-im-server/issues/379) 并分享您的使用案例。
|
## :link: 链接
|
||||||
|
|
||||||
## :page_facing_up: 许可证
|
+ **[完整文档](https://doc.rentsoft.cn/)**
|
||||||
|
+ **[更新日志](https://github.com/openimsdk/open-im-server/blob/main/CHANGELOG.md)**
|
||||||
|
+ **[FAQ](https://github.com/openimsdk/open-im-server/blob/main/FAQ.md)**
|
||||||
|
+ **[代码示例](https://github.com/openimsdk/open-im-server/blob/main/examples)**
|
||||||
|
|
||||||
OpenIM 根据 Apache 2.0 许可证授权。请查看 [LICENSE](https://github.com/openimsdk/open-im-server/tree/main/LICENSE) 以获取完整的许可证文本。
|
## :handshake: 社区
|
||||||
|
|
||||||
OpenIM logo,包括其变体和动画版本,在此存储库 [OpenIM](https://github.com/openimsdk/open-im-server) 下的 [assets/logo](./assets/logo) 和 [assets/logo-gif](./assets/logo-gif) 目录中显示,受版权法保护。
|
+ **[GitHub Discussions](https://github.com/openimsdk/open-im-server/discussions)**
|
||||||
|
+ **[Slack 通信](https://join.slack.com/t/openimsdk/shared_invite/zt-22720d66b-o_FvKxMTGXtcnnnHiMqe9Q)**
|
||||||
|
+ **[GitHub Issues](https://github.com/openimsdk/open-im-server/issues)**
|
||||||
|
|
||||||
## 🔮 感谢我们的贡献者!
|
您可以加入这些平台,讨论问题,提出建议,或分享您的成功故事!
|
||||||
|
|
||||||
<a href="https://github.com/openimsdk/open-im-server/graphs/contributors"> <img src="https://contrib.rocks/image?repo=openimsdk/open-im-server" /> </a>
|
## :writing_hand: 贡献
|
||||||
|
|
||||||
|
我们欢迎任何形式的贡献!请确保在提交 Pull Request 之前阅读我们的[贡献者文档](https://github.com/openimsdk/open-im-server/blob/main/CONTRIBUTING.md)。
|
||||||
|
|
||||||
|
+ **[报告 Bug](https://github.com/openimsdk/open-im-server/issues/new?assignees=&labels=bug&template=bug_report.md&title=)**
|
||||||
|
+ **[提出新特性](https://github.com/openimsdk/open-im-server/issues/new?assignees=&labels=enhancement&template=feature_request.md&title=)**
|
||||||
|
+ **[提交 Pull Request](https://github.com/openimsdk/open-im-server/pulls)**
|
||||||
|
|
||||||
|
感谢您的贡献,我们一起打造一个强大的即时通信解决方案!
|
||||||
|
|
||||||
|
## :closed_book: 许可证
|
||||||
|
|
||||||
|
OpenIMSDK 在 Apache License 2.0 许可下可用。查看[LICENSE 文件](https://github.com/openimsdk/open-im-server/blob/main/LICENSE)了解更多信息。
|
||||||
|
|
||||||
|
## 🔮 Thanks to our contributors!
|
||||||
|
|
||||||
|
<a href="https://github.com/openimsdk/open-im-server/graphs/contributors">
|
||||||
|
<img src="https://contrib.rocks/image?repo=openimsdk/open-im-server" />
|
||||||
|
</a>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://www.openim.online">
|
<a href="https://openim.io">
|
||||||
<img src="./assets/logo-gif/openim-logo.gif" width="60%" height="30%"/>
|
<img src="./assets/logo-gif/openim-logo.gif" width="60%" height="30%"/>
|
||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
@@ -24,7 +24,7 @@
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="./README.md"><b> English </b></a> •
|
<a href="./README.md"><b> English </b></a> •
|
||||||
<a href="./README-zh_CN.md"><b> 简体中文 </b></a> •
|
<a href="./README-zh_CN.md"><b> 简体中文 </b></a> •
|
||||||
<a href="https://www.openim.online/en"><b> Docs </b></a>
|
<a href="https://openim.io/en"><b> Docs </b></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</p>
|
</p>
|
||||||
@@ -126,7 +126,7 @@ It is recommended to use Docker Compose for deployment, which can easily and qui
|
|||||||
<details> <summary>Compile from Source</summary>
|
<details> <summary>Compile from Source</summary>
|
||||||
|
|
||||||
|
|
||||||
Ur need `Go 1.18` or higher version, and `make`.
|
Ur need `Go 1.20` or higher version, and `make`.
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -212,6 +212,8 @@ Before you start, please make sure your changes are in demand. The best for that
|
|||||||
- [Interface Standards](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/api.md)
|
- [Interface Standards](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/api.md)
|
||||||
- [Log Standards](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/logging.md)
|
- [Log Standards](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/logging.md)
|
||||||
- [Error Code Standards](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/error_code.md)
|
- [Error Code Standards](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/error_code.md)
|
||||||
|
- [OpenIM configuration and environment variable Settings](https://github.com/openimsdk/open-im-server/blob/main/docs/contrib/environment.md)
|
||||||
|
|
||||||
|
|
||||||
## :busts_in_silhouette: Community
|
## :busts_in_silhouette: Community
|
||||||
|
|
||||||
|
|||||||
@@ -255,131 +255,6 @@ builds:
|
|||||||
- "6"
|
- "6"
|
||||||
- "7"
|
- "7"
|
||||||
|
|
||||||
- binary: infra
|
|
||||||
id: infra
|
|
||||||
main: ./tools/infra/infra.go
|
|
||||||
goos:
|
|
||||||
- darwin
|
|
||||||
- windows
|
|
||||||
- linux
|
|
||||||
goarch:
|
|
||||||
- s390x
|
|
||||||
- mips64
|
|
||||||
- mips64le
|
|
||||||
- amd64
|
|
||||||
- ppc64le
|
|
||||||
- arm64
|
|
||||||
goarm:
|
|
||||||
- "6"
|
|
||||||
- "7"
|
|
||||||
|
|
||||||
- binary: ncpu
|
|
||||||
id: ncpu
|
|
||||||
main: ./tools/ncpu/ncpu.go
|
|
||||||
goos:
|
|
||||||
- darwin
|
|
||||||
- windows
|
|
||||||
- linux
|
|
||||||
goarch:
|
|
||||||
- s390x
|
|
||||||
- mips64
|
|
||||||
- mips64le
|
|
||||||
- amd64
|
|
||||||
- ppc64le
|
|
||||||
- arm64
|
|
||||||
goarm:
|
|
||||||
- "6"
|
|
||||||
- "7"
|
|
||||||
|
|
||||||
- binary: openim-web
|
|
||||||
id: openim-web
|
|
||||||
main: ./tools/openim-web/openim-web.go
|
|
||||||
goos:
|
|
||||||
- darwin
|
|
||||||
- windows
|
|
||||||
- linux
|
|
||||||
goarch:
|
|
||||||
- s390x
|
|
||||||
- mips64
|
|
||||||
- mips64le
|
|
||||||
- amd64
|
|
||||||
- ppc64le
|
|
||||||
- arm64
|
|
||||||
goarm:
|
|
||||||
- "6"
|
|
||||||
- "7"
|
|
||||||
|
|
||||||
- binary: component
|
|
||||||
id: component
|
|
||||||
main: ./tools/component/component.go
|
|
||||||
goos:
|
|
||||||
- darwin
|
|
||||||
- windows
|
|
||||||
- linux
|
|
||||||
goarch:
|
|
||||||
- s390x
|
|
||||||
- mips64
|
|
||||||
- mips64le
|
|
||||||
- amd64
|
|
||||||
- ppc64le
|
|
||||||
- arm64
|
|
||||||
goarm:
|
|
||||||
- "6"
|
|
||||||
- "7"
|
|
||||||
|
|
||||||
- binary: versionchecker
|
|
||||||
id: versionchecker
|
|
||||||
main: ./tools/versionchecker/versionchecker.go
|
|
||||||
goos:
|
|
||||||
- darwin
|
|
||||||
- windows
|
|
||||||
- linux
|
|
||||||
goarch:
|
|
||||||
- s390x
|
|
||||||
- mips64
|
|
||||||
- mips64le
|
|
||||||
- amd64
|
|
||||||
- ppc64le
|
|
||||||
- arm64
|
|
||||||
goarm:
|
|
||||||
- "6"
|
|
||||||
- "7"
|
|
||||||
|
|
||||||
- binary: changelog
|
|
||||||
id: changelog
|
|
||||||
main: ./tools/changelog/changelog.go
|
|
||||||
goos:
|
|
||||||
- darwin
|
|
||||||
- windows
|
|
||||||
- linux
|
|
||||||
goarch:
|
|
||||||
- s390x
|
|
||||||
- mips64
|
|
||||||
- mips64le
|
|
||||||
- amd64
|
|
||||||
- ppc64le
|
|
||||||
- arm64
|
|
||||||
goarm:
|
|
||||||
- "6"
|
|
||||||
- "7"
|
|
||||||
|
|
||||||
- binary: yamlfmt
|
|
||||||
id: yamlfmt
|
|
||||||
main: ./tools/yamlfmt/yamlfmt.go
|
|
||||||
goos:
|
|
||||||
- darwin
|
|
||||||
- windows
|
|
||||||
- linux
|
|
||||||
goarch:
|
|
||||||
- s390x
|
|
||||||
- mips64
|
|
||||||
- mips64le
|
|
||||||
- amd64
|
|
||||||
- ppc64le
|
|
||||||
- arm64
|
|
||||||
goarm:
|
|
||||||
- "6"
|
|
||||||
- "7"
|
|
||||||
|
|
||||||
# TODO:Need a script, such as the init - release to help binary to find the right directory
|
# TODO:Need a script, such as the init - release to help binary to find the right directory
|
||||||
# ,which can be compiled binary
|
# ,which can be compiled binary
|
||||||
|
|||||||
10
build/images/Dockerfile
Normal file
10
build/images/Dockerfile
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
FROM BASE_IMAGE
|
||||||
|
|
||||||
|
WORKDIR ${SERVER_WORKDIR}
|
||||||
|
|
||||||
|
# Set HTTP proxy
|
||||||
|
ARG BINARY_NAME
|
||||||
|
|
||||||
|
COPY BINARY_NAME ./BINARY_NAME
|
||||||
|
|
||||||
|
ENTRYPOINT ["./BINARY_NAME"]
|
||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,20 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
RUN make build BINS=openim-api
|
RUN make build BINS=openim-api
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-api /usr/bin/openim-api
|
||||||
|
|
||||||
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /usr/bin/openim-api ./openim-api
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10002
|
ENTRYPOINT ["./openim-api"]
|
||||||
EXPOSE 10002
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-api /usr/bin/openim-api
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "openim-api -c $OPENIM_SERVER_CONFIG_NAME --port $PORT"]
|
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
|
||||||
|
|
||||||
COPY openim-api /usr/bin/
|
|
||||||
|
|
||||||
# nosemgrep: dockerfile.security.missing-user.missing-user
|
|
||||||
ENTRYPOINT ["/usr/bin/openim-api"]
|
|
||||||
# nosemgrep: dockerfile.security.missing-user.missing-user
|
|
||||||
CMD ["--help"]
|
|
||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,19 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN go mod download
|
|
||||||
RUN make clean
|
|
||||||
RUN make build BINS=openim-cmdutils
|
RUN make build BINS=openim-cmdutils
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-cmdutils /usr/bin/openim-cmdutils
|
||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder $OPENIM_SERVER_BINDIR/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /usr/bin/openim-cmdutils ./openim-cmdutils
|
||||||
COPY --from=builder ${SERVER_WORKDIR}/config /openim/openim-server/config
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-cmdutils /usr/bin/openim-cmdutils
|
ENTRYPOINT ["./openim-cmdutils"]
|
||||||
|
|
||||||
ENTRYPOINT ["openim-cmdutils"]
|
|
||||||
|
|
||||||
CMD ["--help"]
|
CMD ["--help"]
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,18 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
RUN make build BINS=openim-crontask
|
RUN make build BINS=openim-crontask
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-crontask /usr/bin/openim-crontask
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /usr/bin/openim-crontask ./openim-crontask
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV OPENIM_SERVER_CONFIG_NAME=/openim/openim-server/config
|
ENTRYPOINT ["./openim-crontask"]
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-crontask /usr/bin/openim-crontask
|
|
||||||
|
|
||||||
CMD ["bash", "-c", "openim-crontask -c $OPENIM_SERVER_CONFIG_NAME"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,22 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
RUN make build BINS=openim-msggateway
|
RUN make build BINS=openim-msggateway
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-msggateway /usr/bin/openim-msggateway
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /usr/bin/openim-msggateway ./openim-msggateway
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10140 \
|
ENTRYPOINT ["./openim-msggateway"]
|
||||||
WS_PORT 10001
|
|
||||||
|
|
||||||
EXPOSE 10140
|
|
||||||
EXPOSE 10001
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-msggateway /usr/bin/openim-msggateway
|
|
||||||
|
|
||||||
CMD ["bash", "-c", "openim-msggateway -c $OPENIM_SERVER_CONFIG_NAME --port $PORT --ws_port $WS_PORT"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,16 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
RUN make build BINS=openim-msgtransfer
|
RUN make build BINS=openim-msgtransfer
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-msgtransfer /usr/bin/openim-msgtransfer
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /usr/bin/openim-msgtransfer ./openim-msgtransfer
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-msgtransfer /usr/bin/openim-msgtransfer
|
ENTRYPOINT ["./openim-msgtransfer"]
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then openim-msgtransfer -c $OPENIM_SERVER_CONFIG_NAME --prometheus_port $PROMETHEUS_PORT; else openim-msgtransfer -c $OPENIM_SERVER_CONFIG_NAME; fi"]
|
|
||||||
|
|||||||
@@ -15,14 +15,13 @@
|
|||||||
# OpenIM base image: https://github.com/openim-sigs/openim-base-image
|
# OpenIM base image: https://github.com/openim-sigs/openim-base-image
|
||||||
|
|
||||||
# Set go mod installation source and proxy
|
# Set go mod installation source and proxy
|
||||||
# docker run -e "PORT=10003" -e "PROMETHEUSORT=4321" --network host -it 67ef891ad1ff
|
|
||||||
|
|
||||||
FROM golang:1.20 AS builder
|
FROM golang:1.20 AS builder
|
||||||
|
|
||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -32,21 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
RUN make build BINS=openim-push
|
RUN make build BINS=openim-push
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-push /usr/bin/openim-push
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms
|
COPY --from=builder /usr/bin/openim-push ./openim-push
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10170 \
|
ENTRYPOINT ["./openim-push"]
|
||||||
PROMETHEUS_PORT 20170
|
|
||||||
|
|
||||||
EXPOSE 10170
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-push /usr/bin/openim-push
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then openim-push -c $OPENIM_SERVER_CONFIG_NAME --port $PORT --prometheus_port $PROMETHEUS_PORT; else openim-push -c $OPENIM_SERVER_CONFIG_NAME --port $PORT; fi"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,22 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc-auth
|
RUN make build BINS=openim-rpc-auth
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-auth /usr/bin/openim-rpc-auth
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /usr/bin/openim-rpc-auth ./openim-rpc-auth
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10160 \
|
ENTRYPOINT ["./openim-rpc-auth"]
|
||||||
PROMETHEUS_PORT 20160
|
|
||||||
|
|
||||||
EXPOSE 10160
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-auth /usr/bin/openim-rpc-auth
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-auth --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-auth --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,22 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc-conversation
|
RUN make build BINS=openim-rpc-conversation
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-conversation /usr/bin/openim-rpc-conversation
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /usr/bin/openim-rpc-conversation ./openim-rpc-conversation
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10230 \
|
ENTRYPOINT ["./openim-rpc-conversation"]
|
||||||
PROMETHEUS_PORT 20230
|
|
||||||
|
|
||||||
EXPOSE 10230
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-conversation /usr/bin/openim-rpc-conversation
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-conversation --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-conversation --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,22 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc-friend
|
RUN make build BINS=openim-rpc-friend
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-friend /usr/bin/openim-rpc-friend
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /usr/bin/openim-rpc-friend ./openim-rpc-friend
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10120 \
|
ENTRYPOINT ["./openim-rpc-friend"]
|
||||||
PROMETHEUS_PORT 20120
|
|
||||||
|
|
||||||
EXPOSE 10120
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-friend /usr/bin/openim-rpc-friend
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-friend --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-friend --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,22 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc-group
|
RUN make build BINS=openim-rpc-group
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-group /usr/bin/openim-rpc-group
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /usr/bin/openim-rpc-group ./openim-rpc-group
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10150 \
|
ENTRYPOINT ["./openim-rpc-group"]
|
||||||
PROMETHEUS_PORT 20150
|
|
||||||
|
|
||||||
EXPOSE 10150
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-group /usr/bin/openim-rpc-group
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-group --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-group --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,22 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc-msg
|
RUN make build BINS=openim-rpc-msg
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-msg /usr/bin/openim-rpc-msg
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /usr/bin/openim-rpc-msg ./openim-rpc-msg
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10130 \
|
ENTRYPOINT ["./openim-rpc-msg"]
|
||||||
PROMETHEUS_PORT 20130
|
|
||||||
|
|
||||||
EXPOSE 10130
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-msg /usr/bin/openim-rpc-msg
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-msg --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-msg --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,23 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc-third
|
RUN make build BINS=openim-rpc-third
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-third /usr/bin/openim-rpc-third
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /usr/bin/openim-rpc-third ./openim-rpc-third
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10190 \
|
ENTRYPOINT ["./openim-rpc-third"]
|
||||||
PROMETHEUS_PORT 21301
|
|
||||||
|
|
||||||
EXPOSE 10190
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-third /usr/bin/openim-rpc-third
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-third --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-third --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -31,22 +31,15 @@ RUN go mod download
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN make clean
|
|
||||||
|
|
||||||
RUN make build BINS=openim-rpc-user
|
RUN make build BINS=openim-rpc-user
|
||||||
|
|
||||||
|
RUN cp /openim/openim-server/_output/bin/platforms/$(go env GOOS)/$(go env GOARCH)/openim-rpc-user /usr/bin/openim-rpc-user
|
||||||
|
|
||||||
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/platforms /openim/openim-server/_output/bin/platforms/
|
COPY --from=builder /usr/bin/openim-rpc-user ./openim-rpc-user
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
|
||||||
|
|
||||||
ENV PORT 10110 \
|
ENTRYPOINT ["./openim-rpc-user"]
|
||||||
PROMETHEUS_PORT 20110
|
|
||||||
|
|
||||||
EXPOSE 10110
|
|
||||||
|
|
||||||
RUN mv ${OPENIM_SERVER_BINDIR}/platforms/$(get_os)/$(get_arch)/openim-rpc-user /usr/bin/openim-rpc-user
|
|
||||||
|
|
||||||
ENTRYPOINT ["bash", "-c", "if [[ -n $PROMETHEUS_PORT ]]; then "openim-rpc-user --port $PORT -c $OPENIM_SERVER_CONFIG_NAME" --prometheus_port $PROMETHEUS_PORT; else "openim-rpc-user --port $PORT -c $OPENIM_SERVER_CONFIG_NAME"; fi"]
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -37,7 +37,7 @@ RUN make build BINS=component
|
|||||||
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
# FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
FROM ghcr.io/openim-sigs/openim-bash-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/tools /openim/openim-server/_output/bin/tools/
|
COPY --from=builder /openim/openim-server/_output/bin/tools /openim/openim-server/_output/bin/tools/
|
||||||
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
COPY --from=builder /openim/openim-server/config /openim/openim-server/config
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ FROM golang:1.20 AS builder
|
|||||||
ARG GO111MODULE=on
|
ARG GO111MODULE=on
|
||||||
ARG GOPROXY=https://goproxy.cn,direct
|
ARG GOPROXY=https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
ENV GO111MODULE=$GO111MODULE
|
ENV GO111MODULE=$GO111MODULE
|
||||||
ENV GOPROXY=$GOPROXY
|
ENV GOPROXY=$GOPROXY
|
||||||
@@ -42,7 +42,7 @@ RUN make build BINS=openim-web
|
|||||||
|
|
||||||
FROM ghcr.io/openim-sigs/openim-ubuntu-image:latest
|
FROM ghcr.io/openim-sigs/openim-ubuntu-image:latest
|
||||||
|
|
||||||
WORKDIR /openim/openim-server
|
WORKDIR /openim/openim-server/bin
|
||||||
|
|
||||||
COPY --from=builder /openim/openim-server/_output/bin/tools /openim/openim-server/_output/bin/tools/
|
COPY --from=builder /openim/openim-server/_output/bin/tools /openim/openim-server/_output/bin/tools/
|
||||||
COPY --from=builder /openim/openim-server/dist /openim/openim-server/dist
|
COPY --from=builder /openim/openim-server/dist /openim/openim-server/dist
|
||||||
|
|||||||
@@ -18,16 +18,14 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"strconv"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
_ "net/http/pprof"
|
_ "net/http/pprof"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
"github.com/openimsdk/open-im-server/v3/pkg/common/discovery_register"
|
||||||
|
|
||||||
"github.com/OpenIMSDK/protocol/constant"
|
"github.com/OpenIMSDK/protocol/constant"
|
||||||
"github.com/OpenIMSDK/tools/discoveryregistry"
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
||||||
openkeeper "github.com/OpenIMSDK/tools/discoveryregistry/zookeeper"
|
|
||||||
"github.com/OpenIMSDK/tools/log"
|
"github.com/OpenIMSDK/tools/log"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/internal/api"
|
"github.com/openimsdk/open-im-server/v3/internal/api"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/cmd"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/cmd"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/config"
|
||||||
@@ -39,49 +37,62 @@ func main() {
|
|||||||
apiCmd.AddPortFlag()
|
apiCmd.AddPortFlag()
|
||||||
apiCmd.AddApi(run)
|
apiCmd.AddApi(run)
|
||||||
if err := apiCmd.Execute(); err != nil {
|
if err := apiCmd.Execute(); err != nil {
|
||||||
|
log.ZError(context.Background(), "API command execution failed", err)
|
||||||
panic(err.Error())
|
panic(err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func run(port int) error {
|
func run(port int) error {
|
||||||
|
log.ZInfo(context.Background(), "Openim api port:", "port", port)
|
||||||
|
|
||||||
if port == 0 {
|
if port == 0 {
|
||||||
return fmt.Errorf("port is empty")
|
err := "port is empty"
|
||||||
|
log.ZError(context.Background(), err, nil)
|
||||||
|
|
||||||
|
return fmt.Errorf(err)
|
||||||
}
|
}
|
||||||
rdb, err := cache.NewRedis()
|
rdb, err := cache.NewRedis()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.ZError(context.Background(), "Failed to initialize Redis", err)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
fmt.Println("api start init discov client")
|
log.ZInfo(context.Background(), "api start init discov client")
|
||||||
|
|
||||||
var client discoveryregistry.SvcDiscoveryRegistry
|
var client discoveryregistry.SvcDiscoveryRegistry
|
||||||
client, err = openkeeper.NewClient(config.Config.Zookeeper.ZkAddr, config.Config.Zookeeper.Schema,
|
|
||||||
openkeeper.WithFreq(time.Hour), openkeeper.WithUserNameAndPassword(
|
// Determine whether zk is passed according to whether it is a clustered deployment
|
||||||
config.Config.Zookeeper.Username,
|
client, err = discovery_register.NewDiscoveryRegister(config.Config.Envs.Discovery)
|
||||||
config.Config.Zookeeper.Password,
|
|
||||||
), openkeeper.WithRoundRobin(), openkeeper.WithTimeout(10), openkeeper.WithLogger(log.NewZkLogger()))
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.ZError(context.Background(), "Failed to initialize discovery register", err)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err = client.CreateRpcRootNodes(config.Config.GetServiceNames()); err != nil {
|
if err = client.CreateRpcRootNodes(config.Config.GetServiceNames()); err != nil {
|
||||||
|
log.ZError(context.Background(), "Failed to create RPC root nodes", err)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
fmt.Println("api register public config to discov")
|
log.ZInfo(context.Background(), "api register public config to discov")
|
||||||
if err = client.RegisterConf2Registry(constant.OpenIMCommonConfigKey, config.Config.EncodeConfig()); err != nil {
|
if err = client.RegisterConf2Registry(constant.OpenIMCommonConfigKey, config.Config.EncodeConfig()); err != nil {
|
||||||
|
log.ZError(context.Background(), "Failed to register public config to discov", err)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
fmt.Println("api register public config to discov success")
|
log.ZInfo(context.Background(), "api register public config to discov success")
|
||||||
router := api.NewGinRouter(client, rdb)
|
router := api.NewGinRouter(client, rdb)
|
||||||
fmt.Println("api init router success")
|
log.ZInfo(context.Background(), "api init router success")
|
||||||
var address string
|
var address string
|
||||||
if config.Config.Api.ListenIP != "" {
|
if config.Config.Api.ListenIP != "" {
|
||||||
address = net.JoinHostPort(config.Config.Api.ListenIP, strconv.Itoa(port))
|
address = net.JoinHostPort(config.Config.Api.ListenIP, strconv.Itoa(port))
|
||||||
} else {
|
} else {
|
||||||
address = net.JoinHostPort("0.0.0.0", strconv.Itoa(port))
|
address = net.JoinHostPort("0.0.0.0", strconv.Itoa(port))
|
||||||
}
|
}
|
||||||
fmt.Println("start api server, address: ", address, ", OpenIM version: ", config.Version)
|
log.ZInfo(context.Background(), "start api server", "address", address, "OpenIM version", config.Version)
|
||||||
log.ZInfo(context.Background(), "start server success", "address", address, "version", config.Version)
|
|
||||||
err = router.Run(address)
|
err = router.Run(address)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.ZError(context.Background(), "api run failed ", err, "address", address)
|
log.ZError(context.Background(), "api run failed", err, "address", address)
|
||||||
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
pushCmd := cmd.NewRpcCmd("push")
|
pushCmd := cmd.NewRpcCmd(cmd.RpcPushServer)
|
||||||
pushCmd.AddPortFlag()
|
pushCmd.AddPortFlag()
|
||||||
pushCmd.AddPrometheusPortFlag()
|
pushCmd.AddPrometheusPortFlag()
|
||||||
if err := pushCmd.Exec(); err != nil {
|
if err := pushCmd.Exec(); err != nil {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
authCmd := cmd.NewRpcCmd("auth")
|
authCmd := cmd.NewRpcCmd(cmd.RpcAuthServer)
|
||||||
authCmd.AddPortFlag()
|
authCmd.AddPortFlag()
|
||||||
authCmd.AddPrometheusPortFlag()
|
authCmd.AddPrometheusPortFlag()
|
||||||
if err := authCmd.Exec(); err != nil {
|
if err := authCmd.Exec(); err != nil {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
rpcCmd := cmd.NewRpcCmd("conversation")
|
rpcCmd := cmd.NewRpcCmd(cmd.RpcConversationServer)
|
||||||
rpcCmd.AddPortFlag()
|
rpcCmd.AddPortFlag()
|
||||||
rpcCmd.AddPrometheusPortFlag()
|
rpcCmd.AddPrometheusPortFlag()
|
||||||
if err := rpcCmd.Exec(); err != nil {
|
if err := rpcCmd.Exec(); err != nil {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
rpcCmd := cmd.NewRpcCmd("friend")
|
rpcCmd := cmd.NewRpcCmd(cmd.RpcFriendServer)
|
||||||
rpcCmd.AddPortFlag()
|
rpcCmd.AddPortFlag()
|
||||||
rpcCmd.AddPrometheusPortFlag()
|
rpcCmd.AddPrometheusPortFlag()
|
||||||
if err := rpcCmd.Exec(); err != nil {
|
if err := rpcCmd.Exec(); err != nil {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
rpcCmd := cmd.NewRpcCmd("group")
|
rpcCmd := cmd.NewRpcCmd(cmd.RpcGroupServer)
|
||||||
rpcCmd.AddPortFlag()
|
rpcCmd.AddPortFlag()
|
||||||
rpcCmd.AddPrometheusPortFlag()
|
rpcCmd.AddPrometheusPortFlag()
|
||||||
if err := rpcCmd.Exec(); err != nil {
|
if err := rpcCmd.Exec(); err != nil {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
rpcCmd := cmd.NewRpcCmd("msg")
|
rpcCmd := cmd.NewRpcCmd(cmd.RpcMsgServer)
|
||||||
rpcCmd.AddPortFlag()
|
rpcCmd.AddPortFlag()
|
||||||
rpcCmd.AddPrometheusPortFlag()
|
rpcCmd.AddPrometheusPortFlag()
|
||||||
if err := rpcCmd.Exec(); err != nil {
|
if err := rpcCmd.Exec(); err != nil {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
rpcCmd := cmd.NewRpcCmd("third")
|
rpcCmd := cmd.NewRpcCmd(cmd.RpcThirdServer)
|
||||||
rpcCmd.AddPortFlag()
|
rpcCmd.AddPortFlag()
|
||||||
rpcCmd.AddPrometheusPortFlag()
|
rpcCmd.AddPrometheusPortFlag()
|
||||||
if err := rpcCmd.Exec(); err != nil {
|
if err := rpcCmd.Exec(); err != nil {
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
rpcCmd := cmd.NewRpcCmd("user")
|
rpcCmd := cmd.NewRpcCmd(cmd.RpcUserServer)
|
||||||
rpcCmd.AddPortFlag()
|
rpcCmd.AddPortFlag()
|
||||||
rpcCmd.AddPrometheusPortFlag()
|
rpcCmd.AddPrometheusPortFlag()
|
||||||
if err := rpcCmd.Exec(); err != nil {
|
if err := rpcCmd.Exec(); err != nil {
|
||||||
|
|||||||
@@ -19,6 +19,9 @@
|
|||||||
# --| target: config/config.yaml
|
# --| target: config/config.yaml
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
|
|
||||||
|
envs:
|
||||||
|
discovery: zookeeper
|
||||||
|
|
||||||
###################### Zookeeper ######################
|
###################### Zookeeper ######################
|
||||||
# Zookeeper configuration
|
# Zookeeper configuration
|
||||||
# It's not recommended to modify the schema
|
# It's not recommended to modify the schema
|
||||||
@@ -132,14 +135,14 @@ api:
|
|||||||
# minio.signEndpoint is minio public network address
|
# minio.signEndpoint is minio public network address
|
||||||
object:
|
object:
|
||||||
enable: "minio"
|
enable: "minio"
|
||||||
apiURL: "http://127.0.0.1:10002"
|
apiURL: "http://14.155.86.214:10002"
|
||||||
minio:
|
minio:
|
||||||
bucket: "openim"
|
bucket: "openim"
|
||||||
endpoint: "http://172.28.0.1:10005"
|
endpoint: "http://172.28.0.1:10005"
|
||||||
accessKeyID: "root"
|
accessKeyID: "root"
|
||||||
secretAccessKey: "openIM123"
|
secretAccessKey: "openIM123"
|
||||||
sessionToken: ''
|
sessionToken: ''
|
||||||
signEndpoint: "http://127.0.0.1:10005"
|
signEndpoint: "http://14.155.86.214:10005"
|
||||||
publicRead: false
|
publicRead: false
|
||||||
cos:
|
cos:
|
||||||
bucketURL: https://temp-1252357374.cos.ap-chengdu.myqcloud.com
|
bucketURL: https://temp-1252357374.cos.ap-chengdu.myqcloud.com
|
||||||
@@ -165,7 +168,6 @@ rpcPort:
|
|||||||
openImUserPort: [ 10110 ]
|
openImUserPort: [ 10110 ]
|
||||||
openImFriendPort: [ 10120 ]
|
openImFriendPort: [ 10120 ]
|
||||||
openImMessagePort: [ 10130 ]
|
openImMessagePort: [ 10130 ]
|
||||||
openImMessageGatewayPort: [ 10140 ]
|
|
||||||
openImGroupPort: [ 10150 ]
|
openImGroupPort: [ 10150 ]
|
||||||
openImAuthPort: [ 10160 ]
|
openImAuthPort: [ 10160 ]
|
||||||
openImPushPort: [ 10170 ]
|
openImPushPort: [ 10170 ]
|
||||||
@@ -196,7 +198,7 @@ rpcRegisterName:
|
|||||||
# Whether to output in json format
|
# Whether to output in json format
|
||||||
# Whether to include stack trace in logs
|
# Whether to include stack trace in logs
|
||||||
log:
|
log:
|
||||||
storageLocation: ../../logs/
|
storageLocation: /root/workspaces/openim/Open-IM-Server/logs/
|
||||||
rotationTime: 24
|
rotationTime: 24
|
||||||
remainRotationCount: 2
|
remainRotationCount: 2
|
||||||
remainLogLevel: 6
|
remainLogLevel: 6
|
||||||
@@ -214,6 +216,7 @@ log:
|
|||||||
longConnSvr:
|
longConnSvr:
|
||||||
openImWsPort: [ 10001 ]
|
openImWsPort: [ 10001 ]
|
||||||
websocketMaxConnNum: 100000
|
websocketMaxConnNum: 100000
|
||||||
|
openImMessageGatewayPort: [ 10140 ]
|
||||||
websocketMaxMsgLen: 4096
|
websocketMaxMsgLen: 4096
|
||||||
websocketTimeout: 10
|
websocketTimeout: 10
|
||||||
|
|
||||||
|
|||||||
@@ -1,52 +1,48 @@
|
|||||||
# OpenIM 应用容器化部署指南
|
# OpenIM Application Containerization Deployment Guide
|
||||||
|
|
||||||
OpenIM 支持很多种集群化部署方式,包括但不限于 helm, sealos, kubeam, kubesphere, kubeflow, kuboard, kubespray, k3s, k3d, k3c, k3sup, k3v, k3x
|
OpenIM supports a variety of cluster deployment methods, including but not limited to `helm`, `sealos`, `kustomize`
|
||||||
|
|
||||||
**目前还在开发这个模块,预计 v3.2.0 之前会有一个集群方案。**
|
Various contributors, as well as previous official releases, have provided some referenceable solutions:
|
||||||
|
|
||||||
目前各个贡献者,以及之前的官方有出过一些可以参考的方案:
|
+ [k8s-jenkins Repository](https://github.com/OpenIMSDK/k8s-jenkins)
|
||||||
|
+ [open-im-server-k8s-deploy Repository](https://github.com/openimsdk/open-im-server-k8s-deploy)
|
||||||
|
+ [openim-charts Repository](https://github.com/OpenIMSDK/openim-charts)
|
||||||
|
+ [deploy-openim Repository](https://github.com/showurl/deploy-openim)
|
||||||
|
|
||||||
- https://github.com/OpenIMSDK/k8s-jenkins
|
### Dependency Check
|
||||||
- https://github.com/openimsdk/open-im-server-k8s-deploy
|
|
||||||
- https://github.com/OpenIMSDK/openim-charts
|
|
||||||
- https://github.com/showurl/deploy-openim
|
|
||||||
|
|
||||||
|
|
||||||
### 依赖检查
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Kubernetes: >= 1.16.0-0
|
Kubernetes: >= 1.16.0-0
|
||||||
Helm: >= 3.0
|
Helm: >= 3.0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Minimum Configuration
|
||||||
|
|
||||||
### 最低配置
|
The recommended minimum configuration for a production environment is as follows:
|
||||||
|
|
||||||
建议生产环境的最低配置如下:
|
```yaml
|
||||||
|
|
||||||
```bash
|
|
||||||
CPU: 4
|
CPU: 4
|
||||||
Memory: 8G
|
Memory: 8G
|
||||||
Disk: 100G
|
Disk: 100G
|
||||||
```
|
```
|
||||||
|
|
||||||
## 生成配置文件
|
## Configuration File Generation
|
||||||
|
|
||||||
我们将自动文件全部自动化处理了,所以生成配置文件对于 openim 来说是可选的,但是如果你想要自定义配置,可以参考下面的步骤:
|
We have automated all the files, making the generation of configuration files optional for OpenIM. However, if you desire custom configurations, you can follow the steps below:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ make init
|
$ make init
|
||||||
# 或者是使用脚本:
|
# Alternatively, use script:
|
||||||
# ./scripts/init-config.sh
|
# ./scripts/init-config.sh
|
||||||
```
|
```
|
||||||
此时会帮你在 `deployments/openim/config` 目录下生成配置文件,你可以根据自己的需求进行修改。
|
|
||||||
|
|
||||||
|
At this point, configuration files will be generated under `deployments/openim/config`, which you can modify as per your requirements.
|
||||||
|
|
||||||
## 集群搭建
|
## Cluster Setup
|
||||||
|
|
||||||
如果你已经有了一个 `kubernetes` 集群,或者是你希望自己从头开始搭建一个 `kubernetes` 那么你可以直接跳过这一步。
|
If you already have a `kubernetes` cluster, or if you wish to build a `kubernetes` cluster from scratch, you can skip this step.
|
||||||
|
|
||||||
为了快速开始,我使用 [sealos](https://github.com/labring/sealos) 来快速搭建集群,sealos 底层也是对 kubeadm 的封装:
|
For a quick start, I used [sealos](https://github.com/labring/sealos) to rapidly set up the cluster, with sealos also being a wrapper for kubeadm at its core:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ SEALOS_VERSION=`curl -s https://api.github.com/repos/labring/sealos/releases/latest | grep -oE '"tag_name": "[^"]+"' | head -n1 | cut -d'"' -f4` && \
|
$ SEALOS_VERSION=`curl -s https://api.github.com/repos/labring/sealos/releases/latest | grep -oE '"tag_name": "[^"]+"' | head -n1 | cut -d'"' -f4` && \
|
||||||
@@ -54,21 +50,20 @@ $ SEALOS_VERSION=`curl -s https://api.github.com/repos/labring/sealos/releases/l
|
|||||||
sh -s ${SEALOS_VERSION} labring/sealos
|
sh -s ${SEALOS_VERSION} labring/sealos
|
||||||
```
|
```
|
||||||
|
|
||||||
**支持的版本:**
|
**Supported Versions:**
|
||||||
|
|
||||||
+ docker: `labring/kubernetes-docker`:(v1.24.0~v1.27.0)
|
+ docker: `labring/kubernetes-docker`:(v1.24.0~v1.27.0)
|
||||||
+ containerd: `labring/kubernetes`:(v1.24.0~v1.27.0)
|
+ containerd: `labring/kubernetes`:(v1.24.0~v1.27.0)
|
||||||
|
|
||||||
|
#### Cluster Installation:
|
||||||
|
|
||||||
#### 安装集群:
|
Cluster details are as follows:
|
||||||
|
|
||||||
集群的信息如下:
|
| Hostname | IP Address | System Info |
|
||||||
|
| -------- | ---------- | ------------------------------------------------------------ |
|
||||||
| 机器名 | IP地址 | 系统信息 |
|
| master01 | 10.0.0.9 | `Linux VM-0-9-ubuntu 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux` |
|
||||||
|---------|-----------------|------------------------------------------------------------------------------------------------------------|
|
| node01 | 10.0.0.4 | Similar to master01 |
|
||||||
| master01| 10.0.0.9 | Linux VM-0-9-ubuntu 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
|
| node02 | 10.0.0.10 | Similar to master01 |
|
||||||
| node01 | 10.0.0.4 | Linux VM-0-9-ubuntu 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
|
|
||||||
| node02 | 10.0.0.10 | Linux VM-0-9-ubuntu 5.15.0-76-generic #83-Ubuntu SMP Thu Jun 15 19:16:32 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux |
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ export CLUSTER_USERNAME=ubuntu
|
$ export CLUSTER_USERNAME=ubuntu
|
||||||
@@ -80,28 +75,67 @@ $ sudo sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:
|
|||||||
-p "$CLUSTER_PASSWORD"
|
-p "$CLUSTER_PASSWORD"
|
||||||
```
|
```
|
||||||
|
|
||||||
### 安装 helm
|
> **Node** Uninstallation method: using `kubeadm` for uninstallation does not remove `etcd` and `cni` related configurations. Manual clearance or using `sealos` for uninstallation is needed.
|
||||||
|
>
|
||||||
|
> ```bash
|
||||||
|
> $ sealos reset
|
||||||
|
> ```
|
||||||
|
|
||||||
helm通过打包的方式,支持发布的版本管理和控制,很大程度上简化了Kubernetes应用的部署和管理。
|
If you are local, you can also use Kind and Minikube to test, for example, using Kind:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sGO111MODULE="on" go get sigs.k8s.io/kind@v0.11.1
|
||||||
|
$ skind create cluster
|
||||||
|
```
|
||||||
|
|
||||||
**使用脚本:**
|
### Installing helm
|
||||||
|
|
||||||
|
Helm simplifies the deployment and management of Kubernetes applications to a large extent by offering version control and release management through packaging.
|
||||||
|
|
||||||
|
**Using Script:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
||||||
```
|
```
|
||||||
|
|
||||||
**添加仓库:**
|
**Adding Repository:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ helm repo add brigade https://openimsdk.github.io/openim-charts
|
$ helm repo add brigade https://openimsdk.github.io/openim-charts
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### OpenIM Image Strategy
|
||||||
|
|
||||||
### 容器化安装
|
Automated offerings include aliyun, ghcr, docker hub: [Image Documentation](https://github.com/openimsdk/open-im-server/blob/main/docs/conversions/images.md)
|
||||||
|
|
||||||
具体安装步骤如下:
|
**Local Test Build Method:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ make image
|
||||||
|
```
|
||||||
|
|
||||||
|
> This command assists in quickly building the required images locally. For a detailed build strategy, refer to the [Build Documentation](https://github.com/openimsdk/open-im-server/blob/main/build/README.md).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Explore our Helm-Charts repository and read through: [Helm-Charts Repository](https://github.com/openimsdk/helm-charts)
|
||||||
|
|
||||||
|
|
||||||
|
**Use Helmfile:**
|
||||||
|
|
||||||
### Helm安装
|
```bash
|
||||||
|
GO111MODULE=on go get github.com/roboll/helmfile@latest
|
||||||
|
```
|
||||||
|
|
||||||
|
**Install OpenIM:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir ./charts/generated-configs
|
||||||
|
../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/openim.yaml > ./charts/generated-configs/config.yaml
|
||||||
|
cp ../config/notification.yaml ./charts/generated-configs/notification.yaml
|
||||||
|
../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/helm-image.yaml > ./charts/generated-configs/helm-image.yaml
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helmfile apply
|
||||||
|
```
|
||||||
94
deployments/charts/helmfile.yaml
Normal file
94
deployments/charts/helmfile.yaml
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
repositories:
|
||||||
|
- name: stable
|
||||||
|
url: https://charts.helm.sh/stable
|
||||||
|
|
||||||
|
releases:
|
||||||
|
- name: openim-api
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-api
|
||||||
|
values:
|
||||||
|
- openim-api/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
- name: openim-msggateway
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-msggateway
|
||||||
|
values:
|
||||||
|
- openim-msggateway/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
- name: openim-msgtransfer
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-msgtransfer
|
||||||
|
values:
|
||||||
|
- openim-msgtransfer/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
- name: openim-push
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-push
|
||||||
|
values:
|
||||||
|
- openim-push/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
|
||||||
|
- name: openim-rpc-auth
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-rpc-auth
|
||||||
|
values:
|
||||||
|
- openim-rpc-auth/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
- name: openim-rpc-conversation
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-rpc-conversation
|
||||||
|
values:
|
||||||
|
- openim-rpc-conversation/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
- name: openim-rpc-friend
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-rpc-friend
|
||||||
|
values:
|
||||||
|
- openim-rpc-friend/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
- name: openim-rpc-group
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-rpc-group
|
||||||
|
values:
|
||||||
|
- openim-rpc-group/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
- name: openim-rpc-msg
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-rpc-msg
|
||||||
|
values:
|
||||||
|
- openim-rpc-msg/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
- name: openim-rpc-third
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-rpc-third
|
||||||
|
values:
|
||||||
|
- openim-rpc-third/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
|
- name: openim-rpc-user
|
||||||
|
namespace: openim
|
||||||
|
chart: ./openim-rpc-user
|
||||||
|
values:
|
||||||
|
- openim-rpc-user/values.yaml
|
||||||
|
- generated-configs/helm-image.yaml
|
||||||
|
- generated-configs/config.yaml
|
||||||
|
- generated-configs/notification.yaml
|
||||||
39
deployments/charts/openim-api/Chart.yaml
Normal file
39
deployments/charts/openim-api/Chart.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: openim-api
|
||||||
|
description: A OpenIM Api Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
|
icon: https://raw.githubusercontent.com/openimsdk/open-im-server/main/assets/openim-logo-gradient.svg
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- name: "OpenIM"
|
||||||
|
url: "https://github.com/openimsdk"
|
||||||
|
|
||||||
|
keywords:
|
||||||
|
- openim
|
||||||
|
- im
|
||||||
|
- chat
|
||||||
|
|
||||||
|
sources:
|
||||||
|
- "https://github.com/openimsdk/open-im-server"
|
||||||
|
- "https://github.com/openimsdk/helm-charts"
|
||||||
@@ -6,16 +6,16 @@
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- else if contains "NodePort" .Values.service.type }}
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-server.fullname" . }})
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-api.fullname" . }})
|
||||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
echo http://$NODE_IP:$NODE_PORT
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-server.fullname" . }}'
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-api.fullname" . }}'
|
||||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-server.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-api.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-server.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-api.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{{/*
|
{{/*
|
||||||
Expand the name of the chart.
|
Expand the name of the chart.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-server.name" -}}
|
{{- define "openim-api.name" -}}
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ Create a default fully qualified app name.
|
|||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
If release name contains chart name it will be used as a full name.
|
If release name contains chart name it will be used as a full name.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-server.fullname" -}}
|
{{- define "openim-api.fullname" -}}
|
||||||
{{- if .Values.fullnameOverride }}
|
{{- if .Values.fullnameOverride }}
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
@@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name.
|
|||||||
{{/*
|
{{/*
|
||||||
Create chart name and version as used by the chart label.
|
Create chart name and version as used by the chart label.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-server.chart" -}}
|
{{- define "openim-api.chart" -}}
|
||||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Common labels
|
Common labels
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-server.labels" -}}
|
{{- define "openim-api.labels" -}}
|
||||||
helm.sh/chart: {{ include "openim-server.chart" . }}
|
helm.sh/chart: {{ include "openim-api.chart" . }}
|
||||||
{{ include "openim-server.selectorLabels" . }}
|
{{ include "openim-api.selectorLabels" . }}
|
||||||
{{- if .Chart.AppVersion }}
|
{{- if .Chart.AppVersion }}
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -45,17 +45,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|||||||
{{/*
|
{{/*
|
||||||
Selector labels
|
Selector labels
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-server.selectorLabels" -}}
|
{{- define "openim-api.selectorLabels" -}}
|
||||||
app.kubernetes.io/name: {{ include "openim-server.name" . }}
|
app.kubernetes.io/name: {{ include "openim-api.name" . }}
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Create the name of the service account to use
|
Create the name of the service account to use
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-server.serviceAccountName" -}}
|
{{- define "openim-api.serviceAccountName" -}}
|
||||||
{{- if .Values.serviceAccount.create }}
|
{{- if .Values.serviceAccount.create }}
|
||||||
{{- default (include "openim-server.fullname" .) .Values.serviceAccount.name }}
|
{{- default (include "openim-api.fullname" .) .Values.serviceAccount.name }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
{{- default "default" .Values.serviceAccount.name }}
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
13
deployments/charts/openim-api/templates/app-cm.yaml
Normal file
13
deployments/charts/openim-api/templates/app-cm.yaml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: openim-cm
|
||||||
|
data:
|
||||||
|
config.yaml: |+
|
||||||
|
{{- with .Values.config }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
notification.yaml: |+
|
||||||
|
{{- with .Values.notification }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
72
deployments/charts/openim-api/templates/deployment.yaml
Normal file
72
deployments/charts/openim-api/templates/deployment.yaml
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-api.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-api.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "openim-api.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-api.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "openim-api.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
#livenessProbe:
|
||||||
|
# httpGet:
|
||||||
|
# path: /
|
||||||
|
# port: http
|
||||||
|
#readinessProbe:
|
||||||
|
# httpGet:
|
||||||
|
# path: /
|
||||||
|
# port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /oepnim/openim-server/config/config.yaml
|
||||||
|
name: config
|
||||||
|
subPath: config.yaml
|
||||||
|
- mountPath: /oepnim/openim-server/config/notification.yaml
|
||||||
|
name: config
|
||||||
|
subPath: notification.yaml
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: openim-cm
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
@@ -1,29 +1,15 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
{{- if .Values.autoscaling.enabled }}
|
{{- if .Values.autoscaling.enabled }}
|
||||||
apiVersion: autoscaling/v2beta1
|
apiVersion: autoscaling/v2beta1
|
||||||
kind: HorizontalPodAutoscaler
|
kind: HorizontalPodAutoscaler
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "openim-chat.fullname" . }}
|
name: {{ include "openim-api.fullname" . }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "openim-chat.labels" . | nindent 4 }}
|
{{- include "openim-api.labels" . | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
scaleTargetRef:
|
scaleTargetRef:
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
name: {{ include "openim-chat.fullname" . }}
|
name: {{ include "openim-api.fullname" . }}
|
||||||
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||||
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||||
metrics:
|
metrics:
|
||||||
@@ -1,19 +1,5 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
{{- if .Values.ingress.enabled -}}
|
{{- if .Values.ingress.enabled -}}
|
||||||
{{- $fullName := include "openim-chat.fullname" . -}}
|
{{- $fullName := include "openim-api.fullname" . -}}
|
||||||
{{- $svcPort := .Values.service.port -}}
|
{{- $svcPort := .Values.service.port -}}
|
||||||
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
@@ -31,7 +17,7 @@ kind: Ingress
|
|||||||
metadata:
|
metadata:
|
||||||
name: {{ $fullName }}
|
name: {{ $fullName }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "openim-chat.labels" . | nindent 4 }}
|
{{- include "openim-api.labels" . | nindent 4 }}
|
||||||
{{- with .Values.ingress.annotations }}
|
{{- with .Values.ingress.annotations }}
|
||||||
annotations:
|
annotations:
|
||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
15
deployments/charts/openim-api/templates/service.yaml
Normal file
15
deployments/charts/openim-api/templates/service.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-api.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-api.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "openim-api.selectorLabels" . | nindent 4 }}
|
||||||
12
deployments/charts/openim-api/templates/serviceaccount.yaml
Normal file
12
deployments/charts/openim-api/templates/serviceaccount.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-api.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-api.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
86
deployments/charts/openim-api/values.yaml
Normal file
86
deployments/charts/openim-api/values.yaml
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
# Default values for openim-api.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/openimsdk/openim-api
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: false
|
||||||
|
# Annotations to add to the service account
|
||||||
|
annotations: {}
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: "nginx"
|
||||||
|
annotations:
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
autoscaling:
|
||||||
|
enabled: false
|
||||||
|
minReplicas: 1
|
||||||
|
maxReplicas: 100
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
# targetMemoryUtilizationPercentage: 80
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
notification:
|
||||||
|
|
||||||
|
config:
|
||||||
@@ -1,19 +1,5 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
name: openim-chat
|
name: openim-msggateway
|
||||||
description: A Helm chart for Kubernetes
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
# A chart can be either an 'application' or a 'library' chart.
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
@@ -36,3 +22,18 @@ version: 0.1.0
|
|||||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
# It is recommended to use it with quotes.
|
# It is recommended to use it with quotes.
|
||||||
appVersion: "1.16.0"
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
|
icon: https://raw.githubusercontent.com/openimsdk/open-im-server/main/assets/openim-logo-gradient.svg
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- name: "OpenIM"
|
||||||
|
url: "https://github.com/openimsdk"
|
||||||
|
|
||||||
|
keywords:
|
||||||
|
- openim
|
||||||
|
- im
|
||||||
|
- chat
|
||||||
|
|
||||||
|
sources:
|
||||||
|
- "https://github.com/openimsdk/open-im-server"
|
||||||
|
- "https://github.com/openimsdk/helm-charts"
|
||||||
22
deployments/charts/openim-msggateway/templates/NOTES.txt
Normal file
22
deployments/charts/openim-msggateway/templates/NOTES.txt
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
{{- range .paths }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-msggateway.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-msggateway.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-msggateway.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-msggateway.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
||||||
62
deployments/charts/openim-msggateway/templates/_helpers.tpl
Normal file
62
deployments/charts/openim-msggateway/templates/_helpers.tpl
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msggateway.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msggateway.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msggateway.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msggateway.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "openim-msggateway.chart" . }}
|
||||||
|
{{ include "openim-msggateway.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msggateway.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "openim-msggateway.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msggateway.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "openim-msggateway.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,75 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-msggateway.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msggateway.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "openim-msggateway.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msggateway.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "openim-msggateway.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
- name: rpc
|
||||||
|
containerPort: 88
|
||||||
|
protocol: TCP
|
||||||
|
#livenessProbe:
|
||||||
|
# httpGet:
|
||||||
|
# path: /
|
||||||
|
# port: http
|
||||||
|
#readinessProbe:
|
||||||
|
# httpGet:
|
||||||
|
# path: /
|
||||||
|
# port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /oepnim/openim-server/config/config.yaml
|
||||||
|
name: config
|
||||||
|
subPath: config.yaml
|
||||||
|
- mountPath: /oepnim/openim-server/config/notification.yaml
|
||||||
|
name: config
|
||||||
|
subPath: notification.yaml
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: openim-cm
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
@@ -1,29 +1,15 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
{{- if .Values.autoscaling.enabled }}
|
{{- if .Values.autoscaling.enabled }}
|
||||||
apiVersion: autoscaling/v2beta1
|
apiVersion: autoscaling/v2beta1
|
||||||
kind: HorizontalPodAutoscaler
|
kind: HorizontalPodAutoscaler
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "openim-server.fullname" . }}
|
name: {{ include "openim-msggateway.fullname" . }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "openim-server.labels" . | nindent 4 }}
|
{{- include "openim-msggateway.labels" . | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
scaleTargetRef:
|
scaleTargetRef:
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
name: {{ include "openim-server.fullname" . }}
|
name: {{ include "openim-msggateway.fullname" . }}
|
||||||
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||||
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||||
metrics:
|
metrics:
|
||||||
@@ -1,19 +1,5 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
{{- if .Values.ingress.enabled -}}
|
{{- if .Values.ingress.enabled -}}
|
||||||
{{- $fullName := include "openim-server.fullname" . -}}
|
{{- $fullName := include "openim-msggateway.fullname" . -}}
|
||||||
{{- $svcPort := .Values.service.port -}}
|
{{- $svcPort := .Values.service.port -}}
|
||||||
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
@@ -31,7 +17,7 @@ kind: Ingress
|
|||||||
metadata:
|
metadata:
|
||||||
name: {{ $fullName }}
|
name: {{ $fullName }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "openim-server.labels" . | nindent 4 }}
|
{{- include "openim-msggateway.labels" . | nindent 4 }}
|
||||||
{{- with .Values.ingress.annotations }}
|
{{- with .Values.ingress.annotations }}
|
||||||
annotations:
|
annotations:
|
||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
19
deployments/charts/openim-msggateway/templates/service.yaml
Normal file
19
deployments/charts/openim-msggateway/templates/service.yaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-msggateway.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msggateway.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
- port: 88
|
||||||
|
targetPort: rpc
|
||||||
|
protocol: TCP
|
||||||
|
name: rpc
|
||||||
|
selector:
|
||||||
|
{{- include "openim-msggateway.selectorLabels" . | nindent 4 }}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-msggateway.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msggateway.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
82
deployments/charts/openim-msggateway/values.yaml
Normal file
82
deployments/charts/openim-msggateway/values.yaml
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# Default values for openim-msggateway.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/openimsdk/openim-msggateway
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: false
|
||||||
|
# Annotations to add to the service account
|
||||||
|
annotations: {}
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: "nginx"
|
||||||
|
annotations:
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
autoscaling:
|
||||||
|
enabled: false
|
||||||
|
minReplicas: 1
|
||||||
|
maxReplicas: 100
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
# targetMemoryUtilizationPercentage: 80
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
23
deployments/charts/openim-msgtransfer/.helmignore
Normal file
23
deployments/charts/openim-msgtransfer/.helmignore
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
||||||
@@ -1,19 +1,5 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
name: openim-server
|
name: openim-msgtransfer
|
||||||
description: A Helm chart for Kubernetes
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
# A chart can be either an 'application' or a 'library' chart.
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
@@ -35,7 +21,7 @@ version: 0.1.0
|
|||||||
# incremented each time you make changes to the application. Versions are not expected to
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
# It is recommended to use it with quotes.
|
# It is recommended to use it with quotes.
|
||||||
appVersion: "default"
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
icon: https://raw.githubusercontent.com/openimsdk/open-im-server/main/assets/openim-logo-gradient.svg
|
icon: https://raw.githubusercontent.com/openimsdk/open-im-server/main/assets/openim-logo-gradient.svg
|
||||||
|
|
||||||
@@ -50,25 +36,4 @@ keywords:
|
|||||||
|
|
||||||
sources:
|
sources:
|
||||||
- "https://github.com/openimsdk/open-im-server"
|
- "https://github.com/openimsdk/open-im-server"
|
||||||
- "https://github.com/openimsdk/openim-sdk-core"
|
- "https://github.com/openimsdk/helm-charts"
|
||||||
- "https://github.com/openimsdk/openim-docker"
|
|
||||||
|
|
||||||
dependencies:
|
|
||||||
- name: mysql
|
|
||||||
version: 8.0.25
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
- name: redis
|
|
||||||
version: 14.6.1
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
- name: mongodb
|
|
||||||
version: 10.1.0
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
- name: kafka
|
|
||||||
version: 14.1.0
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
- name: minio
|
|
||||||
version: 8.1.2
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
- name: zookeeper
|
|
||||||
version: 5.17.0
|
|
||||||
repository: https://charts.bitnami.com/bitnami
|
|
||||||
22
deployments/charts/openim-msgtransfer/templates/NOTES.txt
Normal file
22
deployments/charts/openim-msgtransfer/templates/NOTES.txt
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
{{- range .paths }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-msgtransfer.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-msgtransfer.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-msgtransfer.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-msgtransfer.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
||||||
62
deployments/charts/openim-msgtransfer/templates/_helpers.tpl
Normal file
62
deployments/charts/openim-msgtransfer/templates/_helpers.tpl
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msgtransfer.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msgtransfer.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msgtransfer.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msgtransfer.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "openim-msgtransfer.chart" . }}
|
||||||
|
{{ include "openim-msgtransfer.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msgtransfer.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "openim-msgtransfer.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-msgtransfer.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "openim-msgtransfer.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-msgtransfer.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msgtransfer.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "openim-msgtransfer.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msgtransfer.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "openim-msgtransfer.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
#livenessProbe:
|
||||||
|
# httpGet:
|
||||||
|
# path: /
|
||||||
|
# port: http
|
||||||
|
#readinessProbe:
|
||||||
|
# httpGet:
|
||||||
|
# path: /
|
||||||
|
# port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /oepnim/openim-server/config/config.yaml
|
||||||
|
name: config
|
||||||
|
subPath: config.yaml
|
||||||
|
- mountPath: /oepnim/openim-server/config/notification.yaml
|
||||||
|
name: config
|
||||||
|
subPath: notification.yaml
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: openim-cm
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
28
deployments/charts/openim-msgtransfer/templates/hpa.yaml
Normal file
28
deployments/charts/openim-msgtransfer/templates/hpa.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{{- if .Values.autoscaling.enabled }}
|
||||||
|
apiVersion: autoscaling/v2beta1
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-msgtransfer.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msgtransfer.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{ include "openim-msgtransfer.fullname" . }}
|
||||||
|
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||||
|
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||||
|
metrics:
|
||||||
|
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
61
deployments/charts/openim-msgtransfer/templates/ingress.yaml
Normal file
61
deployments/charts/openim-msgtransfer/templates/ingress.yaml
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
{{- $fullName := include "openim-msgtransfer.fullname" . -}}
|
||||||
|
{{- $svcPort := .Values.service.port -}}
|
||||||
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
|
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msgtransfer.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ .path }}
|
||||||
|
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
pathType: {{ .pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend:
|
||||||
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $svcPort }}
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $svcPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
15
deployments/charts/openim-msgtransfer/templates/service.yaml
Normal file
15
deployments/charts/openim-msgtransfer/templates/service.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-msgtransfer.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msgtransfer.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "openim-msgtransfer.selectorLabels" . | nindent 4 }}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-msgtransfer.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-msgtransfer.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -1,25 +1,11 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
# Default values for openim-msgtransfer.
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# Default values for openim-chat.
|
|
||||||
# This is a YAML-formatted file.
|
# This is a YAML-formatted file.
|
||||||
# Declare variables to be passed into your templates.
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
|
|
||||||
image:
|
image:
|
||||||
repository: nginx
|
repository: ghcr.io/openimsdk/openim-msgtransfer
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
# Overrides the image tag whose default is the chart appVersion.
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
tag: ""
|
tag: ""
|
||||||
@@ -30,7 +16,7 @@ fullnameOverride: ""
|
|||||||
|
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
# Specifies whether a service account should be created
|
# Specifies whether a service account should be created
|
||||||
create: true
|
create: false
|
||||||
# Annotations to add to the service account
|
# Annotations to add to the service account
|
||||||
annotations: {}
|
annotations: {}
|
||||||
# The name of the service account to use.
|
# The name of the service account to use.
|
||||||
23
deployments/charts/openim-push/.helmignore
Normal file
23
deployments/charts/openim-push/.helmignore
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
||||||
39
deployments/charts/openim-push/Chart.yaml
Normal file
39
deployments/charts/openim-push/Chart.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: openim-push
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
|
icon: https://raw.githubusercontent.com/openimsdk/open-im-server/main/assets/openim-logo-gradient.svg
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- name: "OpenIM"
|
||||||
|
url: "https://github.com/openimsdk"
|
||||||
|
|
||||||
|
keywords:
|
||||||
|
- openim
|
||||||
|
- im
|
||||||
|
- chat
|
||||||
|
|
||||||
|
sources:
|
||||||
|
- "https://github.com/openimsdk/open-im-server"
|
||||||
|
- "https://github.com/openimsdk/helm-charts"
|
||||||
@@ -6,16 +6,16 @@
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- else if contains "NodePort" .Values.service.type }}
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-chat.fullname" . }})
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-push.fullname" . }})
|
||||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
echo http://$NODE_IP:$NODE_PORT
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-chat.fullname" . }}'
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-push.fullname" . }}'
|
||||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-chat.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-push.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-chat.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-push.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
{{/*
|
{{/*
|
||||||
Expand the name of the chart.
|
Expand the name of the chart.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-chat.name" -}}
|
{{- define "openim-push.name" -}}
|
||||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
@@ -10,7 +10,7 @@ Create a default fully qualified app name.
|
|||||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
If release name contains chart name it will be used as a full name.
|
If release name contains chart name it will be used as a full name.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-chat.fullname" -}}
|
{{- define "openim-push.fullname" -}}
|
||||||
{{- if .Values.fullnameOverride }}
|
{{- if .Values.fullnameOverride }}
|
||||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
@@ -26,16 +26,16 @@ If release name contains chart name it will be used as a full name.
|
|||||||
{{/*
|
{{/*
|
||||||
Create chart name and version as used by the chart label.
|
Create chart name and version as used by the chart label.
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-chat.chart" -}}
|
{{- define "openim-push.chart" -}}
|
||||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Common labels
|
Common labels
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-chat.labels" -}}
|
{{- define "openim-push.labels" -}}
|
||||||
helm.sh/chart: {{ include "openim-chat.chart" . }}
|
helm.sh/chart: {{ include "openim-push.chart" . }}
|
||||||
{{ include "openim-chat.selectorLabels" . }}
|
{{ include "openim-push.selectorLabels" . }}
|
||||||
{{- if .Chart.AppVersion }}
|
{{- if .Chart.AppVersion }}
|
||||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -45,17 +45,17 @@ app.kubernetes.io/managed-by: {{ .Release.Service }}
|
|||||||
{{/*
|
{{/*
|
||||||
Selector labels
|
Selector labels
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-chat.selectorLabels" -}}
|
{{- define "openim-push.selectorLabels" -}}
|
||||||
app.kubernetes.io/name: {{ include "openim-chat.name" . }}
|
app.kubernetes.io/name: {{ include "openim-push.name" . }}
|
||||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
{{/*
|
{{/*
|
||||||
Create the name of the service account to use
|
Create the name of the service account to use
|
||||||
*/}}
|
*/}}
|
||||||
{{- define "openim-chat.serviceAccountName" -}}
|
{{- define "openim-push.serviceAccountName" -}}
|
||||||
{{- if .Values.serviceAccount.create }}
|
{{- if .Values.serviceAccount.create }}
|
||||||
{{- default (include "openim-chat.fullname" .) .Values.serviceAccount.name }}
|
{{- default (include "openim-push.fullname" .) .Values.serviceAccount.name }}
|
||||||
{{- else }}
|
{{- else }}
|
||||||
{{- default "default" .Values.serviceAccount.name }}
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
@@ -1,30 +1,16 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "openim-chat.fullname" . }}
|
name: {{ include "openim-push.fullname" . }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "openim-chat.labels" . | nindent 4 }}
|
{{- include "openim-push.labels" . | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
{{- if not .Values.autoscaling.enabled }}
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
replicas: {{ .Values.replicaCount }}
|
replicas: {{ .Values.replicaCount }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
{{- include "openim-chat.selectorLabels" . | nindent 6 }}
|
{{- include "openim-push.selectorLabels" . | nindent 6 }}
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
{{- with .Values.podAnnotations }}
|
{{- with .Values.podAnnotations }}
|
||||||
@@ -32,13 +18,13 @@ spec:
|
|||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "openim-chat.selectorLabels" . | nindent 8 }}
|
{{- include "openim-push.selectorLabels" . | nindent 8 }}
|
||||||
spec:
|
spec:
|
||||||
{{- with .Values.imagePullSecrets }}
|
{{- with .Values.imagePullSecrets }}
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
serviceAccountName: {{ include "openim-chat.serviceAccountName" . }}
|
serviceAccountName: {{ include "openim-push.serviceAccountName" . }}
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
containers:
|
containers:
|
||||||
@@ -51,16 +37,27 @@ spec:
|
|||||||
- name: http
|
- name: http
|
||||||
containerPort: 80
|
containerPort: 80
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
livenessProbe:
|
#livenessProbe:
|
||||||
httpGet:
|
# httpGet:
|
||||||
path: /
|
# path: /
|
||||||
port: http
|
# port: http
|
||||||
readinessProbe:
|
#readinessProbe:
|
||||||
httpGet:
|
# httpGet:
|
||||||
path: /
|
# path: /
|
||||||
port: http
|
# port: http
|
||||||
resources:
|
resources:
|
||||||
{{- toYaml .Values.resources | nindent 12 }}
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /oepnim/openim-server/config/config.yaml
|
||||||
|
name: config
|
||||||
|
subPath: config.yaml
|
||||||
|
- mountPath: /oepnim/openim-server/config/notification.yaml
|
||||||
|
name: config
|
||||||
|
subPath: notification.yaml
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: openim-cm
|
||||||
{{- with .Values.nodeSelector }}
|
{{- with .Values.nodeSelector }}
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
28
deployments/charts/openim-push/templates/hpa.yaml
Normal file
28
deployments/charts/openim-push/templates/hpa.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{{- if .Values.autoscaling.enabled }}
|
||||||
|
apiVersion: autoscaling/v2beta1
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-push.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-push.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{ include "openim-push.fullname" . }}
|
||||||
|
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||||
|
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||||
|
metrics:
|
||||||
|
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
61
deployments/charts/openim-push/templates/ingress.yaml
Normal file
61
deployments/charts/openim-push/templates/ingress.yaml
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
{{- $fullName := include "openim-push.fullname" . -}}
|
||||||
|
{{- $svcPort := .Values.service.port -}}
|
||||||
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
|
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-push.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ .path }}
|
||||||
|
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
pathType: {{ .pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend:
|
||||||
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $svcPort }}
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $svcPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
15
deployments/charts/openim-push/templates/service.yaml
Normal file
15
deployments/charts/openim-push/templates/service.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-push.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-push.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "openim-push.selectorLabels" . | nindent 4 }}
|
||||||
12
deployments/charts/openim-push/templates/serviceaccount.yaml
Normal file
12
deployments/charts/openim-push/templates/serviceaccount.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-push.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-push.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -1,25 +1,11 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
# Default values for openim-push.
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
# Default values for openim-server.
|
|
||||||
# This is a YAML-formatted file.
|
# This is a YAML-formatted file.
|
||||||
# Declare variables to be passed into your templates.
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
replicaCount: 1
|
replicaCount: 1
|
||||||
|
|
||||||
image:
|
image:
|
||||||
repository: nginx
|
repository: ghcr.io/openimsdk/openim-push
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
# Overrides the image tag whose default is the chart appVersion.
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
tag: ""
|
tag: ""
|
||||||
@@ -30,7 +16,7 @@ fullnameOverride: ""
|
|||||||
|
|
||||||
serviceAccount:
|
serviceAccount:
|
||||||
# Specifies whether a service account should be created
|
# Specifies whether a service account should be created
|
||||||
create: true
|
create: false
|
||||||
# Annotations to add to the service account
|
# Annotations to add to the service account
|
||||||
annotations: {}
|
annotations: {}
|
||||||
# The name of the service account to use.
|
# The name of the service account to use.
|
||||||
23
deployments/charts/openim-rpc-auth/.helmignore
Normal file
23
deployments/charts/openim-rpc-auth/.helmignore
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
||||||
39
deployments/charts/openim-rpc-auth/Chart.yaml
Normal file
39
deployments/charts/openim-rpc-auth/Chart.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: openim-rpc-auth
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
|
icon: https://raw.githubusercontent.com/openimsdk/open-im-server/main/assets/openim-logo-gradient.svg
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- name: "OpenIM"
|
||||||
|
url: "https://github.com/openimsdk"
|
||||||
|
|
||||||
|
keywords:
|
||||||
|
- openim
|
||||||
|
- im
|
||||||
|
- chat
|
||||||
|
|
||||||
|
sources:
|
||||||
|
- "https://github.com/openimsdk/open-im-server"
|
||||||
|
- "https://github.com/openimsdk/helm-charts"
|
||||||
22
deployments/charts/openim-rpc-auth/templates/NOTES.txt
Normal file
22
deployments/charts/openim-rpc-auth/templates/NOTES.txt
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
{{- range .paths }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-rpc-auth.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-rpc-auth.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-rpc-auth.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-rpc-auth.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
||||||
62
deployments/charts/openim-rpc-auth/templates/_helpers.tpl
Normal file
62
deployments/charts/openim-rpc-auth/templates/_helpers.tpl
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-auth.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-auth.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-auth.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-auth.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "openim-rpc-auth.chart" . }}
|
||||||
|
{{ include "openim-rpc-auth.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-auth.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "openim-rpc-auth.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-auth.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "openim-rpc-auth.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -1,30 +1,16 @@
|
|||||||
# Copyright © 2023 OpenIM. All rights reserved.
|
|
||||||
#
|
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
# you may not use this file except in compliance with the License.
|
|
||||||
# You may obtain a copy of the License at
|
|
||||||
#
|
|
||||||
# http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
#
|
|
||||||
# Unless required by applicable law or agreed to in writing, software
|
|
||||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
# See the License for the specific language governing permissions and
|
|
||||||
# limitations under the License.
|
|
||||||
|
|
||||||
apiVersion: apps/v1
|
apiVersion: apps/v1
|
||||||
kind: Deployment
|
kind: Deployment
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ include "openim-server.fullname" . }}
|
name: {{ include "openim-rpc-auth.fullname" . }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "openim-server.labels" . | nindent 4 }}
|
{{- include "openim-rpc-auth.labels" . | nindent 4 }}
|
||||||
spec:
|
spec:
|
||||||
{{- if not .Values.autoscaling.enabled }}
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
replicas: {{ .Values.replicaCount }}
|
replicas: {{ .Values.replicaCount }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
selector:
|
selector:
|
||||||
matchLabels:
|
matchLabels:
|
||||||
{{- include "openim-server.selectorLabels" . | nindent 6 }}
|
{{- include "openim-rpc-auth.selectorLabels" . | nindent 6 }}
|
||||||
template:
|
template:
|
||||||
metadata:
|
metadata:
|
||||||
{{- with .Values.podAnnotations }}
|
{{- with .Values.podAnnotations }}
|
||||||
@@ -32,13 +18,13 @@ spec:
|
|||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "openim-server.selectorLabels" . | nindent 8 }}
|
{{- include "openim-rpc-auth.selectorLabels" . | nindent 8 }}
|
||||||
spec:
|
spec:
|
||||||
{{- with .Values.imagePullSecrets }}
|
{{- with .Values.imagePullSecrets }}
|
||||||
imagePullSecrets:
|
imagePullSecrets:
|
||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
serviceAccountName: {{ include "openim-server.serviceAccountName" . }}
|
serviceAccountName: {{ include "openim-rpc-auth.serviceAccountName" . }}
|
||||||
securityContext:
|
securityContext:
|
||||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
containers:
|
containers:
|
||||||
@@ -51,16 +37,27 @@ spec:
|
|||||||
- name: http
|
- name: http
|
||||||
containerPort: 80
|
containerPort: 80
|
||||||
protocol: TCP
|
protocol: TCP
|
||||||
livenessProbe:
|
#livenessProbe:
|
||||||
httpGet:
|
# httpGet:
|
||||||
path: /
|
# path: /
|
||||||
port: http
|
# port: http
|
||||||
readinessProbe:
|
#readinessProbe:
|
||||||
httpGet:
|
# httpGet:
|
||||||
path: /
|
# path: /
|
||||||
port: http
|
# port: http
|
||||||
resources:
|
resources:
|
||||||
{{- toYaml .Values.resources | nindent 12 }}
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /oepnim/openim-server/config/config.yaml
|
||||||
|
name: config
|
||||||
|
subPath: config.yaml
|
||||||
|
- mountPath: /oepnim/openim-server/config/notification.yaml
|
||||||
|
name: config
|
||||||
|
subPath: notification.yaml
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: openim-cm
|
||||||
{{- with .Values.nodeSelector }}
|
{{- with .Values.nodeSelector }}
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml . | nindent 8 }}
|
||||||
28
deployments/charts/openim-rpc-auth/templates/hpa.yaml
Normal file
28
deployments/charts/openim-rpc-auth/templates/hpa.yaml
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
{{- if .Values.autoscaling.enabled }}
|
||||||
|
apiVersion: autoscaling/v2beta1
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-rpc-auth.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-rpc-auth.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: {{ include "openim-rpc-auth.fullname" . }}
|
||||||
|
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||||
|
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||||
|
metrics:
|
||||||
|
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
61
deployments/charts/openim-rpc-auth/templates/ingress.yaml
Normal file
61
deployments/charts/openim-rpc-auth/templates/ingress.yaml
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
{{- $fullName := include "openim-rpc-auth.fullname" . -}}
|
||||||
|
{{- $svcPort := .Values.service.port -}}
|
||||||
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
|
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-rpc-auth.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ .path }}
|
||||||
|
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
pathType: {{ .pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend:
|
||||||
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $svcPort }}
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $svcPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
15
deployments/charts/openim-rpc-auth/templates/service.yaml
Normal file
15
deployments/charts/openim-rpc-auth/templates/service.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-rpc-auth.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-rpc-auth.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "openim-rpc-auth.selectorLabels" . | nindent 4 }}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-rpc-auth.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-rpc-auth.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
82
deployments/charts/openim-rpc-auth/values.yaml
Normal file
82
deployments/charts/openim-rpc-auth/values.yaml
Normal file
@@ -0,0 +1,82 @@
|
|||||||
|
# Default values for openim-rpc-auth.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/openimsdk/openim-rpc-auth
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
# Overrides the image tag whose default is the chart appVersion.
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: false
|
||||||
|
# Annotations to add to the service account
|
||||||
|
annotations: {}
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext: {}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: ""
|
||||||
|
annotations: {}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
|
||||||
|
resources: {}
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
autoscaling:
|
||||||
|
enabled: false
|
||||||
|
minReplicas: 1
|
||||||
|
maxReplicas: 100
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
# targetMemoryUtilizationPercentage: 80
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
23
deployments/charts/openim-rpc-conversation/.helmignore
Normal file
23
deployments/charts/openim-rpc-conversation/.helmignore
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
||||||
39
deployments/charts/openim-rpc-conversation/Chart.yaml
Normal file
39
deployments/charts/openim-rpc-conversation/Chart.yaml
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: openim-rpc-conversation
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application. Versions are not expected to
|
||||||
|
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||||
|
# It is recommended to use it with quotes.
|
||||||
|
appVersion: "1.16.0"
|
||||||
|
|
||||||
|
icon: https://raw.githubusercontent.com/openimsdk/open-im-server/main/assets/openim-logo-gradient.svg
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- name: "OpenIM"
|
||||||
|
url: "https://github.com/openimsdk"
|
||||||
|
|
||||||
|
keywords:
|
||||||
|
- openim
|
||||||
|
- im
|
||||||
|
- chat
|
||||||
|
|
||||||
|
sources:
|
||||||
|
- "https://github.com/openimsdk/open-im-server"
|
||||||
|
- "https://github.com/openimsdk/helm-charts"
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
{{- range .paths }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "openim-rpc-conversation.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "openim-rpc-conversation.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "openim-rpc-conversation.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "openim-rpc-conversation.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-conversation.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-conversation.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-conversation.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-conversation.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "openim-rpc-conversation.chart" . }}
|
||||||
|
{{ include "openim-rpc-conversation.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-conversation.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "openim-rpc-conversation.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "openim-rpc-conversation.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "openim-rpc-conversation.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "openim-rpc-conversation.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-rpc-conversation.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "openim-rpc-conversation.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "openim-rpc-conversation.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "openim-rpc-conversation.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
#livenessProbe:
|
||||||
|
# httpGet:
|
||||||
|
# path: /
|
||||||
|
# port: http
|
||||||
|
#readinessProbe:
|
||||||
|
# httpGet:
|
||||||
|
# path: /
|
||||||
|
# port: http
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /oepnim/openim-server/config/config.yaml
|
||||||
|
name: config
|
||||||
|
subPath: config.yaml
|
||||||
|
- mountPath: /oepnim/openim-server/config/notification.yaml
|
||||||
|
name: config
|
||||||
|
subPath: notification.yaml
|
||||||
|
volumes:
|
||||||
|
- name: config
|
||||||
|
configMap:
|
||||||
|
name: openim-cm
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user