CodeDeploy part 3 Flashcards
Как поэтапно происходит Ci/CD для ECS кластера.
Начиная от “разработчик пушит изменения в CodeCommit с исходным кодом” до “новая версия ECS доставлена”
Использовать
- appspec.yaml
- CodeCommit
- EventBridge
- CodeDeploy
- CodeBuild
- S3
- ECS Task Definition version 1, version 2
1) разработчик пушит изменения в CodeCommit с исходным кодом ECS приложения
2) EventBridge фиксирует это событие и вызывает CodeBuild
3) CodeBuild строит новый Docker Image и публикует его в ECR
CodeBuild создаёт ECS Task Definition version 2
CodeBuild ГЕНЕРИРУЕТ новый appspec.yaml, который содержит новый номер версии
CodeBuild отправляет appspec.yaml в S3 bucket
4) CodeDeploy забирает appspec.yaml из S3 bucket’а
CodeDeploy выполняет traffic-shift
Последовательность CodeDeploy Hooks для ECS?
Как их реализуют?
Install
→ AllowTestTraffic
→ AllowTraffic
AllowTestTraffic - отдельная проверка для тестового трафика
CodeDeploy хуки реализуют
- для EC2/On-premise через скрипты
- для Lambda и ECS через Lambda функции
В каких случаях может происходить CodeDeploy Rollback?
Какой выбран по-умолчанию?
Как можно отменить Rollback в целях отладки?
В чём особенность ревизии при Rollback’е?
Автоматический rollback может быть вызван, если
- деплоймент непосредственно зафэйлен (ПО-УМОЛЧАНИЮ)
- превышен CloudWatch Alarm
threshold
Настройка Disable Rollback в целях отладки
В случае rollback’а, CodeDeploy
задеплоит последнюю версию приложения
КАК НОВЫЙ РЕЛИЗ.
А НЕ как старый восстановленный “restored”
CodeDeploy Error
“Invalid Signature Exception”
В чём может быть причина?
Для каких типов деплоймента характерно?
Причина
некорректно установленное ДАТА-ВРЕМЯ на EC2 instance’е
(характерно только для EC2/On-premise деплоймента)
CodeDeploy Error
Сообщение об ошибке содержит слова “invalid, failed instance”, “unhealthy instance”, “instances are having problems”
В чём может быть причина?
Для каких типов деплоймента характерно?
Причиной может быть
- CodeDeploy Agent НЕ установлен
- Права доступа
- CodeDeploy Agent НЕ может достучаться до CodeDeploy API
- CodeDeploy Service Role НЕ имеет достаточно доступов
- EC2 instance profile НЕ имеет достаточно доступов
- CodeDeploy Agent запущен с HTTP Proxy, но НЕ имеет параметра :proxy_uri:
- некорректно установленное ДАТА-ВРЕМЯ на EC2 instance’е
(характерно только для EC2/On-premise деплоймента)
CodeDeploy Error
Во время деплоймента произошла замена старых instance’ов на новые в ASG.
Но один старый остался.
В чём может быть причина?
Для каких типов деплоймента характерно?
Причина ХЗ
По-умолчанию, после успешного деплоймента
CodeDeploy запустит follow-on деплоймент для ЗАМЕНЫ всех устаревших EC2 в ASG.
Ничего делать НЕ нужно
(характерно только для EC2/On-premise BLUE_GREEN деплоймента)
CodeDeploy Error
Во время CodeDeploy
деплоймента произойти ошибка
- на шаге AllowTraffic
- при этом в логах деплоймента сообщений об ошибках НЕТ
В чём может быть причина?
Для каких типов деплоймента характерно?
Причиной может быть
- некорректные health-check’и ELB
(характерно только для EC2/On-premise BLUE_GREEN деплоймента)