From 0f1eccca5043ffd0e3ab1267ae17b275d802a64a Mon Sep 17 00:00:00 2001 From: ylzhangah <1194926515@qq.com> Date: Fri, 17 Jan 2025 15:36:17 +0800 Subject: [PATCH] =?UTF-8?q?[0.9.3]=E4=BF=AE=E6=94=B9=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E6=8C=87=E5=8D=97=E5=92=8C=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/chart/authhub/values.yaml | 22 +- deploy/chart/databases/values.yaml | 10 +- deploy/chart/euler_copilot/values.yaml | 80 ++-- ...50\347\275\262\346\214\207\345\215\227.md" | 365 ++++++++++-------- ...04\345\273\272\346\214\207\345\215\227.md" | 36 +- ...50\347\275\262\346\214\207\345\215\227.md" | 292 +++++++------- 6 files changed, 404 insertions(+), 401 deletions(-) diff --git a/deploy/chart/authhub/values.yaml b/deploy/chart/authhub/values.yaml index 591436903..15684c009 100644 --- a/deploy/chart/authhub/values.yaml +++ b/deploy/chart/authhub/values.yaml @@ -6,17 +6,17 @@ globals: imagePullPolicy: IfNotPresent # [必填] AuthHub部署域名 # 需要修改为AuthHub域名。单机部署时,服务基于Host进行区分,无法使用IP地址 - domain: + domain: "" # [必填] 副本数 replicaCount: 1 # [必填] databases chart的信息 databases: # [必填] helm安装时的release name - app_name: + app_name: "databases" # [必填] helm安装时的namespace - app_namespace: + app_namespace: "euler-copilot" # [必填] redis密码 - redis: + redis: "admin123" # 部署AuthHub本地鉴权服务 authhub: @@ -29,8 +29,8 @@ authhub: registry: "" # [必填] 镜像名 name: authhub-web - # [必填] 镜像Tag - tag: "0.9.1" + # [必填] 镜像Tag, 为0.9.3-x86或0.9.3-arm + tag: "0.9.3-x86" # 拉取策略。留空则使用全局设置。 imagePullPolicy: "" # [必填] 容器根目录只读 @@ -58,8 +58,8 @@ authhub: registry: "" # [必填] 镜像名 name: authhub - # 镜像Tag - tag: "0.9.1" + # 镜像Tag,为0.9.3-x86或0.9.3-arm + tag: "0.9.3-x86" # 拉取策略。留空则使用全局设置。 imagePullPolicy: "" # [必填] 容器根目录只读 @@ -81,8 +81,8 @@ authhub: registry: "" # [必填] 镜像名 name: mysql - # [必填] 镜像Tag - tag: "8" + # [必填] 镜像Tag,为8-x86或8-arm + tag: "8-x86" # 拉取策略。留空则使用全局设置。 imagePullPolicy: "" # [必填] 容器根目录只读 @@ -96,6 +96,6 @@ authhub: # 当类型为nodePort时,填写主机的端口号 nodePort: "" # [必填] 密码 - password: + password: "admin123" # [必填] 持久化存储大小 persistentVolumeSize: 10Gi diff --git a/deploy/chart/databases/values.yaml b/deploy/chart/databases/values.yaml index 30db64266..6efd901f2 100644 --- a/deploy/chart/databases/values.yaml +++ b/deploy/chart/databases/values.yaml @@ -28,7 +28,7 @@ databases: # [必填] PersistentVolume大小设置 persistentVolumeSize: 20Gi # [必填] 密码设置 - password: + password: "admin123" # Service设置 service: # [必填] Service类型,ClusterIP或NodePort @@ -43,7 +43,7 @@ databases: enabled: true # [必填] 部署域名 # 需要修改为MinIO Console绑定的域名。单节点部署时,服务基于Host进行区分,无法使用IP地址 - domain: + domain: "" # Ingress URL前缀 prefix: / mongo: @@ -66,7 +66,7 @@ databases: # [必填] PersistentVolume大小设置 persistentVolumeSize: 10Gi # [必填] 密码设置 - password: "" + password: "admin123" # Service设置 service: # [必填] Service类型,ClusterIP或NodePort @@ -91,7 +91,7 @@ databases: # [必填] 容器根目录只读 readOnly: false # [必填] 密码设置 - password: "" + password: "admin123" # Service设置 service: # [必填] Service类型,ClusterIP或NodePort @@ -124,4 +124,4 @@ databases: # 当类型为nodePort时,填写主机的端口号 nodePort: "" # [必填] 密码设置 - password: + password: "admin123" diff --git a/deploy/chart/euler_copilot/values.yaml b/deploy/chart/euler_copilot/values.yaml index 0f976ce11..6aceafd28 100644 --- a/deploy/chart/euler_copilot/values.yaml +++ b/deploy/chart/euler_copilot/values.yaml @@ -7,11 +7,11 @@ globals: # 用于问答和推理的大模型(OpenAI兼容) llm: # [必填] 模型URL - url: + url: "" # [必填] 模型 API Key - key: + key: "" # [必填] 模型名称 - model: + model: "" # [必填] 模型最大token数 max_tokens: 8096 # 用于Function Call的模型 @@ -19,31 +19,31 @@ globals: # [必填] 推理框架类型,可以是vllm、sglang、ollama backend: vllm # [必填] 模型地址 - url: + url: "" # [必填] 模型 API Key - key: + key: "" # [必填] 模型名称 - model: + model: "" # 数据库设置 databases: # [必填] database helm安装时的app name - app_name: + app_name: "databases" # [必填] database helm安装时的namespace - app_namespace: + app_namespace: "euler_copilot" # 数据库密码 passwords: - # [必填] MySQL数据库的密码 - mongo: + # [必填] Mongo数据库的密码 + mongo: "admin123" # [必填] Redis数据库的密码 - redis: + redis: "admin123" # [必填] PostgreSQL数据库密码 - postgres: + postgres: "admin123" # MinIO连接信息 minio: # [必填] MinIO AK - access_key: + access_key: "minioadmin" # [必填] MinIO SK - secret_key: + secret_key: "admin123" # [必填] MinIO 是否启用安全连接 secure: false @@ -56,8 +56,8 @@ euler_copilot: registry: "" # [必填] 镜像名 name: secret_inject - # [必填] 镜像标签,为latest或arm - tag: latest + # [必填] 镜像标签,为x86或arm + tag: x86 # 拉取策略。留空则使用全局设置。 imagePullPolicy: "" @@ -70,8 +70,8 @@ euler_copilot: registry: "" # [必填] 镜像名 name: euler-copilot-vectorize-agent - # [必填] 镜像标签 - tag: "0.9.1" + # [必填] 镜像标签, 为0.9.3-x86或0.9.3-arm + tag: "0.9.3-x86" # 拉取策略。留空则使用全局设置。 imagePullPolicy: "" # [必填] 容器根目录只读 @@ -81,7 +81,7 @@ euler_copilot: # Volume设置 volume: # [必填] Embedding模型的位置 - models: /home/EulerCopilot/models + models: "/home/EulerCopilot/models" # Service设置 service: # [必填] Service类型,ClusterIP或NodePort @@ -104,8 +104,8 @@ euler_copilot: registry: "" # [必填] 镜像名 name: euler-copilot-framework - # [必填] 镜像标签 - tag: "0.9.3" + # [必填] 镜像标签,为0.9.3-x86或0.9.3-arm + tag: "0.9.3-x86" # 拉取策略。留空则使用全局设置 imagePullPolicy: "" # [必填] 容器根目录只读 @@ -121,7 +121,7 @@ euler_copilot: # Volume设置 volume: # [必填] 插件包路径 - plugin_dir: # 修改为实际的插件文件夹地址 + plugin_dir: "" # 修改为实际的插件文件夹地址 # [必填] Vectorize服务地址 vectorize: # [必填] 是否使用内部Vectorize服务 @@ -133,13 +133,13 @@ euler_copilot: # 加密密钥设置 half_keys: # [必填] 加密密钥1 - key1: + key1: "123456" # [必填] 加密密钥2 - key2: + key2: "123456" # [必填] 加密密钥3 - key3: + key3: "123456" # [必填] Web前端地址,需要添加http/https前缀 - web_url: + web_url: "" # 登录设置 login: # [必填] 是否启用登录 @@ -149,9 +149,9 @@ euler_copilot: # OIDC 设置 oidc: # [enabled为true时必填] OIDC 客户端ID - client_id: + client_id: "" # [enabled为true时必填] OIDC 客户端密钥 - client_secret: + client_secret: "" # [enabled为true时必填] OIDC Token获取地址 token_url: http://authhub-backend-service-authhub.euler-copilot.svc.cluster.local:11120/oauth2/token # [enabled为true时必填] OIDC 用户信息地址 @@ -172,8 +172,8 @@ euler_copilot: registry: "" # [必填] 镜像名 name: euler-copilot-web - # [必填] 镜像标签 - tag: "0.9.3" + # [必填] 镜像标签,为0.9.3-x86或0.9.3-arm + tag: "0.9.3-x86" # 拉取策略。留空则使用全局设置 imagePullPolicy: "" # [必填] 容器根目录只读 @@ -193,7 +193,7 @@ euler_copilot: prefix: / # [必填] 部署域名 # 需要修改为EulerCopilot域名。单节点部署时,服务基于Host进行区分,无法使用IP地址 - domain: + domain: "" rag_web: # [必填] 是否部署RAG Web前端用户界面 @@ -204,8 +204,8 @@ euler_copilot: registry: "" # [必填] 镜像名 name: data_chain_web - # [必填] 镜像标签 - tag: "0.9.3" + # [必填] 镜像标签,为0.9.3-x86或0.9.3-arm + tag: "0.9.3-x86" # 拉取策略。留空则使用全局设置 imagePullPolicy: "" # [必填] 容器根目录只读 @@ -225,7 +225,7 @@ euler_copilot: prefix: / # [必填] 部署域名 # 需要修改为WitchainD域名。单节点部署时,服务基于Host进行区分,无法使用IP地址 - domain: + domain: "" rag: # [必填] 是否部署RAG后端服务 @@ -236,8 +236,8 @@ euler_copilot: registry: "" # [必填] 镜像名 name: data_chain_back_end - # [必填] 镜像标签 - tag: "0.9.3" + # [必填] 镜像标签,为0.9.3-x86或0.9.3-arm + tag: "0.9.3-x86" # 拉取策略。留空则使用全局设置 imagePullPolicy: "" # [必填] 容器根目录只读 @@ -258,10 +258,10 @@ euler_copilot: # [必填] 密钥设置 security: # [必填] CSRF密钥 - csrf_key: + csrf_key: "123456" # [必填] 工作密钥1 - half_key_1: + half_key_1: "123456" # [必填] 工作密钥2 - half_key_2: + half_key_2: "123456" # [必填] 工作密钥3 - half_key_3: + half_key_3: "123456" diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" index 60ac92578..5048efac0 100644 --- "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" +++ "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\227\240\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" @@ -16,7 +16,6 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot | redis | 6379 (内部端口) | Redis数据库 | | postgres | 5432 (内部端口) | 向量数据库 | | secret_inject | 无 | 配置文件安全复制工具 | - ## 环境要求 ### 软件要求 @@ -41,7 +40,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot 注意: -1. 若无 GPU 或 NPU 资源,建议通过调用 OpenAI 接口的方式来实现功能。(接口样例:) +1. 若无 GPU 或 NPU 资源,建议通过调用 OpenAI 接口的方式来实现功能。 2. 调用第三方 OpenAI 接口的方式不需要安装高版本的 python (>=3.9.9) 3. 英伟达 GPU 对 Docker 的支持必需要新版本 Docker (>= v25.4.0) @@ -95,7 +94,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot - SELinux设置 ```bash - # 永久关闭SELinux + # 永久关闭 SELinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config # 临时关闭 setenforce 0 @@ -113,8 +112,25 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot wget https://repo.oepkgs.net/openEuler/rpm/openEuler-22.03-LTS/contrib/EulerCopilot/bge-reranker-large.tar.gz ``` -- 镜像包下载 - - x86或arm架构的EulerCopilot服务的各组件镜像和tag可在values.yaml文件中查看 +- 镜像包下载 + + 您可在联网的宿主机通过docker pull 拉取下面镜像到本地(即执行 docker pull remote_image_address ),并上传至待部署服务器。 + ```bash + # X86架构镜像地址如下所示,ARM架构修改tag为arm + hub.oepkgs.net/neocopilot/euler-copilot-framework:0.9.3-x86 + hub.oepkgs.net/neocopilot/euler-copilot-vectorize-agent:0.9.3-x86 + hub.oepkgs.net/neocopilot/euler-copilot-web:0.9.3-x86 + hub.oepkgs.net/neocopilot/data_chain_back_end:0.9.3-x86 + hub.oepkgs.net/neocopilot/data_chain_web:0.9.3-x86 + hub.oepkgs.net/neocopilot/authhub-backend:0.9.1-x86 + hub.oepkgs.net/neocopilot/authhub-web:0.9.1-x86 + hub.oepkgs.net/neocopilot/pgsql-empty:pg16-x86 + hub.oepkgs.net/neocopilot/redis:7.4-alpine-x86 + hub.oepkgs.net/neocopilot/mysql:8-x86 + hub.oepkgs.net/neocopilot/minio:empty-x86 + hub.oepkgs.net/neocopilot/mongo:7.0.15-x86 + hub.oepkgs.net/neocopilot/secret_inject:x86 + ``` ### 3. 安装部署工具 @@ -124,39 +140,47 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot ```bash yum install -y container-selinux selinux-policy-base - # packages里有k3s-selinux-0.1.1-rc1.el7.noarch.rpm的离线包 - rpm -i https://rpm.rancher.io/k3s-selinux-0.1.1-rc1.el7.noarch.rpm ``` -- x86 架构安装 k3s + ```bash + rpm -i https://rpm.rancher.io/k3s-selinux-0.1.1-rc1.el7.noarch.rpm + ``` +- 安装 k3s + + 可以在有网络的环境上获取 k3s 相关包并上传至服务器, 并执行安装操作,以 'v1.30.3+k3s1' 示例 + ```bash - # 在有网络的环境上获取k3s相关包并上传至服务器,以v1.30.3+k3s1示例 + # x86 架构 wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-airgap-images-amd64.tar.zst - cp k3s /usr/local/bin/ - cd /var/lib/rancher/k3s/agent - mkdir images - cp k3s-airgap-images-arm64.tar.zst /var/lib/rancher/k3s/agent/images - # packages里有k3s-install.sh的离线包 - curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh - INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s-install.sh - export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + # Arm 架构 + wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-arm64 + wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-airgap-images-arm64.tar.zst ``` -- arm 架构安装 k3s - ```bash - # 在有网络的环境上获取k3s相关包并上传至服务器,以v1.30.3+k3s1示例 - wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-arm64 - wget https://github.com/k3s-io/k3s/releases/download/v1.30.3%2Bk3s1/k3s-airgap-images-arm64.tar.zst - cp k3s-arm64 /usr/local/bin/k3s - cd /var/lib/rancher/k3s/agent - mkdir images + # x86 架构 + cp k3s /usr/local/bin/ + # Arm 架构 + cp k3s-arm64 /usr/local/bin/ + ``` + ```bash + mkdir -p /var/lib/rancher/k3s/agent + ``` + ```bash + # x86 架构 + cp k3s-airgap-images-amd64.tar.zst /var/lib/rancher/k3s/agent/images + # Arm 架构 cp k3s-airgap-images-arm64.tar.zst /var/lib/rancher/k3s/agent/images - # packages里有k3s-install.sh的离线包 - curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh + ``` + ```bash + curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh + ``` + ```bash INSTALL_K3S_SKIP_DOWNLOAD=true ./k3s-install.sh + ``` + ```bash export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` @@ -189,7 +213,7 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot #### 3.3 大模型准备 -提供第三方openai接口或基于硬件本都部署大模型,本地部署大模型可参考附录部分。 +提供第三方 openai 接口或基于硬件本都部署大模型,本地部署大模型可参考附录部分。 ## 安装 @@ -235,32 +259,33 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot │   └── web └── values.yaml ``` - -### 1. 安装数据库 - -- 编辑 values.yaml +- 创建命名空间 ```bash - cd deploy/chart/databases + kubectl create namespace euler-copilot ``` - 请根据对应的架构修改镜像标签,并设置数据库密码。 + 设置环境变量 ```bash - vim values.yaml + export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` -- 创建命名空间 +### 1. 安装数据库 + +- 编辑 values.yaml ```bash - kubectl create namespace euler-copilot + cd deploy/chart/databases ``` - 设置环境变量 - ```bash - export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + vim values.yaml ``` + **填写说明:** + 1. **密码设置**:所有密码必须设置为数字与字母的组合,并请确认所有条目均已准确填写; + 2. **域名设置**:依据之前的域名配置,请正确填写 MinIO 的域名; + 3. **镜像标签调整**:根据系统架构,请相应地调整镜像标签(tag)。 - 安装数据库 @@ -277,17 +302,38 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot ```bash pgsql-deploy-databases-86b4dc4899-ppltc 1/1 Running 0 17d redis-deploy-databases-f8866b56-kj9jz 1/1 Running 0 17d - mysql-deploy-databases-57f5f94ccf-sbhzp 2/2 Running 0 17d + minio-deploy-databases-6b8dfcdc5d-7d4td 1/1 Running 0 17d + mongo-deploy-databases-85c75cbb-v88r6 1/1 Running 0 17d ``` -- 若服务器之前部署过 mysql,则可预先清除下 pvc,再部署 databases。 +- 问题定位 + + - 查看 Pod 的 日志 + + ```bash + kubectl -n euler-copilot logs minio-deploy-databases-6b8dfcdc5d-7d4td + ``` + - 进入 Pod + + ```bash + kubectl -n euler-copilot exec pgsql-deploy-databases-86b4dc4899-ppltc -- bash + ``` + ```bash + # 连接数据库 + psql -U postgres -d postgres + ``` + - 清除 PVC ```bash kubectl -n euler-copilot get pvc ``` ```bash - kubectl -n euler-copilot delete pvc mysql-pvc + kubectl -n euler-copilot delete pvc minio-pvc-databases + ``` + - 更新配置 + ```bash + helm upgrade -n euler-copilot databases . ``` ### 2. 安装鉴权平台Authhub @@ -295,20 +341,15 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot - 编辑 values.yaml ```bash - cd deploy/chart/authhub + cd ../authhub ``` - - 请结合 YAML 中的注释中的[必填]项进行修改 - ```bash vim values.yaml ``` - - - 注意: - 1. authHub 需要域名,可预先申请域名或在 'C:\Windows\System32\drivers\etc\hosts' 下配置。 - authhub和euler-copilot必须是同一个根域名的两个子域名, 例如authhub.test.com和 - eulercopilot.test.com - 2. 根据对应的架构修改镜像标签,并填写数据库密码。 + **填写说明:** + 1. **密码设置**:所有密码必须设置为数字与字母的组合,并请确认所有条目均已准确填写; + 2. **域名设置**:依据之前的域名配置,请正确填写 authhub-web 的域名; + 3. **镜像标签调整**:根据系统架构,请相应地调整镜像标签(tag)。 - 安装 AuthHub @@ -316,8 +357,6 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot helm install -n euler-copilot authhub . ``` - AuthHub 默认账号 `administrator`, 密码 `changeme` - - 查看 pod 状态 ```bash @@ -330,46 +369,48 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot authhub-web-deploy-authhub-7c48695966-h8d2p 1/1 Running 0 17d pgsql-deploy-databases-86b4dc4899-ppltc 1/1 Running 0 17d redis-deploy-databases-f8866b56-kj9jz 1/1 Running 0 17d - mysql-deploy-databases-57f5f94ccf-sbhzp 2/2 Running 0 17d + minio-deploy-databases-6b8dfcdc5d-7d4td 1/1 Running 0 17d + mongo-deploy-databases-85c75cbb-v88r6 1/1 Running 0 17d ``` - 登录 AuthHub - AuthHub 的域名以 为例,浏览器输入`https://authhub.test.com`, 登录界面如下图所示: + AuthHub 的域名以 为例,浏览器输入`https://authhub.test.com`,登录界面如下图所示: ![部署图](./pictures/authhub登录界面.png) + **AuthHub 登录默认账号 `administrator`, 密码 `changeme`** + - 创建应用eulercopilot ![部署图](./pictures/创建应用界面.png) - 点击创建应用,输入应用名称、应用主页和应用回调地址(登录后回调地址),参考如下: - - 应用名称:eulercopilot - - 应用主页: - - 应用回调地址: - - 应用创建好后会生成 Client ID 和 Client Secret,将生成的 Client ID 和 Client Secret 配置到应用里,以 eulercopilot 为例,创建应用后在配置文件中添加配置 `deploy/chart/euler_copilot/values.yaml` 中添加配置 + + 点击**创建应用**后,请按照以下示例填写相关信息: + - **应用名称**: eulercopilot + - **应用主页 URL**: https://eulercopilot.test.com + - **应用回调地址(登录后)**: https://eulercopilot.test.com/api/auth/login + - 点击**创建**,即可完成应用创建流程,系统将自动生成一个 **Client ID** 和 **Client Secret**。请保存好这对凭据,稍后在 `deploy/chart/euler_copilot/values.yaml` 配置文件中需要添加它们。 ![部署图](./pictures/创建应用成功界面.png) -### 2. 安装 openEuler Copilot System +### 3. 安装 openEuler Copilot System - 编辑 values.yaml ```bash - cd deploy/chart/euler_copilot + cd ../euler_copilot ``` - - 请结合 YAML 中的注释中的[必填]项进行修改 - ```bash vim values.yaml ``` + **填写说明:** - - 注意: - 1. 根据对应的架构修改镜像标签,并填写数据库密码。; - 2. 修改values.yaml中的globals的domain为EulerCopilot域名,并配置大模型的相关信息 - 3. 手动创建`docs_dir`、`plugin_dir`、`models`三个文件挂载目录 - 4. 修改values.yaml中framework章节的web_url和oidc设置 - 5. 如果部署插件,则需要配置用于Function Call的模型,此时必须有GPU环境用于部署sglang,可参考附件 + 1. **密码设置**:所有密码必须是数字与字母的组合,请确保所有条目均已准确无误地填写。 + 2. **域名配置**:请根据先前的域名设置,正确填写 eulercopilot 和 witchind 的对应域名。 + 3. **镜像标签调整**:依据系统的架构要求,适当调整容器镜像的标签(tag)。 + 4. **Volume挂载目录**:创建并指定正确的卷(volume)挂载路径。 + 5. **OIDC 设置**:完成 framework章节中 OIDC 的正确配置。 + 6. **插件部署(可选)**:如果选择部署插件,需配置用于Function Call的模型。注意,部署sglang时需要有GPU支持环境,详情请参阅附件。 - 安装 openEuler Copilot System @@ -398,49 +439,64 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot web-deploy-service-74fbf7999f-r46rg 1/1 Running 0 2d ``` - 注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 - 1. 查看 Kubernetes 集群的事件 (Events),以获取更多关于 Pod 失败的上下文信息 + **故障排查:** + + 当 Pod 状态显示为失败时,建议遵循以下步骤进行问题排查: + + 1. **获取集群事件信息** + + 为了更好地定位 Pod 失败的原因,请首先检查 Kubernetes 集群中的事件 (Events)。这可以提供有关 Pod 状态变化的上下文信息。 ```bash - kubectl -n euler-copilot get events + kubectl get events -n euler-copilot ``` - 2. 查看镜像拉取是否成功 + 2. **验证镜像拉取状态** + + 确认容器镜像是否成功拉取。如果镜像未能正确加载,可能是由于网络问题或镜像仓库配置错误。 ```bash k3s crictl images ``` - 3. 检查 RAG 的 Pod 日志,以确定是否有错误信息或异常行为。 + 3. **审查 Pod 日志** + + 检查相关 Pod 的日志,以寻找可能的错误信息或异常行为。这对于诊断应用程序级别的问题特别有用。 ```bash kubectl logs rag-deploy-service-5b7887644c-sm58z -n euler-copilot ``` - 4. 验证 Kubernetes 集群的资源状态,检查服务器资源或配额是否足够,资源不足常导致 Pod 镜像服拉取失败。 + 4. **评估资源可用性** + + 确保 Kubernetes 集群有足够的资源(如 CPU、内存和存储)来支持 Pod 的运行。资源不足可能导致镜像拉取失败或其他性能问题。 ```bash - df -h + kubectl top nodes ``` - 5. 如果未拉取成且镜像大小为0,请检查是否是 k3s 版本未满足要求,低于 v1.30.2 + 5. **确认 k3s 版本兼容性** + + 如果遇到镜像拉取失败且镜像大小为 0 的问题,请检查您的 k3s 版本是否符合最低要求(v1.30.2 或更高)。较低版本可能存在不兼容的问题。 ```bash k3s -v ``` - 6. 确认 values.yaml 中 framework 的 OIDC 设置是否正确配置,以确保身份验证和授权功能正常工作。 + 6. **检查 OIDC 设置** + + 审核 `values.yaml` 文件中关于框架的 OIDC 配置,确保身份验证和授权服务已正确设置,这对于集成外部认证服务至关重要。 ```bash - vim /home/euler-copilot-framework/deploy/chart/euler_copilot/values.yaml + cat /home/euler-copilot-framework/deploy/chart/euler_copilot/values.yaml | grep oidc ``` ## 验证安装 -恭喜您,openEuler Copilot System 的部署已完成!现在,您可以开启智能问答的非凡体验之旅了。 -请在浏览器中输入 https://$(host_ip):8080 或 (其中 port 默认值为8080,若更改则需相应调整)访问 openEuler Copilot System 网页,并尝试进行智能问答体验。 +恭喜您,**openEuler Copilot System** 已成功部署!为了开始您的体验,请在浏览器中输入 `https://您的EulerCopilot域名` 链接访问 openEuler Copilot System 的网页界面: + +首次访问时,您需要点击页面上的 **立即注册** 按钮来创建一个新的账号,并完成登录过程。 -首先请点击下方页面的“立即注册”按钮,完成账号的注册与登录。 ![Web登录界面](./pictures/WEB登录界面.png) ![Web 界面](./pictures/WEB界面.png) @@ -553,110 +609,83 @@ openEuler Copilot System 是一款智能问答工具,使用 openEuler Copilot NPU 环境部署可参考链接 [MindIE安装指南](https://www.hiascend.com/document/detail/zh/mindie/10RC2/whatismindie/mindie_what_0001.html) -## FAQ +### FAQ -### 1. huggingface 使用报错? +#### 1. 解决 Hugging Face 连接错误 + +如果遇到如下连接错误: ```text -File "/usr/lib/python3.9/site-packages/urllib3/connection.py", line 186, in _new_conn -raise NewConnectionError(urllib3.exceptions.eanconectionError: : Failed to establish a new conmection: [Errno 101] Network is unreachable +urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 101] Network is unreachable ``` -- 解决办法 +尝试以下解决方案: -```bash -pip3 install -U huggingface_hub -``` +- 更新 `huggingface_hub` 包到最新版本。 -```bash -export HF_ENDPOINT=https://hf-mirror.com -``` + ```bash + pip3 install -U huggingface_hub + ``` -### 2. 如何在 RAG 容器中调用获取问答结果的接口? +- 如果网络问题依旧存在,可以尝试使用镜像站点作为端点。 -- 请先进入到 RAG 对应 Pod + ```bash + export HF_ENDPOINT=https://hf-mirror.com + ``` + +#### 2. 在 RAG 容器中调用问答接口 + +进入对应的 RAG Pod 后,可以通过 `curl` 命令发送 POST 请求来获取问答结果。请确保在请求体中提供具体的问题文本。 ```bash curl -k -X POST "http://localhost:8005/kb/get_answer" \ -H "Content-Type: application/json" \ -d '{ - "question": "", + "question": "您的问题", "kb_sn": "default_test", "fetch_source": true }' ``` -### 3. 执行 `helm upgrade` 报错? - -```text -Error: INSTALLATI0N FAILED: Kubernetes cluster unreachable: Get "http:/localhost:880/version": dial tcp [:1:8089: connect: connection refused -``` +#### 3. 解决 `helm upgrade` 错误 -或者 +当 Kubernetes 集群不可达时,您可能会遇到类似下面的错误信息: ```text -Error: UPGRADE FAILED: Kubernetes cluster unreachable: the server could not find the requested resource +Error: UPGRADE FAILED: Kubernetes cluster unreachable ``` -- 解决办法 +确保设置了正确的 KUBECONFIG 环境变量指向有效的配置文件。 ```bash export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` -### 4. 无法查看 Pod 日志? +#### 4. 查看 Pod 日志失败 -```text -[root@localhost euler-copilot]# kubectl logs rag-deployservice65c75c48d8-44vcp-n euler-copilotDefaulted container "rag" out of: rag.rag-copy secret (init)Error from server: Get "https://172.21.31.11:10250/containerlogs/euler copilot/rag deploy"service 65c75c48d8-44vcp/rag": Forbidden -``` - -- 解决办法 - 如果设置了代理,需要将本机的网络 IP 从代理中剔除 +如果您遇到查看 Pod 日志时权限被拒绝的问题,检查是否正确配置了代理设置,并将本机 IP 地址添加到 `no_proxy` 环境变量中。 ```bash cat /etc/systemd/system/k3s.service.env ``` +编辑文件并确保包含: + ```bash -http_proxy="http://XXX:XXX" -https_proxy="http://XXX:XXX" -# 代理中剔除本机IP -no_proxy=XXX.XXX.XXX.XXX +no_proxy=XXX.XXX.XXX.XXX ``` -### 5. GPU环境部署大模型时出现无法流式回复? +#### 5. GPU环境中大模型流式回复问题 -在服务执行 curl 大模型失败,但是将 `"stream": true` 改为 `"stream": false`就可以 curl 通? +对于某些服务执行 curl 大模型时无法进行流式回复的情况,尝试修改请求中的 `"stream"` 参数为 `false`。此外,确认已安装兼容版本的 Pydantic 库。 ```bash -curl -X POST http://localhost:30000/v1/chat/completions \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer sk-123456" \ - -d '{ - "model": "qwen1.5", - "messages": [ - { - "role": "system", - "content": "你是情感分析专家,你的任务是xxxx" - }, - { - "role": "user", - "content": "你好" - } - ], - "stream": true, - "n": 1, - "max_tokens": 8192 - }' +pip install pydantic==1.10.13 ``` -- 解决办法: +#### 6. sglang 模型部署指南 -```bash -pip install Pydantic=1.10.13 -``` - -### 6. sglang如何部署模型? +按照以下步骤部署基于 sglang 的模型: ```bash # 1. 激活名为 `myenv` 的 Conda 环境,该环境基于 Python 3.10 创建: @@ -686,39 +715,39 @@ python -m sglang.launch_server \ pip show flashinfer ``` -- 注意: -1. API Key:请确保 `--api-key` 参数中的 API 密钥是正确的 -2. 模型路径: 确保 `--model-path` 参数中的路径是正确的,并且模型文件存在于该路径下。 -3. CUDA 版本:确保你的系统上安装了 CUDA 12.1 和 PyTorch 2.4,因为 `flashinfer` 包依赖于这些特定版本。 -4. 线程池大小:根据你的GPU资源和预期负载调整线程池大小。如果你有 8 个 GPU,那么可以选择 --tp 8 来充分利用这些资源。 +**注意事项:** +- API Key:请确保 `--api-key` 参数中的 API 密钥是正确的 +- 模型路径: 确保 `--model-path` 参数中的路径是正确的,并且模型文件存在于该路径下。 +- CUDA 版本:确保你的系统上安装了 CUDA 12.1 和 PyTorch 2.4,因为 `flashinfer` 包依赖于这些特定版本。 +- 线程池大小:根据你的GPU资源和预期负载调整线程池大小。如果你有 8 个 GPU,那么可以选择 --tp 8 来充分利用这些资源。 + +#### 7. 获取 Embedding -### 7. 如何 curl embedding? +使用 curl 发送 POST 请求以获取 embedding 结果: ```bash curl -k -X POST http://$IP:8001/embedding \ -H "Content-Type: application/json" \ - -d '{"texts": ["sample text 1", "sample text 2"]}' -# $IP为vectorize的Embedding的内网地址 + -d '{"texts": ["sample text 1", "sample text 2"]}' ``` -### 8. 如何生成证书? +其中 `$IP` 是 vectorize 内网地址。 + +#### 8. 生成证书 +为了生成自签名证书,首先下载 [mkcert](https://github.com/FiloSottile/mkcert/releases)工具,然后运行以下命令: ```bash -下载地址: https://github.com/FiloSottile/mkcert/releases -# 1. 下载 mkcert -# x86_64 -wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64 -# arm64 -wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-arm64 -# 2. 执行下面的命令生成秘钥 mkcert -install -# mkcert 可直接接域名或 IP, 生成证书和秘钥 mkcert example.com -# 3. 将证书和秘钥拷贝到 `/home/euler-copilot-framework_openeuler/deploy/chart_ssl/traefik-secret.yaml` 中, 并执行下面命令使其生效。 +``` +最后,将生成的证书和私钥拷贝到 values.yaml 中, 并应用至 Kubernetes Secret。 +```bash +vim /home/euler-copilot-framework_openeuler/deploy/chart_ssl/traefik-secret.yaml +``` +```bash kubectl apply -f traefik-secret.yaml ``` -### 8. Pod状态由runnning变为pending? - -在Pod正常运行一段时间后,其状态从“Running”全部转变为 “Pending” 或 “Completed”, -可执行命令`df -h`,查看Pod所在宿主机的存储空间,确保可用空间不低于30%,以保证pod的正常运行。 \ No newline at end of file +#### 9. Pod 状态从 Running 变为 Pending 或 Completed + +Pod 状态变化可能是因为宿主机存储空间不足。使用 `df -h` 检查磁盘使用情况,并保证至少有 30% 的可用空间。这有助于维持 Pod 的稳定运行状态。 \ No newline at end of file diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272\346\214\207\345\215\227.md" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272\346\214\207\345\215\227.md" index e940c0b8f..36ed5f2d0 100644 --- "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272\346\214\207\345\215\227.md" +++ "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\346\234\254\345\234\260\350\265\204\344\272\247\345\272\223\346\236\204\345\273\272\346\214\207\345\215\227.md" @@ -23,44 +23,10 @@ - 检索增强: 本平台最终解析的结果通过向量化、关键字的形式对外呈现检索结果,也提供了token压缩和问题补全等技术增强结果命中的概率,也使用了上下文随机关联的形式补全检索结果。 -## 准备工作 - -- 部署witchaind服务 - - ```bash - # 进入witchaind目录 - cd euler-copilot-framework_openeuler/deploy/chart/witchaind - ``` - ```bash - # 编辑values.yaml - vim values.yaml - # 注意: - # - domain的配置和EulerCopilot主页域名配置方法相同且同根域名 - # - LLM设置和EulerCopilot的values中模型配置相同 - # - Embedding模型URL可填写为 http://vectorize-agent-service-service.euler-copilot.svc.cluster.local:8001/embedding或查看Embedding模型的服务IP后填写 - # - 密钥可随意填写为随机字符串 - ``` - ```bash - # 安装witchaind - helm install -n euler-copilot witchaind . - ``` - - ```bash - # 查看pod状态 - kubectl -n euler-copilot get pods - ``` - ```bash - # witchaind相关服务已正常启动 - NAME READY STATUS RESTARTS AGE - witchaind-backend-deploy-witchaind-8fcccbfb7-8f42t 1/1 Running 0 3d1h - witchaind-redis-deploy-witchaind-7f9768c8c6-62bwt 1/1 Running 0 3d1h - witchaind-web-deploy-witchaind-6b4f4674fd-hz88g 1/1 Running 0 3d1h - minio-deploy-witchaind-7f779f5cf4-lqrd9 1/1 Running 0 3d1h - ``` ## 登录管理平台 -请在浏览器中输入 https://$(host_ip):9888 或 访问 openEuler Copilot witChainD 网页, +请在浏览器中输入 `https://$(wichaind域名)`访问 openEuler Copilot witChainD 网页, 登入界面如下,输入账号、密码点击登录按钮登录系统。 ![witchaind登录界面](./pictures/witChainD/witchaind登录界面.png) diff --git "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" index fc4758c10..64cb5f4e0 100644 --- "a/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" +++ "b/docs/user-guide/\351\203\250\347\275\262\346\214\207\345\215\227/\347\275\221\347\273\234\347\216\257\345\242\203\344\270\213\351\203\250\347\275\262\346\214\207\345\215\227.md" @@ -83,12 +83,15 @@ cd /home/euler-copilot-framework/deploy/scripts && tree └── prepare_docker.sh ``` -| 序号 | 步骤内容 | 相关指令 | 说明 | +| 序号 | 步骤内容 | 相关指令 | 说明 | |-------------- |----------|---------------------------------------------|------------------------------------------ | |1| 环境检查 | `bash check_env.sh` | 主要对服务器的主机名、DNS、防火墙设置、磁盘剩余空间大小、网络、检查SELinux的设置 | |2| 文件下载 | `bash download_file.sh` | 模型bge-reranker-large、bge-mixed-mode下载 | |3| 安装部署工具 | `bash install_tools.sh v1.30.2+k3s1 v3.15.3 cn` | 安装helm、k3s工具。注意:cn的使用是使用镜像站,可以去掉不用 | -|4| 大模型准备 | 提供第三方 OpenAI 接口或基于硬件本都部署大模型 | 本地部署大模型可参考附录部分 | +|4| 域名配置 | 需要准备4个域名`minio\authhub\eulercopilot\witchaind` | 预先申请域名或在 'C:\Windows\System32\drivers\etc\hosts' 下配置。必须是同根域名, 例如`minio.test.com``authhub.test.com`、`eulercopilot.test.com`、`witchaind.test.com` | +|5| 大模型准备 | 提供第三方 OpenAI 接口或基于硬件本都部署大模型 | 本地部署大模型可参考附录部分 | + + ## 安装 @@ -134,32 +137,33 @@ cd /home/euler-copilot-framework/deploy/scripts && tree │   └── web └── values.yaml ``` - -### 1. 安装数据库 - -- 编辑 values.yaml +- 创建命名空间 ```bash - cd deploy/chart/databases + kubectl create namespace euler-copilot ``` - 请根据对应的架构修改镜像标签,并设置数据库密码。 + 设置环境变量 ```bash - vim values.yaml + export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` -- 创建命名空间 +### 1. 安装数据库 + +- 编辑 values.yaml ```bash - kubectl create namespace euler-copilot + cd deploy/chart/databases ``` - 设置环境变量 - ```bash - export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + vim values.yaml ``` + **填写说明:** + 1. **密码设置**:所有密码必须设置为数字与字母的组合,并请确认所有条目均已准确填写; + 2. **域名设置**:依据之前的域名配置,请正确填写 MinIO 的域名; + 3. **镜像标签调整**:根据系统架构,请相应地调整镜像标签(tag)。 - 安装数据库 @@ -176,17 +180,38 @@ cd /home/euler-copilot-framework/deploy/scripts && tree ```bash pgsql-deploy-databases-86b4dc4899-ppltc 1/1 Running 0 17d redis-deploy-databases-f8866b56-kj9jz 1/1 Running 0 17d - mysql-deploy-databases-57f5f94ccf-sbhzp 2/2 Running 0 17d + minio-deploy-databases-6b8dfcdc5d-7d4td 1/1 Running 0 17d + mongo-deploy-databases-85c75cbb-v88r6 1/1 Running 0 17d ``` -- 若服务器之前部署过 mysql,则可预先清除下 pvc,再部署 databases。 +- 问题定位 + + - 查看 Pod 的 日志 + + ```bash + kubectl -n euler-copilot logs minio-deploy-databases-6b8dfcdc5d-7d4td + ``` + - 进入 Pod + + ```bash + kubectl -n euler-copilot exec pgsql-deploy-databases-86b4dc4899-ppltc -- bash + ``` + ```bash + # 连接数据库 + psql -U postgres -d postgres + ``` + - 清除 PVC ```bash kubectl -n euler-copilot get pvc ``` ```bash - kubectl -n euler-copilot delete pvc mysql-pvc + kubectl -n euler-copilot delete pvc minio-pvc-databases + ``` + - 更新配置 + ```bash + helm upgrade -n euler-copilot databases . ``` ### 2. 安装鉴权平台Authhub @@ -194,20 +219,15 @@ cd /home/euler-copilot-framework/deploy/scripts && tree - 编辑 values.yaml ```bash - cd deploy/chart/authhub + cd ../authhub ``` - - 请结合 YAML 中的注释中的[必填]项进行修改 - ```bash vim values.yaml ``` - - - 注意: - 1. authHub 需要域名,可预先申请域名或在 'C:\Windows\System32\drivers\etc\hosts' 下配置。 - authhub和euler-copilot必须是同一个根域名的两个子域名, 例如authhub.test.com和 - eulercopilot.test.com - 2. 根据对应的架构修改镜像标签,并填写数据库密码。 + **填写说明:** + 1. **密码设置**:所有密码必须设置为数字与字母的组合,并请确认所有条目均已准确填写; + 2. **域名设置**:依据之前的域名配置,请正确填写 authhub-web 的域名; + 3. **镜像标签调整**:根据系统架构,请相应地调整镜像标签(tag)。 - 安装 AuthHub @@ -215,8 +235,6 @@ cd /home/euler-copilot-framework/deploy/scripts && tree helm install -n euler-copilot authhub . ``` - AuthHub 默认账号 `administrator`, 密码 `changeme` - - 查看 pod 状态 ```bash @@ -229,46 +247,48 @@ cd /home/euler-copilot-framework/deploy/scripts && tree authhub-web-deploy-authhub-7c48695966-h8d2p 1/1 Running 0 17d pgsql-deploy-databases-86b4dc4899-ppltc 1/1 Running 0 17d redis-deploy-databases-f8866b56-kj9jz 1/1 Running 0 17d - mysql-deploy-databases-57f5f94ccf-sbhzp 2/2 Running 0 17d + minio-deploy-databases-6b8dfcdc5d-7d4td 1/1 Running 0 17d + mongo-deploy-databases-85c75cbb-v88r6 1/1 Running 0 17d ``` - 登录 AuthHub - AuthHub 的域名以 为例,浏览器输入`https://authhub.test.com`, 登录界面如下图所示: + AuthHub 的域名以 为例,浏览器输入`https://authhub.test.com`,登录界面如下图所示: ![部署图](./pictures/authhub登录界面.png) + **AuthHub 登录默认账号 `administrator`, 密码 `changeme`** + - 创建应用eulercopilot ![部署图](./pictures/创建应用界面.png) - 点击创建应用,输入应用名称、应用主页和应用回调地址(登录后回调地址),参考如下: - - 应用名称:eulercopilot - - 应用主页: - - 应用回调地址: - - 应用创建好后会生成 Client ID 和 Client Secret,将生成的 Client ID 和 Client Secret 配置到应用里,以 eulercopilot 为例,创建应用后在配置文件中添加配置 `deploy/chart/euler_copilot/values.yaml` 中添加配置 + + 点击**创建应用**后,请按照以下示例填写相关信息: + - **应用名称**: eulercopilot + - **应用主页 URL**: https://eulercopilot.test.com + - **应用回调地址(登录后)**: https://eulercopilot.test.com/api/auth/login + - 点击**创建**,即可完成应用创建流程,系统将自动生成一个 **Client ID** 和 **Client Secret**。请保存好这对凭据,稍后在 `deploy/chart/euler_copilot/values.yaml` 配置文件中需要添加它们。 ![部署图](./pictures/创建应用成功界面.png) -### 2. 安装 openEuler Copilot System +### 3. 安装 openEuler Copilot System - 编辑 values.yaml ```bash - cd deploy/chart/euler_copilot + cd ../euler_copilot ``` - - 请结合 YAML 中的注释中的[必填]项进行修改 - ```bash vim values.yaml ``` + **填写说明:** - - 注意: - 1. 根据对应的架构修改镜像标签,并填写数据库密码。; - 2. 修改values.yaml中的globals的domain为EulerCopilot域名,并配置大模型的相关信息 - 3. 手动创建`docs_dir`、`plugin_dir`、`models`三个文件挂载目录 - 4. 修改values.yaml中framework章节的web_url和oidc设置 - 5. 如果部署插件,则需要配置用于Function Call的模型,此时必须有GPU环境用于部署sglang,可参考附件 + 1. **密码设置**:所有密码必须是数字与字母的组合,请确保所有条目均已准确无误地填写。 + 2. **域名配置**:请根据先前的域名设置,正确填写 eulercopilot 和 witchind 的对应域名。 + 3. **镜像标签调整**:依据系统的架构要求,适当调整容器镜像的标签(tag)。 + 4. **Volume挂载目录**:创建并指定正确的卷(volume)挂载路径。 + 5. **OIDC 设置**:完成 framework章节中 OIDC 的正确配置。 + 6. **插件部署(可选)**:如果选择部署插件,需配置用于Function Call的模型。注意,部署sglang时需要有GPU支持环境,详情请参阅附件。 - 安装 openEuler Copilot System @@ -297,49 +317,64 @@ cd /home/euler-copilot-framework/deploy/scripts && tree web-deploy-service-74fbf7999f-r46rg 1/1 Running 0 2d ``` - 注意:如果 Pod 状态出现失败,建议按照以下步骤进行排查 - 1. 查看 Kubernetes 集群的事件 (Events),以获取更多关于 Pod 失败的上下文信息 + **故障排查:** + + 当 Pod 状态显示为失败时,建议遵循以下步骤进行问题排查: + + 1. **获取集群事件信息** + + 为了更好地定位 Pod 失败的原因,请首先检查 Kubernetes 集群中的事件 (Events)。这可以提供有关 Pod 状态变化的上下文信息。 ```bash - kubectl -n euler-copilot get events + kubectl get events -n euler-copilot ``` - 2. 查看镜像拉取是否成功 + 2. **验证镜像拉取状态** + + 确认容器镜像是否成功拉取。如果镜像未能正确加载,可能是由于网络问题或镜像仓库配置错误。 ```bash k3s crictl images ``` - 3. 检查 RAG 的 Pod 日志,以确定是否有错误信息或异常行为。 + 3. **审查 Pod 日志** + + 检查相关 Pod 的日志,以寻找可能的错误信息或异常行为。这对于诊断应用程序级别的问题特别有用。 ```bash kubectl logs rag-deploy-service-5b7887644c-sm58z -n euler-copilot ``` - 4. 验证 Kubernetes 集群的资源状态,检查服务器资源或配额是否足够,资源不足常导致 Pod 镜像服拉取失败。 + 4. **评估资源可用性** + + 确保 Kubernetes 集群有足够的资源(如 CPU、内存和存储)来支持 Pod 的运行。资源不足可能导致镜像拉取失败或其他性能问题。 ```bash - df -h + kubectl top nodes ``` - 5. 如果未拉取成且镜像大小为0,请检查是否是 k3s 版本未满足要求,低于 v1.30.2 + 5. **确认 k3s 版本兼容性** + + 如果遇到镜像拉取失败且镜像大小为 0 的问题,请检查您的 k3s 版本是否符合最低要求(v1.30.2 或更高)。较低版本可能存在不兼容的问题。 ```bash k3s -v ``` - 6. 确认 values.yaml 中 framework 的 OIDC 设置是否正确配置,以确保身份验证和授权功能正常工作。 + 6. **检查 OIDC 设置** + + 审核 `values.yaml` 文件中关于框架的 OIDC 配置,确保身份验证和授权服务已正确设置,这对于集成外部认证服务至关重要。 ```bash - vim /home/euler-copilot-framework/deploy/chart/euler_copilot/values.yaml + cat /home/euler-copilot-framework/deploy/chart/euler_copilot/values.yaml | grep oidc ``` ## 验证安装 -恭喜您,openEuler Copilot System 的部署已完成!现在,您可以开启智能问答的非凡体验之旅了。 -请在浏览器中输入 https://$(host_ip):8080 或 (其中 port 默认值为8080,若更改则需相应调整)访问 openEuler Copilot System 网页,并尝试进行智能问答体验。 +恭喜您,**openEuler Copilot System** 已成功部署!为了开始您的体验,请在浏览器中输入 `https://您的EulerCopilot域名` 链接访问 openEuler Copilot System 的网页界面: + +首次访问时,您需要点击页面上的 **立即注册** 按钮来创建一个新的账号,并完成登录过程。 -首先请点击下方页面的“立即注册”按钮,完成账号的注册与登录。 ![Web登录界面](./pictures/WEB登录界面.png) ![Web 界面](./pictures/WEB界面.png) @@ -452,110 +487,83 @@ cd /home/euler-copilot-framework/deploy/scripts && tree NPU 环境部署可参考链接 [MindIE安装指南](https://www.hiascend.com/document/detail/zh/mindie/10RC2/whatismindie/mindie_what_0001.html) -## FAQ +### FAQ -### 1. huggingface 使用报错? +#### 1. 解决 Hugging Face 连接错误 + +如果遇到如下连接错误: ```text -File "/usr/lib/python3.9/site-packages/urllib3/connection.py", line 186, in _new_conn -raise NewConnectionError(urllib3.exceptions.eanconectionError: : Failed to establish a new conmection: [Errno 101] Network is unreachable +urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 101] Network is unreachable ``` -- 解决办法 +尝试以下解决方案: -```bash -pip3 install -U huggingface_hub -``` +- 更新 `huggingface_hub` 包到最新版本。 -```bash -export HF_ENDPOINT=https://hf-mirror.com -``` + ```bash + pip3 install -U huggingface_hub + ``` -### 2. 如何在 RAG 容器中调用获取问答结果的接口? +- 如果网络问题依旧存在,可以尝试使用镜像站点作为端点。 -- 请先进入到 RAG 对应 Pod + ```bash + export HF_ENDPOINT=https://hf-mirror.com + ``` + +#### 2. 在 RAG 容器中调用问答接口 + +进入对应的 RAG Pod 后,可以通过 `curl` 命令发送 POST 请求来获取问答结果。请确保在请求体中提供具体的问题文本。 ```bash curl -k -X POST "http://localhost:8005/kb/get_answer" \ -H "Content-Type: application/json" \ -d '{ - "question": "", + "question": "您的问题", "kb_sn": "default_test", "fetch_source": true }' ``` -### 3. 执行 `helm upgrade` 报错? +#### 3. 解决 `helm upgrade` 错误 -```text -Error: INSTALLATI0N FAILED: Kubernetes cluster unreachable: Get "http:/localhost:880/version": dial tcp [:1:8089: connect: connection refused -``` - -或者 +当 Kubernetes 集群不可达时,您可能会遇到类似下面的错误信息: ```text -Error: UPGRADE FAILED: Kubernetes cluster unreachable: the server could not find the requested resource +Error: UPGRADE FAILED: Kubernetes cluster unreachable ``` -- 解决办法 +确保设置了正确的 KUBECONFIG 环境变量指向有效的配置文件。 ```bash export KUBECONFIG=/etc/rancher/k3s/k3s.yaml ``` -### 4. 无法查看 Pod 日志? - -```text -[root@localhost euler-copilot]# kubectl logs rag-deployservice65c75c48d8-44vcp-n euler-copilotDefaulted container "rag" out of: rag.rag-copy secret (init)Error from server: Get "https://172.21.31.11:10250/containerlogs/euler copilot/rag deploy"service 65c75c48d8-44vcp/rag": Forbidden -``` +#### 4. 查看 Pod 日志失败 -- 解决办法 - 如果设置了代理,需要将本机的网络 IP 从代理中剔除 +如果您遇到查看 Pod 日志时权限被拒绝的问题,检查是否正确配置了代理设置,并将本机 IP 地址添加到 `no_proxy` 环境变量中。 ```bash cat /etc/systemd/system/k3s.service.env ``` +编辑文件并确保包含: + ```bash -http_proxy="http://XXX:XXX" -https_proxy="http://XXX:XXX" -# 代理中剔除本机IP -no_proxy=XXX.XXX.XXX.XXX +no_proxy=XXX.XXX.XXX.XXX ``` -### 5. GPU环境部署大模型时出现无法流式回复? +#### 5. GPU环境中大模型流式回复问题 -在服务执行 curl 大模型失败,但是将 `"stream": true` 改为 `"stream": false`就可以 curl 通? +对于某些服务执行 curl 大模型时无法进行流式回复的情况,尝试修改请求中的 `"stream"` 参数为 `false`。此外,确认已安装兼容版本的 Pydantic 库。 ```bash -curl -X POST http://localhost:30000/v1/chat/completions \ - -H "Content-Type: application/json" \ - -H "Authorization: Bearer sk-123456" \ - -d '{ - "model": "qwen1.5", - "messages": [ - { - "role": "system", - "content": "你是情感分析专家,你的任务是xxxx" - }, - { - "role": "user", - "content": "你好" - } - ], - "stream": true, - "n": 1, - "max_tokens": 8192 - }' +pip install pydantic==1.10.13 ``` -- 解决办法: - -```bash -pip install Pydantic=1.10.13 -``` +#### 6. sglang 模型部署指南 -### 6. sglang如何部署模型? +按照以下步骤部署基于 sglang 的模型: ```bash # 1. 激活名为 `myenv` 的 Conda 环境,该环境基于 Python 3.10 创建: @@ -585,39 +593,39 @@ python -m sglang.launch_server \ pip show flashinfer ``` -- 注意: -1. API Key:请确保 `--api-key` 参数中的 API 密钥是正确的 -2. 模型路径: 确保 `--model-path` 参数中的路径是正确的,并且模型文件存在于该路径下。 -3. CUDA 版本:确保你的系统上安装了 CUDA 12.1 和 PyTorch 2.4,因为 `flashinfer` 包依赖于这些特定版本。 -4. 线程池大小:根据你的GPU资源和预期负载调整线程池大小。如果你有 8 个 GPU,那么可以选择 --tp 8 来充分利用这些资源。 +**注意事项:** +- API Key:请确保 `--api-key` 参数中的 API 密钥是正确的 +- 模型路径: 确保 `--model-path` 参数中的路径是正确的,并且模型文件存在于该路径下。 +- CUDA 版本:确保你的系统上安装了 CUDA 12.1 和 PyTorch 2.4,因为 `flashinfer` 包依赖于这些特定版本。 +- 线程池大小:根据你的GPU资源和预期负载调整线程池大小。如果你有 8 个 GPU,那么可以选择 --tp 8 来充分利用这些资源。 + +#### 7. 获取 Embedding -### 7. 如何 curl embedding? +使用 curl 发送 POST 请求以获取 embedding 结果: ```bash curl -k -X POST http://$IP:8001/embedding \ -H "Content-Type: application/json" \ - -d '{"texts": ["sample text 1", "sample text 2"]}' -# $IP为vectorize的Embedding的内网地址 + -d '{"texts": ["sample text 1", "sample text 2"]}' ``` -### 8. 如何生成证书? +其中 `$IP` 是 vectorize 内网地址。 +#### 8. 生成证书 + +为了生成自签名证书,首先下载 [mkcert](https://github.com/FiloSottile/mkcert/releases)工具,然后运行以下命令: ```bash -下载地址: https://github.com/FiloSottile/mkcert/releases -# 1. 下载 mkcert -# x86_64 -wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-amd64 -# arm64 -wget https://github.com/FiloSottile/mkcert/releases/download/v1.4.4/mkcert-v1.4.4-linux-arm64 -# 2. 执行下面的命令生成秘钥 mkcert -install -# mkcert 可直接接域名或 IP, 生成证书和秘钥 mkcert example.com -# 3. 将证书和秘钥拷贝到 `/home/euler-copilot-framework_openeuler/deploy/chart_ssl/traefik-secret.yaml` 中, 并执行下面命令使其生效。 +``` +最后,将生成的证书和私钥拷贝到 values.yaml 中, 并应用至 Kubernetes Secret。 +```bash +vim /home/euler-copilot-framework_openeuler/deploy/chart_ssl/traefik-secret.yaml +``` +```bash kubectl apply -f traefik-secret.yaml ``` -### 8. Pod状态由runnning变为pending? - -在Pod正常运行一段时间后,其状态从“Running”全部转变为 “Pending” 或 “Completed”, -可执行命令`df -h`,查看Pod所在宿主机的存储空间,确保可用空间不低于30%,以保证pod的正常运行。 +#### 9. Pod 状态从 Running 变为 Pending 或 Completed + +Pod 状态变化可能是因为宿主机存储空间不足。使用 `df -h` 检查磁盘使用情况,并保证至少有 30% 的可用空间。这有助于维持 Pod 的稳定运行状态。 \ No newline at end of file -- Gitee