I kekahi manawa ua noʻonoʻo wau e pili ana i ka hoʻopili ʻana i kaʻu papahana. Hāʻawi maikaʻi ʻo gitlab.com i nā mea hana a pau no kēia, a ʻoiaʻiʻo ua hoʻoholo wau e hoʻohana pono iā ia, e noʻonoʻo ana a kākau i kahi palapala hoʻonohonoho liʻiliʻi. Ma kēia ʻatikala e haʻi aku au i koʻu ʻike me ke kaiāulu.
Aku; DR
Hoʻonohonoho VPS: hoʻopau i ke aʻa, ka ʻōlelo huna, hoʻokomo i ka dockerd, hoʻonohonoho i ka ufw
E hoʻonoho i nā ala i nā palapala hōʻoia ma docker.json
E hoʻopaʻa inoa i nā ʻano gitlab i nā hoʻonohonoho CI / CD me nā ʻike o nā palapala hōʻoia. Kākau i kahi palapala .gitlab-ci.yml no ka hoʻolālā ʻana.
E hōʻike wau i nā hiʻohiʻona āpau ma ka hāʻawi Debian.
Hoʻonohonoho VPS mua
Eia ʻoe i kūʻai ai i kahi laʻana no ka laʻana ma DO, ʻo ka mea mua e hana ai, ʻo ia ka pale ʻana i kāu kikowaena mai ka honua i waho. ʻAʻole wau e hōʻoia a ʻōlelo paha i kekahi mea, e hōʻike wale wau i ka log /var/log/messages o kaʻu kikowaena virtual:
Kuiopili
ʻO ka mua, e hoʻokomo i ka pā ahi ufw:
apt-get update && apt-get install ufw
E ho'ā i ke kulekele paʻamau: e ālai i nā pili komo mai, e ʻae i nā pilina puka waho:
Pono ka ip o ke kikowaena iā ʻoe. I kēia manawa e ho'āʻo e komo ma lalo o ka mea hoʻohana i hana mua ʻia, ʻaʻole pono ʻoe e hoʻokomo hou i kahi ʻōlelo huna. A laila, i nā hoʻonohonoho hoʻonohonoho, hoʻololi i kēia:
sudo nano /etc/ssh/sshd_config
hoʻopau i ka ʻōlelo huna:
PasswordAuthentication no
E hoʻomaka hou i ka daemon sshd:
sudo systemctl reload sshd
I kēia manawa inā hoʻāʻo ʻoe a i ʻole kekahi mea ʻē aʻe e hoʻopaʻa inoa ma ke ʻano he kumu, e hāʻule.
A laila, hoʻokomo mākou i ka dockerd, ʻaʻole wau e wehewehe i ke kaʻina hana ma aneʻi, no ka mea hiki ke hoʻololi ʻia nā mea āpau, e hahai i ka loulou i ka pūnaewele official a hele i nā ʻanuʻu o ka hoʻokomo ʻana i ka docker ma kāu mīkini virtual: https://docs.docker.com/install/linux/docker-ce/debian/
Hoʻokumu palapala
No ka mālama ʻana i ka daemon docker ma kahi mamao, pono kahi pilina TLS i hoʻopili ʻia. No ka hana ʻana i kēia, pono ʻoe e loaʻa i kahi palapala hōʻoia a me kahi kī āu e pono ai e hana a hoʻoili i kāu mīkini mamao. E hahai i nā ʻanuʻu i hāʻawi ʻia i nā kuhikuhi ma ka pūnaewele docker official: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl Pono e hoʻokomo ʻia nā faila *.pem a pau no ke kikowaena, ʻo ia hoʻi ca.pem, server.pem, key.pem, ma ka papa kuhikuhi /etc/docker ma ke kikowaena.
hoʻonohonoho docker
Ma ka palapala hoʻomaka docker daemon, wehe i ka -H df: // koho, e haʻi kēia koho i ka mea hoʻokipa e hiki ke hoʻokele ʻia ka daemon docker.
# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
A laila, e hana i kahi faila inā ʻaʻole i loaʻa a hoʻonohonoho i nā koho:
Inā ʻōmaʻomaʻo nā mea āpau, a laila manaʻo mākou ua hoʻonohonoho pono mākou i ka docker ma ke kikowaena.
Hoʻonohonoho i ka hoʻouna mau ʻana ma gitlab
I mea e hiki ai i ka mea hana gitalab ke hoʻokō i nā kauoha ma kahi kikowaena docker mamao, pono ʻoe e hoʻoholo pehea a me kahi e mālama ai i nā palapala hōʻoia a me kahi kī no kahi pili i hoʻopili ʻia i dockerd. Ua hoʻoponopono wau i kēia pilikia ma ke kākau ʻana i nā ʻano hoʻololi i nā hoʻonohonoho gitlbab:
poʻomanaʻo spoiler
E hoʻopuka wale i nā mea o nā palapala hōʻoia a me nā kī ma o ka cat: cat ca.pem. E kope a paʻi i loko o nā waiwai hoʻololi.
E kākau kākou i palapala no ka hoʻolaha ʻana ma o gitlab. E hoʻohana ʻia ke kiʻi docker-in-docker (dind).
#!/usr/bin/env sh
# Падаем сразу, если возникли какие-то ошибки
set -e
# Выводим, то , что делаем
set -v
#
DOCKER_COMPOSE_FILE=docker-compose.yml
# Куда деплоим
DEPLOY_HOST=185.241.52.28
# Путь для сертификатов клиента, то есть в нашем случае - gitlab-воркера
DOCKER_CERT_PATH=/root/.docker
# проверим, что в контейнере все имеется
docker info
docker-compose version
# создаем путь (сейчас работаем в клиенте - воркере gitlab'а)
mkdir $DOCKER_CERT_PATH
# изымаем содержимое переменных, при этом удаляем лишние символы добавленные при сохранении переменных.
echo "$CA_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/ca.pem
echo "$CERT_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/cert.pem
echo "$KEY_PEM" | tr -d 'r' > $DOCKER_CERT_PATH/key.pem
# на всякий случай даем только читать
chmod 400 $DOCKER_CERT_PATH/ca.pem
chmod 400 $DOCKER_CERT_PATH/cert.pem
chmod 400 $DOCKER_CERT_PATH/key.pem
# далее начинаем уже работать с удаленным docker-демоном. Собственно, сам деплой
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://$DEPLOY_HOST:2376
# проверим, что коннектится все успешно
docker-compose
-f $DOCKER_COMPOSE_FILE
ps
# логинимся в docker-регистри, тут можете указать свой "местный" регистри
docker login -u $DOCKER_USER -p $DOCKER_PASSWORD
docker-compose
-f $DOCKER_COMPOSE_FILE
pull app
# поднимаем приложение
docker-compose
-f $DOCKER_COMPOSE_FILE
up -d app
ʻO ka pilikia nui ʻo ia ka "huki" i nā ʻike o nā palapala hōʻoia ma ke ʻano maʻamau mai nā ʻano gitlab CI / CD. ʻAʻole hiki iaʻu ke noʻonoʻo i ke kumu i hana ʻole ai ka pilina me ka host mamao. Nānā wau i ka sudo journalctl -u docker log ma ka mea hoʻokipa, aia kahi hewa me ka lima lima. Ua hoʻoholo wau e nānā i ka mea i mālama ʻia i nā mea hoʻololi, no kēia hiki iā ʻoe ke ʻike i ka pōpoki -A $DOCKER_CERT_PATH/key.pem. Ua lanakila ʻo ia i ka hewa ma ka hoʻohui ʻana i ka wehe ʻana i ke ʻano caret tr -d 'r'.
Eia hou, hiki iā ʻoe ke hoʻohui i nā hana ma hope o ka hoʻokuʻu ʻana i ka palapala i kāu manaʻo. Hiki iā ʻoe ke nānā i ka mana hana ma kaʻu waihona https://gitlab.com/isqad/gitlab-ci-cd