Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Создание кластера Kubernetes без доступа в интернет
    • Запуск рабочих нагрузок с GPU
    • Использование групп узлов c GPU без предустановленных драйверов
    • Установка Time-Slicing GPUs
    • Миграция ресурсов в другую зону доступности
    • Использование модулей Yandex Cloud в Terraform
    • Шифрование секретов в Managed Service for Kubernetes
      • Интеграция с Argo CD
      • Интеграция с Crossplane
      • Синхронизация с секретами Yandex Lockbox
      • Настройка Fluent Bit для работы с Cloud Logging
      • Настройка Gateway API
      • Настройка L7-балансировщика Application Load Balancer с помощью Ingress-контроллера
      • Настройка логирования для L7-балансировщика Application Load Balancer с помощью Ingress-контроллера
      • Создание L7-балансировщика с профилем безопасности Smart Web Security через Ingress-контроллер Application Load Balancer
      • Проверка состояния приложений в кластере Managed Service for Kubernetes с помощью L7-балансировщика Application Load Balancer
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
      • Настройка Kyverno & Kyverno Policies
      • Использование Metrics Provider для трансляции метрик
      • Редактирование изображений для сайтов с помощью Thumbor
      • Использование Istio
      • Использование HashiCorp Vault для хранения секретов
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • История изменений
  • Обучающие курсы

В этой статье:

  • Необходимые платные ресурсы
  • Перед началом работы
  • Подготовьте инфраструктуру
  • Установите дополнительные зависимости
  • Добавьте сертификат в Certificate Manager
  • Установите Thumbor
  • Подготовьте изображения для тестирования Thumbor
  • Настройте CDN
  • Проверьте результат
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Использование продуктов Cloud Marketplace
  3. Редактирование изображений для сайтов с помощью Thumbor

Редактирование изображений для сайтов с помощью приложения Thumbor

Статья создана
Yandex Cloud
Улучшена
mmerihsesh
Обновлена 21 апреля 2025 г.
  • Необходимые платные ресурсы
  • Перед началом работы
    • Подготовьте инфраструктуру
    • Установите дополнительные зависимости
  • Добавьте сертификат в Certificate Manager
  • Установите Thumbor
  • Подготовьте изображения для тестирования Thumbor
  • Настройте CDN
  • Проверьте результат
  • Удалите созданные ресурсы

Thumbor — проект с открытым исходным кодом, предназначенный для обработки изображений по запросу. Thumbor содержит основные настройки для редактирования изображений. Например, можно изменить размер исходного изображения, увеличить контрастность, убрать эффект красных глаз.

Thumbor удобно использовать для подготовки изображений для сайтов. Например, можно создать миниатюры в качестве превью видео. Thumbor поддерживает кеширование изображений, что позволяет снизить трудозатраты на поддержку сайта.

В примере ниже изображения размещаются на сайте и редактируются с помощью Thumbor: меняется размер и добавляется водяной знак. Чтобы снизить время загрузки изображений, для сайта настраивается CDN (сеть распространения контента) с помощью сервиса Yandex Cloud CDN.

Чтобы отредактировать изображения с помощью Thumbor и подключить CDN:

  1. Установите Thumbor.
  2. Подготовьте изображения для тестирования Thumbor.
  3. Настройте Cloud CDN.
  4. Проверьте результат.

Если созданные ресурсы вам больше не нужны, удалите их.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входят:

  • Плата за кластер Managed Service for Kubernetes: использование мастера и исходящий трафик (см. тарифы Managed Service for Kubernetes).
  • Плата за узлы кластера (ВМ): использование вычислительных ресурсов, операционной системы и хранилища (см. тарифы Compute Cloud).
  • Плата за публичный IP-адрес, если он назначен узлам кластера (см. тарифы Virtual Private Cloud).
  • Плата за бакет Object Storage: хранение данных и выполнение операций с ними (см. тарифы Object Storage).
  • Плата за сервис Cloud CDN: исходящий трафик (см. тарифы Object Storage).

Перед началом работыПеред началом работы

Подготовьте инфраструктуруПодготовьте инфраструктуру

