Shíl mé uair amháin faoi imscaradh mo thionscadail a uathoibriú. Soláthraíonn gitlab.com na huirlisí go léir le haghaidh seo, agus ar ndóigh chinn mé é a úsáid trína figuring amach agus scríobh script imscaradh beag. San Airteagal seo, roinnim mo thaithí leis an bpobal.
Cláraigh sna hathróga gitlab sna socruithe CI / CD le hábhar na ndeimhnithe. Scríobh script .gitlab-ci.yml le himscaradh.
Taispeánfaidh mé gach sampla ar dháileadh Debian.
Socrú tosaigh VPS
Anseo cheannaigh tú sampla mar shampla ar DO, is é an chéad rud atá le déanamh ná do fhreastalaí a chosaint ón domhan ionsaitheach lasmuigh. Ní dhéanfaidh mé aon rud a chruthú ná a dhearbhú, ní thaispeánfaidh mé ach logáil /var/log/messages mo fhreastalaí fíorúil:
Screenshot
Gcéad dul síos, suiteáil balla dóiteáin ufw:
apt-get update && apt-get install ufw
Cumasaigh an polasaí réamhshocraithe: bac le gach nasc isteach, ceadaigh gach nasc amach:
Tábhachtach: ná déan dearmad nasc a cheadú trí ssh:
ufw allow OpenSSH
Is é an chomhréir ghinearálta: Ceadaigh nasc ar an gcalafort: ceadaigh ufw 12345, áit arb é 12345 uimhir an phoirt nó ainm na seirbhíse. Séanadh: ufw shéanadh 12345
Cuir balla dóiteáin ar siúl:
ufw enable
Scoirimid an seisiún agus logáil isteach arís trí ssh.
Cuir úsáideoir leis, sann pasfhocal dó, agus cuir leis an ngrúpa sudo é.
Caithfidh IP an fhreastalaí a bheith agatsa. Anois déan iarracht logáil isteach faoin úsáideoir a cruthaíodh níos luaithe, ní gá duit pasfhocal a chur isteach níos mó. Ansin, sna socruithe cumraíochta, athraigh an méid seo a leanas:
sudo nano /etc/ssh/sshd_config
díchumasaigh logáil isteach pasfhocail:
PasswordAuthentication no
Atosaigh an deamhan sshd:
sudo systemctl reload sshd
Anois má dhéanann tú féin nó duine éigin eile iarracht logáil isteach mar fhréamh, teipfidh sé.
Ansin, déanaimid dockerd a shuiteáil, ní dhéanfaidh mé cur síos ar an bpróiseas anseo, toisc gur féidir gach rud a athrú cheana féin, lean an nasc chuig an láithreán gréasáin oifigiúil agus téigh trí na céimeanna a bhaineann le docker a shuiteáil ar do mheaisín fíorúil: https://docs.docker.com/install/linux/docker-ce/debian/
Giniúint Teastas
Chun an deamhan docker a rialú go cianda, tá nasc TLS criptithe ag teastáil. Chun seo a dhéanamh, ní mór duit teastas agus eochair a bheith agat a theastaíonn uait a ghiniúint agus a aistriú chuig do chianinneall. Lean na céimeanna a thugtar sna treoracha ar láithreán gréasáin oifigiúil an docker: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl Ba cheart gach comhad *.pem a ghintear don fhreastalaí, eadhon ca.pem, server.pem, key.pem, a chur san eolaire /etc/docker ar an bhfreastalaí.
socrú docker
Sa script tosaithe deamhan docker, bain an rogha -H df: //, insíonn an rogha seo cé acu óstach ar féidir an deamhan docker a rialú.
# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
Ansin, cruthaigh comhad socruithe mura bhfuil sé ann cheana féin agus socraigh na roghanna:
Má tá gach rud glas, ansin measann muid go bhfuil muid tar éis docker a chumrú go rathúil ar an bhfreastalaí.
Seachadadh leanúnach a shocrú ar gitlab
Ionas go mbeidh an t-oibrí gitalab in ann orduithe a fhorghníomhú ar óstach docker cianda, ní mór duit cinneadh a dhéanamh maidir le conas agus cén áit ar cheart teastais a stóráil agus eochair do nasc criptithe le dockerd. Réitigh mé an fhadhb seo trí scríobh chuig na hathróga sna socruithe gitlbab:
teideal spoiler
Aschuir inneachar na dteastas agus na heochrach trí cat: cat ca.pem. Cóipeáil agus greamaigh isteach i luachanna athraitheacha.
Scríobhaimis script le himscaradh trí gitlab. Bainfear úsáid as an íomhá 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
Ba í an phríomhfhadhb ná "tarraingt amach" inneachar na ndeimhnithe sa ghnáthfhoirm ó na hathróga gitlab CI/CD. Níorbh fhéidir liom a dhéanamh amach cén fáth nár oibrigh an nasc leis an gcianóstach. D'fhéach mé ar an logáil sudo journalctl -u docker ar an ósta, tá earráid leis an handshake. Chinn mé chun breathnú ar an méid atá stóráilte go ginearálta in athróga, le haghaidh seo is féidir leat a fheiceáil cat -A $DOCKER_CERT_PATH/key.pem. Sáraíodh an earráid trí bhaint an charachtair caret tr -d 'r' a chur leis.
Ina theannta sin, is féidir leat tascanna iarscaoilte a chur leis an script de do rogha féin. Is féidir leat an leagan oibre a sheiceáil i mo stór https://gitlab.com/isqad/gitlab-ci-cd