Настройка Π½Π° CD Ρ‡Ρ€Π΅Π· gitlab

Π’Π΅Π΄Π½ΡŠΠΆ мислСх Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° внСдряванСто Π½Π° моя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. gitlab.com любСзно прСдоставя всички инструмСнти Π·Π° Ρ‚ΠΎΠ²Π° ΠΈ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Ρ€Π΅ΡˆΠΈΡ… Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ, ΠΊΠ°Ρ‚ΠΎ Π³ΠΎ Ρ€Π°Π·Π±Ρ€Π°Ρ… ΠΈ написах малък скрипт Π·Π° внСдряванС. Π’ Ρ‚Π°Π·ΠΈ статия сподСлям ΠΎΠΏΠΈΡ‚Π° си с общността.

TL; DR

  1. НастройтС VPS: Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°ΠΉΡ‚Π΅ root, Π²Π»ΠΈΠ·Π°Π½Π΅ с ΠΏΠ°Ρ€ΠΎΠ»Π°, инсталирайтС dockerd, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ ufw
  2. Π“Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΠΉΡ‚Π΅ сСртификати Π·Π° ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl АктивирайтС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄ΠΎΠΊΠ΅Ρ€ Ρ‡Ρ€Π΅Π· tcp сокСт: ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ опцията -H fd:// ΠΎΡ‚ конфигурацията Π½Π° Π΄ΠΎΠΊΠ΅Ρ€.
  3. Π—Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΡŠΡ‚ΠΈΡ‰Π° към сСртификати Π² docker.json
  4. РСгистрирайтС сС Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ Π½Π° gitlab Π² настройкитС Π½Π° CI / CD със ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° сСртификатитС. ΠΠ°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ .gitlab-ci.yml скрипт Π·Π° внСдряванС.

Π©Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ° всички ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° дистрибуцията Π½Π° Debian.

ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½Π° настройка Π½Π° VPS

Π’ΡƒΠΊ стС Π·Π°ΠΊΡƒΠΏΠΈΠ»ΠΈ СкзСмпляр Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° DO, ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅, Π΅ Π΄Π° Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚Π΅ вашия ΡΡŠΡ€Π²ΡŠΡ€ ΠΎΡ‚ агрСсивния външСн свят. Няма Π΄Π° Π΄ΠΎΠΊΠ°Π·Π²Π°ΠΌ ΠΈΠ»ΠΈ Ρ‚Π²ΡŠΡ€Π΄Ρ Π½ΠΈΡ‰ΠΎ, просто Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ° /var/log/messages Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° Π½Π° моя Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€:

снимкиНастройка Π½Π° CD Ρ‡Ρ€Π΅Π· gitlab

ΠŸΡŠΡ€Π²ΠΎ инсталирайтС Π·Π°Ρ‰ΠΈΡ‚Π½Π°Ρ‚Π° стСна ufw:

apt-get update && apt-get install ufw

АктивиранС Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΡ‚ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅: Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° всички входящи Π²Ρ€ΡŠΠ·ΠΊΠΈ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° всички изходящи Π²Ρ€ΡŠΠ·ΠΊΠΈ:

ufw default deny incoming
ufw default allow outgoing

Π’Π°ΠΆΠ½ΠΎ: Π½Π΅ забравяйтС Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π²Ρ€ΡŠΠ·ΠΊΠ° Ρ‡Ρ€Π΅Π· ssh:

ufw allow OpenSSH

ΠžΠ±Ρ‰ΠΈΡΡ‚ синтаксис Π΅: Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° Π½Π° ΠΏΠΎΡ€Ρ‚: ufw Ρ€Π°Π·Ρ€Π΅ΡˆΠΈ 12345, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ 12345 Π΅ Π½ΠΎΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° ΠΏΠΎΡ€Ρ‚Π° ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° услугата. ΠžΡ‚ΠΊΠ°Π·: ufw ΠΎΡ‚ΠΊΠ°Π· 12345

Π’ΠΊΠ»ΡŽΡ‡Π΅Ρ‚Π΅ Π·Π°Ρ‰ΠΈΡ‚Π½Π°Ρ‚Π° стСна:

ufw enable

ИзлизамС ΠΎΡ‚ сСсията ΠΈ Π²Π»ΠΈΠ·Π°ΠΌΠ΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΏΡ€Π΅Π· ssh.

Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π·Π°Π΄Π°ΠΉΡ‚Π΅ ΠΌΡƒ ΠΏΠ°Ρ€ΠΎΠ»Π° ΠΈ Π³ΠΎ Π΄ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ към sudo Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°.

