AKS Kubectl 任务的 Azure devops 管道无法将清单部署到 AKS
Azure devops pipeline for AKS Kubectl task failing to deploying manifest into AKS
kubectl 任务未能将清单文件部署到 AKS 中。管道失败并出现以下错误
##[错误]未找到匹配 /home/vsts/work/1/s/manifests 的配置文件。
管道在 运行 这两个阶段(如构建和部署)都运行良好,因为在构建阶段之后,它将为该清单文件创建工件,并将在部署阶段下载并部署到 AKS 中。
如果我 select 阶段到 运行 仅用于部署阶段,我会出现问题,它将失败并显示上述错误消息..
流水线
- master
resources:
- repo: self
variables:
tag: '$(Build.BuildId)'
imagePullSecret: 'aks-acr-auth'
stages:
- stage: Build
displayName: Build image
jobs:
- job: Build
displayName: Build
pool:
vmImage: ubuntu-latest
steps:
- task: Docker@2
displayName: Build And Push Into ACR
inputs:
containerRegistry: 'AKS-ACR'
repository: 'apps/web'
command: 'buildAndPush'
Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'
tags: |
$(tag)
- publish: manifests
artifact: manifests
- stage: 'Deployment'
displayName: 'Deploy To AKS'
jobs:
- deployment: Release
environment: 'DEV-AKS.default'
displayName: 'Release'
pool:
vmImage: ubuntu-latest
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
kubernetesServiceConnection: 'DEV-AKS'
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: 'AKS-ACR'
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
artifactName: 'manifests'
targetPath: '$(Pipeline.Workspace)'
- task: Kubernetes@1
displayName: Deploying Manifests into AKS
inputs:
connectionType: 'Kubernetes Service Connection'
kubernetesServiceEndpoint: 'DEV-AKS'
namespace: 'default'
command: 'apply'
useConfigurationFile: true
configuration: 'manifests'
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
- master
resources:
- repo: self
variables:
tag: '$(Build.BuildId)'
imagePullSecret: 'aks-acr-auth'
- stage: 'Deployment'
displayName: 'Deploy To AKS'
jobs:
- deployment: Release
environment: 'DEV-AKS.default'
displayName: 'Release'
pool:
vmImage: ubuntu-latest
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
kubernetesServiceConnection: 'DEV-AKS'
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: 'AKS-ACR'
- task: Kubernetes@1
displayName: Deploying Manifests into AKS
inputs:
connectionType: 'Kubernetes Service Connection'
kubernetesServiceEndpoint: 'DEV-AKS'
namespace: 'default'
command: 'apply'
useConfigurationFile: true
configuration: '$(Build.SourcesDirectory)/manifests'
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
你能用上面的管道yaml检查一下吗?更改工件下载位置并添加 Build.SourcesDirectory 作为下载工件的路径
根据 Kasun 的评论,我在管道中添加了 -checkout: self 和 $(Build.SourcesDirectory) 它是有效的..
流水线
- master
resources:
- repo: self
variables:
imagePullSecret: 'acr-auth'
stages:
- stage: 'Deployment'
displayName: 'Deploy To AKS'
jobs:
- deployment: Release
environment: 'DEV-AKS.default'
displayName: 'Release'
pool:
vmImage: ubuntu-latest
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
kubernetesServiceConnection: 'DEV-AKS'
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: 'AKS-ACR'
- script: dir $(Build.SourcesDirectory)/manifests
displayName: Cloning Manifest Files From Repo
- task: KubernetesManifest@0
displayName: Deploying Manifests InTo AKS
inputs:
action: 'deploy'
kubernetesServiceConnection: 'DEV-AKS'
namespace: 'default'
manifests: |
manifests/deployment.yml
manifests/service.yml
imagePullSecrets: '$(imagePullSecret)'
kubectl 任务未能将清单文件部署到 AKS 中。管道失败并出现以下错误
##[错误]未找到匹配 /home/vsts/work/1/s/manifests 的配置文件。
管道在 运行 这两个阶段(如构建和部署)都运行良好,因为在构建阶段之后,它将为该清单文件创建工件,并将在部署阶段下载并部署到 AKS 中。
如果我 select 阶段到 运行 仅用于部署阶段,我会出现问题,它将失败并显示上述错误消息..
流水线
- master
resources:
- repo: self
variables:
tag: '$(Build.BuildId)'
imagePullSecret: 'aks-acr-auth'
stages:
- stage: Build
displayName: Build image
jobs:
- job: Build
displayName: Build
pool:
vmImage: ubuntu-latest
steps:
- task: Docker@2
displayName: Build And Push Into ACR
inputs:
containerRegistry: 'AKS-ACR'
repository: 'apps/web'
command: 'buildAndPush'
Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'
tags: |
$(tag)
- publish: manifests
artifact: manifests
- stage: 'Deployment'
displayName: 'Deploy To AKS'
jobs:
- deployment: Release
environment: 'DEV-AKS.default'
displayName: 'Release'
pool:
vmImage: ubuntu-latest
strategy:
runOnce:
deploy:
steps:
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
kubernetesServiceConnection: 'DEV-AKS'
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: 'AKS-ACR'
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
artifactName: 'manifests'
targetPath: '$(Pipeline.Workspace)'
- task: Kubernetes@1
displayName: Deploying Manifests into AKS
inputs:
connectionType: 'Kubernetes Service Connection'
kubernetesServiceEndpoint: 'DEV-AKS'
namespace: 'default'
command: 'apply'
useConfigurationFile: true
configuration: 'manifests'
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
- master
resources:
- repo: self
variables:
tag: '$(Build.BuildId)'
imagePullSecret: 'aks-acr-auth'
- stage: 'Deployment'
displayName: 'Deploy To AKS'
jobs:
- deployment: Release
environment: 'DEV-AKS.default'
displayName: 'Release'
pool:
vmImage: ubuntu-latest
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
kubernetesServiceConnection: 'DEV-AKS'
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: 'AKS-ACR'
- task: Kubernetes@1
displayName: Deploying Manifests into AKS
inputs:
connectionType: 'Kubernetes Service Connection'
kubernetesServiceEndpoint: 'DEV-AKS'
namespace: 'default'
command: 'apply'
useConfigurationFile: true
configuration: '$(Build.SourcesDirectory)/manifests'
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
你能用上面的管道yaml检查一下吗?更改工件下载位置并添加 Build.SourcesDirectory 作为下载工件的路径
根据 Kasun 的评论,我在管道中添加了 -checkout: self 和 $(Build.SourcesDirectory) 它是有效的..
流水线
- master
resources:
- repo: self
variables:
imagePullSecret: 'acr-auth'
stages:
- stage: 'Deployment'
displayName: 'Deploy To AKS'
jobs:
- deployment: Release
environment: 'DEV-AKS.default'
displayName: 'Release'
pool:
vmImage: ubuntu-latest
strategy:
runOnce:
deploy:
steps:
- checkout: self
- task: KubernetesManifest@0
displayName: Create imagePullSecret
inputs:
action: 'createSecret'
kubernetesServiceConnection: 'DEV-AKS'
secretType: 'dockerRegistry'
secretName: '$(imagePullSecret)'
dockerRegistryEndpoint: 'AKS-ACR'
- script: dir $(Build.SourcesDirectory)/manifests
displayName: Cloning Manifest Files From Repo
- task: KubernetesManifest@0
displayName: Deploying Manifests InTo AKS
inputs:
action: 'deploy'
kubernetesServiceConnection: 'DEV-AKS'
namespace: 'default'
manifests: |
manifests/deployment.yml
manifests/service.yml
imagePullSecrets: '$(imagePullSecret)'