У меня есть рабочий процесс, который:
Я получаю эту ошибку:
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
Error: exit status 128
Как мне перенести изменения в репозиторий после запуска скрипта Python? Как мне прикрепить ssh-ключ к контейнеру?
Я попытался добавить свой ssh-ключ, используя https://github.com/argoproj/argo-workflows/blob/main/examples/input-artifact-git.yaml в качестве ссылки для внесения изменений в репозиторий, я был ожидая, что он будет использовать ключ ssh и вносить изменения, внесенные моим скриптом Python

Решил проблему, я сделал так:
смонтируйте ключ ssh после создания секрета (например: kubectl create secret generic ssh-keys --from-file=id_rsa=ssh-key --from-file=id_rsa.pub=ssh-key.pub), смонтируйте его как том следующим образом:
- name: ssh-keys
secret:
secretName: ssh-keys
defaultMode: 400
смонтируйте его в свой контейнер, которому нужны ключи ssh:
volumeMounts:
- name: ssh-keys
readOnly: true
mountPath: /root/.ssh
в аргументах контейнера добавьте скрипт для создания временного каталога /tmp/ssh и скопируйте туда свои ssh-ключи, поскольку монтирование томов ssh доступно только для чтения, и вы не можете использовать его для добавления известного каталога хостов в каталог .ssh, измените закрытый ключ предназначен только для чтения, так как закрытые ключи должны быть доступны только для чтения. Используйте ssh-keyscan, чтобы добавить имя хоста вашего провайдера git и экспортировать закрытый ключ и известные хосты вместе с файлами (ПРИМЕЧАНИЕ: в вашем контейнере потребуется ssh-keyscan, если он не добавляет контейнер инициализации Alpine к вашему шагу по добавлению ключа ssh) если у него есть ssh-keys, добавьте это в аргументы:
mkdir -p /tmp/ssh && cp /root/.ssh/id_rsa /tmp/ssh/id_rsa && chmod
600 /tmp/ssh/id_rsa && ssh-keyscan -H <your git provider> >>
/tmp/ssh/known_hosts && export GIT_SSH_COMMAND = "ssh -i
/tmp/ssh/id_rsa -o UserKnownHostsFile=/tmp/ssh/known_hosts" && <rest of your arguments>
если у него нет ssh-keyscan, добавьте этот контейнер инициализации:
initContainers:
- name: ssh-setup
image: alpine
command:
- /bin/sh
- '-c'
args:
- >
apk add --no-cache openssh-client && mkdir -p /tmp/ssh && cp
/root/.ssh/id_rsa /tmp/ssh/id_rsa && chmod 600 /tmp/ssh/id_rsa &&
ssh-keyscan -H bitbucket.org >> /tmp/ssh/known_hosts && export
GIT_SSH_COMMAND = "ssh -i /tmp/ssh/id_rsa -o
UserKnownHostsFile=/tmp/ssh/known_hosts"
resources: {}
volumeMounts:
- name: ssh-keys
readOnly: true
mountPath: /root/.ssh