Рубрики
Uncategorized

Создайте изображение Docker на GitLab CI и публикуйте его в реестре Google Container

В предыдущих блогах я объяснил свою концепцию личного облака для моих собственных проектов (Kubernetes для … Теги с докером, дежоптом.

В предыдущих блогах я объяснил свою концепцию личного облака для моих собственных проектов ( Kubernetes для боковыхПроектов ) И как я его настроил ( Запустите личное облако с Trafik, давайте шифрование и зоофильм ). Я также показал, как я упаковал PWA Project с Docker ( Построить PWA в Docker ).

Со всеми этими ингредиентами, готовыми к последнему препятствию, чтобы решить, создает изображение Docker автоматически, а также публиковать его в реестре контейнера, поэтому я могу развернуть его оттуда в мою облаку.

Целью установки является:

  • построить образа докера из любого хеша Git с помощью GitLab CI
  • Подтолкните это изображение докера в реестр контейнера Google Tagged с Git Hash Hash
  • Обновите описание обслуживания Kubernetes в Personal Cloud Project, чтобы вытащить новый образ докера

Чтобы включить GitLab делать эти действия от нашего имени, нам нужно настроить учетные записи службы. Нам нужно

  • Одна учетная запись, которая позволяет GitLab загружать новый документ докера в реестр контейнера
  • Учетная запись, которая позволяет изменять наши настройки Kubernetes в личном облачном реестре

Вы можете создавать эти учетные записи службы в разделе «IAM & Admin» -> «Сервисные учетные записи» Google Cloud. Обязательно скачайте и сохраните генерированный файл json.

Нам также нужно будет разрешить проект Personal Cloud, чтобы вытащить изображение Docker из реестра контейнера, который находится в другом проекте. За то, что я следовал за этим отличным блогпостом Алексеем Тимановским ( Использование одного репозитория Docker с несколькими проектами GKE ).

Чтобы позволить GitLab Ci использовать свою учетную запись обслуживания, вам необходимо сохранить содержимое файлов JSON в качестве базовой переменную в Base64 в бэкэнде. Вы можете найти настройки в разделе «Настройки» -> «CI/CD» -> «Переменные». Будьте осторожны с этими данными, поскольку она является соответствующей безопасности. Переменные здесь будут доступны в качестве переменных среды во время работы.

Я использую следующую сцену GitLab CI для создания и публикации проекта. Обратите внимание, что он работает только вручную и для мастера. В этом случае он использует учетную запись службы, сохраненную в GCLUD_SERVICE_KEY:

publish:
  stage: publish
  image: docker:19.03.1
  services:
    - docker:dind
  variables:
    DOCKER_DRIVER: overlay
  script:
    - echo $GCLOUD_SERVICE_KEY | base64 -d > ${HOME}/gcloud-service-key.json
    - docker login -u _json_key --password-stdin https://eu.gcr.io < ${HOME}/gcloud-service-key.json
    - docker build -t eu.gcr.io/projectid/app:${CI_COMMIT_SHA} .
    - docker push "eu.gcr.io/projectid/app:${CI_COMMIT_SHA}"
  only:
    - master
  when: manual

В последний шаг вы можете обновить описание обслуживания Kubernetes, чтобы развернуть его. Я написал об этом процессе здесь: https://rhazn.com/posts/deploy-to-google-kubernetes-engine-using-gitlab-ci/

Я являюсь полным разработчиком стека и энтузиасту цифрового продукта, я доступен для внештатных работ и всегда ищете следующий захватывающий проект:).

Вы можете связаться со мной онлайн либо электронная почта (pheltweg@gmail.com) или в твиттере https://twitter.com/rhanarion .

Оригинал: «https://dev.to/rhanarion/build-a-docker-image-on-gitlab-ci-and-publish-it-to-google-container-registry-6h8»