Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for PostgreSQL
  • Начало работы
    • Все руководства
    • Создание кластера PostgreSQL для 1С
    • Создание кластера Linux-серверов «1С:Предприятия» с кластером Managed Service for PostgreSQL
    • Выгрузка базы данных в Yandex Data Processing
    • Поиск проблем с производительностью кластера
    • Анализ производительности и оптимизация
    • Настройка подключения из контейнера Serverless Containers
    • Поставка данных в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Поставка данных в Yandex Managed Service for YDB с помощью Yandex Data Transfer
    • Поставка данных в Yandex Managed Service for Apache Kafka® с помощью Debezium
    • Захват изменений PostgreSQL и поставка в YDS
    • Поставка данных из Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Перенос данных из Yandex Object Storage с использованием Yandex Data Transfer
    • Настройка отказоустойчивой архитектуры в Yandex Cloud
    • Мониторинг состояния географически распределенных устройств
    • Запись логов балансировщика в PostgreSQL
    • Создание сервера MLFlow для логирования экспериментов и артефактов
    • Работа с данными с помощью Query
    • Федеративные запросы к данным с помощью Query
    • Решение проблем с сортировкой строк после обновления glibc
    • Запись данных с устройства в базу данных
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

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

  • Необходимые платные ресурсы
  • Перед началом работы
  • Подготовьте файлы для Docker-образа
  • Создайте Docker-образ в реестре
  • Создайте и настройте контейнер Serverless Containers
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Настройка подключения из контейнера Serverless Containers

Настройка подключения из контейнера Serverless Containers

Статья создана
Yandex Cloud
Обновлена 28 апреля 2025 г.
  • Необходимые платные ресурсы
  • Перед началом работы
  • Подготовьте файлы для Docker-образа
  • Создайте Docker-образ в реестре
  • Создайте и настройте контейнер Serverless Containers
  • Удалите созданные ресурсы

Чтобы подключиться к кластеру Managed Service for PostgreSQL из контейнера Serverless Containers:

  1. Подготовьте файлы для Docker-образа.
  2. Создайте Docker-образ в реестре.
  3. Создайте и настройте контейнер Serverless Containers.

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

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

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

  • Плата за кластер Managed Service for PostgreSQL: использование вычислительных ресурсов, выделенных хостам, и дискового пространства (см. тарифы Managed Service for PostgreSQL).
  • Плата за использование публичных IP-адресов, если для хостов кластера включен публичный доступ (см. тарифы Virtual Private Cloud).
  • Плата за сервис Container Registry: использование хранилища (см. тарифы Container Registry).
  • Плата за контейнер Serverless Containers: количество вызовов контейнера и вычислительные ресурсы (см. тарифы Container Registry).

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

  1. Если у вас не установлен Docker, установите его. Убедитесь, что Docker Engine запущен.
  2. Если у вас нет кластера Managed Service for PostgreSQL, создайте его. Настройки публичного доступа к хостам кластера не влияют на возможность подключения из контейнера Serverless Containers.

