【问题标题】:Helm Azure Devops fails with Broken Pipe errorHelm Azure Devops 失败并出现 Broken Pipe 错误
【发布时间】:2019-08-15 23:25:15
【问题描述】:

我在 Azure Devops 中有一个部署管道,用于将图表部署到我的 Kubernetes 集群。我正在使用内置的 Helm 任务来:

  1. 安装 Helm 客户端
  2. 创建分蘖
  3. 部署已被单独的构建任务删除的图表

我的 Tiller 升级 YAML(步骤 3)如下:

steps:
- task: HelmDeploy@0
  displayName: 'helm upgrade'
  inputs:
    azureSubscription: '****'
    azureResourceGroup: '****'
    kubernetesCluster: ****
    command: upgrade
    chartType: FilePath
    chartPath: '$(System.DefaultWorkingDirectory)/_Helm Chart Package/charts/****.tgz'
    releaseName: ****
    waitForExecution: false
    enableTls: true
    caCert: '****'
    certificate: '****'
    privatekey: '****'

请注意,如果不存在则安装已被选中,尽管我看不到 YAML 中的表示方式。

它有时会起作用,但大多数时候我会遇到以下异常:

3627 portforward.go:363] 从远程流复制到本地时出错 连接:从 tcp4 读取 127.0.0.1:33429->127.0.0.1:39710:写入 tcp4 127.0.0.1:33429->127.0.0.1:39710:写:坏管

这总是在我的图表部署成功后发生。我尝试删除 --wait 参数,但这没有帮助,任务仍然失败,导致我的部署管道失败。 Helm Github 上存在一个已知问题,但有没有办法让这个错误不会导致我的任务失败并导致我的部署管道失败?

【问题讨论】:

    标签: azure-devops kubernetes-helm


    【解决方案1】:

    您可以在配置任务(在控制选项下)时选择“出错时继续”,这将在出错后继续运行。

    虽然,我不得不承认我根本没有看到该错误,但我有时会在创建 AKS 后立即创建 helm release 时看到此错误,并且 AKS 正在启动系统 pod,因此负载不足。

    【讨论】:

    • 谢谢,我已经尝试过了,但不幸的是它使我的管道部分成功,这不是很好。您在部署中使用 TLS 吗?我已经编辑了我的问题以包含我正在使用的任务的 YAML。有什么不好的地方吗?
    • 我正在使用 helm 默认值,所以可能不是。我不认为它默认使用证书身份验证
    • 我当前的解决方案是启用 Continue on Error 并禁用 Wait我在 Helm Installer 之后打包和部署 Helm 图表。问题是,我的一个微服务管道在部署时没有抛出该错误。
    • 不幸的是,我不得不放弃 Helm 并使用自定义解决方案。我可能会在 v3 中再试一次。
    猜你喜欢
    • 1970-01-01
    • 2019-10-25
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2021-08-24
    • 2021-09-12
    • 2021-11-21
    • 1970-01-01
    相关资源
    最近更新 更多