Files
open-im-server-deploy/.gitea/SECRETS_CONFIG.md
kim.dev.6789 e50142a3b9 复制项目
2026-01-14 22:16:44 +08:00

6.7 KiB
Raw Blame History

OpenIM Server 项目 Gitea Actions 秘钥配置指南

📋 概述

本指南说明如何在 Gitea 中配置必要的秘钥,以支持 OpenIM Server 项目的自动构建和部署到阿里云 ACK。

🔑 必需秘钥配置

1. Docker Hub 相关秘钥

DOCKER_USERNAME

  • 描述: Docker Hub 用户名
  • 示例: openim
  • 获取方式: 在 Docker Hub 注册账号

DOCKER_PASSWORD

  • 描述: Docker Hub 密码或访问令牌
  • 示例: your-docker-passworddckr_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. 登录阿里云控制台

  2. 选择集群

    • 进入目标 ACK 集群详情页
  3. 获取连接信息

    • 点击 "连接信息" 标签
    • 复制 "公网访问" 或 "内网访问" 的 kubeconfig 内容
  4. 编码kubeconfig

    # 将获取的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

    # macOS
    brew install aliyun-cli
    
    # Linux
    curl -sSL https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz | tar -xzC /usr/local/bin
    
  2. 配置认证

    aliyun configure
    # 输入 AccessKey ID 和 AccessKey Secret
    
  3. 获取kubeconfig并编码

    # 获取指定集群的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_USERNAMEDOCKER_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 是否正常启动

调试命令

# 检查秘钥是否正确设置
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

📚 参考文档

🆘 支持

如遇到问题,请检查:

  1. 秘钥是否正确配置
  2. 网络连接是否正常
  3. 权限是否充足
  4. 集群状态是否正常

更多帮助请参考:

  • Gitea Actions 日志
  • 阿里云 ACK 控制台
  • Docker Hub 状态页面
  • OpenIM 官方文档