Bha mi aon uair a’ smaoineachadh mu bhith a’ cleachdadh mo phròiseact gu fèin-ghluasadach. Tha gitlab.com gu coibhneil a’ toirt seachad na h-innealan gu lèir airson seo, agus gu dearbh chuir mi romham a chleachdadh le bhith ga lorg agus a’ sgrìobhadh sgriobt beag cleachdadh. San artaigil seo, bidh mi a’ roinn m ’eòlas leis a’ choimhearsnachd.
Suidhich slighean gu teisteanasan ann an docker.json
Clàraich anns na caochladairean gitlab anns na roghainnean CI / CD le susbaint nan teisteanasan. Sgrìobh sgriob .gitlab-ci.yml airson a chleachdadh.
Seallaidh mi a h-uile eisimpleir air an sgaoileadh Debian.
Suidheachadh VPS tùsail
An seo cheannaich thu eisimpleir mar eisimpleir air DO, is e a’ chiad rud a nì thu do fhrithealaiche a dhìon bhon t-saoghal ionnsaigheach a-muigh. Cha bhith mi a’ dearbhadh no a’ dearbhadh dad, seallaidh mi an loga /var/log/messages den t-seirbheisiche mas-fhìor agam:
Ð¡ÐºÑ € Ð¸Ð½ÑˆÐ¾Ñ ‚
An toiseach, stàlaich am balla-teine ufw:
apt-get update && apt-get install ufw
Dèan comas air a’ phoileasaidh bunaiteach: cuir stad air a h-uile ceangal a tha a’ tighinn a-steach, ceadaich a h-uile ceangal a-mach:
Cudromach: na dìochuimhnich ceangal a cheadachadh tro ssh:
ufw allow OpenSSH
Is e an co-chòrdadh coitcheann: Ceadaich ceangal air port: ceadaich ufw 12345, far a bheil 12345 mar àireamh port no ainm seirbheis. diùltadh: ufw àicheadh 12345
Cuir air balla-teine:
ufw enable
Bidh sinn a’ fàgail an t-seisean agus a’ logadh a-steach a-rithist tro ssh.
Cuir cleachdaiche ris, sònraich facal-faire dha, agus cuir ris a’ bhuidheann sudo e.
An ath rud, a rèir a’ phlana, bu chòir dhut logadh a-steach facal-faire a dhì-cheadachadh. Gus seo a dhèanamh, dèan lethbhreac den iuchair ssh agad chun an fhrithealaiche:
Feumaidh ip an fhrithealaiche a bhith leatsa. A-nis feuch ri logadh a-steach fon neach-cleachdaidh a chaidh a chruthachadh na bu thràithe, chan fheum thu facal-faire a chuir a-steach tuilleadh. An uairsin, anns na roghainnean rèiteachaidh, atharraich na leanas:
sudo nano /etc/ssh/sshd_config
cuir à comas logadh a-steach facal-faire:
PasswordAuthentication no
Ath-thòisich an daemon sshd:
sudo systemctl reload sshd
A-nis ma dh'fheuchas tu fhèin no cuideigin eile ri logadh a-steach mar fhreumh, fàilligidh e.
An uairsin, bidh sinn a ’stàladh dockerd, cha toir mi cunntas air a’ phròiseas an seo, oir faodar a h-uile càil atharrachadh mu thràth, lean an ceangal chun làrach-lìn oifigeil agus gabh tro na ceumannan gus docker a chuir a-steach air an inneal brìgheil agad: https://docs.docker.com/install/linux/docker-ce/debian/
Ginealach teisteanais
Gus smachd a chumail air an daemon docker air astar, tha feum air ceangal TLS crioptaichte. Gus seo a dhèanamh, feumaidh teisteanas agus iuchair a bhith agad a dh’ fheumas tu a ghineadh agus a ghluasad chun inneal iomallach agad. Lean na ceumannan a tha air an toirt seachad anns an stiùireadh air làrach-lìn oifigeil docker: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl Bu chòir a h-uile faidhle * .pem a chaidh a chruthachadh airson an fhrithealaiche, is e sin ca.pem, server.pem, key.pem, a chuir anns an eòlaire /etc/docker air an fhrithealaiche.
suidheachadh docker
Anns an sgriobt tòiseachaidh daemon docker, thoir air falbh an roghainn -H df: //, tha an roghainn seo ag innse dè an aoigh air am faodar smachd a chumail air an daemon docker.
# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
An uairsin, cruthaich faidhle roghainnean mura h-eil e ann mu thràth agus suidhich na roghainnean:
Ma tha a h-uile càil uaine, tha sinn den bheachd gu bheil sinn air docker a rèiteachadh gu soirbheachail air an fhrithealaiche.
A’ stèidheachadh lìbhrigeadh leantainneach air gitlab
Gus am bi e comasach don neach-obrach gitalab òrdughan a chuir an gnìomh air aoigh docker iomallach, feumaidh tu co-dhùnadh ciamar agus càite an stòradh thu teisteanasan agus iuchair airson ceangal crioptaichte ri dockerd. Dh’ fhuasgail mi an duilgheadas seo le bhith dìreach a’ sgrìobhadh gu na caochladairean anns na roghainnean gitlbab:
tiotal spoiler
Dìreach cuir a-mach susbaint nan teisteanasan agus an iuchair tro chat: cat ca.pem. Dèan lethbhreac agus pasg air luachan caochlaideach.
Sgrìobhamaid sgriobt airson a chleachdadh tro gitlab. Thèid an ìomhaigh docker-in-docker (dind) a chleachdadh.
#!/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
B' e am prìomh dhuilgheadas "tarraing a-mach" susbaint nan teisteanasan san fhoirm àbhaisteach bho na caochladairean gitlab CI/CD. Cha b’ urrainn dhomh faighinn a-mach carson nach do dh’obraich an ceangal ris an òstair iomallach. Choimhead mi air loga sudo journalctl -u docker air an aoigh, tha mearachd ann leis a’ chrathadh làimhe. Cho-dhùin mi coimhead air na tha sa chumantas air a stòradh ann an caochladairean, airson seo chì thu cat -A $DOCKER_CERT_PATH/key.pem. Fhuair sinn seachad air a’ mhearachd le bhith a’ cur a-steach toirt air falbh a’ charactar caret tr -d ‘r’.
A bharrachd air an sin, faodaidh tu gnìomhan iar-sgaoilidh a chuir ris an sgriobt mar as toil leat. Faodaidh tu sgrùdadh a dhèanamh air an dreach obrach anns an stòr-dàta agam https://gitlab.com/isqad/gitlab-ci-cd