[英]Docker image not able to stay alive in a Jenkins Kubernetes build pipeline
我们想从我们的 Jenkinsfile 中使用 ArgoCD 进行部署(这有点不像这样做的目的,但已经足够接近了),并且在做了一些实验之后想尝试使用带有 CLI 的官方容器,所以我们添加了这个片段到我们的我们的管道 kubernetes yaml:
- name: argocdcli
image: argoproj/argocli
command:
- argo
args:
- version
tty: true
不幸的是,使这些容器保持活动状态的常用方法是在容器中调用cat
,它不存在,因此它会失败。 实际上,那里唯一的命令是“argo”命令,它无法无限休眠。 (我们将向上游报告此问题,以便将其修复,但在我们等待的过程中......)
因此,我的问题是,有没有办法向 Kubernetes 表明我们知道这个 pod 无法自行保持,因此不会立即将其拆除?
不幸的是,这是不可能的,因为正如您所说, argo
是此图像上唯一可用的命令。
可以在这里确认:
####################################################################################################
# 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]
...
您可以选择基于此创建自己的映像并包含睡眠,因此可以像本示例一样保持运行:
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: default
spec:
containers:
- name: busybox
image: busybox:1.28
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
restartPolicy: Always
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.