apt-get install sudo
adduser scoty
usermod -aG sudo scoty

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π°, спорСд ΠΏΠ»Π°Π½Π°, трябва Π΄Π° Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Ρ‚Π΅ Π²Π»ΠΈΠ·Π°Π½Π΅Ρ‚ΠΎ с ΠΏΠ°Ρ€ΠΎΠ»Π°. Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠΏΠΈΡ€Π°ΠΉΡ‚Π΅ вашия ssh ΠΊΠ»ΡŽΡ‡ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°:

ssh-copy-id [email protected]

IP Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° трябва Π΄Π° Π΅ ваш. Π‘Π΅Π³Π° ΠΎΠΏΠΈΡ‚Π°ΠΉΡ‚Π΅ Π΄Π° Π²Π»Π΅Π·Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ създадСния ΠΏΠΎ-Ρ€Π°Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π² настройкитС Π·Π° конфигурация ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Ρ‚Π΅ слСдното:

sudo nano /etc/ssh/sshd_config

Π·Π°Π±Ρ€Π°Π½Π΅Ρ‚Π΅ Π²Π»ΠΈΠ·Π°Π½Π΅Ρ‚ΠΎ с ΠΏΠ°Ρ€ΠΎΠ»Π°:

PasswordAuthentication no

РСстартирайтС sshd Π΄Π΅ΠΌΠΎΠ½Π°:

sudo systemctl reload sshd

Π‘Π΅Π³Π°, Π°ΠΊΠΎ Π²ΠΈΠ΅ ΠΈΠ»ΠΈ някой Π΄Ρ€ΡƒΠ³ сС ΠΎΠΏΠΈΡ‚Π° Π΄Π° Π²Π»Π΅Π·Π΅ ΠΊΠ°Ρ‚ΠΎ root, Ρ‚ΠΎΠ²Π° Ρ‰Π΅ сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ.

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° инсталирамС dockerd, няма Π΄Π° описвам процСса Ρ‚ΡƒΠΊ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ всичко Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΎ, слСдвайтС Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° към официалния уСбсайт ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ ΠΏΡ€Π΅Π· ΡΡ‚ΡŠΠΏΠΊΠΈΡ‚Π΅ Π·Π° инсталиранС Π½Π° docker Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½Π° машина: https://docs.docker.com/install/linux/docker-ce/debian/

Π“Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° сСртификат

Π—Π° дистанционно ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΠΊΠ΅Ρ€ Π΄Π΅ΠΌΠΎΠ½Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π° TLS Π²Ρ€ΡŠΠ·ΠΊΠ°. Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π°, трябва Π΄Π° ΠΈΠΌΠ°Ρ‚Π΅ сСртификат ΠΈ ΠΊΠ»ΡŽΡ‡, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ ΠΈ ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΠΈΡ‚Π΅ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½Π° машина. Π‘Π»Π΅Π΄Π²Π°ΠΉΡ‚Π΅ ΡΡ‚ΡŠΠΏΠΊΠΈΡ‚Π΅, Π΄Π°Π΄Π΅Π½ΠΈ Π² инструкциитС Π½Π° официалния уСбсайт Π½Π° Π΄ΠΎΠΊΠ΅Ρ€: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl Всички Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ *.pem Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ca.pem, server.pem, key.pem, трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ поставСни Π² дирСкторията /etc/docker Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°.

настройка Π½Π° Π΄ΠΎΠΊΠ΅Ρ€

Π’ скрипта Π·Π° стартиранС Π½Π° Π΄ΠΎΠΊΠ΅Ρ€ Π΄Π΅ΠΌΠΎΠ½ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅Ρ‚Π΅ опцията -H df://, Ρ‚Π°Π·ΠΈ опция ΠΊΠ°Π·Π²Π° Π½Π° ΠΊΠΎΠΉ хост ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Π΄ΠΎΠΊΠ΅Ρ€ Π΄Π΅ΠΌΠΎΠ½ΡŠΡ‚.

# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΡΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» с настройки, Π°ΠΊΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°, ΠΈ Π·Π°Π΄Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅:

/etc/docker/docker.json

