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

使用GitHub Actions部署至Azure AKS时找不到deployment.yaml的解决问询

问题解决:GitHub Actions部署AKS时找不到deployment.yaml文件

问题描述

我正尝试通过GitHub Actions将应用部署至已有的Azure AKS集群,流程是构建Docker镜像并推送至Azure容器注册表(ACR),再用该镜像部署到AKS。但执行kubectl apply -f deployment.yaml时提示找不到文件,执行echo $(ls -a)也没返回任何文件,本地路径是/home/runner/work/App/App。以下是我的acr.yml配置文件:

name: Build and Deploy to AKS

on:
  push:
    branches: [ "main" ]

jobs:
  build-and-push:
    runs-on: ubuntu-latest

    steps:
    # Step 1: Checkout the code
    - uses: actions/checkout@v4
    
    # Step 2: Log in to Azure Container Registry (ACR)
    - uses: azure/docker-login@v2
      with:
        login-server: ${{ secrets.ACR_LOGIN_SERVER }}  # ACR login server
        username: ${{ secrets.REGISTRY_USERNAME }}  # ACR username
        password: ${{ secrets.REGISTRY_PASSWORD }}  # ACR password

    # Step 3: Build and push Docker image to ACR
    - run: |
        docker build . -t ${{ secrets.ACR_LOGIN_SERVER }}/app:${{ github.sha }}
        docker build . -t ${{ secrets.ACR_LOGIN_SERVER }}/app:latest
  
  deploy-to-aks:
    needs: build-and-push
    runs-on: ubuntu-latest

    steps:
    # Step 4: Log in to Azure
    - uses: azure/login@v2
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}

    # Step 5: Set up kubectl with AKS credentials
    - name: Set up kubectl
      run: |
        az aks get-credentials --resource-group ${{ secrets.AKS_RESOURCE_GROUP }} --name ${{ secrets.AKS_CLUSTER_NAME }}
    
    # Step 5.5: Check if files are present
    - run: |
        echo "Current directory: $(pwd)"
        echo $(ls -a)
    
    # Step 6: Deploy to AKS (Apply deployment and service files)
    - name: Deploy to AKS
      run: |
        kubectl apply -f deployment.yaml
        kubectl apply -f service.yaml

核心原因

GitHub Actions的每个作业都是独立的虚拟机实例,deploy-to-aks作业没有执行代码检出步骤,所以当前工作目录下没有仓库中的deployment.yaml和service.yaml文件。

修复方案

1. 给deploy-to-aks作业添加代码检出

在deploy-to-aks的步骤最开头添加actions/checkout@v4,拉取仓库代码到运行环境:

deploy-to-aks:
  needs: build-and-push
  runs-on: ubuntu-latest

  steps:
  # 新增:检出仓库代码
  - uses: actions/checkout@v4
  
  # Step 4: Log in to Azure
  - uses: azure/login@v2
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}
  
  # 后续步骤保持不变...

2. 确认文件路径(若文件不在根目录)

如果deployment.yaml等文件存放在子目录(比如k8s文件夹),执行kubectl apply时需要指定完整路径:

kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml

3. 更优方案:使用官方Azure部署动作简化流程

用azure/aks-set-context和azure/kubernetes-deploy动作替代手动执行kubectl,自动处理镜像替换和文件路径,配置更简洁:

deploy-to-aks:
  needs: build-and-push
  runs-on: ubuntu-latest

  steps:
  - uses: actions/checkout@v4
  
  - uses: azure/login@v2
    with:
      creds: ${{ secrets.AZURE_CREDENTIALS }}
  
  # 自动设置AKS上下文
  - uses: azure/aks-set-context@v3
    with:
      resource-group: ${{ secrets.AKS_RESOURCE_GROUP }}
      cluster-name: ${{ secrets.AKS_CLUSTER_NAME }}
  
  # 部署到AKS,自动替换manifest中的镜像地址
  - uses: azure/kubernetes-deploy@v4
    with:
      manifests: |
        deployment.yaml
        service.yaml
      images: ${{ secrets.ACR_LOGIN_SERVER }}/app:${{ github.sha }}

注:如果你的deployment.yaml中镜像字段用了占位符(比如image: <IMAGE_PLACEHOLDER>),这个动作会自动替换为构建好的镜像地址。

额外验证点

  • 确认deployment.yaml和service.yaml已经提交到GitHub仓库的main分支
  • 添加检出步骤后,再次执行echo $(ls -a)应该能看到这些文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:22:33