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

拆分Jobs后GitHub Actions中Helm无法连接K3s求助

GitHub Actions拆分Job后Helm无法连接K3s的解决方法

问题根源

每个GitHub Actions的Job都运行在独立的虚拟机实例中,彼此完全隔离,本地资源(比如你在setup-k3s里启动的K3s集群)无法跨Job共享。旧版单Job配置中,K3s、Helm和所有操作都在同一台虚拟机上,自然能正常通信;拆分后,setup-k3s里的K3s只存在于该Job的虚拟机中,后续dry-run、install等Job在全新机器上,根本找不到这个集群,导致Helm连接失败。


解决方案

方案1:合并依赖K3s的步骤到同一Job

把需要访问K3s的操作(K3s安装、Helm安装、部署、测试)放在同一个Job里,仅将不需要K3s的linting单独拆分,既保留部分流程拆分的优势,又保证环境一致性。修改后的配置如下:

name: Deployment

on:
  push:
    branches:
      - main 

jobs:
  linting:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v2    
    - name: Validate Helm charts
      run: helm lint

  deploy-and-test:
    runs-on: ubuntu-latest
    needs: linting
    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Kubernetes
      run: |
        curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE=777 sh -
        mkdir -p ~/.kube
        cp /etc/rancher/k3s/k3s.yaml ~/.kube/config

    - name: Set up Helm
      uses: azure/setup-helm@v1

    - name: Dry-run install Helm chart
      if: always()
      run: helm install workflow . --values values.yaml --debug --dry-run

    - name: Install Helm chart
      if: always()
      run: helm install workflow . --values values.yaml --debug

    - name: Run Helm tests
      if: always()
      run: helm test workflow

方案2:使用外部共享K8s集群(可选)

如果必须拆分所有Job,可以使用外部托管的Kubernetes集群(而非在Job内本地启动K3s),将集群的kubeconfig文件存储为GitHub Secrets,在每个需要连接集群的Job中加载该配置。这种方式适合已有外部集群的场景,但配置复杂度更高。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 11:02:06