В предыдущих блогах я объяснил свою концепцию личного облака для моих собственных проектов ( 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»