Вручную
Terraform
  1. Создайте сервисные аккаунты:

    • Сервисный аккаунт для ресурсов с ролями k8s.clusters.agent и vpc.publicAdmin на каталог, в котором создается кластер Managed Service for Kubernetes. От имени этого аккаунта будут создаваться ресурсы для кластера Managed Service for Kubernetes.

    • Сервисный аккаунт для узлов с ролью container-registry.images.puller на каталог с реестром Docker-образов. От его имени узлы будут скачивать из реестра Docker-образы.

      Вы можете использовать один и тот же сервисный аккаунт для обеих операций.

    • Сервисный аккаунт thumbor-sa для работы с Thumbor.

  2. Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.

    Важно

    От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.

  3. Создайте кластер Managed Service for Kubernetes и группу узлов любой подходящей конфигурации. При создании укажите группы безопасности, подготовленные ранее.

  4. Cоздайте бакет в Yandex Object Storage.

  5. Предоставьте сервисному аккаунту thumbor-sa разрешение READ на бакет.

  1. Если у вас еще нет Terraform, установите его.

  2. Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

  4. Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

  5. Скачайте в ту же рабочую директорию файл конфигурации k8s-for-thumbor.tf.

    В этом файле описаны:

    • Сеть.

    • Подсеть.

    • Сервисные аккаунты для различных сервисов:

      • для работы кластера и группы узлов Managed Service for Kubernetes;
      • для приложения Thumbor;
      • для создания бакетов Object Storage.
    • Кластер Managed Service for Kubernetes.

    • Группа узлов.

    • Группы безопасности, которые содержат необходимые правила для кластера Managed Service for Kubernetes и входящих в него групп узлов.

      Важно

      От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.

    • Статический ключ доступа для создания бакета.

    • Бакет.

  6. Укажите в файле k8s-for-thumbor.tf:

    • идентификатор каталога;
    • версию Kubernetes для кластера и групп узлов Managed Service for Kubernetes.
  7. Проверьте корректность файла конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файле есть ошибки, Terraform на них укажет.

  8. Создайте инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

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

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Установите дополнительные зависимостиУстановите дополнительные зависимости

  1. Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.

    По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.

  2. Установите kubectl и настройте его на работу с созданным кластером.

Добавьте сертификат в Certificate ManagerДобавьте сертификат в Certificate Manager

Поддерживаются сертификаты из Yandex Certificate Manager. Вы можете выпустить новый сертификат Let's Encrypt® или загрузить собственный.

Сертификат должен находиться в том же каталоге, в котором расположен ваш CDN-ресурс.

Для сертификата Let's Encrypt® пройдите проверку прав на домен, который указан в сертификате.

Установите ThumborУстановите Thumbor

  1. Создайте статический ключ доступа для сервисного аккаунта thumbor-sa и сохраните ключ в файл sa-key.json:

    yc iam access-key create --service-account-name thumbor-sa \
       --format json > sa-key.json
    
  2. Установите приложение Thumbor с параметрами:

    • Пространство имен — thumbor.
    • Название приложения — thumbor.
    • Имя бакета — бакет, в который вы загрузили изображения.
    • Статический ключ для доступа к Object Storage — содержимое файла sa-key.json.
    • URL без подписи — разрешены.

Подготовьте изображения для тестирования ThumborПодготовьте изображения для тестирования Thumbor

  1. Скачайте изображения:

    • poster_rodents_bunnysize.jpg;
    • poster_bunny_bunnysize.jpg;
    • cc.xlarge.png (символ организации Creative Commons).
  2. Загрузите изображения в бакет:

    Вручную
    Terraform
    1. В консоли управления выберите каталог, в который нужно загрузить объект.
    2. Выберите сервис Object Storage.
    3. Нажмите на имя бакета.
    4. Нажмите кнопку Загрузить.
    5. В появившемся окне выберите необходимые файлы и нажмите кнопку Открыть.
    6. Нажмите кнопку Загрузить.
    7. Обновите страницу.

    В консоли управления информация о количестве объектов в бакете и занятом месте обновляется с задержкой в несколько минут.

    Загрузить объекты в бакет можно только после его создания, поэтому для загрузки изображений используется отдельный файл конфигурации.

    1. В рабочую директорию с файлом k8s-for-thumbor.tf скачайте файл конфигурации images-for-thumbor.tf. В этом файле описаны объекты Object Storage — скачанные изображения, которые будут загружены в бакет.

    2. Укажите в файле images-for-thumbor.tf относительные или абсолютные пути до изображений. Например, если изображения хранятся в одной директории с файлами конфигурации, укажите:

      • poster_rodents_bunnysize.jpg
      • poster_bunny_bunnysize.jpg
      • cc.xlarge.png
    3. Выполните команду terraform init в директории с конфигурационными файлами. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера.

    4. Проверьте корректность файла конфигурации Terraform с помощью команды:

      terraform validate
      

      Если в файле есть ошибки, Terraform на них укажет.

    5. Запустите загрузку изображений в бакет:

      1. Выполните команду для просмотра планируемых изменений:

        terraform plan
        

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

      2. Если вас устраивают планируемые изменения, внесите их:

        1. Выполните команду:

          terraform apply
          
        2. Подтвердите изменение ресурсов.

        3. Дождитесь завершения операции.

      В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления.

