-
Notifications
You must be signed in to change notification settings - Fork 2.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'origin/main'
- Loading branch information
Showing
203 changed files
with
2,673 additions
and
7,928 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
name: Build and release services Docker Images | ||
|
||
on: | ||
push: | ||
branches: | ||
- release-* | ||
release: | ||
types: [published] | ||
workflow_dispatch: | ||
inputs: | ||
tag: | ||
description: "Tag version to be used for Docker image" | ||
required: true | ||
default: "v3.8.3" | ||
|
||
jobs: | ||
build-and-push: | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v2 | ||
|
||
- name: Log in to Docker Hub | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKER_USERNAME }} | ||
password: ${{ secrets.DOCKER_PASSWORD }} | ||
|
||
- name: Log in to GitHub Container Registry | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: ghcr.io | ||
username: ${{ github.repository_owner }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Log in to Aliyun Container Registry | ||
uses: docker/login-action@v2 | ||
with: | ||
registry: registry.cn-hangzhou.aliyuncs.com | ||
username: ${{ secrets.ALIREGISTRY_USERNAME }} | ||
password: ${{ secrets.ALIREGISTRY_TOKEN }} | ||
|
||
- name: Extract metadata for Docker (tags, labels) | ||
id: meta | ||
uses: docker/metadata-action@v5 | ||
with: | ||
tags: | | ||
type=ref,event=tag | ||
type=schedule | ||
type=ref,event=branch | ||
type=semver,pattern={{version}} | ||
type=semver,pattern=v{{version}} | ||
# type=semver,pattern={{major}}.{{minor}} | ||
type=semver,pattern=release-{{raw}} | ||
type=sha | ||
type=raw,value=${{ github.event.inputs.tag }} | ||
- name: Build and push Docker images | ||
run: | | ||
ROOT_DIR="build/images" | ||
for dir in "$ROOT_DIR"/*/; do | ||
# Find Dockerfile or *.dockerfile in a case-insensitive manner | ||
dockerfile=$(find "$dir" -maxdepth 1 -type f \( -iname 'dockerfile' -o -iname '*.dockerfile' \) | head -n 1) | ||
if [ -n "$dockerfile" ] && [ -f "$dockerfile" ]; then | ||
IMAGE_NAME=$(basename "$dir") | ||
echo "Building Docker image for $IMAGE_NAME with tags:" | ||
# Initialize tag arguments | ||
tag_args=() | ||
# Read each tag and append --tag arguments | ||
while IFS= read -r tag; do | ||
tag_args+=(--tag "${{ secrets.DOCKER_USERNAME }}/$IMAGE_NAME:$tag") | ||
tag_args+=(--tag "ghcr.io/${{ github.repository_owner }}/$IMAGE_NAME:$tag") | ||
tag_args+=(--tag "registry.cn-hangzhou.aliyuncs.com/openimsdk/$IMAGE_NAME:$tag") | ||
done <<< "${{ steps.meta.outputs.tags }}" | ||
|
||
# Build and push the Docker image with all tags | ||
docker buildx build --platform linux/amd64,linux/arm64 \ | ||
--file "$dockerfile" \ | ||
"${tag_args[@]}" \ | ||
--push "$dir" | ||
else | ||
echo "No valid Dockerfile found in $dir" | ||
fi | ||
done |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,175 +1,3 @@ | ||
# OpenIM Application Containerization Deployment Guide | ||
|
||
OpenIM supports a variety of cluster deployment methods, including but not limited to `helm`, `sealos`, `kustomize` | ||
|
||
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) | ||
|
||
### Dependency Check | ||
|
||
```bash | ||
Kubernetes: >= 1.16.0-0 | ||
Helm: >= 3.0 | ||
``` | ||
|
||
### Minimum Configuration | ||
|
||
The recommended minimum configuration for a production environment is as follows: | ||
|
||
```yaml | ||
CPU: 4 | ||
Memory: 8G | ||
Disk: 100G | ||
``` | ||
## Configuration File Generation | ||
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 | ||
$ make init | ||
# Alternatively, use script: | ||
# ./scripts/init-config.sh | ||
``` | ||
|
||
At this point, configuration files will be generated under `deployments/openim/config`, which you can modify as per your requirements. | ||
|
||
## Cluster Setup | ||
|
||
If you already have a `kubernetes` cluster, or if you wish to build a `kubernetes` cluster from scratch, you can skip this step. | ||
|
||
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 | ||
$ SEALOS_VERSION=`curl -s https://api.github.com/repos/labring/sealos/releases/latest | grep -oE '"tag_name": "[^"]+"' | head -n1 | cut -d'"' -f4` && \ | ||
curl -sfL https://raw.githubusercontent.com/labring/sealos/${SEALOS_VERSION}/scripts/install.sh | | ||
sh -s ${SEALOS_VERSION} labring/sealos | ||
``` | ||
|
||
**Supported Versions:** | ||
|
||
+ docker: `labring/kubernetes-docker`:(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 | | ||
| -------- | ---------- | ------------------------------------------------------------ | | ||
| 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 | | ||
| node02 | 10.0.0.10 | Similar to master01 | | ||
|
||
```bash | ||
$ export CLUSTER_USERNAME=ubuntu | ||
$ export CLUSTER_PASSWORD=123456 | ||
$ sudo sealos run labring/kubernetes:v1.25.0 labring/helm:v3.8.2 labring/calico:v3.24.1 \ | ||
--masters 10.0.0.9 \ | ||
--nodes 10.0.0.4,10.0.0.10 \ | ||
-u "$CLUSTER_USERNAME" \ | ||
-p "$CLUSTER_PASSWORD" | ||
``` | ||
|
||
> **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 | ||
> ``` | ||
If you are local, you can also use Kind and Minikube to test, for example, using Kind: | ||
```bash | ||
$ GO111MODULE="on" go get sigs.k8s.io/[email protected] | ||
$ kind 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 | ||
$ curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash | ||
``` | ||
|
||
**Adding Repository:** | ||
|
||
```bash | ||
$ 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/contrib/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) | ||
|
||
|
||
Using the helm charts repository, you can ignore the following configuration, but if you want to just use the server and scale on top of it, you can go ahead: | ||
|
||
**Use the Helm template to generate the deployment yaml file: `openim-charts.yaml`** | ||
|
||
**Gen Image:** | ||
|
||
```bash | ||
../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/helm-image.yaml > ./charts/generated-configs/helm-image.yaml | ||
``` | ||
|
||
**Gen Charts:** | ||
|
||
```bash | ||
for chart in ./charts/*/; do | ||
if [[ "$chart" == *"generated-configs"* || "$chart" == *"helmfile.yaml"* ]]; then | ||
continue | ||
fi | ||
|
||
if [ -f "${chart}values.yaml" ]; then | ||
helm template "$chart" -f "./charts/generated-configs/helm-image.yaml" -f "./charts/generated-configs/config.yaml" -f "./charts/generated-configs/notification.yaml" >> openim-charts.yaml | ||
else | ||
helm template "$chart" >> openim-charts.yaml | ||
fi | ||
done | ||
``` | ||
|
||
**Use Helmfile:** | ||
|
||
```bash | ||
GO111MODULE=on go get github.com/roboll/helmfile@latest | ||
``` | ||
|
||
```bash | ||
export MONGO_ADDRESS=im-mongo | ||
export MONGO_PORT=27017 | ||
export REDIS_ADDRESS=im-redis-master | ||
export REDIS_PORT=6379 | ||
export KAFKA_ADDRESS=im-kafka | ||
export KAFKA_PORT=9092 | ||
export OBJECT_APIURL="https://openim.server.com/api" | ||
export MINIO_ENDPOINT="http://im-minio:9000" | ||
export MINIO_SIGN_ENDPOINT="https://openim.server.com/im-minio-api" | ||
|
||
mkdir ./charts/generated-configs | ||
../scripts/genconfig.sh ../scripts/install/environment.sh ./templates/config.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 | ||
``` | ||
view deploy [README](./deploy/README.md) |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.