Na taɓa yin tunani game da sarrafa sarrafa aikin nawa. gitlab.com da kirki yana ba da duk kayan aikin don wannan, kuma ba shakka na yanke shawarar amfani da shi ta hanyar gano shi da rubuta ƙaramin rubutun turawa. A cikin wannan labarin, na raba gwaninta tare da al'umma.
Yi rijista a cikin masu canjin gitlab a cikin saitunan CI / CD tare da abubuwan da ke cikin takaddun shaida. Rubuta rubutun .gitlab-ci.yml don turawa.
Zan nuna duk misalai akan rarraba Debian.
Saitin VPS na farko
Anan kun sayi misali misali akan DO, Abu na farko da za ku yi shi ne don kare uwar garken ku daga duniyar waje mai tsanani. Ba zan tabbatar ko tabbatar da wani abu ba, zan nuna kawai /var/log/ saƙon saƙon sabar tawa:
Screenshot
Da farko, shigar da ufw Tacewar zaɓi:
apt-get update && apt-get install ufw
Kunna tsarin tsoho: toshe duk haɗin da ke shigowa, ba da izinin duk haɗin da ke fita:
Dole ne ip na sabar ya zama naku. Yanzu gwada shiga ƙarƙashin mai amfani da aka ƙirƙira a baya, ba kwa buƙatar shigar da kalmar sirri kuma. Na gaba, a cikin saitunan daidaitawa, canza masu zuwa:
sudo nano /etc/ssh/sshd_config
kashe kalmar shiga:
PasswordAuthentication no
Sake kunna sshd daemon:
sudo systemctl reload sshd
Yanzu idan kai ko wani yayi ƙoƙarin shiga a matsayin tushen, zai kasa.
Bayan haka, mun shigar da dockerd, ba zan bayyana tsarin ba a nan, tunda duk abin da aka riga aka canza, bi hanyar haɗin yanar gizon hukuma kuma shiga cikin matakan shigar da docker akan na'urar ku: https://docs.docker.com/install/linux/docker-ce/debian/
Ƙwararren Takaddun shaida
Don sarrafa docker daemon daga nesa, ana buƙatar haɗin TLS mai rufaffen. Don yin wannan, kuna buƙatar samun takaddun shaida da maɓallin da kuke buƙatar ƙirƙira da canja wurin zuwa injin ku na nesa. Bi matakan da aka bayar a cikin umarnin kan gidan yanar gizon docker na hukuma: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl Duk fayilolin * .pem da aka samar don uwar garken, wato cap.pem, server.pem, key.pem, yakamata a sanya su a cikin /etc/docker directory akan sabar.
saitin docker
A cikin rubutun farawa na docker daemon, cire zaɓi -H df: // zaɓi, wannan zaɓin yana gaya wa mai masaukin docker daemon za a iya sarrafa shi.
# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
Na gaba, ƙirƙiri fayil ɗin saituna idan babu shi kuma saita zaɓuɓɓuka:
Idan komai kore ne, to muna la'akari da cewa mun sami nasarar daidaita docker akan sabar.
Kafa ci gaba da bayarwa akan gitlab
Domin ma'aikacin gitalab ya sami damar aiwatar da umarni akan mai masaukin docker mai nisa, kuna buƙatar yanke shawarar yadda da kuma inda zaku adana takaddun shaida da maɓalli don haɗin ɓoye don dockerd. Na warware wannan matsalar ta hanyar rubuta kawai zuwa masu canji a cikin saitunan gitlbab:
lakabin lalata
Kawai fitar da abubuwan da ke cikin takaddun shaida da maɓalli ta hanyar cat: cat ca.pem. Kwafi da liƙa zuwa madaidaitan ƙima.
Bari mu rubuta rubutun don turawa ta hanyar gitlab. Za a yi amfani da hoton docker-in-docker (dind).
Abubuwan da ke cikin rubutun turawa tare da sharhi:
bin/deploy.sh
#!/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
Babban matsalar ita ce "fitar" abubuwan da ke cikin takaddun takaddun a cikin tsari na yau da kullun daga masu canjin gitlab CI / CD. Na kasa gano dalilin da ya sa haɗin kai da mai gidan nesa bai yi aiki ba. Na kalli sudo journalctl -u docker log akan mai watsa shiri, akwai kuskure tare da musafaha. Na yanke shawarar duba abin da aka adana gabaɗaya cikin masu canji, saboda wannan zaku iya ganin cat -A $DOCKER_CERT_PATH/key.pem. Cire kuskuren ta ƙara cirewar halin kulawa tr -d 'r'.
Bugu da ari, zaku iya ƙara ayyukan bayan-saki zuwa rubutun bisa ga ra'ayinku. Kuna iya duba sigar aiki a cikin ma'ajiya ta https://gitlab.com/isqad/gitlab-ci-cd