1

我有一个多级管道,具有以下内容

舞台搭建:

  1. 构建 docker 镜像
  2. 将图像推送到 ACR
  3. 包舵图
  4. 将掌舵图推送到 ACR

阶段部署:

  1. 掌舵升级

将掌舵图推送到 AKS:

 task: HelmDeploy@0
 displayName: 'helm publish'
 inputs:
   azureSubscriptionForACR: '$(azureSubscription)'
   azureResourceGroupForACR: '$(resourceGroup)'
   azureContainerRegistry: '$(containerRegistry)'
   command: 'save'
   arguments: '--app-version $(Version)'
   chartNameForACR: 'charts/$(imageRepository):$(Version)'
   chartPathForACR: $(chartPath)

将掌舵图部署到 AKS:

  task: HelmDeploy@0
  inputs:
    connectionType: 'Kubernetes Service Connection'
    kubernetesServiceConnection: '$(kubernetesServiceConnection)'
    command: 'upgrade'
    chartType: 'Name'
    chartName: '$(containerRegistry)/charts/$(imageRepository):$(Version)'
    chartVersion: '$(Version)'
    azureSubscriptionForACR: '$(azureSubscription)'
    azureResourceGroupForACR: '$(resourceGroup)'
    azureContainerRegistry: '$(containerRegistry)'
    install: true
    releaseName: $(Version)

错误:

failed to download "<ACR>/charts/<repository>:0.9.26" at version "0.9.26" (hint: running `helm repo update` may help)

ACR: az acr repository show-manifests --name <org> --repository helm/charts/<repository> --detail

  {
    "changeableAttributes": {
      "deleteEnabled": true,
      "listEnabled": true,
      "readEnabled": true,
      "writeEnabled": true
    },
    "configMediaType": "application/vnd.cncf.helm.config.v1+json",
    "createdTime": "2021-02-02T11:54:54.1623765Z",
    "digest": "sha256:fe7924415c4e76df370630bbb0248c9296f27186742e9272eeb87b2322095c83",
    "imageSize": 3296,
    "lastUpdateTime": "2021-02-02T11:54:54.1623765Z",
    "mediaType": "application/vnd.oci.image.manifest.v1+json",
    "tags": [
      "0.9.26"
    ]
  }

我究竟做错了什么?export在部署之前,我是否必须从 ACR 获取掌舵图?

4

2 回答 2

0

我遇到了同样的问题,唯一对我有帮助的选择是在 helm 升级之前添加注册表登录步骤。

- task: Bash@3
  name: registryLogin
  displayName: Login registry
  env:
   SERVICE_PRINCIPAL_APPLICATION_ID: <SPN_APP_ID>
   SERVICE_PRINCIPAL_APPLICATION_KEY: <SPN_APP_KEY>
   HELM_EXPERIMENTAL_OCI: 1 # just in case...
  input:
   targetType: inline
   script:
     echo $SERVICE_PRINCIPAL_APPLICATION_KEY | helm registry login <acr_name>.azurecr.io --username $SERVICE_PRINCIPAL_APPLICATION_ID --password-stdin
于 2021-12-21T22:45:45.830 回答
-1

The syntax of helm upgrade should be like:

- task: HelmDeploy@0
  displayName: 'helm upgrade'
  inputs:
    connectionType: 'Kubernetes Service Connection'
    kubernetesServiceConnection: connection
    command: upgrade
    chartName: '$(name)'
    chartVersion: '$(Version)'
    releaseName: azuredevopsdemo

Try to replace the chartName value to charts/$(imageRepository).

于 2021-02-03T09:32:56.033 回答