Настройка удалееных команд (ssh...) из jobs.
Это команды выполняемые на stage и deploy серверах для выполнения
операций pull из registry
1. Генерируем ключи на машине с gitlab-runner
ssh-keygen
...
2. Отправляем public-key на удаленный сервер (STAGE_SERVER):
ssh-copy-id -i ~/.ssh/id_rsa.pub deploy@<remote_host>
3. В gitLab в проекте создаем переменную (Settings->CI\CD->Variables)
STAGE_PRIVATE_KEY скопировав текст их .ssh/id_rsa (закр.ключ) и
убрав флаг ProtectVariable (!)
4. Добавляем секцию before_scripts в .gitlab-ci.yml
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y
- mkdir -p ~/.ssh
- echo "$STAGE_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa
- chmod 700 ~/.ssh/id_rsa
- eval "$(ssh-agent -s)"
- ssh-add ~/.ssh/id_rsa
- ssh-keyscan -t rsa $STAGE_SERVER > ~/.ssh/known_hosts
- echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
- chmod 644 ~/.ssh/known_hosts
5. На STAGE-сервере необходимо обеспечит резолвинг имени registry для обращения
к нему. Например, добвить запись с ip в /etc/hosts
6. Положить сертификат с registry в /etc/docker/certs.d/r5000:5000
7. Теперь можно работать из jobs с "удаленными командами"
ssh deploy@STAGE_SERVER "docker pull registry:5000/slogan:latest"