Azure DevOps发布管道因kubectl命令而失败

时间:2020-05-15 19:58:22

标签: azure-devops azure-pipelines kubectl

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

我正在使用Kubectl任务,并且正试图显示正在运行的Pod(以测试使其工作)。但是,当管道运行此任务时,似乎说“获取容器”不是有效的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”。任何想法将不胜感激!

1 个答案:

答案 0 :(得分:3)

尝试同时指定命令和参数:

- 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中不是立即显而易见的,感觉那里缺少示例。