Создать ревизию контейнера
Создавать новую ревизию необходимо в следующих случаях:
- загрузка новой версии Docker-образа в Yandex Container Registry;
- изменение настроек ревизии.
Примечание
Для сохранения целостности связей изменение и удаление ревизий контейнера не предусмотрено.
Если реестр или репозиторий с Docker-образом не являются публичными, необходимо указать в настройках ревизии сервисный аккаунт, у которого есть права на скачивание Docker-образа. Например, роль container-registry.images.puller
на каталог или реестр, в которых находится Docker-образ.
Если в настройках ревизии указан сервисный аккаунт, у пользователя или сервисного аккаунта, от имени которого создается ревизия, должна быть роль iam.serviceAccounts.user
. Она подтверждает права на использование сервисного аккаунта.
-
В консоли управления
перейдите в каталог, в котором находится контейнер. -
Выберите сервис Serverless Containers.
-
Выберите контейнер, ревизию которого хотите создать.
-
Перейдите на вкладку Редактор.
-
В разделе Параметры образа вы можете дополнительно указать параметры ревизии:
-
Команда — команды, которые контейнер выполнит при запуске. Соответствует инструкции
ENTRYPOINT
в Dockerfile. -
Аргументы — соответствует инструкции
CMD
в Dockerfile. Аргументы указываются в форматеключ = значение
. Если не указано, будет использоваться значениеCMD
по умолчанию из Docker-образа.В контейнер можно передать несколько аргументов. Для этого нажмите Добавить.
-
Рабочая директория — позволяет изменить рабочую директорию контейнера. Соответствует инструкции
WORKDIR
в Dockerfile. Рекомендуется устанавливать абсолютные пути к папкам.
-
-
Нажмите кнопку Создать ревизию.
Чтобы создать ревизию контейнера, выполните команду:
yc serverless container revision deploy \
--container-name <имя_контейнера> \
--image <URL_Docker-образа> \
--cores 1 \
--memory 1GB \
--concurrency 1 \
--execution-timeout 30s \
--service-account-id <идентификатор_сервисного_аккаунта> \
--command '<команда_1>','<команда_2>' \
--args '<ключ_1=значение_1>','<ключ_2=значение_2>'
Где:
-
--cores
— количество ядер, которые доступны контейнеру. -
--memory
— требуемая память. По умолчанию — 128 МБ. -
--concurrency
— максимальное количество одновременных вызовов одного экземпляра контейнера. По умолчанию — 1, максимальное значение — 16. Если вызовов контейнера больше, чем значениеconcurrency
, Serverless Containers масштабирует контейнер — запускает его дополнительные экземпляры.Примечание
Количество экземпляров контейнеров и одновременных запросов к ним в каждой зоне доступности не может превышать квоты.
-
--execution-timeout
— таймаут. По умолчанию — 3 секунды. -
--service-account-id
— идентификатор сервисного аккаунта, у которого есть права на скачивание Docker-образа. -
--command
— команды, которые контейнер выполнит при запуске. Указываются через запятую. Соответствует инструкцииENTRYPOINT
в Dockerfile. -
--args
— аргументы, соответствует инструкцииCMD
в Dockerfile. Указываются в форматеключ = значение
через запятую. Если не указано, будет использоваться значениеCMD
по умолчанию из Docker-образа.
Результат:
id: bbajn5q2d74c********
container_id: bba3fva6ka5g********
created_at: "2021-07-09T15:04:55.135Z"
image:
image_url: cr.yandex/crpd3cicopk7********/test-container:latest
image_digest: sha256:de8e1dce7ceceeafaae122f7670084a1119c961cd9ea1795eae92bd********
resources:
memory: "1073741824"
cores: "1"
execution_timeout: 3s
service_account_id: ajeqnasj95o7********
status: ACTIVE
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
В Terraform ревизия создается при каждом обновлении параметров работы ресурса.
Чтобы создать ревизию:
-
Обновите в конфигурационном файле параметры ресурса
yandex_serverless_container
:resource "yandex_serverless_container" "test-container" { name = "<имя_контейнера>" cores = "<количество_ядер>" memory = "<объем_памяти>" concurrency = "<одновременные_вызовы>" service_account_id = "<идентификатор_сервисного_аккаунта>" image { url = "<URL_Docker-образа>" command = ["<команда_1>","<команда_2>"] args = ["<ключ_1=значение_1>","ключ_2=значение_2"] work_dir = "<рабочая_директория>" } }
Где:
-
cores
— количество ядер, которые доступны контейнеру. -
memory
— требуемая память. По умолчанию — 128 МБ. -
concurrency
— максимальное количество одновременных вызовов одного экземпляра контейнера. По умолчанию — 1, максимальное значение — 16. Если вызовов контейнера больше, чем значениеconcurrency
, Serverless Containers масштабирует контейнер — запускает его дополнительные экземпляры.Примечание
Количество экземпляров контейнеров и одновременных запросов к ним в каждой зоне доступности не может превышать квоты.
-
command
— команды, которые контейнер выполнит при запуске. Указываются через запятую. Соответствует инструкцииENTRYPOINT
в Dockerfile. -
args
— аргументы, соответствует инструкцииCMD
в Dockerfile. Указываются в форматеключ = значение
через запятую. Если не указано, будет использоваться значение CMD по умолчанию из Docker-образа. -
work_dir
— позволяет изменить рабочую директорию контейнера. Соответствует инструкцииWORKDIR
в Dockerfile. Рекомендуется устанавливать абсолютные пути к папкам.
Более подробную информацию о параметрах ресурса yandex_serverless_container
в Terraform, см. в документации провайдера
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
После этого будет создана ревизия. Проверить создание ревизии можно в консоли управления
или с помощью команды CLI:yc serverless container revision list
-
Чтобы создать ревизию контейнера, воспользуйтесь методом REST API deployRevision для ресурса Container или вызовом gRPC API ContainerService/DeployRevision.