jenkins - Docker 镜像无法在 Jenkins Kubernetes 构建管道中保持活力

标签 jenkins kubernetes jenkins-pipeline argocd

我们想使用我们的 Jenkinsfile 中的 ArgoCD 进行部署(这有点不像打算这样做但足够接近),并且在完成一些实验后想尝试使用带有 CLI 的官方容器,所以我们将此片段添加到我们的我们的管道 Kubernetes yaml:

  - name: argocdcli
    image: argoproj/argocli
    command:
    - argo
    args: 
    - version
    tty: true

不幸的是,保持这些容器存活的常用方法是调用 cat。在不存在的容器中,因此它惨遭失败。实际上,其中唯一的命令是“argo”命令,它没有办法无限休眠。 (我们将在上游报告此问题,以便将其修复,但在我们等待的同时......)

因此,我的问题是,有没有办法向 Kubernetes 表明我们知道这个 pod 无法自行保持运行,因此不会立即将其拆除?

最佳答案

不幸的是,这是不可能的,因为正如你所说,argo是此镜像上唯一可用的命令。

可以确认here :

####################################################################################################
# argocli
####################################################################################################
FROM scratch as argocli
COPY --from=argo-build /go/src/github.com/argoproj/argo/dist/argo-linux-amd64 /bin/argo
ENTRYPOINT [ "argo" ]

正如我们在这个输出中看到的,运行 argo 就是这个容器正在做的所有事情:
$ kubectl run -i --tty --image argoproj/argocli argoproj1 --restart=Never 
argo is the command line interface to Argo

Usage:
  argo [flags]
  argo [command]
...  

您可以选择基于该图像创建自己的图像并包含 sleep ,因此可以像本示例中那样使其保持运行:
apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - name: busybox
    image: busybox:1.28
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

关于jenkins - Docker 镜像无法在 Jenkins Kubernetes 构建管道中保持活力,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59409118/

相关文章:

bash - 在Jenkins管道中的ssh上执行bash -c中的管道或for循环

java - 如何使用 Java 访问 Kubernetes for MongoDB 中的凭证?

node.js - Jenkins 中没有安装 NodeJS

linux - 如何使用 shell 脚本解析 JSON?

jenkins - 查看 Jenkins Log 解析器插件的错误解析规则

java - 如何使用 Kubernetes 的 Fabric8 java 客户端创建 NetworkPolicy

version-control - 有没有办法将 Hudson/Jenkins 配置文件保留在源代码管理中?

Jenkins Pipeline "yarn install"命令未找到

amazon-web-services - 未找到配置映射 "aws-auth"

kubernetes - Pod镜像更新和重启容器保持相同的IP问题