mirror of
https://github.com/iflytek/skillhub.git
synced 2026-10-03 02:24:36 +00:00
feat: 在项目根目录添加 K8s 部署清单,修复云效部署路径问题
This commit is contained in:
parent
690e355235
commit
ced9ccc946
3 changed files with 343 additions and 0 deletions
65
manifests/deployment.yaml
Normal file
65
manifests/deployment.yaml
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: skillhub-scanner
|
||||
labels:
|
||||
app: skillhub-scanner
|
||||
version: v1
|
||||
spec:
|
||||
replicas: 2
|
||||
selector:
|
||||
matchLabels:
|
||||
app: skillhub-scanner
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: skillhub-scanner
|
||||
version: v1
|
||||
spec:
|
||||
containers:
|
||||
- name: scanner
|
||||
image: ${IMAGE}
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 8000
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: TZ
|
||||
value: "Asia/Shanghai"
|
||||
- name: PYTHONUNBUFFERED
|
||||
value: "1"
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
cpu: 500m
|
||||
memory: 512Mi
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8000
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 10
|
||||
periodSeconds: 10
|
||||
timeoutSeconds: 3
|
||||
successThreshold: 1
|
||||
failureThreshold: 3
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /health
|
||||
port: 8000
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 5
|
||||
timeoutSeconds: 3
|
||||
successThreshold: 1
|
||||
failureThreshold: 3
|
||||
securityContext:
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1000
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: false
|
||||
restartPolicy: Always
|
||||
terminationGracePeriodSeconds: 30
|
||||
16
manifests/service.yaml
Normal file
16
manifests/service.yaml
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: skillhub-scanner
|
||||
labels:
|
||||
app: skillhub-scanner
|
||||
spec:
|
||||
type: ClusterIP
|
||||
selector:
|
||||
app: skillhub-scanner
|
||||
ports:
|
||||
- name: http
|
||||
port: 8000
|
||||
targetPort: 8000
|
||||
protocol: TCP
|
||||
sessionAffinity: None
|
||||
262
云效部署配置修复.md
Normal file
262
云效部署配置修复.md
Normal file
|
|
@ -0,0 +1,262 @@
|
|||
# 云效部署配置修复指南
|
||||
|
||||
## 🔍 问题分析
|
||||
|
||||
错误信息:
|
||||
```
|
||||
PATH_TO_YAML=manifests
|
||||
PROJECT_DIR=/root/workspace/.../workspace/scanner
|
||||
ERROR: 没有找到发布的资源,请检查YAML路径配置
|
||||
```
|
||||
|
||||
**原因:** 云效的工作目录和 YAML 路径配置不匹配。
|
||||
|
||||
---
|
||||
|
||||
## ✅ 解决方案(三选一)
|
||||
|
||||
### 方案一:修改云效配置路径(最简单)
|
||||
|
||||
在云效 Flow 的 KubectlApply 步骤中:
|
||||
|
||||
#### 1. 找到部署步骤配置
|
||||
|
||||
进入云效 Flow → 编辑 → 找到 "KubectlApply" 或 "部署到 Kubernetes" 步骤
|
||||
|
||||
#### 2. 修改配置
|
||||
|
||||
**当前配置:**
|
||||
```yaml
|
||||
path_to_yaml: manifests
|
||||
```
|
||||
|
||||
**修改为以下任一选项:**
|
||||
|
||||
**选项 A:使用相对于项目根的路径**
|
||||
```yaml
|
||||
path_to_yaml: scanner/manifests
|
||||
```
|
||||
|
||||
**选项 B:使用项目根目录的 manifests**
|
||||
```yaml
|
||||
path_to_yaml: manifests
|
||||
```
|
||||
(配合方案二,将 manifests 放在项目根目录)
|
||||
|
||||
#### 3. 保存并重新运行
|
||||
|
||||
---
|
||||
|
||||
### 方案二:使用项目根目录的 manifests(推荐)
|
||||
|
||||
已经在项目根目录创建了 `manifests` 目录并复制了配置文件。
|
||||
|
||||
#### 项目结构:
|
||||
|
||||
```
|
||||
skillhub/
|
||||
├── manifests/ ← 项目根目录(推荐)
|
||||
│ ├── deployment.yaml
|
||||
│ └── service.yaml
|
||||
└── scanner/
|
||||
└── manifests/ ← scanner 子目录(备用)
|
||||
├── deployment.yaml
|
||||
└── service.yaml
|
||||
```
|
||||
|
||||
#### 在云效中配置:
|
||||
|
||||
```yaml
|
||||
# KubectlApply 步骤配置
|
||||
kubectl_version: v1.27.9
|
||||
cluster_type: ack
|
||||
namespace: default
|
||||
path_to_yaml: manifests ← 指向项目根目录的 manifests
|
||||
insecure_skip_tls_verify: true
|
||||
variables: |
|
||||
IMAGE=jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner:${BUILD_NUMBER}
|
||||
```
|
||||
|
||||
#### 提交到 Git:
|
||||
|
||||
```bash
|
||||
cd /Users/zhai/my_project/indea_project_workspaces/skillhub
|
||||
git add manifests/
|
||||
git commit -m "feat: 在项目根目录添加 K8s 部署清单"
|
||||
git push
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 方案三:修改云效工作目录
|
||||
|
||||
如果前两个方案都不行,可以修改云效的工作目录设置。
|
||||
|
||||
#### 在云效 Flow 配置中:
|
||||
|
||||
找到"构建环境"或"工作目录"设置,确保:
|
||||
|
||||
```yaml
|
||||
# 工作目录设置为项目根目录,不是 scanner 子目录
|
||||
working_directory: .
|
||||
# 或者
|
||||
working_directory: ${WORKSPACE}
|
||||
```
|
||||
|
||||
然后 `path_to_yaml` 设置为:
|
||||
```yaml
|
||||
path_to_yaml: scanner/manifests
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 推荐操作(最快)
|
||||
|
||||
### 第 1 步:提交根目录的 manifests
|
||||
|
||||
```bash
|
||||
cd /Users/zhai/my_project/indea_project_workspaces/skillhub
|
||||
git add manifests/
|
||||
git commit -m "feat: 在项目根目录添加 K8s 部署清单"
|
||||
git push
|
||||
```
|
||||
|
||||
### 第 2 步:修改云效配置
|
||||
|
||||
在云效 Flow 的 KubectlApply 步骤中:
|
||||
|
||||
**找到这个配置项:**
|
||||
```
|
||||
PATH_TO_YAML 或 path_to_yaml
|
||||
```
|
||||
|
||||
**修改为:**
|
||||
```
|
||||
manifests
|
||||
```
|
||||
|
||||
(不要写 `scanner/manifests`,因为我们现在用根目录的 manifests)
|
||||
|
||||
### 第 3 步:重新运行部署
|
||||
|
||||
点击"运行",观察日志是否能找到 YAML 文件。
|
||||
|
||||
---
|
||||
|
||||
## 📸 云效界面配置示例
|
||||
|
||||
### KubectlApply 步骤配置界面可能长这样:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ 步骤名称: [部署到 Kubernetes ] │
|
||||
│ 步骤类型: [KubectlApply ▼] │
|
||||
│ │
|
||||
│ Kubernetes 配置 │
|
||||
│ ├─ kubectl 版本: [v1.27.9 ] │
|
||||
│ ├─ 集群类型: [ACK ▼] │
|
||||
│ ├─ 命名空间: [default ] │
|
||||
│ └─ YAML 路径: [manifests ] │← 修改这里
|
||||
│ │
|
||||
│ 镜像替换变量: │
|
||||
│ ┌─────────────────────────────────────┐ │
|
||||
│ │IMAGE=jsessh-registry.cn-shanghai. │ │
|
||||
│ │ cr.aliyuncs.com/apps/sh-skill- │ │
|
||||
│ │ scanner:${BUILD_NUMBER} │ │
|
||||
│ └─────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ [保存] [取消] │
|
||||
└─────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✅ 验证配置
|
||||
|
||||
修改后重新运行,应该看到:
|
||||
|
||||
```
|
||||
[INFO] YAML模板处理成功 manifests -> /root/workspace/.../manifests
|
||||
[INFO] 所有部署资源:
|
||||
[INFO] total 8
|
||||
[INFO] -rw-r--r-- 1 root root 1520 deployment.yaml
|
||||
[INFO] -rw-r--r-- 1 root root 264 service.yaml
|
||||
[INFO] kubectl apply -f deployment.yaml
|
||||
[INFO] deployment.apps/skillhub-scanner created
|
||||
[INFO] kubectl apply -f service.yaml
|
||||
[INFO] service/skillhub-scanner created
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔍 常见问题
|
||||
|
||||
### Q1: 修改后还是找不到文件
|
||||
|
||||
**A:** 确认以下几点:
|
||||
1. manifests 目录已经提交并推送到 Git
|
||||
2. 云效的代码检出步骤没有问题
|
||||
3. path_to_yaml 的值与实际目录结构匹配
|
||||
|
||||
### Q2: 变量 ${IMAGE} 没有被替换
|
||||
|
||||
**A:** 在 KubectlApply 步骤的 variables 配置中添加:
|
||||
```
|
||||
IMAGE=jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner:${BUILD_NUMBER}
|
||||
```
|
||||
|
||||
### Q3: 部署成功但 Pod 无法启动
|
||||
|
||||
**A:** 检查:
|
||||
1. 镜像是否成功推送
|
||||
2. 镜像拉取权限是否配置
|
||||
3. Pod 日志:`kubectl logs -l app=skillhub-scanner`
|
||||
|
||||
---
|
||||
|
||||
## 📝 完整的云效流水线示例
|
||||
|
||||
如果云效支持 YAML 配置:
|
||||
|
||||
```yaml
|
||||
version: v1.0
|
||||
name: skillhub-scanner
|
||||
stages:
|
||||
- name: 构建
|
||||
jobs:
|
||||
- job:
|
||||
name: 构建镜像
|
||||
steps:
|
||||
- step: script@1
|
||||
with:
|
||||
script: |
|
||||
docker build --no-cache --pull \
|
||||
-t jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner:${BUILD_NUMBER} \
|
||||
-f scanner/Dockerfile \
|
||||
scanner/
|
||||
docker push jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner:${BUILD_NUMBER}
|
||||
|
||||
- name: 部署
|
||||
jobs:
|
||||
- job:
|
||||
name: 部署到 K8s
|
||||
steps:
|
||||
- step: kubectl-apply@1
|
||||
with:
|
||||
kubectl_version: v1.27.9
|
||||
cluster_type: ack
|
||||
namespace: default
|
||||
path_to_yaml: manifests # ← 关键配置
|
||||
insecure_skip_tls_verify: true
|
||||
variables: |
|
||||
IMAGE=jsessh-registry.cn-shanghai.cr.aliyuncs.com/apps/sh-skill-scanner:${BUILD_NUMBER}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 下一步
|
||||
|
||||
1. ✅ **提交 manifests 到 Git**(已创建在项目根目录)
|
||||
2. ✅ **修改云效配置**(path_to_yaml: manifests)
|
||||
3. ✅ **重新运行部署**
|
||||
4. ✅ **验证应用**(kubectl get pods)
|
||||
Loading…
Add table
Reference in a new issue