Смонтировать бакеты в контейнер
Вы можете монтировать в контейнер бакеты Yandex Object Storage. При монтировании бакета создается новая ревизия контейнера.
Чтобы смонтировать бакеты в контейнер:
-
В консоли управления
перейдите в каталог, в котором находится контейнер. -
В списке сервисов выберите Serverless Containers.
-
Выберите контейнер.
-
Перейдите на вкладку Редактор.
-
В блоке Настройки выберите или создайте новый сервисный аккаунт с ролью:
storage.viewer, чтобы только читать данные из смонтированного бакета.storage.uploader, чтобы читать данные из смонтированного бакета и записывать их в него.
-
В блоке Смонтированные бакеты:
-
Нажмите Добавить бакет.
-
Укажите в поле:
-
Путь монтирования — абсолютный путь монтирования. Директория, к которой смонтируется бакет, будет доступна по указанному пути.
По этому пути нельзя размещать ничего, кроме пустой директории, иначе при инициализации контейнера может возникнуть ошибка, и смонтированные бакеты будут недоступны.
-
Бакет — бакет, который вы хотите смонтировать. При необходимости создайте новый бакет.
-
Папка — папку в бакете, которая будет смонтирована в контейнер. Если поле пустое, смонтируется весь бакет.
-
-
Чтобы запретить запись в бакет, включите опцию Только чтение. Если опция включена, данные из смонтированного бакета будут доступны только для чтения.
Чтобы смонтировать в контейнер дополнительный бакет, повторно нажмите кнопку Добавить бакет и задайте необходимые параметры.
-
-
Нажмите кнопку Создать ревизию.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
Выполните команду:
yc serverless container revision deploy \
--container-name <имя_контейнера> \
--image <URL_Docker-образа> \
--memory <объем_RAM> \
--execution-timeout <максимальное_время_выполнения> \
--service-account-id <идентификатор_сервисного_аккаунта> \
--command '<команда_1>','<команда_2>' \
--args '<ключ_1=значение_1>','<ключ_2=значение_2>' \
--mount type=object-storage,mount-point=<путь_монтирования>,bucket=<имя_бакета>,prefix=<имя_папки>,mode=<режим_монтирования>
Где:
-
--container-name— имя контейнера. -
--image— URL Docker-образа, из которого вы создаете ревизию контейнера, в формате:cr.yandex/<идентификатор_реестра>/<имя_Docker-образа>:<тег>. -
--memory— необходимый объем RAM. -
--execution-timeout— максимальное время выполнения контейнера до таймаута. -
--service-account-id— идентификатор сервисного аккаунта. Для чтения данных из бакета сервисному аккаунту необходима рольstorage.viewer, для чтения и записи — рольstorage.uploader. -
--command— команды, которые контейнер выполнит при запуске. Указываются через запятую. Соответствует инструкцииENTRYPOINTв Dockerfile. -
--args— аргументы, соответствует инструкцииCMDв Dockerfile. Указываются в форматеключ = значениечерез запятую. Если не указано, будет использоваться значениеCMDпо умолчанию из Docker-образа. -
--mount— параметры монтирования бакета Object Storage:type— тип монтируемого хранилища. Для бакета значение всегдаobject-storage.mount-point— абсолютный путь монтирования. Директория, к которой смонтируется бакет, будет доступна по заданному пути.bucket— имя бакета.prefix— папка в бакете, которая будет смонтирована в контейнер. Если поле не задано или пустое, смонтируется весь бакет.mode— режим монтирования бакета:ro— только чтение,rw— чтение и запись.
Чтобы смонтировать в контейнер одновременно несколько бакетов, задайте параметр
--mountнеобходимое количество раз.
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
-
Откройте файл конфигурации Terraform и добавьте к описанию контейнера блок
mounts:resource "yandex_serverless_container" "test-container" { ... mounts { mount_point_path = "<точка_монтирования>" mode = "<режим_монтирования>" object_storage { bucket = "<имя_бакета>" prefix = "<имя_папки>" } } }Где:
-
mounts— параметры монтирования бакета Object Storage:mount_point_path— абсолютный путь монтирования. Директория, к которой смонтируется бакет, будет доступна по указанному пути.mode— режим монтирования бакета:ro— только чтение,rw— чтение и запись.object_storage— параметры бакета:
Чтобы смонтировать в контейнер одновременно несколько бакетов, задайте блок
mountsнеобходимое количество раз.
Более подробную информацию о параметрах ресурса
yandex_serverless_containerсм. в документации провайдера. -
-
Примените изменения:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validateЕсли конфигурация является корректной, появится сообщение:
Success! The configuration is valid. -
Выполните команду:
terraform planВ терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply -
Подтвердите изменения: введите в терминале слово
yesи нажмите Enter.
-
Проверить изменение ревизии контейнера и ее настройки можно в консоли управления
yc serverless container revision get <идентификатор_ревизии_контейнера>
Воспользуйтесь методом REST API deployRevision для ресурса Container или вызовом gRPC API ContainerService/DeployRevision.