You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Action-runner-controller在AKS中获取注册令牌404错误(GET替代POST)

问题排查:AKS上Actions Runner Controller对接GitHub Enterprise Server时404错误

问题现象

在Azure AKS配置自托管Runner对接本地GitHub Enterprise Server(GHE)时,Pod无法启动,控制器日志返回明确错误:

GET https://githubesurl/api/v3/repos/myorg/myrepo/actions/runners/registration-token: 404 Not Found []

完整日志片段:

sigs.k8s.io/controller-runtime@v0.14.4/pkg/internal/controller/controller.go:235
2023-05-01T18:45:30Z DEBUG events Updating registration token failed {"type": "Warning", "object": {"kind":"Runner","namespace":"default","name":"github-runner-api-zl728-fxv8m","uid":"557ae4c8-6813-4be2-9feb-6ff1020d59c8","apiVersion":"actions.summerwind.dev/v1alpha1","resourceVersion":"491740"}, "reason": "FailedUpdateRegistrationToken"}
2023-05-01T18:45:30Z ERROR runner Failed to get new registration token {"runner": "example-runnerdeploy-h7lk7-blvjz", "error": "failed to create registration token: GET https://githubesurl/api/v3/repos/myorg/myrepo/actions/runners/registration-token: 404 Not Found []"}

你的核心疑问:获取注册令牌应该用POST请求而非GET,是否是404的直接原因?同时你已做以下GHE适配配置,询问是否影响请求方式:

1. 添加证书相关的额外卷和卷挂载
   (--set=additionalVolumeMounts[0].name=gh-crt ....) 
2. 在部署中添加主机别名
3. 设置环境变量GITHUB_ENTERPRISE_URL=https://enterpriseurl
4. 设置环境变量SSL_CERT_DIR=/usr/share/ca-certificates 
5. 添加额外参数
   --set=githubURL="https://githubesurl/api/v3"
   --set=githubUploadURL="https://githubesurl/api/uploads"
   --set=runnerGithubURL="https://githubesurl"

排查方向

1. 确认API端点与请求方法的正确性

GHE获取仓库级注册令牌的端点确实需要POST请求,正确的API格式为:
POST /api/v3/repos/{owner}/{repo}/actions/runners/registration-token

控制器发送GET请求是异常行为,可能的诱因:

  • 使用的Actions Runner Controller(ARC)版本存在GHE适配Bug,旧版本可能未区分GitHub.com与GHE的请求方法逻辑
  • GHE相关配置错误,导致控制器误判当前环境为GitHub.com,从而使用了错误的请求方法

2. 校验GHE配置的准确性

你的配置存在几个需要重点核对的点:

  • GITHUB_ENTERPRISE_URL应设置为GHE的根地址(如https://githubesurl),而非单独的API路径,避免与githubURL参数冲突
  • 确认githubURL与GHE实际API地址完全一致:GHE默认API根路径为https://{your-ghe-domain}/api/v3,当前设置看起来正确,但需检查是否存在拼写、端口或路径错误
  • 确保环境变量与Helm参数的配置无重叠矛盾,比如GITHUB_ENTERPRISE_URL和runnerGithubURL指向的地址统一

3. 验证API访问权限与端点可用性

  • 确认用于创建令牌的GitHub PAT(个人访问令牌)拥有对应权限:仓库级Runner需repo权限,组织级Runner需admin:org权限
  • 在AKS集群内直接测试API请求,验证端点有效性:
    curl -X POST -H "Authorization: token YOUR_PAT" https://githubesurl/api/v3/repos/myorg/myrepo/actions/runners/registration-token
    
    • 如果返回200并获取到令牌,说明端点、权限、网络均正常,问题出在ARC的请求逻辑
    • 如果仍返回404,检查仓库路径的大小写(GHE仓库路径区分大小写)、组织/仓库名称是否正确

4. 检查ARC版本兼容性

  • 确认当前ARC版本与你的GHE版本兼容,旧版ARC可能对GHE 3.x及以上版本的API适配存在问题,建议升级到最新稳定版
  • 查看ARC官方Issue列表,确认是否有其他用户遇到GHE环境下发送GET请求导致404的同类问题

5. 排除证书与网络干扰

  • 虽然当前错误是404而非证书错误,但仍需确认Pod能正常解析并访问GHE地址:检查主机别名配置是否正确,证书卷挂载是否生效
  • 临时关闭SSL证书验证(仅用于测试),确认是否存在证书信任问题导致的请求异常

内容的提问来源于stack exchange,提问作者user14013917

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 05:22:22