Подготовьте файлы для Docker-образаПодготовьте файлы для Docker-образа

  1. В локальной директории создайте Dockerfile на основе Ubuntu. Настройка окружения в контейнере зависит от наличия публичного доступа к хостам кластера:

    Без публичного доступа
    С публичным доступом
    FROM ubuntu:latest
    
    RUN apt-get update && \
        apt-get install postgresql-client --yes
    
    COPY pg-version.sh pg-version.sh
    
    RUN chmod +x pg-version.sh
    
    ENTRYPOINT ["/pg-version.sh"]
    
    FROM ubuntu:latest
    
    RUN apt-get update && \
        apt-get install wget postgresql-client --yes && \
        mkdir --parents ~/.postgresql && \
        wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" \
        --output-document ~/.postgresql/root.crt && \
        chmod 0600 ~/.postgresql/root.crt
    
    COPY pg-version.sh pg-version.sh
    
    RUN chmod +x pg-version.sh
    
    ENTRYPOINT ["/pg-version.sh"]
    
  2. В ту же рабочую директорию поместите скрипт pg-version.sh. Скрипт подключается к базе данных и запрашивает версию PostgreSQL. Строка подключения в скрипте зависит от наличия публичного доступа к хостам кластера:

    Без публичного доступа
    С публичным доступом
    #!/bin/bash
    
    echo "$0: Start: $(date)"
    
    echo "Viewing the PostgreSQL Server Version"
    
    export PGPASSWORD='<пароль>'
    psql -h <FQDN_хоста> -p 6432 -U <имя_пользователя> -d <имя_БД> -c 'select version();'
    
    echo "$0: End: $(date)"
    
    #!/bin/bash
    
    echo "$0: Start: $(date)"
    
    echo "Viewing the PostgreSQL Server Version"
    
    export PGPASSWORD='<пароль>'
    psql -h <FQDN_хоста> -p 6432 --set=sslmode=require -U <имя_пользователя> -d <имя_БД> -c 'select version();'
    
    echo "$0: End: $(date)"
    

    Укажите в скрипте:

    • FQDN хоста вашего кластера.
    • Имя пользователя, от имени которого выполняется подключение.
    • Пароль пользователя.
    • Имя базы данных для подключения.

Создайте Docker-образ в реестреСоздайте Docker-образ в реестре

  1. Создайте реестр в сервисе Yandex Container Registry.

  2. Соберите Docker-образ, выполнив в рабочей директории с Docker-файлом команду:

    docker build . \
        -t cr.yandex/<идентификатор_реестра>/ubuntu:pgconnect
    

    Проверьте, что в локальном репозитории появился образ с указанным именем:

    docker images
    
  3. Аутентифицируйтесь в реестре:

    1. Получите IAM-токен.

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

      docker login \
      --username iam \
      --password <IAM-токен> \
      cr.yandex
      

    Другие способы см. в разделе Аутентифицироваться в Container Registry.

  4. Загрузите Docker-образ в реестр:

    docker push cr.yandex/<идентификатор_реестра>/ubuntu:pgconnect
    

Создайте и настройте контейнер Serverless ContainersСоздайте и настройте контейнер Serverless Containers

  1. Создайте сервисный аккаунт с именем docker-puller и ролью container-registry.images.puller.

  2. Создайте контейнер Serverless Containers с именем demo-pg-connect.

  3. В настройках ревизии контейнера укажите:

    • Ссылку на созданный ранее образ в реестре в поле URL образа.
    • Сервисный аккаунт docker-puller в поле Сервисный аккаунт.
    • Сеть, в которой расположен кластер Managed Service for PostgreSQL, в поле Сеть. Если к кластеру настроен публичный доступ, сеть указывать не обязательно.
  4. Нажмите Создать ревизию.

  5. Скопируйте ссылку для вызова контейнера из раздела Общая информация в консоли управления.

  6. Вызовите контейнер командой:

    curl --header "Authorization: Bearer $(yc iam create-token)" <ссылка_для_вызова>
    
  7. Перейдите в раздел Логи и убедитесь, что в логи контейнера попадает информация о версии PostgreSQL.

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

Чтобы перестать платить за созданные ресурсы:

  1. Удалите контейнер Serverless Containers.
  2. Удалите Docker-образы из реестра.
  3. Удалите реестр.
  4. Удалите сервисный аккаунт.
  5. Удалите кластер Managed Service for PostgreSQL.

Чтобы удалить созданный Docker-образ из локального репозитория, выполните команду:

docker rmi cr.yandex/<идентификатор_реестра>/ubuntu:pgconnect

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

Предыдущая
Анализ производительности и оптимизация
Следующая
Поставка данных в Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
Проект Яндекса
© 2025 ООО «Яндекс.Облако»