Образ Docker не может оставаться в живых в конвейере сборки Jenkins Kubernetes

Мы хотим развернуть с помощью ArgoCD из нашего Jenkinsfile (что немного не так, как это должно быть сделано, но достаточно близко), и после некоторых экспериментов хотим попробовать использовать официальный контейнер с CLI, поэтому мы добавили этот фрагмент в наш наш конвейер kubernetes yaml:

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

К сожалению, обычный способ сохранить эти контейнеры живыми - это вызвать catв контейнере, которого нет, поэтому он терпит неудачу. На самом деле единственная команда - это команда "argo", которая не может спать бесконечно. (Мы собираемся сообщить об этом в апстриме, чтобы это было исправлено, но пока мы ждем этого...)

Поэтому мой вопрос: есть ли способ указать Kubernetes, что мы знаем, что этот под не может поддерживать себя сам по себе и, следовательно, не разрушить его немедленно?

1 ответ

К сожалению, это невозможно, поскольку, как вы сказали, 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
Другие вопросы по тегам