{
  "hosts": [
    "unix:///var/run/docker.sock",
    "tcp://0.0.0.0:2376"
  ],
  "labels": [
    "is-our-remote-engine=true"
  ],
  "tls": true,
  "tlscacert": "/etc/docker/ca.pem",
  "tlscert": "/etc/docker/server.pem",
  "tlskey": "/etc/docker/key.pem",
  "tlsverify": true
}

Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ Π½Π° ΠΏΠΎΡ€Ρ‚ 2376:

sudo ufw allow 2376

РСстартирайтС dockerd с Π½ΠΎΠ²ΠΈ настройки:

sudo systemctl daemon-reload && sudo systemctl restart docker

Π”Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ:

sudo systemctl status docker

Ако всичко Π΅ Π·Π΅Π»Π΅Π½ΠΎ, считамС, Ρ‡Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ смС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π»ΠΈ Π΄ΠΎΠΊΠ΅Ρ€ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°.

НастройванС Π½Π° Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° доставка Π½Π° gitlab

Π—Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΡŠΡ‚ Π½Π° gitalab Π΄Π° изпълнява ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ Π΄ΠΎΠΊΠ΅Ρ€ хост, трябва Π΄Π° Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΊΠ°ΠΊ ΠΈ къдС Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚Π΅ сСртификати ΠΈ ΠΊΠ»ΡŽΡ‡ Π·Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° към Π΄ΠΎΠΊΠ΅Ρ€. Π Π΅ΡˆΠΈΡ… Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠ°Ρ‚ΠΎ просто записах ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ Π² настройкитС Π½Π° gitlbab:

спойлСр заглавиСНастройка Π½Π° CD Ρ‡Ρ€Π΅Π· gitlab

ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΠ·Π²Π΅Π΄Π΅Ρ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° сСртификатитС ΠΈ ΠΊΠ»ΡŽΡ‡Π° Ρ‡Ρ€Π΅Π· cat: cat ca.pem. ΠšΠΎΠΏΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΈ поставСтС Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ стойности.

НСка напишСм скрипт Π·Π° внСдряванС Ρ‡Ρ€Π΅Π· gitlab. Π©Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄ΠΎΠΊΠ΅Ρ€ Π² Π΄ΠΎΠΊΠ΅Ρ€ (dind).

.gitlab-ci.yml

image:
  name: docker/compose:1.23.2
  # ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ entrypoint , Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π² dind
  entrypoint: ["/bin/sh", "-c"]

variables:
  DOCKER_HOST: tcp://docker:2375/
  DOCKER_DRIVER: overlay2

services:
  - docker:dind

stages:
  - deploy

deploy:
  stage: deploy
  script:
    - bin/deploy.sh # скрипт дСплоя Ρ‚ΡƒΡ‚

Π‘ΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° скрипта Π·Π° внСдряванС с ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈ:

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

ΠžΡΠ½ΠΎΠ²Π½ΠΈΡΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ бСшС Π΄Π° "ΠΈΠ·Π²Π°Π΄ΠΈΡ‚Π΅" ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° сСртификатитС Π² Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Ρ„ΠΎΡ€ΠΌΠ° ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈΡ‚Π΅ Π½Π° gitlab CI / CD. НС ΠΌΠΎΠΆΠ°Ρ… Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π° Π·Π°Ρ‰ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° с отдалСчСния хост Π½Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ. ΠŸΠΎΠ³Π»Π΅Π΄Π½Π°Ρ… ΠΆΡƒΡ€Π½Π°Π»Π° Π½Π° sudo journalctl -u Π΄ΠΎΠΊΠ΅Ρ€ Π½Π° хоста, ΠΈΠΌΠ° Π³Ρ€Π΅ΡˆΠΊΠ° с Ρ€ΡŠΠΊΠΎΡΡ‚ΠΈΡΠΊΠ°Π½Π΅Ρ‚ΠΎ. Π Π΅ΡˆΠΈΡ… Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π·Π° Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ cat -A $DOCKER_CERT_PATH/key.pem. ΠŸΡ€Π΅ΠΎΠ΄ΠΎΠ»ΡΡ…ΠΌΠ΅ Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° карСтния Π·Π½Π°ΠΊ tr -d 'r'.

ОсвСн Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ слСд пусканС към скрипта ΠΏΠΎ своС усмотрСниС. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π°Ρ‚Π° вСрсия Π² ΠΌΠΎΠ΅Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ https://gitlab.com/isqad/gitlab-ci-cd

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€