Настройте CDNНастройте CDN

  1. Активируйте CDN-провайдер для вашего каталога:

    yc cdn provider activate --type=gcore --folder-id=<идентификатор_каталога>
    
  2. Получите доменное имя CDN-провайдера:

    yc cdn resource get-provider-cname
    

    Пример результата:

    cname: cl-msa87*****.edgecdn.ru
    folder_id: b1g86q4m5vej********
    

    Доменное имя указано в параметре cname.

  3. Настройте CNAME для своего домена:

    1. Перейдите в настройки DNS вашего домена на сайте компании, которая предоставляет вам услуги DNS-хостинга.

    2. Подготовьте CNAME-запись таким образом, чтобы она указывала на скопированный ранее адрес в домене .edgecdn.ru. Например, если доменное имя сайта — cdn.example.com, создайте CNAME-запись или замените уже существующую запись для cdn:

      cdn CNAME cl-msa87*****.edgecdn.ru.
      
  4. Получите внешний IP-адрес Thumbor:

    kubectl -n thumbor get svc thumbor \
       -o jsonpath='{.status.loadBalancer.ingress[0].ip}'
    
  5. Создайте группу источников в Cloud CDN:

    yc cdn origin-group create \
       --name thumbor \
       --origin source=<IP-адрес_Thumbor>,enabled=true
    

    Пример результата:

    id: "123***"
    folder_id: b1g86q4m5vej********
    name: thumbor
    use_next: true
    origins:
      - id: "234****"
        origin_group_id: "345***"
        source: cdn.example.com
        enabled: true
    

    В результате возвращается идентификатор группы источников в параметре origin_group_id. Этот идентификатор понадобится в следующем шаге.

  6. Создайте CDN-ресурс и подключите к нему группу источников:

    yc cdn resource create \
       --cname <доменное_имя_ресурса> \
       --origin-group-id=<идентификатор_группы_источников> \
       --origin-protocol=https \
       --ignore-query-string \
       --cert-manager-ssl-cert-id <идентификатор_сертификата> \
       --forward-host-header
    

    Пример доменного имени ресурса: cdn.example.com.

    Пример результата:

    id: bc855oumelrq********
    folder_id: b1g86q4m5vej********
    cname: cdn.example.com
    created_at: "2022-01-15T15:13:42.827643Z"
    updated_at: "2022-01-15T15:13:42.827671Z"
    active: true
    options:
      edge_cache_settings:
        enabled: true
        default_value: "345600"
      query_params_options:
        ignore_query_string:
          enabled: true
          value: true
      host_options:
        forward_host_header:
          enabled: true
          value: true
      stale:
        enabled: true
        value:
          - error
          - updating
    origin_group_id: "345***"
    origin_group_name: thumbor
    origin_protocol: HTTPS
    ssl_certificate:
      type: CM
      status: CREATING
    

    Подключение CDN-ресурса занимает от 15 до 30 минут.

Проверьте результатПроверьте результат

Откройте ваш сайт по URL:

  • https://<доменное_имя_ресурса>/unsafe/300x400/filters:watermark(cc.xlarge.png,10,-10,80,20)/poster_bunny_bunnysize.jpg
  • https://<доменное_имя_ресурса>/unsafe/600x800/filters:watermark(cc.xlarge.png,10,-10,80,20)/poster_bunny_bunnysize.jpg
  • https://<доменное_имя_ресурса>/unsafe/400x300/filters:watermark(cc.xlarge.png,-10,10,80,15)/poster_rodents_bunnysize.jpg
  • https://<доменное_имя_ресурса>/unsafe/800x600/filters:watermark(cc.xlarge.png,-10,10,80,15)/poster_rodents_bunnysize.jpg

Отобразятся подготовленные изображения с различным размером. На каждом изображении есть водяной знак Creative Commons.

Примечание

Если ресурс недоступен по указанному URL, то убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.

Удалите созданные ресурсыУдалите созданные ресурсы

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

  1. Удалите объекты из бакетов.

  2. Остальные ресурсы удалите в зависимости от способа их создания:

    Вручную
    Terraform
    1. CDN-ресурс.
    2. Группу источников CDN.
    3. Группу узлов.
    4. Кластер Managed Service for Kubernetes.
    5. Публичный статический IP-адрес, если вы зарезервировали его для кластера.
    6. Сервисные аккаунты.
    7. Бакеты.
    1. В терминале перейдите в директорию с планом инфраструктуры.

      Важно

      Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

    2. Удалите ресурсы:

      1. Выполните команду:

        terraform destroy
        
      2. Подтвердите удаление ресурсов и дождитесь завершения операции.

      Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

Была ли статья полезна?

Предыдущая
Использование Metrics Provider для трансляции метрик
Следующая
Использование Istio
Проект Яндекса
© 2025 ООО «Яндекс.Облако»