AWS Notes
5.6K subscribers
444 photos
42 videos
10 files
2.8K links
AWS Notes — Amazon Web Services Educational and Information Channel

Chat: https://xn--r1a.website/aws_notes_chat

Contacts: @apple_rom, https://www.linkedin.com/in/roman-siewko/
Download Telegram
Поддержка Secrets в Environment для #Fargate появилась в конце 2018-го года (версия Fargate 1.3), но на текущий момент в документации есть только следующее. Получается, это можно реализовать и в #CloudFormation #templates, однако документация, как обычно, отстаёт и хромает, хотя это уже работает.

Предположим, что нужно поднять какой-то Fargate контейнер, создать для него #SSM_Parameters, которые прокидываются в докер Environment, чтобы после можно было поменять нужный параметр без пересоздания всего стэка (для применения, естественно, потребуется пересоздание таски).

Главная часть кода для имплементации такого будет следующая:
...
ssmparamDbEndpoint:
Type: AWS::SSM::Parameter
Properties:
Name: !Ref ParamNameDbEndpoint
Type: String
Value: !Ref DbEndpoint
Description: SSM Parameter for DB endpoint
...
fargateTask:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- Name: !Ref ServiceName
Image: !Ref DockerImage
Essential: true
Secrets:
- Name: WORDPRESS_DB_HOST
ValueFrom: !Join ['',['arn:aws:ssm:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':parameter/', !Ref ParamNameDbEndpoint]]
- Name: WORDPRESS_DB_USER
ValueFrom: !Join ['',['arn:aws:ssm:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':parameter/', !Ref ParamNameDbUser]]
- Name: WORDPRESS_DB_PASSWORD
ValueFrom: !Join ['',['arn:aws:ssm:', !Ref 'AWS::Region', ':', !Ref 'AWS::AccountId', ':parameter/', !Ref ParamNameDbPassword]]
Environment:
- Name: WORDPRESS_DB_NAME
Value: wp-db
...


Т.е. добавляется блок Secrets, куда значения из #ParameterStore попадают благодаря такой конструкции:

arn:aws:ssm:YOUR_AWS_REGION:YOUR_AWS_ACCOUNT:parameter/PARAMETER_NAME

Полный (рабочий) пример тут.

На текущий момент параметры из блока Secrets не отображаются в AWS Console (см. картинку внизу - она из примера), однако точно работают (можно попробовать пример). Хотя с некоторыми регионами могут быть вопросы - точно работает (проверено) для Virginia и Ireland.
Fargate for EKS

На анонсе EKS и Fargate два года назад на re:Invent 2017, мне врезалась в память фраза, что #Fargate будет работать на базе #EKS под капотом. И до этого времени я пребывал в наивной уверенности, что это так и есть - под капотом у Fargate в реальности EKS.

Однако сегодня первый день на #HighLoad прошёл не зря - я заблуждался и с подачи умных людей узнал правду, что это были лишь планы, который оными и остались на сегодняшний день (см. картинку). Мало того, всё идёт к тому, что это (Fargate for EKS) так и останется лишь планами в роадмэпе.

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

#what_i_learned_today
Forwarded from aws_update
Фаргейт на спотах:

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-capacity-providers.html

Fargate Spot ведёт себя аналогично Spot-инстансам и за две минуты присылает предупрежение об удалении.

#Fargate
SSM + Fargate

Тем, кто любит SSM - заслуживающий рассмотрения случай интеграции SSM с Fargate:

https://github.com/andrewkrug/fargate-ir

Конкретно здесь функционал предназначен для incident response, однако мне кажется, что это правильный подход в сторону унификации использования SSM, когда практики, характерные для ОС, распространяются также и на контейнеры.

#SSM #Fargate
Как выполнить команду на ECS или Fargate?

Если нужен аналог docker exec, только для ECS/Fargate, то можно использовать Ecs-Cmd:

https://github.com/dschaaff/ecs-cmd

COMMANDS
exec - Execute a Command Within a Service's Container
get - Get Info on Clusters and Services
help - Shows a list of commands or help for one command
logs - Tail Logs From a Service's Container
run-task - Run a One Off Task On an ECS Cluster
shell - Open a Shell Inside a Service's Container
ssh - SSH into Host Task is Running On


#ECS #Fargate
Fargate (сильно) обновился: поддержка EFS + 20GB диск + Сontainerd + Fargate-agent + изменённый Task ENI.

https://aws.amazon.com/blogs/containers/aws-fargate-launches-platform-version-1-4/

Одно из важнейших (и как видно - далеко не единственное) изменений — поддержка EFS. Теперь, наконец, в нём есть Persistent Storage и можно строить stateful приложения без костылей.

p.s. Прошло три месяца с момента прикручивания IAM авторизации к EFS (просто для статистики скорости внедрения фич).

#Fargate
Новый Fargate — что под капотом:

https://aws.amazon.com/blogs/containers/under-the-hood-fargate-data-plane/

Почему Docker сменили на Containerd, а также другие подробности работы и архитектуры Fargate. Крайне рекомендуется для глубокого понимания и последующей борьбы с проблемами.

#Fargate
​​AWS Copilot CLI:

https://aws.amazon.com/blogs/containers/introducing-aws-copilot/

Copilot — новый вариант деплоя докеризированных приложений на ECS и Fargate. Сделанный в стиле успешного Amplfy CLI, сильно снижает порог входа в использование контейнеров на ECS/Fargate.

Отличный инструмент, пока в Preview и без документации, но выглядит тем, чего все эти годы так не хватало.

#ECS #Fargate
Результаты сотрудничества Docker и AWS — упрощение жизни для разработчиков. Теперь, чтобы запустить docker-compose.yml на ECS/Fargate, достаточно просто выполнить:

docker ecs compose up

https://aws.amazon.com/blogs/containers/aws-docker-collaborate-simplify-developer-experience/

В результате ECS/Fargate, вместе со своим Copilot проектом, резко отыграл в вечной заочной борьбе с Kubernetes.

#ECS #Fargate
​​Реально хороший канал про контейнеры:

https://www.youtube.com/channel/UCYg157Qy_U7ZR1WUHTq0Q8Q

С подсказки Виктора Кургузова.

#ECS #EKS #Fargate
Сравнение вариантов запуска контейнеров в Lambda и Fargate:

https://aws.amazon.com/blogs/architecture/should-i-run-my-containers-on-aws-fargate-aws-lambda-or-both/

Three key factors can influence the decision of what platform you use to deploy your container: startup time, task runtime, and cost. That decision may vary each time a task is initiated, as shown in the three scenarios following.

#Lambda #Fargate