diff --git a/config/config.yaml b/config/config.yaml index c89fec549..352399abb 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -26,9 +26,11 @@ # Zookeeper address # Zookeeper username # Zookeeper password +image: + pullPolicy: Always + tag: "v0.1.0" envs: discovery: zookeeper #k8s - serverTag: develop zookeeper: schema: openim diff --git a/manifest/helm-charts/services/openim-api/Chart.yaml b/manifest/helm-charts/services/Chart.yaml similarity index 100% rename from manifest/helm-charts/services/openim-api/Chart.yaml rename to manifest/helm-charts/services/Chart.yaml diff --git a/manifest/helm-charts/services/config.yaml b/manifest/helm-charts/services/config.yaml new file mode 100644 index 000000000..54be3372b --- /dev/null +++ b/manifest/helm-charts/services/config.yaml @@ -0,0 +1,395 @@ +# 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. + +# ----------------------------------------------------------------- +# TODO: This config file is the template file +# --| source: deployments/templates/openim.yaml +# --| env: scripts/install/environment +# --| target: config/config.yaml +# ----------------------------------------------------------------- + +###################### Zookeeper ###################### +# Zookeeper configuration +# It's not recommended to modify the schema +# +# Zookeeper address +# Zookeeper username +# Zookeeper password +image: + pullPolicy: Always + tag: "v0.1.0" +envs: + discovery: zookeeper #k8s + +config: + zookeeper: + schema: openim + address: [ 172.28.0.1:12181 ] + username: '' + password: '' + + ###################### Mysql ###################### + # MySQL configuration + # Currently, only single machine setup is supported + # + # Maximum number of open connections + # Maximum number of idle connections + # Maximum lifetime in seconds a connection can be reused + # Log level: 1=slient, 2=error, 3=warn, 4=info + # Slow query threshold in milliseconds + mysql: + address: [ 172.28.0.1:13306 ] + username: root + password: openIM123 + database: openIM_v3 + maxOpenConn: 1000 + maxIdleConn: 100 + maxLifeTime: 60 + logLevel: 4 + slowThreshold: 500 + + ###################### Mongo ###################### + # MongoDB configuration + # If uri is not empty, it will be used directly + # + # MongoDB address for standalone setup, Mongos address for sharded cluster setup + # Default MongoDB database name + # Maximum connection pool size + mongo: + uri: '' + address: [ 172.28.0.1:37017 ] + database: openIM_v3 + username: root + password: openIM123 + maxPoolSize: 100 + + ###################### Redis configuration information ###################### + # Redis configuration + # + # Username is required only for Redis version 6.0+ + redis: + address: [ 172.28.0.1:16379 ] + username: '' + password: openIM123 + + ###################### Kafka configuration information ###################### + # Kafka configuration + # + # Kafka username + # Kafka password + # It's not recommended to modify this topic name + # Consumer group ID, it's not recommended to modify + kafka: + username: '' + password: '' + addr: [ 172.28.0.1:19094 ] + latestMsgToRedis: + topic: "latestMsgToRedis" + offlineMsgToMongo: + topic: "offlineMsgToMongoMysql" + msgToPush: + topic: "msgToPush" + consumerGroupID: + msgToRedis: redis + msgToMongo: mongo + msgToMySql: mysql + msgToPush: push + + ###################### RPC configuration information ###################### + # RPC configuration + # + # IP address to register with zookeeper when starting RPC, the IP and corresponding rpcPort should be accessible by api/gateway + # Default listen IP is 0.0.0.0 + rpc: + registerIP: '' + listenIP: 0.0.0.0 + + ###################### API configuration information ###################### + # API configuration + # + # API service port + # Default listen IP is 0.0.0.0 + api: + openImApiPort: [ 10002 ] + listenIP: 0.0.0.0 + + ###################### Object configuration information ###################### + # Object storage configuration + # + # Use minio for object storage + # API URL should be accessible by the app + # It's not recommended to modify the bucket name + # Endpoint should be accessible by the app + # Session token + # Configuration for Tencent COS + # Configuration for Aliyun OSS + # apiURL is the address of the api, the access address of the app, use s3 must be configured + # minio.endpoint can be configured as an intranet address, + # minio.signEndpoint is minio public network address + object: + enable: "minio" + apiURL: "http://http://127.0.0.1:10002" + minio: + bucket: "openim" + endpoint: "http://172.28.0.1:10005" + accessKeyID: "root" + secretAccessKey: "openIM123" + sessionToken: '' + signEndpoint: "http://127.0.0.1:10005" + cos: + bucketURL: https://temp-1252357374.cos.ap-chengdu.myqcloud.com + secretID: '' + secretKey: '' + sessionToken: '' + oss: + endpoint: "https://oss-cn-chengdu.aliyuncs.com" + bucket: "demo-9999999" + bucketURL: "https://demo-9999999.oss-cn-chengdu.aliyuncs.com" + accessKeyID: '' + accessKeySecret: '' + sessionToken: '' + + + ###################### RPC Port Configuration ###################### + # RPC service ports + # These ports are passed into the program by the script and are not recommended to modify + # For launching multiple programs, just fill in multiple ports separated by commas + # For example, [10110, 10111] + rpcPort: + openImUserPort: [ 10110 ] + openImFriendPort: [ 10120 ] + openImMessagePort: [ 10130 ] + openImMessageGatewayPort: [ 10140 ] + openImGroupPort: [ 10150 ] + openImAuthPort: [ 10160 ] + openImPushPort: [ 10170 ] + openImConversationPort: [ 10180 ] + openImThirdPort: [ 10190 ] + + ###################### RPC Register Name Configuration ###################### + # RPC service names for registration, it's not recommended to modify these + rpcRegisterName: + openImUserName: Rpc-User + openImFriendName: Rpc-Friend + openImMsgName: Rpc-Msg + openImPushName: Rpc-Push + openImMessageGatewayName: Rpc-MessageGateway + openImGroupName: Rpc-Group + openImAuthName: Rpc-Auth + openImConversationName: Rpc-Conversation + openImThirdName: Rpc-Third + + ###################### Log Configuration ###################### + # Log configuration + # + # Storage directory + # Log rotation time + # Maximum number of logs to retain + # Log level, 6 means all levels + # Whether to output to stdout + # Whether to output in json format + # Whether to include stack trace in logs + log: + storageLocation: /root/workspaces/openim/openim-server/logs/ + rotationTime: 24 + remainRotationCount: 2 + remainLogLevel: 6 + isStdout: false + isJson: false + withStack: false + + ###################### Variables definition ###################### + # Long connection server configuration + # + # Websocket port for msg_gateway + # Maximum number of websocket connections + # Maximum length of websocket request package + # Websocket connection handshake timeout + longConnSvr: + openImWsPort: [ 10001 ] + openImMessageGatewayPort: [ 10140 ] + websocketMaxConnNum: 100000 + websocketMaxMsgLen: 4096 + websocketTimeout: 10 + + # Push notification service configuration + # + # Use GeTui for push notifications + # GeTui offline push configuration + # FCM offline push configuration + # Account file, place it in the config directory + # JPush configuration, modify these after applying in JPush backend + push: + enable: getui + geTui: + pushUrl: "https://restapi.getui.com/v2/$appId" + masterSecret: "" + appKey: "" + intent: "" + channelID: "" + channelName: "" + fcm: + serviceAccount: "x.json" + jpns: + appKey: + masterSecret: + pushUrl: + pushIntent: + + # App manager configuration + # + # Built-in app manager user IDs + # Built-in app manager nicknames + manager: + userID: [ "openIM123456", "openIM654321", "openIMAdmin" ] + nickname: [ "system1", "system2", "system3" ] + + # Multi-platform login policy + # For each platform(Android, iOS, Windows, Mac, web), only one can be online at a time + multiLoginPolicy: 1 + + # Whether to store messages in MySQL, messages in MySQL are only used for management background + chatPersistenceMysql: true + + # Message cache timeout in seconds, it's not recommended to modify + msgCacheTimeout: 86400 + + # Whether to enable read receipts for group chat + groupMessageHasReadReceiptEnable: true + + # Whether to enable read receipts for single chat + singleMessageHasReadReceiptEnable: true + + # MongoDB offline message retention period in days + retainChatRecords: 365 + + # Schedule to clear expired messages(older than retainChatRecords days) in MongoDB every Wednesday at 2am + # This deletion is just for cleaning up disk usage according to previous configuration retainChatRecords, no notification will be sent + chatRecordsClearTime: "0 2 * * 3" + + # Schedule to auto delete messages every day at 2am + # This deletion is for messages that have been retained for more than msg_destruct_time (seconds) in the conversation field + msgDestructTime: "0 2 * * *" + + # Secret key + secret: openIM123 + + # Token policy + # + # Token expiration period in days + tokenPolicy: + expire: 90 + + # Message verification policy + # + # Whether to verify friendship when sending messages + messageVerify: + friendVerify: false + + # iOS push notification configuration + # + # iOS push notification sound + # Whether to count badge + # Whether it's production environment + iosPush: + pushSound: "xxx" + badgeCount: true + production: false + + ###################### Third-party service configuration ###################### + # Callback configuration + # + # Callback URL + # Whether to enable this callback event + # Timeout in seconds + # Whether to continue execution if callback fails + callback: + url: + beforeSendSingleMsg: + enable: false + timeout: 5 + failedContinue: true + afterSendSingleMsg: + enable: false + timeout: 5 + beforeSendGroupMsg: + enable: false + timeout: 5 + failedContinue: true + afterSendGroupMsg: + enable: false + timeout: 5 + msgModify: + enable: false + timeout: 5 + failedContinue: true + userOnline: + enable: false + timeout: 5 + userOffline: + enable: false + timeout: 5 + userKickOff: + enable: false + timeout: 5 + offlinePush: + enable: false + timeout: 5 + failedContinue: true + onlinePush: + enable: false + timeout: 5 + failedContinue: true + superGroupOnlinePush: + enable: false + timeout: 5 + failedContinue: true + beforeAddFriend: + enable: false + timeout: 5 + failedContinue: true + beforeCreateGroup: + enable: false + timeout: 5 + failedContinue: true + beforeMemberJoinGroup: + enable: false + timeout: 5 + failedContinue: true + beforeSetGroupMemberInfo: + enable: false + timeout: 5 + failedContinue: true + setMessageReactionExtensions: + enable: false + timeout: 5 + failedContinue: true + + ###################### Prometheus ###################### + # Prometheus configuration for various services + # The number of Prometheus ports per service needs to correspond to rpcPort + # The number of ports needs to be consistent with msg_transfer_service_num in script/path_info.sh + prometheus: + enable: false + userPrometheusPort: [ 20110 ] + friendPrometheusPort: [ 20120 ] + messagePrometheusPort: [ 20130 ] + messageGatewayPrometheusPort: [ 20140 ] + groupPrometheusPort: [ 20150 ] + authPrometheusPort: [ 20160 ] + pushPrometheusPort: [ 20170 ] + conversationPrometheusPort: [ 20230 ] + rtcPrometheusPort: [ 21300 ] + thirdPrometheusPort: [ 21301 ] + messageTransferPrometheusPort: [ 21400, 21401, 21402, 21403 ] # List of ports diff --git a/manifest/helm-charts/services/notification.yaml b/manifest/helm-charts/services/notification.yaml new file mode 100644 index 000000000..f74dcf44e --- /dev/null +++ b/manifest/helm-charts/services/notification.yaml @@ -0,0 +1,338 @@ +# 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. + +notification: + groupCreated: + isSendMsg: true #是否发送消息,false不发消息为无声的触发同步。true发消息需要触发会话,rpc notification直接发两次,一次消息一次通知, options字段isNotification是否为通知 + reliabilityLevel: 1 # 1为online才发送 2为必达 + unreadCount: false # 只在isSendMsg为true的情况下有作用 + offlinePush: + enable: false # 开启该开关 + title: "create group title" # xx create the group + desc: "create group desc" + ext: "create group ext" + + # 不加消息contentType,content统一json 结构体使用pb的 + + + groupInfoSet: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupInfoSet title" + desc: "groupInfoSet desc" + ext: "groupInfoSet ext" + + + joinGroupApplication: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "joinGroupApplication title" + desc: "joinGroupApplication desc" + ext: "joinGroupApplication ext" + + memberQuit: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "memberQuit title" + desc: "memberQuit desc" + ext: "memberQuit ext" + + groupApplicationAccepted: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupApplicationAccepted title" + desc: "groupApplicationAccepted desc" + ext: "groupApplicationAccepted ext" + + groupApplicationRejected: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: " title" + desc: " desc" + ext: " ext" + + + groupOwnerTransferred: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupOwnerTransferred title" + desc: "groupOwnerTransferred desc" + ext: "groupOwnerTransferred ext" + + memberKicked: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "memberKicked title" + desc: "memberKicked desc" + ext: "memberKicked ext" + + memberInvited: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "memberInvited title" + desc: "memberInvited desc" + ext: "memberInvited ext" + + memberEnter: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "memberEnter title" + desc: "memberEnter desc" + ext: "memberEnter ext" + + groupDismissed: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupDismissed title" + desc: "groupDismissed desc" + ext: "groupDismissed ext" + + groupMuted: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupMuted title" + desc: "groupMuted desc" + ext: "groupMuted ext" + + groupCancelMuted: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupCancelMuted title" + desc: "groupCancelMuted desc" + ext: "groupCancelMuted ext" + defaultTips: + tips: "group Cancel Muted" + + + groupMemberMuted: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupMemberMuted title" + desc: "groupMemberMuted desc" + ext: "groupMemberMuted ext" + + groupMemberCancelMuted: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupMemberCancelMuted title" + desc: "groupMemberCancelMuted desc" + ext: "groupMemberCancelMuted ext" + + groupMemberInfoSet: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupMemberInfoSet title" + desc: "groupMemberInfoSet desc" + ext: "groupMemberInfoSet ext" + + groupInfoSetAnnouncement: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupInfoSetAnnouncement title" + desc: "groupInfoSetAnnouncement desc" + ext: "groupInfoSetAnnouncement ext" + + + groupInfoSetName: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "groupInfoSetName title" + desc: "groupInfoSetName desc" + ext: "groupInfoSetName ext" + + + #############################friend################################# + friendApplicationAdded: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "Somebody applies to add you as a friend" + desc: "Somebody applies to add you as a friend" + ext: "Somebody applies to add you as a friend" + + friendApplicationApproved: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "Someone applies to add your friend application" + desc: "Someone applies to add your friend application" + ext: "Someone applies to add your friend application" + + friendApplicationRejected: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "Someone rejected your friend application" + desc: "Someone rejected your friend application" + ext: "Someone rejected your friend application" + + friendAdded: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "We have become friends" + desc: "We have become friends" + ext: "We have become friends" + + friendDeleted: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "deleted a friend" + desc: "deleted a friend" + ext: "deleted a friend" + + friendRemarkSet: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "Your friend's profile has been changed" + desc: "Your friend's profile has been changed" + ext: "Your friend's profile has been changed" + + blackAdded: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "blocked a user" + desc: "blocked a user" + ext: "blocked a user" + + blackDeleted: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "Remove a blocked user" + desc: "Remove a blocked user" + ext: "Remove a blocked user" + + friendInfoUpdated: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "friend info updated" + desc: "friend info updated" + ext: "friend info updated" + + #####################user######################### + userInfoUpdated: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "Remove a blocked user" + desc: "Remove a blocked user" + ext: "Remove a blocked user" + + userStatusChanged: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: false + title: "user status changed" + desc: "user status changed" + ext: "user status changed" + + #####################conversation######################### + conversationChanged: + isSendMsg: false + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "conversation changed" + desc: "conversation changed" + ext: "conversation changed" + + conversationSetPrivate: + isSendMsg: true + reliabilityLevel: 1 + unreadCount: false + offlinePush: + enable: true + title: "burn after reading" + desc: "burn after reading" + ext: "burn after reading" + diff --git a/manifest/helm-charts/services/openim-api/templates/ingress.yaml b/manifest/helm-charts/services/openim-api/templates/ingress.yaml deleted file mode 100644 index e99a8b90e..000000000 --- a/manifest/helm-charts/services/openim-api/templates/ingress.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if (eq .Values.ingress.kind "istio") }} -apiVersion: networking.istio.io/v1alpha3 -kind: VirtualService -metadata: - name: {{ .Chart.Name }}-app -spec: - hosts: - - "*" - gateways: - - aistudio-gateway - http: - - match: - - uri: - prefix: /{{ .Chart.Name }}/ - rewrite: - uri: "/" - headers: - request: - set: - From: "fronted" - X-Internal-Req: "false" - route: - - destination: - host: {{ .Chart.Name }} - port: - number: {{ .Values.service.port }} - {{- end}} diff --git a/manifest/helm-charts/services/openim-api/templates/NOTES.txt b/manifest/helm-charts/services/templates/NOTES.txt similarity index 100% rename from manifest/helm-charts/services/openim-api/templates/NOTES.txt rename to manifest/helm-charts/services/templates/NOTES.txt diff --git a/manifest/helm-charts/services/openim-api/templates/_helpers.tpl b/manifest/helm-charts/services/templates/_helpers.tpl similarity index 100% rename from manifest/helm-charts/services/openim-api/templates/_helpers.tpl rename to manifest/helm-charts/services/templates/_helpers.tpl diff --git a/manifest/helm-charts/services/openim-api/templates/app-cm.yaml b/manifest/helm-charts/services/templates/app-cm.yaml similarity index 100% rename from manifest/helm-charts/services/openim-api/templates/app-cm.yaml rename to manifest/helm-charts/services/templates/app-cm.yaml diff --git a/manifest/helm-charts/services/openim-api/templates/app-data-pv.yaml b/manifest/helm-charts/services/templates/app-data-pv.yaml similarity index 100% rename from manifest/helm-charts/services/openim-api/templates/app-data-pv.yaml rename to manifest/helm-charts/services/templates/app-data-pv.yaml diff --git a/manifest/helm-charts/services/openim-api/templates/deployment.yaml b/manifest/helm-charts/services/templates/deployment.yaml similarity index 96% rename from manifest/helm-charts/services/openim-api/templates/deployment.yaml rename to manifest/helm-charts/services/templates/deployment.yaml index 120dc31d2..78c39878d 100644 --- a/manifest/helm-charts/services/openim-api/templates/deployment.yaml +++ b/manifest/helm-charts/services/templates/deployment.yaml @@ -31,7 +31,7 @@ spec: - name: {{ .Chart.Name }} securityContext: {{- toYaml .Values.securityContext | nindent 12 }} - image: "{{ .Values.image.repository }}" + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: http diff --git a/manifest/helm-charts/services/openim-api/templates/hpa.yaml b/manifest/helm-charts/services/templates/hpa.yaml similarity index 100% rename from manifest/helm-charts/services/openim-api/templates/hpa.yaml rename to manifest/helm-charts/services/templates/hpa.yaml diff --git a/manifest/helm-charts/services/templates/ingress.yaml b/manifest/helm-charts/services/templates/ingress.yaml new file mode 100644 index 000000000..ed591f032 --- /dev/null +++ b/manifest/helm-charts/services/templates/ingress.yaml @@ -0,0 +1,18 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: ingress-{{ .Chart.Name }} + namespace: default +spec: + ingressClassName: nginx # 指定ingress类名称,这里是Nginx + rules: + - host: 120.25.167.46 # 客户端访问的域名 + http: + paths: + - backend: + service: + name: {{ .Chart.Name }} # 转发到SVC名称 + port: + number: {{ .Values.service.port }} # 转发到SVC端口 + path: /{{ .Chart.Name }}/ # 转发到/ + pathType: Prefix \ No newline at end of file diff --git a/manifest/helm-charts/services/openim-api/templates/service.yaml b/manifest/helm-charts/services/templates/service.yaml similarity index 100% rename from manifest/helm-charts/services/openim-api/templates/service.yaml rename to manifest/helm-charts/services/templates/service.yaml diff --git a/manifest/helm-charts/services/openim-api/values.yaml b/manifest/helm-charts/services/values.yaml similarity index 98% rename from manifest/helm-charts/services/openim-api/values.yaml rename to manifest/helm-charts/services/values.yaml index 68cddf81f..97d356c49 100644 --- a/manifest/helm-charts/services/openim-api/values.yaml +++ b/manifest/helm-charts/services/values.yaml @@ -40,6 +40,8 @@ service: resources: {} +notification: + port: 88 config: port: 80 grpc: 81