我们想使用我们的 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/