Развертывайте бессерверные контейнеры в облаке из командной строки
Fargate — это интерфейс командной строки для развертывания контейнеров в AWS Fargate. Используя Fargate , разработчики могут легко управлять службами Fargate, включая такие вещи, как: развертывание приложений (образы и переменные среды), мониторинг развертываний, просмотр журналов контейнера, перезапуск и масштабирование.
Вы можете установить последнюю стабильную версию CLI с помощью сценария утилиты Curl или загрузив двоичный файл со страницы выпусков. После установки вы получите команду fargate
.
curl -s get-fargate.turnerlabs.io | sh
Если вы хотите установить последнюю предварительную версию, используйте следующую команду:
curl -s get-fargate.turnerlabs.io | RELEASE=develop sh
По умолчанию Fargate использует us-east-1 , поскольку это единственный регион, в котором доступен AWS Fargate. CLI принимает параметр --region для использования в будущем и будет учитывать настройки среды AWS_REGION и AWS_DEFAULT_REGION . Обратите внимание, что при указании региона, в котором недоступны все необходимые службы, возникнет ошибка.
См. таблицу регионов, чтобы узнать, какие услуги доступны в каких регионах.
Fargate создан с использованием AWS SDK для Go, который ищет учетные данные в следующих местах:
Переменные среды
Общий файл учетных данных
Профиль экземпляра EC2
Дополнительную информацию см. в разделе «Указание учетных данных» в документации AWS SDK for Go.
Есть несколько способов указать параметры. Каждый элемент имеет приоритет над элементом, находящимся под ним:
Аргументы CLI (например, --cluster my-cluster
)
Переменные среды (например, FARGATE_CLUSTER=my-cluster
)
fargate.yml
(например, ниже)
cluster : my-cluster
service : my-service
task : my-task
rule : my-event-rule
verbose : false
nocolor : true
Флаг | Короткий | По умолчанию | Описание |
---|---|---|---|
--кластер | -с | Имя кластера ECS | |
--область | США-Восток-1 | Регион AWS | |
--без цвета | ЛОЖЬ | Отключить цветной вывод | |
--многословный | -v | ЛОЖЬ | Подробный вывод |
Сервисы управляют долгоживущими экземплярами ваших контейнеров, запущенных на AWS Fargate. Если ваш контейнер по какой-либо причине завершает работу, планировщик служб перезапустит ваши контейнеры и обеспечит выполнение желаемого количества задач в вашей службе. Службы можно использовать совместно с балансировщиком нагрузки для распределения трафика между задачами в вашей службе.
Флаг | Короткий | По умолчанию | Описание |
---|---|---|---|
--услуга | -с | Имя службы ECS |
fargate service list
Список услуг
fargate service deploy [--image <docker-image>]
Развертывание нового образа в сервисе
Образ контейнера Docker, который будет использоваться в службе, можно указать с помощью флага --image.
fargate service deploy [--file docker-compose.yml]
Развертывание образа, переменных среды и секретов, определенных в файле компоновки Docker, для обслуживания.
Разверните образ Docker и переменные среды, определенные в файле компоновки Docker, вместе как единое целое. Обратите внимание, что переменные и секреты среды заменяются тем, что находится в файле компоновки.
Секреты можно определить как пары ключ-значение в поле расширения файла Docker Compose x-fargate-secrets
. Чтобы использовать поля расширения, версия файла создания должна быть не ниже 2.4
для серии 2.x или не ниже 3.7
для серии 3.x.
Это позволяет вам запускать docker-compose up
локально, чтобы ваше приложение работало так же, как оно будет работать в AWS. Обратите внимание: хотя конфигурация yaml docker-compose поддерживает множество параметров, в Fargate развертываются только переменные изображения и среды. Если файл компоновки Docker определяет более одного контейнера, вы можете использовать метку aws.ecs.fargate.deploy: 1
, чтобы указать, какой контейнер вы хотите развернуть. Например:
version : " 3.7 "
services :
web :
build : .
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-service:0.1.0
ports :
- 80:5000
environment :
FOO : bar
BAZ : bam
env_file :
- hidden.env
x-fargate-secrets :
QUX : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : 1
redis :
image : redis
fargate service info
Проверить сервис
Отображение расширенной информации о службе, включая конфигурацию балансировщика нагрузки, активные развертывания, переменные среды и секреты.
Развертывания показывают активные версии вашей службы, которые работают. Несколько развертываний отображаются, если служба переходит из-за развертывания или обновления конфигурации, такой как переменные ЦП, памяти или среды.
fargate service logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--time] [--no-prefix]
Показать журналы задач в сервисе
Возвращайте либо определенный сегмент журналов службы, либо хвостовые журналы в режиме реального времени, используя опцию --follow. Журналы имеют префикс имени потока журналов в формате «fargate/<имя-службы>/<идентификатор-задачи>».
Follow будет продолжать работать и возвращать журналы, пока не будет прерван Control-C. Если передан --follow, параметр --end не может быть указан.
Журналы можно вернуть для определенных задач внутри службы, передав идентификатор задачи через флаг --task. Передайте --task с идентификатором задачи несколько раз, чтобы получить журналы нескольких конкретных задач.
Определенное окно журналов можно запросить, передав параметры --start и --end с выражением времени. Выражение времени может быть либо продолжительностью, либо меткой времени:
Вы можете фильтровать журналы по определенному термину, передав выражение фильтра с помощью флага --filter. Передайте один термин для поиска этого термина или несколько терминов для поиска сообщений журнала, включающих все термины. Дополнительные сведения см. в документации CloudWatch Logs.
--time включает в выходные метку времени журнала
--no-prefix исключает префикс потока журнала из вывода
fargate service ps
Список запущенных задач для службы
fargate service scale <scale-expression>
Масштабируйте количество задач в сервисе
Изменяет количество желаемых задач, которые необходимо выполнить в службе, в соответствии с заданным выражением масштаба. Выражение масштаба может быть либо абсолютным числом, либо дельтой, заданной знаком, например +5 или -2.
fargate service env set [--env <key=value>] [--file <pathname>]
[--secret <key=valueFrom>] [--secret-file <pathname>]
Установите переменные среды и секреты
По крайней мере одна переменная среды или секретный ключ должны быть указаны с помощью флагов --env, --file, --secret или --secret-file. Вы можете указать любое количество переменных в командной строке, повторяя --env перед каждой из них, или же поместить несколько переменных в текстовый файл, по одной в каждой строке, и указать имя файла с помощью --file и/или --secret-file. .
Каждая строка или строка параметров --env и --secret в файле должна иметь форму «ключ=значение», без кавычек и пробелов вокруг «=", если только вы не хотите, чтобы в значении были буквальные начальные пробелы. Кроме того, «ключевая» сторона должна быть допустимым идентификатором оболочки, то есть она должна начинаться с буквы ASCII AZ или подчеркивания и состоять только из букв, цифр и подчеркиваний.
«Значение» в «key=value» для каждого флага --secret должно ссылаться на ARN к секрету AWS Secrets Manager или параметру хранилища параметров AWS Systems Manager.
fargate service env unset --key <key-name>
Удалить переменные среды и секреты
Сбрасывает переменную среды или секретный ключ, указанный с помощью флага --key. Укажите --key с именем ключа несколько раз, чтобы отменить установку нескольких переменных.
fargate service env list
Показать переменные среды
Флаг | Короткий | По умолчанию | Описание |
---|---|---|---|
--Процессор | Количество процессорных модулей, выделяемых для каждой задачи | ||
--память | -м | Количество MiB, выделяемое для каждой задачи |
fargate service update [--cpu <cpu-units>] [--memory <MiB>]
Обновить конфигурацию службы
Настройки ЦП и памяти указываются в единицах ЦП и мебибайтах соответственно с использованием флагов --cpu и --memory. Каждые 1024 модуля ЦП эквивалентны одному виртуальному ЦП. AWS Fargate поддерживает только определенные комбинации конфигураций ЦП и памяти:
ЦП (ЦП) | Память (МиБ) |
---|---|
256 | 512, 1024 или 2048 |
512 | От 1024 до 4096 с шагом 1 ГиБ. |
1024 | От 2048 до 8192 с шагом 1 ГиБ. |
2048 | От 4096 до 16384 с шагом 1 ГиБ. |
4096 | От 8192 до 30720 с шагом 1 ГиБ. |
Должен быть указан хотя бы один из --cpu или --memory.
fargate service restart
Перезапустить службу
Создает новый набор задач для службы и останавливает выполнение предыдущих задач. Это полезно, например, если вашему сервису необходимо перезагрузить данные, кэшированные из внешнего источника.
Флаг | Короткий | По умолчанию | Описание |
---|---|---|---|
--задача | -т | Семейство определений задач |
Задачи — это однократное выполнение вашего контейнера. Экземпляры вашей задачи выполняются до тех пор, пока вы не остановите их вручную через API AWS, Консоль управления AWS или пока они не будут прерваны по какой-либо причине.
fargate task register [--image <docker-image>]
[-e KEY=value -e KEY2=value] [--env-file dev.env]
[--secret KEY3=valueFrom] [--secret-file secrets.env]
Регистрирует новое определение задачи для указанного образа Docker, переменных среды или секретов на основе последней версии семейства задач и возвращает номер новой версии.
Образ контейнера Docker, который будет использоваться в новом определении задачи, можно указать с помощью флага --image.
Переменные среды можно указать с помощью одного или нескольких флагов --env
или флага --env-file
.
Секреты можно указать с помощью одного или нескольких флагов --secret
или флага --secret-file
.
fargate task register [--file docker-compose.yml]
Регистрирует новое определение задачи, используя изображение, переменные среды и секреты, определенные в файле компоновки Docker. Обратите внимание, что переменные среды заменяются тем, что находится в файле компоновки.
Секреты можно определить как пары ключ-значение в поле расширения файла Docker Compose x-fargate-secrets
. Чтобы использовать поля расширения, версия файла создания должна быть не ниже 2.4
для серии 2.x или не ниже 3.7
для серии 3.x.
Если файл компоновки Docker определяет более одного контейнера, вы можете использовать метку aws.ecs.fargate.deploy: 1
, чтобы указать, какой контейнер вы хотите развернуть.
fargate task describe
Команда описания описывает определение задачи в формате Docker Compose. Образ Docker, переменные среды, секреты и целевой порт — это отображаемые элементы.
Эта команда может быть полезна для просмотра изменений, внесенных командами task register
, service deploy
или service env set
. Это также может быть полезно для локального запуска определения задачи в целях отладки или устранения неполадок.
fargate task describe -t my-app > docker-compose.yml
docker-compose up
Вы можете указать семейство определений задач, используя файл fargate.yml
, переменную окружения FARGATE_TASK
или флаг -t
, включая необязательный номер версии.
fargate task describe -t my-app
fargate task describe -t my-app:42
Пример вывода:
version : " 3.7 "
services :
app :
image : 1234567890.dkr.ecr.us-east-1.amazonaws.com/my-app:1.0
ports :
- published : 8080
target : 8080
environment :
AWS_REGION : us-east-1
ENVIRONMENT : dev
FOO : bar
x-fargate-secrets :
KEY : arn:key:ssm:us-east-1:000000000000:parameter/path/to/my_parameter
labels :
aws.ecs.fargate.deploy : " 1 "
fargate task logs [--follow] [--start <time-expression>] [--end <time-expression>]
[--filter <filter-expression>] [--task <task-id>]
[--container-name] [--time] [--no-prefix]
Показать логи задач
Предполагается, что группа журналов Cloudwatch имеет следующее соглашение: fargate/task/<task>
, где task
указывается с помощью --task
или Fargate.yml или параметров переменной среды.
Возвращайте либо определенный сегмент журналов задач, либо хвостовые журналы в режиме реального времени, используя опцию --follow. Журналы имеют префикс имени потока журналов в формате fargate/<container-name>/<task-id>.
--container-name
позволяет вам указать контейнер в определении задачи для получения журналов (по умолчанию — app
).
Follow будет продолжать работать и возвращать журналы, пока не будет прерван Control-C. Если передан --follow
, --end
не может быть указан.
Журналы можно вернуть для конкретных задач, передав идентификатор задачи с помощью флага --task
. Передайте --task
с идентификатором задачи несколько раз, чтобы получить журналы нескольких конкретных задач.
Определенное окно журналов можно запросить, передав параметры --start
и --end
с выражением времени. Выражение времени может быть либо продолжительностью, либо меткой времени:
Вы можете фильтровать журналы по определенному термину, передав выражение фильтра с помощью флага --filter
. Передайте один термин для поиска этого термина или несколько терминов для поиска сообщений журнала, включающих все термины.
--time
включает в выходные метку времени журнала
--no-prefix
исключает префикс потока журнала из вывода
Флаг | Короткий | По умолчанию | Описание |
---|---|---|---|
--правило | -р | Правило событий CloudWatch |
Команда events
предоставляет подкоманды для работы с событиями CloudWatch (запланированные задачи и т. д.).
fargate events target --revision <revision>
«Развертывает» (заставляет при следующем вызове правила события запускать новую версию) версию определения задачи в правиле событий CloudWatch путем обновления EcsParameters.TaskDefinitionArn
целевого объекта правила.
Типичная система CI/CD может делать что-то вроде:
REVISION=$(fargate task register -i 123456789.dkr.ecr.us-east-1.amazonaws.com/my-app:${VERSION}-${CIRCLE_BUILD_NUM} -e FOO=bar)
fargate events target -r ${REVISION}