I tetahi wa i whakaaro ahau mo te whakaaunoa i te tukunga o taku kaupapa. Ko te gitlab.com e whakarato ana i nga taputapu katoa mo tenei, a ko te tikanga ka whakatau ahau ki te whakamahi ma te whakaaro me te tuhi i tetahi tuhinga tukunga iti. I roto i tenei tuhinga, ka whakapuaki ahau i aku wheako ki te hapori.
TL; DR
Whakaritehia te VPS: whakakorehia te pakiaka, te takiuru kupuhipa, te whakauru i te dockerd, te whirihora ufw
Rēhita ki nga taurangi gitlab i nga tautuhinga CI / CD me nga ihirangi o nga tiwhikete. Tuhia he tuhinga .gitlab-ci.yml mo te horahanga.
Ka whakaatu ahau i nga tauira katoa mo te tohatoha Debian.
Tatūnga VPS tuatahi
I konei ka hokona e koe he tauira hei tauira DO, Ko te mahi tuatahi ko te tiaki i to kaimau mai i te ao pukuriri o waho. E kore ahau e whakamatau, e kii ranei i tetahi mea, ka whakaatu noa ahau i te /var/log/messages log o taku tūmau mariko:
Matapihi
Tuatahi, tāuta te pātūahi ufw:
apt-get update && apt-get install ufw
Whakahohehia te kaupapa here taunoa: aukati i nga hononga taumai katoa, tukua nga hononga puta katoa:
He mea nui: kaua e wareware ki te tuku hononga ma te ssh:
ufw allow OpenSSH
Ko te wetereo whānui ko: Whakaaetia te hononga ki te tauranga: ufw whakaae 12345, ko 12345 te tau tauranga, te ingoa ratonga ranei. Whakakahore: ufw whakakahore 12345
Whakakāhia te pātūahi:
ufw enable
Ka puta matou i te waahi ka takiuru ano ma te ssh.
Tāpirihia he kaiwhakamahi, tohua he kupuhipa, ka taapiri atu ki te roopu sudo.
Me mau te ip o te tūmau. Inaianei me ngana ki te takiuru i raro i te kaiwhakamahi i hanga i mua, kaore koe e hiahia ki te whakauru i tetahi kupuhipa. I muri mai, i roto i nga tautuhinga whirihoranga, hurihia nga mea e whai ake nei:
sudo nano /etc/ssh/sshd_config
mono te takiuru kupuhipa:
PasswordAuthentication no
Tīmataria anō te daemon sshd:
sudo systemctl reload sshd
Inaianei mena ka ngana koe, tetahi atu ranei ki te takiuru hei putake, ka rahua.
I muri mai, ka whakauruhia e matou te dockerd, kaore au e whakaahua i te mahi i konei, na te mea ka taea te whakarereke i nga mea katoa, whai i te hono ki te paetukutuku mana ka haere i roto i nga waahanga o te whakauru i te docker ki to miihini mariko: https://docs.docker.com/install/linux/docker-ce/debian/
Te whakaputa tiwhikete
Hei whakahaere mamao i te daemon docker, ka hiahiatia he hononga TLS whakamunatia. Ki te mahi i tenei, me whai tiwhikete koe me tetahi matua e hiahia ana koe ki te whakaputa me te whakawhiti ki to miihini mamao. A pee i nga taahiraa i homai i roto i nga tohutohu i runga i te paetukutuku docker mana: https://docs.docker.com/engine/security/https/#create-a-ca-server-and-client-keys-with-openssl Ko nga konae *.pem katoa i hanga mo te tūmau, ara te ca.pem, server.pem, key.pem, me whakanoho ki roto i te whaiaronga /etc/docker i runga i te tūmau.
tatūnga docker
I roto i te tuhinga whakaoho daemon docker, tangohia te -H df: // kōwhiringa, ma tenei kowhiringa ka whakaatu ko wai te kaihautu ka taea te whakahaere i te daemon docker.
# At /lib/systemd/system/docker.service
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
Panuku, hanga he konae tautuhinga mena karekau ano i te waahi ka whakarite i nga whiringa:
Mena he kakariki nga mea katoa, ka whakaaro maatau kua pai te whirihora i te docker ki runga i te tūmau.
Te whakarite i te tuku haere tonu i runga i te gitlab
Kia ahei ai te kaimahi gitalab ki te whakahaere i nga whakahau i runga i te kaihautu docker mamao, me whakatau koe me pehea me te waahi hei penapena tiwhikete me tetahi ki mo te hononga whakamunatia ki te dockerd. I whakaotihia e ahau tenei raruraru ma te tuhi noa ki nga taurangi i roto i nga tautuhinga gitlbab:
taitara kaipahua
Me whakaputa noa nga ihirangi o nga tiwhikete me te matua ma te ngeru: cat ca.pem. Tārua me te whakapiri ki nga uara taurangi.
Me tuhi tuhi tuhi mo te horahanga ma te gitlab. Ka whakamahia te ahua docker-in-docker (dind).
Ko nga ihirangi o te tuhinga whakatakotoranga me nga korero:
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
Ko te raru nui ko te "tango" nga ihirangi o nga tiwhikete i roto i te ahua noa mai i nga taurangi gitlab CI / CD. Kaore au i mohio he aha i kore ai e mahi te hononga ki te kaihautu mamao. I titiro ahau ki te sudo journalctl -u docker log i runga i te kaihautu, he hapa kei te ruru ringa. I whakatau ahau ki te titiro ki nga mea kei te rongoa i roto i nga taurangi, mo tenei ka kite koe i te ngeru -A $DOCKER_CERT_PATH/key.pem. I hinga i te hapa ma te taapiri i te tangohanga o te tohu tohu tr -d 'r'.
I tua atu, ka taea e koe te taapiri i nga mahi i muri i te tukunga ki te tuhinga i runga i to whakaaro. Ka taea e koe te tirotiro i te putanga mahi i roto i taku putunga https://gitlab.com/isqad/gitlab-ci-cd