Meddyliais unwaith am awtomeiddio'r defnydd o fy mhrosiect. Mae gitlab.com yn ddigon caredig i ddarparu'r holl offer ar gyfer hyn, ac wrth gwrs penderfynais ei ddefnyddio trwy ei ddarganfod ac ysgrifennu sgript lleoli bach. Yn yr erthygl hon, rwy'n rhannu fy mhrofiad gyda'r gymuned.
TL; DR
Sefydlu VPS: analluogi gwraidd, mewngofnodi cyfrinair, gosod dockerd, ffurfweddu ufw
Cofrestrwch yn y newidynnau gitlab yn y gosodiadau CI / CD gyda chynnwys y tystysgrifau. Ysgrifennwch sgript .gitlab-ci.yml i'w defnyddio.
Byddaf yn dangos pob enghraifft ar y dosbarthiad Debian.
Gosodiad VPS cychwynnol
Yma fe brynoch chi enghraifft ar DO, y peth cyntaf i'w wneud yw amddiffyn eich gweinydd rhag y byd ymosodol y tu allan. Ni fyddaf yn profi nac yn honni unrhyw beth, byddaf yn dangos log /var/log/messages fy gweinydd rhithwir:
Ciplun
Yn gyntaf, gosodwch wal dΓ’n ufw:
apt-get update && apt-get install ufw
Galluogi'r polisi rhagosodedig: rhwystro pob cysylltiad sy'n dod i mewn, caniatΓ‘u pob cysylltiad sy'n mynd allan:
Pwysig: peidiwch ag anghofio caniatΓ‘u cysylltiad trwy ssh:
ufw allow OpenSSH
Y gystrawen gyffredinol yw: CaniatΓ‘u cysylltiad ar borthladd: ufw caniatΓ‘u 12345, lle mae 12345 yn rhif porthladd neu enw gwasanaeth. Gwadu: ufw gwadu 12345
Trowch wal dΓ’n ymlaen:
ufw enable
Rydyn ni'n gadael y sesiwn ac yn mewngofnodi eto trwy ssh.
Ychwanegu defnyddiwr, aseinio cyfrinair iddo, a'i ychwanegu at y grΕ΅p sudo.
Rhaid i ip y gweinydd fod yn eiddo i chi. Nawr ceisiwch fewngofnodi o dan y defnyddiwr a grΓ«wyd yn gynharach, nid oes angen i chi nodi cyfrinair mwyach. Nesaf, yn y gosodiadau cyfluniad, newidiwch y canlynol:
sudo nano /etc/ssh/sshd_config
analluogi mewngofnodi cyfrinair:
PasswordAuthentication no
Ailgychwyn yr daemon sshd:
sudo systemctl reload sshd
Nawr os ydych chi neu rywun arall yn ceisio mewngofnodi fel gwraidd, bydd yn methu.
Nesaf, rydyn ni'n gosod dockerd, ni fyddaf yn disgrifio'r broses yma, oherwydd gellir newid popeth eisoes, dilynwch y ddolen i'r wefan swyddogol a mynd trwy'r camau o osod docker ar eich peiriant rhithwir: https://docs.docker.com/install/linux/docker-ce/debian/
Cynhyrchu Tystysgrif
Er mwyn rheoli'r ellyll docwr o bell, mae angen cysylltiad TLS wedi'i amgryptio. I wneud hyn, mae angen i chi gael tystysgrif ac allwedd y mae angen i chi ei gynhyrchu a'i drosglwyddo i'ch peiriant anghysbell. Dilynwch y camau a roddir yn y cyfarwyddiadau ar wefan swyddogol y docwr: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl Dylid gosod pob ffeil *.pem a gynhyrchir ar gyfer y gweinydd, sef ca.pem, server.pem, key.pem, yn y cyfeiriadur /etc/docker ar y gweinydd.
gosodiad docwr
Yn y sgript cychwyn daemon docwr, tynnwch yr opsiwn -H df: //, mae'r opsiwn hwn yn dweud ar ba westeiwr y gellir rheoli'r ellyll docwr.
# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
Nesaf, crΓ«wch ffeil gosodiadau os nad yw'n bodoli eisoes a gosodwch yr opsiynau:
Os yw popeth yn wyrdd, yna rydym yn ystyried ein bod wedi ffurfweddu docwr yn llwyddiannus ar y gweinydd.
Sefydlu dosbarthiad parhaus ar gitlab
Er mwyn i'r gweithiwr gitalab allu gweithredu gorchmynion ar westeiwr docwr o bell, mae angen i chi benderfynu sut a ble i storio tystysgrifau ac allwedd ar gyfer cysylltiad wedi'i amgryptio i dockerd. Datrysais y broblem hon trwy ysgrifennu at y newidynnau yn y gosodiadau gitlbab:
teitl anrheithiwr
Allbynnwch gynnwys y tystysgrifau a'r allwedd trwy gath: cat ca.pem. CopΓ―wch a gludwch i mewn i werthoedd newidiol.
Gadewch i ni ysgrifennu sgript i'w defnyddio trwy gitlab. Bydd delwedd y docwr-mewn-docer (dind) yn cael ei ddefnyddio.
Y brif broblem oedd "tynnu allan" cynnwys y tystysgrifau yn y ffurf arferol o'r newidynnau gitlab CI/CD. Ni allwn ddarganfod pam nad oedd y cysylltiad Γ’'r gwesteiwr o bell yn gweithio. Edrychais ar y log docker sudo journalctl -u ar y gwesteiwr, mae gwall gyda'r ysgwyd llaw. Penderfynais edrych ar yr hyn sy'n cael ei storio'n gyffredinol mewn newidynnau, ar gyfer hyn gallwch weld cath -A $DOCKER_CERT_PATH/key.pem. Gorchfygodd y gwall trwy ychwanegu tynnu'r nod caret tr -d 'r'.
Ymhellach, gallwch ychwanegu tasgau Γ΄l-ryddhau at y sgript yn Γ΄l eich disgresiwn. Gallwch edrych ar y fersiwn gweithio yn fy ystorfa https://gitlab.com/isqad/gitlab-ci-cd