Google Cloud - Полный CI/CD с НУЛЯ - Сборка и Деплой Docker Image из GitHub через Cloud Build
ฝัง
- เผยแพร่เมื่อ 17 พ.ย. 2021
- #googlecloud #devops #девопс #serverless
Google Cloud - Полный Serverless CI/CD Pipeline - Собираем и Деплоим Docker Image из GitHub через Cloud Build в Cloud Run
github.com/adv4000/gcp-cicd-c...
Если помог, поддержите парой баксов, хотябы Канадских :) www.paypal.me/DenisAstahov - วิทยาศาสตร์และเทคโนโลยี
Гораздо проще понимать, что будет в видео, когда вначале есть план-схема. Простой проект, все понятно реализовано. Спасибо за ваш труд !
Шикарно. Побольше бы такой полезной информации. Большое спасибо. Цьом!
Денис, здарова! Спасибо за материал! Очень полезно!
You are Welcome!
Thanks for this video!! Great job Denis any way for me!
Как всегда спасабо! Как лучше делать, папку с программой заливать в образ или папку с программой на хосте монтировать в образе?
Денис привет! В очередной раз огромное тебе спасибо за твой труд. Лучший канал на данную тематику. Я хоть далеко не девопс, но сталкиваюсь с похожими вопросами каждый день. А учитывая тот факт, что у меня нет опыта в IT от слова совсем, твоя подача материала просто идеальна для таких как я.
Хотел спросить, не планируешь ли ты уроки по Азуре? После AWS она кажется такой запутанной и неудобной. Но хотелось бы разобраться. А с твоей помощью это было бы круто и весело. Спасибо)
Не не планирую, я им вообще не занимаюсь и особо не знаю
@@ADV-IT Ну ладно. Спасибо за быстрый ответ. Как всегда)
Суперское видео, как и предыдущее! Планируются ли ещё ролики на GCP в таком же объеме, как по AWS?) На работе используем GCP, но русскоязычных роликов, самое главное понятных и толковых, нет. А на вашем канале много полезных вещей уже для себя подчерпнул
В таком объеме не будет :)
Следующее тоже про GCP буднт
@@ADV-IT отлично)
Подскажите, а dbt вы в своей работе не используете?
מדהים, תודה!
Bevakasha!
а запускать docker -compose файлы он может или только dockerfile ?
Спасибо. Очень полезно!
Спасибо!, Хотелось бы подобное видео по AWS
Здравствуйте, на степе пуша валится с ошибкой " error parsing HTTP 404 response body: invalid character......." Никто не сталкивался с этим? Все пермишны дал, настроил как по видео.
Error 404 - Cloud Run запускает my-docker-app-prod с правами Require authentication. Как задать Allow unauthenticated invocations на этапе Deploy?
Подскажите, а можно ли все это сделать в рамках одного проекта, без разделения на прод, стейдж, менеджмент?
Если можно, то в чем преимущество разделения?
Можно конечно в одном проекте и это будет проще намного, только разделение это полная изоляция ресурсов и плюс ты контролируешь стоимость каждого проекта.
В Одном проекте = не профессионально в детском саде.
Разделение по проектам = профессионально на работе.
меня нравится и "веб программирование" и "сисадмин", пожалуста скажите,в таком случае, как решить, какой выбрать? (кратко плюсы и минусы можете сказать?)
Учи и то и то, в чем найдешь первую работу, там и останешся
классное видео! Был ли у вас опыт работы з задачей по промоушену докер имеджей из стейджа в прод?
Зачем? Если image работает в stage то просто собирай туже версию в таком prod или latest.
В этом примере я показал как это реально делают
@@ADV-IT ну да. Просто это одна из стратегий доставки кода, когда один контейнер должен одинаково работати на любом стейдже. А факту имедж просто перетэгуеться и переносится в другой реджестри
@@MrSerogKa Мы с git branch работаем только, и просто делаем новый image при merge to main.
Спасибо за хороший урок. Я пытаюсь залить свой проект на GcP, но дело в том, что я его реализовал все в 1 репо: frontend + backend(+sql) и собирается это все через docker compose. Локально командой docker-compose up -d --build все собирается в 1 контейнере с 3 имиджами: front - angular, back - nestjs, mySQL. Могли бы подсказать в какую сторону смотреть, что бы сделать подобное в GcP. Сорри за такой "нюбский" вопрос, но в DevOps части я не селен )
привет, получилось разобраться как это делать?
@@kolobroadgh8532 привет, неа.. пока так и оставил отдельный репо для фронта и бэка 😴
@@drysha chatgpt говорит что выход это билдить все по отдельности а потом подружить через кубик или какой-то другой гугл сервис. Кажется композ тут не сработает :(
Развертывание и деплой в k8s планируется?
Да слелаю как нибудь, на самом деле это также просто сделать.
В GitHub лежат manifest файлы, у CodeBuild есть permission деплоить в GKE, ну и все, запускай команды сначала getcredentilals, а потом kubectl apply -f
А это все можно описать с помощью Terraform или подключение триггеров только в ручную?
Все что делается на GCP можно сделать через Terraform
Что и как нужно сделать, чтоб высылались уведомления на почтовый ящик о статусе сборки ? Сборка завершилась удачно, сборка завершилась с ошибкой и т.п.
cloud.google.com/build/docs/subscribe-build-notifications
Денис, спасибо за ролики)
Планируется ли на канале уроки по Packer/Vagrant/Chef?
Нет не планирую, давно думал сделать по packer, потом глянул, там много поменялось с того момента когда я его последний раз использовал
Денис, а ты не думал создать курс по GCP. Я обещаю его купить!!!
Начинал, th-cam.com/video/5wEbNSrs098/w-d-xo.html
@@ADV-IT Да, я видел. И твои уроки очень крутые. Простым языком рассказываешь четко все. Надеюсь будет продолжение. Если будет платно, сообщи тут пожалуйста, где можно купить. Я считаю за твой труд ты вполне можешь сделать курс платным
Скажи пожалуйста, а планируешь ли ты подобный урок по AWS с их CodePipeline? Было бы круто
З.Ы. спасибо за уроки) ты крут))
Вообще нет, но может быть.
прикольный проект, интересно, насколько сложнее сделать всё то же самое терраформом
Проще раз в 5 наверное хотя бы из-за отсутствия гемороя с yaml как надумал так и пишешь
Я делал всё это terraformом на проекте, не очень сложно, самое сложное это прописать правильные permissions по проектам
@@ADV-IT а каким ресурсом можно декларировать permissions, через security groups? а потом уже привязывать sg к нашим ресурсам в проектах?
resource "google_project_service_identity"
resource "google_project_iam_member"
resource "google_artifact_registry_repository_iam_member"
Почти все получилось, но на запуске выдает ошибку "run.services.get"
Всем начал добавлять уровни доступа, дошел до того, что все проекты имеют максимум (все владельцы), а ошибка все равно не пропадает. Вероятно, добавлял не туда, хотя проектов всего три и ошибиться особенно негде, как мне казалось
Словом, тема permissions не просто сложная, а вообще не понятная - что, куда и кому давать, а также почему именно выдается эта ошибка при обращении к сервису "hello-prod" (сервис с таким именем существует, тоже проверил неоднократно)
Я же в видео всё показал, может ты пропустил где-то
@@ADV-IT Маловероятно, но возможно. Я очень аккуратно изучаю материал, примерно 20 минут видео у меня занимает около 3-4 часов в продвижении и понимании. На данный момент все проекты поудалял - буду опять пошагово выполнять все действия.
В одном из видео твоих курсов уже сталкивался с подобной проблемой, но она как-то решилась после добавления дополнительных ролей. Мне кажется, они внесли изменения в одну из ролей на видео, убрав run.services.get и поставив эту команду в другую роль.
@@ADV-IT У тебя шикарный канал !!!
Практически все, что я выучил на практике из облачных технологий - благодаря тебе. Огромное спасибо !!!
Кратко, доступно, а главное, это можно самому попробовать сделать и практически все получается с первого раза :)
РЕСПЕКТ !!!
@@ADV-IT P.S. И это при том, что данная область не является моей профессией (я все начал изучать с нуля по ютубу), и мое изучение лишь на уровне хобби или простого интереса :)
На последнем этапе 2:DEPLOY выдает вот такую ошибку:
Already have image (with digest): gcr.io/cloud-builders/gcloud
ERROR: (gcloud.run.services.update) PERMISSION_DENIED: Permission denied on resource project prod.
- '@type': type.googleapis.com/google.rpc.Help
links:
- description: Google developer console API key
url: console.developers.google.com/project/prod/apiui/credential
- '@type': type.googleapis.com/google.rpc.ErrorInfo
domain: googleapis.com
metadata:
consumer: projects/prod
service: run.googleapis.com
reason: CONSUMER_INVALID
Денис HEEELP ! Все мозги поломал... (проект называется prod для прод сбоки)
Внимательно посмотри какие permissions ты добавил, я же все описал подробно,
Вот тут тоже описал: github.com/adv4000/gcp-cicd-cloudruns
@@ADV-IT Денис, в том то и дело что у тебя все предельно понятно расписано и показано ! Проверял не раз. Прошлый урок тоже на деплое замедлился так и не поборол. Кто-то до меня что-то похожее писал. Что-то не то с этим фри аккаунтом. Больше пяти проектов не дают завести. Удалить хотел и по новой с нуля - фиг они висят в статусе удалены сутки, новые не дают заводить.
ФУУХ 2 дня на пермишены убил )))) А дело было вовсе не в них. В файле cloudbuild.prod.yaml в нижних параметрах нужно было вводить ID проекта а не имя.
_SERVICE_PROJECT : prod-367714
имя у него в моем случае просто prod.
Денис в своих примерах спецом создавал проекты с ID равным названию, но по дефолту это не так.
А я 2 дня в пермишенах копался ))). Зато уже ас теперь в них ))).
Да и кстати билд с версией образа ubuntu:21.04 фэйлится на момент написания - поменял его в докефайле на ubuntu:22.04.
Спасибо всем за внимание и Денису таксама !
@@VINT-IT Молодец, рад что всё получилось!
@@VINT-IT спасибо тебе добрый человек, 3 дня убил на выдачу прав, весь гугл вдоль и поперек перечитал, все делаю как написано, а оказалось что дело в id project. Хотя на предыдущем уроке уже была такая же проблема и тоже было дело в названии проекта, но там как то явно была ошибка и получилось быстрее решить.