复制项目
This commit is contained in:
255
.gitea/SECRETS_CONFIG.md
Normal file
255
.gitea/SECRETS_CONFIG.md
Normal file
@@ -0,0 +1,255 @@
|
||||
# OpenIM Server 项目 Gitea Actions 秘钥配置指南
|
||||
|
||||
## 📋 概述
|
||||
|
||||
本指南说明如何在 Gitea 中配置必要的秘钥,以支持 OpenIM Server 项目的自动构建和部署到阿里云 ACK。
|
||||
|
||||
## 🔑 必需秘钥配置
|
||||
|
||||
### 1. Docker Hub 相关秘钥
|
||||
|
||||
#### DOCKER_USERNAME
|
||||
- **描述**: Docker Hub 用户名
|
||||
- **示例**: `openim`
|
||||
- **获取方式**: 在 Docker Hub 注册账号
|
||||
|
||||
#### DOCKER_PASSWORD
|
||||
- **描述**: Docker Hub 密码或访问令牌
|
||||
- **示例**: `your-docker-password` 或 `dckr_pat_xxxxxxxxxxxx`
|
||||
- **推荐**: 使用访问令牌(Access Token)而不是密码
|
||||
- **获取方式**:
|
||||
1. 登录 Docker Hub
|
||||
2. 进入 Account Settings → Security
|
||||
3. 创建 New Access Token
|
||||
|
||||
### 2. 阿里云 ACK 相关秘钥
|
||||
|
||||
#### KUBECONFIG
|
||||
- **描述**: 阿里云 ACK 集群的 kubeconfig 内容(base64编码)
|
||||
- **格式**: base64编码的YAML格式kubeconfig文件内容
|
||||
- **获取方式**: 见下方详细说明
|
||||
|
||||
#### ALIBABA_CLOUD_ACCESS_KEY_ID (可选)
|
||||
- **描述**: 阿里云AccessKey ID
|
||||
- **用途**: 用于通过aliyun CLI获取kubeconfig
|
||||
- **获取方式**: 阿里云控制台 → 访问控制 → AccessKey管理
|
||||
|
||||
#### ALIBABA_CLOUD_ACCESS_KEY_SECRET (可选)
|
||||
- **描述**: 阿里云AccessKey Secret
|
||||
- **用途**: 用于通过aliyun CLI获取kubeconfig
|
||||
- **获取方式**: 阿里云控制台 → 访问控制 → AccessKey管理
|
||||
|
||||
#### ACK_CLUSTER_ID (可选)
|
||||
- **描述**: 阿里云ACK集群ID
|
||||
- **用途**: 用于通过aliyun CLI获取kubeconfig
|
||||
- **获取方式**: ACK控制台集群详情页
|
||||
|
||||
#### ACK_REGION (可选)
|
||||
- **描述**: 阿里云ACK集群区域
|
||||
- **默认值**: `cn-hangzhou`
|
||||
- **示例**: `cn-beijing`, `cn-shanghai`, `cn-shenzhen`
|
||||
|
||||
#### NAMESPACE (可选)
|
||||
- **描述**: Kubernetes命名空间
|
||||
- **默认值**: `openim`
|
||||
- **示例**: `openim`, `default`, `production`
|
||||
|
||||
## 🚀 获取阿里云 ACK KUBECONFIG
|
||||
|
||||
### 方法1: 通过阿里云控制台(推荐)
|
||||
|
||||
1. **登录阿里云控制台**
|
||||
- 访问 [阿里云容器服务控制台](https://cs.console.aliyun.com/)
|
||||
|
||||
2. **选择集群**
|
||||
- 进入目标 ACK 集群详情页
|
||||
|
||||
3. **获取连接信息**
|
||||
- 点击 "连接信息" 标签
|
||||
- 复制 "公网访问" 或 "内网访问" 的 kubeconfig 内容
|
||||
|
||||
4. **编码kubeconfig**
|
||||
```bash
|
||||
# 将获取的kubeconfig内容保存到文件
|
||||
cat > kubeconfig.yaml << 'EOF'
|
||||
apiVersion: v1
|
||||
clusters:
|
||||
- cluster:
|
||||
certificate-authority-data: LS0tLS1CRUdJTi...
|
||||
server: https://your-cluster-id.cn-hangzhou.cs.aliyuncs.com:6443
|
||||
name: kubernetes
|
||||
contexts:
|
||||
- context:
|
||||
cluster: kubernetes
|
||||
user: your-user
|
||||
name: kubernetes
|
||||
current-context: kubernetes
|
||||
kind: Config
|
||||
preferences: {}
|
||||
users:
|
||||
- name: your-user
|
||||
user:
|
||||
client-certificate-data: LS0tLS1CRUdJTi...
|
||||
client-key-data: LS0tLS1CRUdJTi...
|
||||
EOF
|
||||
|
||||
# 编码为base64
|
||||
base64 -w 0 kubeconfig.yaml
|
||||
```
|
||||
|
||||
### 方法2: 通过阿里云 CLI
|
||||
|
||||
1. **安装阿里云 CLI**
|
||||
```bash
|
||||
# macOS
|
||||
brew install aliyun-cli
|
||||
|
||||
# Linux
|
||||
curl -sSL https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz | tar -xzC /usr/local/bin
|
||||
```
|
||||
|
||||
2. **配置认证**
|
||||
```bash
|
||||
aliyun configure
|
||||
# 输入 AccessKey ID 和 AccessKey Secret
|
||||
```
|
||||
|
||||
3. **获取kubeconfig并编码**
|
||||
```bash
|
||||
# 获取指定集群的kubeconfig
|
||||
aliyun cs GET /k8s/clusters/{cluster_id}/user_config > kubeconfig.yaml
|
||||
|
||||
# 编码为base64
|
||||
base64 -w 0 kubeconfig.yaml
|
||||
```
|
||||
|
||||
## 🔧 在 Gitea 中配置秘钥
|
||||
|
||||
### 1. 进入仓库设置
|
||||
|
||||
1. 打开 OpenIM Server 项目仓库
|
||||
2. 点击 "Settings" 标签
|
||||
3. 在左侧菜单中点击 "Secrets"
|
||||
|
||||
### 2. 添加秘钥
|
||||
|
||||
点击 "New Secret" 按钮,依次添加以下秘钥:
|
||||
|
||||
#### 必需秘钥
|
||||
|
||||
##### DOCKER_USERNAME
|
||||
- **Name**: `DOCKER_USERNAME`
|
||||
- **Value**: 你的 Docker Hub 用户名
|
||||
|
||||
##### DOCKER_PASSWORD
|
||||
- **Name**: `DOCKER_PASSWORD`
|
||||
- **Value**: 你的 Docker Hub 密码或访问令牌
|
||||
|
||||
##### KUBECONFIG
|
||||
- **Name**: `KUBECONFIG`
|
||||
- **Value**: base64编码的kubeconfig文件内容
|
||||
|
||||
#### 可选秘钥
|
||||
|
||||
##### ALIBABA_CLOUD_ACCESS_KEY_ID
|
||||
- **Name**: `ALIBABA_CLOUD_ACCESS_KEY_ID`
|
||||
- **Value**: 阿里云AccessKey ID
|
||||
|
||||
##### ALIBABA_CLOUD_ACCESS_KEY_SECRET
|
||||
- **Name**: `ALIBABA_CLOUD_ACCESS_KEY_SECRET`
|
||||
- **Value**: 阿里云AccessKey Secret
|
||||
|
||||
##### ACK_CLUSTER_ID
|
||||
- **Name**: `ACK_CLUSTER_ID`
|
||||
- **Value**: ACK集群ID
|
||||
|
||||
##### ACK_REGION
|
||||
- **Name**: `ACK_REGION`
|
||||
- **Value**: ACK集群区域(默认:cn-hangzhou)
|
||||
|
||||
##### NAMESPACE
|
||||
- **Name**: `NAMESPACE`
|
||||
- **Value**: Kubernetes命名空间(默认:openim)
|
||||
|
||||
## 🚨 安全注意事项
|
||||
|
||||
### 1. 秘钥安全
|
||||
- **不要** 将秘钥提交到代码仓库
|
||||
- **定期轮换** 访问令牌和密码
|
||||
- **使用最小权限** 原则配置访问权限
|
||||
|
||||
### 2. KUBECONFIG 安全
|
||||
- **限制权限**: 确保kubeconfig只有必要的权限
|
||||
- **定期更新**: 定期更新证书和密钥
|
||||
- **监控访问**: 监控集群访问日志
|
||||
|
||||
### 3. Docker Hub 安全
|
||||
- **使用访问令牌**: 优先使用访问令牌而不是密码
|
||||
- **限制权限**: 只授予必要的仓库推送权限
|
||||
- **定期轮换**: 定期更新访问令牌
|
||||
|
||||
## 🔍 故障排除
|
||||
|
||||
### 常见问题
|
||||
|
||||
#### 1. Docker 登录失败
|
||||
```
|
||||
Error: Cannot perform an interactive login from a non TTY device
|
||||
```
|
||||
**解决方案**: 检查 `DOCKER_USERNAME` 和 `DOCKER_PASSWORD` 是否正确配置
|
||||
|
||||
#### 2. kubectl 连接失败
|
||||
```
|
||||
Unable to connect to the server: x509: certificate signed by unknown authority
|
||||
```
|
||||
**解决方案**: 检查 `KUBECONFIG` 中的证书数据是否正确
|
||||
|
||||
#### 3. 镜像拉取失败
|
||||
```
|
||||
Error: pull access denied for openim/openim-api
|
||||
```
|
||||
**解决方案**: 检查 Docker Hub 权限和镜像名称是否正确
|
||||
|
||||
#### 4. 部署超时
|
||||
```
|
||||
deployment "openim-api" exceeded its progress deadline
|
||||
```
|
||||
**解决方案**: 检查集群资源是否充足,Pod 是否正常启动
|
||||
|
||||
### 调试命令
|
||||
|
||||
```bash
|
||||
# 检查秘钥是否正确设置
|
||||
echo "Docker username: $DOCKER_USERNAME"
|
||||
echo "Kubeconfig length: ${#KUBECONFIG}"
|
||||
|
||||
# 测试 Docker 登录
|
||||
echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
||||
|
||||
# 测试 kubectl 连接
|
||||
echo "$KUBECONFIG" | base64 -d > ~/.kube/config
|
||||
kubectl cluster-info
|
||||
kubectl get nodes
|
||||
```
|
||||
|
||||
## 📚 参考文档
|
||||
|
||||
- [Gitea Actions 文档](https://docs.gitea.io/en-us/actions/)
|
||||
- [阿里云 ACK 文档](https://help.aliyun.com/product/85222.html)
|
||||
- [Docker Hub 访问令牌](https://docs.docker.com/docker-hub/access-tokens/)
|
||||
- [Kubernetes kubeconfig](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/)
|
||||
- [OpenIM 官方文档](https://docs.openim.io/)
|
||||
|
||||
## 🆘 支持
|
||||
|
||||
如遇到问题,请检查:
|
||||
1. 秘钥是否正确配置
|
||||
2. 网络连接是否正常
|
||||
3. 权限是否充足
|
||||
4. 集群状态是否正常
|
||||
|
||||
更多帮助请参考:
|
||||
- Gitea Actions 日志
|
||||
- 阿里云 ACK 控制台
|
||||
- Docker Hub 状态页面
|
||||
- OpenIM 官方文档
|
||||
Reference in New Issue
Block a user