GitHub Actions - CICD Pipeline Flask приложения в AWS.Пример задания на интервью для DevOps Engineer

Поделиться
HTML-код
  • Опубликовано: 17 дек 2019
  • #devops #githubactions #pipeline #девопс
    GitHub Actions - CI CD Pipeline Flask приложения в AWS ElasticBeanstalk
    Create AWS IAM user with Access Key and Secret Key
    Create AWS S3 Bucket
    Create AWS ElasticBeanstalk Application and Environment
    GitHub Actions - Git Clone
    GitHub Actions - Use of Secrets
    GitHub Actions - Configure AWS Credentials
    GitHub Actions - Deploy Flask application to AWS ElasticBeanstalk
    Если помог, поддержите парой баксов, хотябы Канадских :) www.paypal.me/DenisAstahov

Комментарии • 99

  • @user-mp7zp3hc5p
    @user-mp7zp3hc5p Год назад +5

    Спасибо!

    • @ADV-IT
      @ADV-IT  Год назад +1

      Спасибо тебе!

  • @user-mw7yq9nj8t
    @user-mw7yq9nj8t 3 года назад +26

    Здравствуйте, Денис! Прелесть этого урока в том, что он довольно практичный. Было бы супер выпускать и далее подобные уроки, изменяя технологию. Например, Github Actions поменять на Jenkins, AWS - на Docker, добавить во всё это Ansible и так далее. Количество просмотров и подписок возрастёт к тому же, думаю. Спасибо вам.

  • @namepunk
    @namepunk 4 года назад +26

    Спасибо за ваши труды, очень интересно

  • @Y_K_5496
    @Y_K_5496 3 года назад +1

    Спасибо за ваши уроки! Очень помогают!

  • @user-cn3zn4gi8o
    @user-cn3zn4gi8o 4 года назад +7

    Спасибо большое, все ваши курсы очень полезны. Чёткое и понятное объяснение, все по существу. Не раз помогало мне в работе.

  • @romawrestling
    @romawrestling 4 года назад +3

    Спасибо Денис! Лучший! Очень все доступно !)))

  • @romantsyupryk3009
    @romantsyupryk3009 4 года назад +5

    Большое спасибо Денис.

  • @MarcusZatt
    @MarcusZatt 3 года назад +1

    Спасибо! Все действительно выглядит очень просто...когда делает профи)

  • @evgeniyderevyanko4778
    @evgeniyderevyanko4778 3 года назад +3

    Спасибо большое, дающий знания нуждающимся, и от меня 400й лайк))

  • @ilyayaruk7583
    @ilyayaruk7583 4 года назад +1

    Урок просто супер. Спасибо!

  • @daredeviii6865
    @daredeviii6865 3 года назад +2

    Годный контент. Спасибо огромное!

  • @vadimprudnichenko6561
    @vadimprudnichenko6561 4 года назад +1

    Как обычно объяснение материала на высоте.)

  • @JIeTpyxa
    @JIeTpyxa 3 года назад +2

    огромное спасибо, всё понятно, даже начинающему

  • @Shindos-Kopernik
    @Shindos-Kopernik 3 года назад +1

    Супер!
    Отличная работа.

  • @akkh6971
    @akkh6971 3 года назад +2

    Отличная инструкция!!! Подписка

  • @dmphxzrche288
    @dmphxzrche288 2 года назад +1

    Спасибо, все получилось! Крутой курс!

  • @Imperfectwow
    @Imperfectwow 2 года назад +1

    очень классное обьяснение! супер! лайк и подписка - продолжай в том же духе!

  • @iuliiasmirnova3057
    @iuliiasmirnova3057 Год назад +1

    ОГРОМНОЕ спасибо за этот ролик!!!!!

  • @Vaaasi4
    @Vaaasi4 3 года назад +1

    Спасибо! Просто офигенно

  • @user-we5hn2yi3k
    @user-we5hn2yi3k 2 года назад +2

    Спасибо мужик. Очень хорошо зашло, все понятно! я начинающий , всегда работал в менеджменте, закончил курсы QA , доучиваюсь по твоему каналу. Последние два видоса из курса GitHub были для меня из серии очень интересно, но ничего не понятно!)) вернусь к ним еще раз позже! ))

    • @user-we5hn2yi3k
      @user-we5hn2yi3k Год назад +2

      Вернулся, пересмотрел, все круто зашло, все получиолсь! )))

  • @Cycylinka
    @Cycylinka 4 года назад +1

    Спасибо Спасибо Спасибо Денис !!!

  • @user-dl1ii9tp4u
    @user-dl1ii9tp4u Год назад +1

    Спасибо за урок!

  • @egorkomarov4719
    @egorkomarov4719 4 года назад +1

    Благодарю от души!!!

  • @alisherrakhimov1997
    @alisherrakhimov1997 Год назад +1

    Cпасибо, Денис.
    Ребята, имейте ввиду что нужно обязательно первым делом иметь готовый MyFlask и MyFlask-env, то есть создать вручную(так проще, либо посмотрите туториал Дениса по Flask) А то новички не поймут почему --create-application-version и update-environment падают.

  • @andreykulikov3760
    @andreykulikov3760 4 года назад +1

    Круто! Супер!

  • @dyg6945
    @dyg6945 Год назад +1

    Супер! Спасибо!!!

  • @antonnat7970
    @antonnat7970 Год назад +2

    одним кликом теперь beanstalk не создать, теперь авс требует чтоб сами добавляли сервис роль и EC2 instance profile (роль), в остальном все актуально, спасибо.

  • @killer_nokia
    @killer_nokia 4 года назад +8

    Кстати, очень актуальная тема. Недавно курсы прошел на девопса, где мейн таск была задеплоить аппку Spring-petclinic с гита через дженкинс в AWS ECS Cluster з апплоадбалансером, скейлингами, алертами и рдс для аппки. Ручками в дженкинсе оно то легко делается, но вот всю часть по АВС делали клаудформешеном. Видосы твои помогали по кластеру и балансерам как могли, но вот по клаудформешену одного мало было. Пришлось серфить, как боженька)) Очень на челлендж твой похоже.

    • @ADV-IT
      @ADV-IT  4 года назад +3

      Да тема крутая, меня попросили на английском эти же два урока записать.
      Вот только перезаписал, опубликую тут скоро

    • @killer_nokia
      @killer_nokia 4 года назад +1

      @@ADV-IT Ну тогда ждем с нетерпением))

    • @vagifk2864
      @vagifk2864 4 года назад

      А какие курсы проходил, не эти? - otus.ru/lessons/devops-praktiki-i-instrumenty/

    • @killer_nokia
      @killer_nokia 4 года назад +1

      @@vagifk2864 Нет. Проходил вот-такие, но в Украине. www.epam-group.ru/careers/epam-devops

    • @akkh6971
      @akkh6971 3 года назад

      @@killer_nokia оффлайн?

  • @barma1309
    @barma1309 4 года назад +1

    Круто!

  • @sergiimarchuk6405
    @sergiimarchuk6405 Год назад +1

    Good knowledge, thank you.

    • @ADV-IT
      @ADV-IT  Год назад

      Glad it was helpful!

  • @Dmitrii-Kalashnikov
    @Dmitrii-Kalashnikov 3 года назад +2

    Este es excelente u estupendamente. Gracias don Denis !

  • @TheKievsash
    @TheKievsash Год назад +1

    Бомба

  • @on3p3301
    @on3p3301 4 года назад

    Супер! Спасибо за видео!
    Не приходилось сталкиваться с такой задачей - отдельный деплой под отдельный пулл реквест ? чтобы потом можно было отдельно открывать приложения под отдельный ПР аля my-app.com/PR-number/main для проверки отдельной фитчи например? Если да - как бы вы это организовали на AWS в кратции ? :)

  • @user-es2ex7vt3x
    @user-es2ex7vt3x 4 года назад

    Спасибо за ваш курс очень интересно. А возможно таким же образом развернуть приложение docker compose и не понимаю имеет ли смысл мне это делать, так как для приложения необходимо много видеопамяти, а информацию по характеристикам серверов на которых деплоится приложение я не нашел

  • @vandriichuk
    @vandriichuk 3 года назад

    Класс. Спасибо ) Скинул пару баксов за труды ) Не могли бы подсказать как сюда же включить еще и PostgreSQL (приложение на Flask использует PostgreSQL)? Ну и на самом AWS как поднять приложение Flask с PostgreSQL как?

  • @yodapunishes
    @yodapunishes 4 года назад +1

    Спасибо, очень круто! А гитхаб каждый раз новую виртуальную машину создаёт, или привязывает её к аккаунту? Можно ли деплоить на голый линукс-сервер по ssh?

    • @ADV-IT
      @ADV-IT  4 года назад +2

      1. Каждый запуск новый Runner запускается.
      2. Можно, даже уже есть скрипты деплоя по ssh готовые

  • @samrybkin9184
    @samrybkin9184 Год назад

    Спасибо за очень крутой урок !!! Интересно, что думаешь про GitLab CI CD ? Что лучше на твой взгляд?

    • @ADV-IT
      @ADV-IT  Год назад +4

      И то и то хорошо,
      если твой код на GitLab то используй GitLab CICD
      если твой код на GitHub то используй GitHub Actions

  • @maximumbadula2385
    @maximumbadula2385 Год назад

    спасибо ден за твои труды, ты реально очень много головняка убираешь) и еще такой вопрос лучше переспросить) все что ты делал в aws в этом уроке это бесплатно ? я спрашиваю потому что боюсь что снимет мои последние 100 шекелей))))) а то помню поднял виртуалки и вижу как с карточки улетели мои родные ))

    • @ADV-IT
      @ADV-IT  Год назад

      бесплатно если ec2 размера t2.micro и диск не больше 30GB

    • @maximumbadula2385
      @maximumbadula2385 Год назад

      @@ADV-IT спасибо большое за ответ ☺️

  • @zcbesaba
    @zcbesaba Год назад +1

    что-то мне подсказывает, что если креды пропустить через base64 то вполне эти креды можно прочитать

  • @bohdanmartyniv7087
    @bohdanmartyniv7087 3 года назад +1

    Все получилось, но не понял зачем application.py и requirements.txt, за что они отвечают? Без них ничего не работает

  • @user-uh7dc4sl7y
    @user-uh7dc4sl7y 3 года назад

    Привет, Дэн) подскажи, при создании в beanstalk аппки , под health написано no data и минус в круге! Что за фигня?))

    • @ADV-IT
      @ADV-IT  3 года назад

      аппка не подаёт признаков жизни

  • @Nick_Alexeyev
    @Nick_Alexeyev 4 года назад

    Денис, подскажите, пожалуйста.
    Где во всей этой конфигурации прописано на каком порту должно быть запущено flask-приложение и что, собственно, его запускает?
    Пока не изменил application.py с явным указанием application.run(host='0.0.0.0', port=8000) и пока на ЕС2-машинке не его вручную не запустил, nginx выдавал 502-ю ошибку (bad gateway)

    • @ADV-IT
      @ADV-IT  4 года назад

      По умолчанию порт 80 везде

    • @ADV-IT
      @ADV-IT  4 года назад

      ruclips.net/video/q4y51GN1tqc/видео.html

    • @ysbase-cl2pf
      @ysbase-cl2pf 2 года назад

      @Hank Rearden так у тебя не получилось найти решения тоже?сижу ломаю голову(

  • @maliy_ct
    @maliy_ct 3 года назад

    А где брали команды Run, которые идут после Create new EB..?

    • @ADV-IT
      @ADV-IT  3 года назад +1

      В документации AWS

  • @Xelamus
    @Xelamus Год назад

    Интересно, но пока сложно для меня. Что изучить, чтоб проще было понимать как писать и что писать в yaml? Спасибо

  • @El18Cucuy
    @El18Cucuy 4 года назад

    ты настраивал кластеры? у нас к примеру corosync/pacemaker. пользовался ли ты DRBD,Ceph,Gluster. в можно ли aws bean приложение в EKS использовать

    • @ADV-IT
      @ADV-IT  4 года назад +2

      DRBD,Ceph,Gluster. не пользовался и даже никогда не слышал такие матюки

    • @El18Cucuy
      @El18Cucuy 4 года назад

      @@ADV-IT а как тогда кластер строишь?)

    • @ADV-IT
      @ADV-IT  4 года назад

      Кластеры чего?

    • @El18Cucuy
      @El18Cucuy 4 года назад

      @@ADV-IT серверов. Linux HA. К примеру мульти Клауд отказоустойчивый

    • @ADV-IT
      @ADV-IT  4 года назад +1

      @@El18Cucuy Terraform

  • @dmitry_5525
    @dmitry_5525 3 года назад +1

    Не получается все сделать по уроку. Видимо появились какие то изменения в GitHub и AWS. 1. название основного branch не master, а main
    2. при создании bucket c названием adv-it-flask-application-packages ошибка, так как он видимо не может быть таким же названием даже у разных пользователей. создал с названием adv-it-flask-application2-packages. В AWS почему то нет сверху значков быстрой навигации.
    3. Когда запускаю скрипт, появляется ошибка Run aws elasticbeanstalk create-application-version \
    An error occurred (InvalidParameterValue) when calling the CreateApplicationVersion operation: Application Version Ver-&{{ github.sha }} already exists.
    Error: Process completed with exit code 255.

    • @ADV-IT
      @ADV-IT  3 года назад +1

      Всё тоже самое, просто надо знать чуть чуть aws

    • @dmitry_5525
      @dmitry_5525 3 года назад +1

      @@ADV-IT В bucket удалось zip закинуть, а страницу нет, а вообще все остальное по теме GitHub получилось сделать. Денис, большое спасибо за уроки!

    • @dmitry_5525
      @dmitry_5525 3 года назад

      @@ADV-IT Сервер так побежал, что не могу его догнать и удалить, его s3 bucket вновь и вновь создает, а сам bucket не могу удалить из-за ошибки
      Insufficient permissions to delete bucket
      After you or your AWS admin have updated your IAM permissions to allow s3:DeleteBucket, choose delete bucket. Learn more about Identity and Access Management in Amazon S3
      API response
      Access Denied
      Хотя я root... Написал в службу поддержки.

    • @dmitry_5525
      @dmitry_5525 3 года назад +1

      Помогла инструкция
      Navigate to S3 Console.
      Select the bucket that you have lost access to. You will get an "Access Denied" error message. Ignore the the error message and click on the 'Permissions' tab.
      Next click on 'Bucket Policy' tab and choose 'Delete'.

  • @aleksreingand
    @aleksreingand 4 года назад

    Hey! Denis, How I can know, where do I need write sign equal and quotes? When I try repeat the command -> (aws elasticbeanstalk create-application-version --application-name ${{ env.EB_APPLICATION_NAME }} --source-bundle S3Bucket="${{ env.EB_PACKAGE_S3_BUCKET_NAME }}",S3Key="${{ env.DEPLOY_PACKAGE_NAME}}" --version-label "Ver-${{ github.sha }}" --description "CommitSHA-${{ github.sha }}") I catch a lot of syntax errors.

    • @ADV-IT
      @ADV-IT  4 года назад

      1. In documentation.
      2. Check my example on GitHub

  • @user-xh8gp9om2m
    @user-xh8gp9om2m 2 года назад

    An error occurred (InvalidParameterValue) when calling the CreateApplicationVersion operation: No Application named 'MyFlask' found.
    Error: Process completed with exit code 254.
    У меня такая проблема, что не делаю, она не фиксится. Можете подсказать в чем проблема?

    • @ADV-IT
      @ADV-IT  2 года назад

      Application named 'MyFlask' found.
      Сделай Elastic Beanstalk application с названием MyFlask

  • @siriusdiamond
    @siriusdiamond 4 года назад +1

    secret_key github для паблик репозиториев если кто нибудь делает форк скопируются ?

    • @ADV-IT
      @ADV-IT  4 года назад +1

      Нет, попробуй сделай fork на мой, увиишь что там нету SECRETS

  • @user-uh7dc4sl7y
    @user-uh7dc4sl7y 3 года назад

    разобрался почти до конца, но тут уперся).. какая-то ошибка в part2 -cd у меня - (Parameter validation failed:
    Unknown parameter in SourceBundle: "S3bucket", must be one of: S3Bucket, S3Key
    Unknown parameter in SourceBundle: "S3key", must be one of: S3Bucket, S3Key), вроде все правильно в коде, моу скинуть скрин...

    • @ADV-IT
      @ADV-IT  3 года назад

      Сравни с моим github.com/adv4000/github-actions-part-2-cicd-to-aws/blob/master/.github/workflows/main.yml

    • @user-uh7dc4sl7y
      @user-uh7dc4sl7y 3 года назад

      ADV-IT блин)) bucket с маленькой был

  • @vagifk2864
    @vagifk2864 4 года назад

    А есть возможность соединить с GitLabom?

    • @ADV-IT
      @ADV-IT  4 года назад

      У GitLab по другому

  • @rlevvv
    @rlevvv 2 года назад

    Вопрос оффтоп: ruclips.net/video/JUzhx3TWoJw/видео.html я один слышу как на заднем плане плачет ребенок?

    • @ADV-IT
      @ADV-IT  2 года назад

      Так и есть :)

  • @Julia-fg9zj
    @Julia-fg9zj 3 года назад

    А почему в bucket скопировался .zip файл ведь команда была
    run: aws s3 cp ${{ env.DEPLOY_PACKAGE_NAME}} s3://${{ env.EB_PACKAGE_S3_BUCKET_NAME }}/
    по идеи должна же быть ошибка что такого файла нет и команда должна выглядеть так:
    run: aws s3 cp ${{ env.DEPLOY_PACKAGE_NAME}}.zip s3://${{ env.EB_PACKAGE_S3_BUCKET_NAME }}/
    простите если туплю но можете обьянснить?

    • @ADV-IT
      @ADV-IT  3 года назад

      DEPLOY_PACKAGE_NAME : "flask_app_${{ github.sha }}.zip"

    • @ADV-IT
      @ADV-IT  3 года назад

      тут есть .zip

    • @ADV-IT
      @ADV-IT  3 года назад

      github.com/adv4000/github-actions-part-2-cicd-to-aws/blob/master/.github/workflows/main.yml#L14

    • @Julia-fg9zj
      @Julia-fg9zj 3 года назад

      @@ADV-IT спасибо Денис! я была не внимательна

  • @alex-g1
    @alex-g1 Год назад +1

    Делюсь опытом-может кому то поможет! Не работало изначально. Мои грабли, на которые наступил: 1. Elastic Beanstalk был у меня создан по умолчанию в другом регионе, отличном от s3 (github actions ругался что такого аппликации (Flask) нет. Перенёс в один регион. Деплой из Github actions - всё ок, говорит,теперь. 2. AWS Elastic Beanstalk ругается: HEALTH:Degraded , WARN (Environment health has transitioned from Degraded to Severe. 100.0 % of the requests are failing with HTTP 5xx. ELB processes are not healthy on all instances. Application update completed 71 seconds ago and took 67 seconds. ELB health is failing or not available for all instances. Impaired services on all instances.) и WARN (Environment health has transitioned from Ok to Degraded. Application update in progress. 1 out of 1 instance completed (running for 58 seconds). Impaired services on all instances.) . Пофиг-перехожу по ссылке- блокировка сервиса провайдером (мобильный оператор РФ) - ошибка-мол низя сюда-иди нафиг,мол. Открыл через другого провайдера - ошибка(502 Bad Gateway).
    3. -Ставил разные коды примеры FLASK в файл --application.py-- - гружу вручную - такая же ошибка (502)- . Что помогло: добавил в файл requirements.txt зависимости: "
    click==8.0.3
    Flask==1.1.2
    itsdangerous==2.0.1
    Jinja2==3.0.3
    MarkupSafe==2.0.1
    Werkzeug==2.0.2
    "
    Особо не парился-возможно хватит какой то одной строки, суть что с этим начало работать.
    После загрузки проекта с поправленным requirements.txt , статус сменился на HEALTH : warning , немного так постоял, секунд через 30 - HEALTH : OK .
    Самое интересное!!! если грузить туда же в этот AWS ElasticBeanstalk старые версии - с requirements.txt в котором лишь Flask==1.1.1 , работает нормально. Если сделать новый Beanstalk - повторяется та же ошибка до момента, пока один раз ему не скормишь поправленный requirements.txt , после этого читает любые версии. ( Этого комментария мне здесь не хватало, когда искал в чём же ошибка может быть)
    Update: *3 пункт неактуален*

    • @ADV-IT
      @ADV-IT  Год назад +1

      Да, видать изменили docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html

    • @ADV-IT
      @ADV-IT  Год назад +2

      PR Merged!

  • @user-we5hn2yi3k
    @user-we5hn2yi3k 2 года назад

    Добрый вечер, повторил все как на видео, пол дня ковыряю уже, в GitHub все ок, отработало, все зеленое. Но по факту сайт не работает. Elastic Beanstalk выдает ошибку.
    "Service:Amazon S3, Message:Access Denied: S3Bucket=elasticbeanstalk-eu-west-3-650049487807, S3Key=resources/environments/e-auzni9hnup/_runtime/_embedded_extensions/MyFlask/8145d188696b3cd1850ab318360cb6de"
    P.S. У юзера AmazonS3FullAccess поставил.

    • @ADV-IT
      @ADV-IT  2 года назад

      А у меня все работает. Ищи ошибки.

    • @ADV-IT
      @ADV-IT  2 года назад +1

      Encryption проверь тоже