Перейти к содержимому. | Перейти к навигации

Персональные инструменты

Вы здесь: Главная / Спиричев Вадим / СофтСервис / Включение и работа с встроенным в gitlab registry / Моя настройка модели "gitlab - всё в одном флаконе"

Моя настройка модели "gitlab - всё в одном флаконе"

Предварительные замечания.

Модель развернута на машине во внутренней сети (192.168.10.252) за SNAT-шлюзом gla.csdiary.net.

SSL-порт на шлюзе перенаправлен (DNAT) на эту машину.

В качестве основы для настройки используем полезную статью.

 

 

1. Разворачиваем на машине Docker (ansible playbook).

2. Ставим gitlab контейнере по инструкцииВ docker-compose.yml добавляем вывод порта 5000 на хост-машину для работы с registry.

web:
# image: 'gitlab/gitlab-ee:latest'
image: 'gitlab/gitlab-ce:14.3.0-ce.0'
restart: always
hostname: 'gla.csdiary.net'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'https://gla.csdiary.net'
gitlab_rails['gitlab_shell_ssh_port'] = 2224
# Add any other gitlab.rb configuration here, each on its own line
ports:
- '80:80'
- '443:443'
- '2224:22'
- '5000:5000'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'

 

3. Создаем пользователя и проект в gitlab'e.

4. Запоминаем registration token для runner'a (Settings-CI/CD-Runners).

5. Стартуем еще один контейнер с runner'ом:

docker run -d --name gitlab-runner-2 --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:v14.5.0

4. Заходим в контейнер и регистрируем runner.

gitlab-runner register \
 --non-interactive \
--url "https://gla.csdiary.net" \
--registration-token "9cif8CsPxbCxBXN_zUSH" \
--executor "docker" \
--docker-image "docker:19.03.12" \
--description "docker-runner" \
--tag-list "wst1" \
--run-untagged="true" \
--locked="false" \
--access-level="not_protected" \
--docker-volumes /var/run/docker.sock:/var/run/docker.sock

  

Внимание! --url тут указан прямо на DNS-имя! До этого так не работало!

5. Включаем registry в составе gitlab'a. Ставим несколько параметров в настройках gitlab и переконфигурируем его. Я еще перезапускал контейнер.

registry_external_url 'https://gla.csdiary.net:5000'
registry['registry_http_addr'] = "localhost:5001"
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gla.csdiary.net.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gla.csdiary.net.key"

Это по мотивам статьи.

6. Теперь делаем push в наш registry из job .gitlab-ci.yml

variables:
...
  DOCKER_REPO: gla.csdiary.net:5000

 

...
RecordImg
:
# variables: # DATE4BUILD: $(date "+%F_%H-%M_") # RELEASE_IMAGE_NGINX: $DOCKER_REPO/$IMAGE_BNAME_NGINX:latest stage: r12n tags: - wst1 script: - > for i in ${IMG_ARRAY}; do echo $CI_REGISTRY/$CI_PROJECT_PATH docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY/$CI_PROJECT_PATH cat /root/.docker/config.json docker tag $IMAGE_BNAME$i $CI_REGISTRY/$CI_PROJECT_PATH/$i:${DATE4BUILD}_$CI_BUILD_REF echo $CI_REGISTRY/$CI_PROJECT_PATH/$i:${DATE4BUILD}_$CI_BUILD_REF docker push $CI_REGISTRY/$CI_PROJECT_PATH/$i:${DATE4BUILD}_$CI_BUILD_REF docker tag $IMAGE_BNAME$i $CI_REGISTRY/$CI_PROJECT_PATH/$i:latest docker push $CI_REGISTRY/$CI_PROJECT_PATH/$i:latest done

Здесь команда docker login.... создает файлик /root/.docker/config.json чтобы больше никто

не спрашивал про пароль! И еще! Везде обращаемся к registry через встроенные переменные как 

$CI_REGISTRY/$CI_PROJECT_PATH

После этого срабатывает push из jobs!

 7. Теперь настраиваем возможность pull снаружи. Так будет забирать images, например, STAGE-машина.

Создаем access token (Settings-Access Tokens) с обязательными правами на api, read_api, read_registry, write_registry (клацаем по всем чекбоксам). Запоминаем токен.

8. Набираем все это в команде docker login... (на STAGE-машине с docker'ом).

docker login gla.csdiary.net:5000 -u gitlab+deploy-token-91931 -p WoxGcsXRyusaUz-57iav

WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /home/vadim/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

в результате получим .docker/config.json

9. Можно забирать images с registry.

$docker pull gla.csdiary.net:5000/spvadim/workstation/redis:latest
latest: Pulling from spvadim/workstation/redis
59bf1c3509f3: Pull complete
719adce26c52: Pull complete
b8f35e378c31: Pull complete
d034517f789c: Pull complete
3772d4d76753: Pull complete
211a7f52febb: Pull complete
Digest: sha256:3e162b1cf37f164ded658edead9676f81f85d3d2d4b94b9de54ce1ee9a1036cd
Status: Downloaded newer image for gla.csdiary.net:5000/spvadim/workstation/redis:latest
gla.csdiary.net:5000/spvadim/workstation/redis:latest

 

====