azure-devops - Azure DevOps 发布管道在 kubectl 命令上失败

标签 azure-devops azure-pipelines kubectl

我正在尝试构建一个 ADO 发布管道,以从我们的本地 Kubernetes 集群中删除正在运行的 pod。我已经安装了一个安装了 kubectl 的自托管代理,并且能够在其上运行构建管道(它构建 Docker 镜像并将其推送到我们的本地 Harbor 存储库)。现在我正在尝试创建发布管道来删除正在运行的 Pod,以便使用 Harbor 的最新镜像重新创建它们。我还使用正确的 kubeconfig 信息为 Kubernetes 集群创建了 ADO 服务连接。

我正在使用 Kubectl 任务,只是想显示正在运行的 pod(以测试其工作情况)。然而,当管道运行此任务时,似乎说“get pods”不是有效的 kubectl 命令:

2020-05-15T19:23:33.1905346Z [command]/usr/bin/kubectl --kubeconfig /myagent/_work/_temp/kubectlTask/1589570612549/config get pods -n rpaapis
2020-05-15T19:23:33.1906131Z Error: unknown command "get pods" for "kubectl"
2020-05-15T19:23:33.1907408Z Run 'kubectl --help' for usage.
2020-05-15T19:23:33.1944451Z ##[error]Error: unknown command "get pods" for "kubectl"
2020-05-15T19:23:33.1956294Z ##[error]Run 'kubectl --help' for usage.
2020-05-15T19:23:33.1957880Z ##[error]/usr/bin/kubectl failed with return code: 1

该任务生成的 YAML 看起来相当简单:

steps:
- task: Kubernetes@0
  displayName: 'kubectl get pods'
  inputs:
    kubernetesServiceConnection: 'On-prem K8s - staging'
    namespace: rpaapis
    command: 'get pods'
    versionOrLocation: location
    specifyLocation: /usr/bin/kubectl

我可以登录自托管代理系统并使用与服务连接中相同的 kubeconfig 数据运行 kubectl 命令:

/usr/bin/kubectl --kubeconfig /tmp/config get pods -n rpaapis
NAME                       READY   STATUS    RESTARTS   AGE
rpaapis-65c96b8dcb-khzzb   2/2     Running   0          30h
rpaapis-65c96b8dcb-lhzzj   2/2     Running   0          30h

所以看起来它正在执行正确的 kubectl 可执行文件,所以不确定为什么会出现奇怪的错误。事实上,我似乎可以使任务运行的唯一成功命令是“kubectl --help”。任何想法将不胜感激!

最佳答案

尝试指定命令和参数:

- task: Kubernetes@1
  displayName: 'kubectl get pods'
  inputs:
    kubernetesServiceConnection: 'On-prem K8s - staging'
    namespace: rpaapis
    command: 'get'
    arguments: 'pods'
    versionOrLocation: location
    specifyLocation: /usr/bin/kubectl

我也遇到过这个!从 Kubernetes@1 task documentation 来看并不是很明显,感觉缺少例子。

关于azure-devops - Azure DevOps 发布管道在 kubectl 命令上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61827378/

相关文章:

c# - 使用 Azure DevOps 获取个人访问 token

azure - 有没有办法让 Azure DevOps(构建)管道等待 x 分钟来收集/组合多个已批准的 PR?

Azure DevOps管道: specific stage gets stuck in queue on a specific machine

azure-devops - 如果 Azure Pipeline 中有特定值,则忽略参数

kubernetes - 使用 k8s/eks 信息播种新机器的最佳方式

kubernetes - Pod的kubectl日志(如果包含2个容器)

swift - 在 Xamarin 应用程序中绑定(bind) Swift 库时出现代码签名问题

visual-studio - 如何在 Azure Devops Pipeline 托管代理中构建 Visual Studio 安装程序项目

node.js - 在自托管 VSO 代理上运行 NPM

kubernetes statefulsets 索引/序数暴露在模板中