Настройка внешнего подключения базы данных PostgreSQL

Проверьте совместимость версии БД

Перед началом работы убедитесь, что версия внешней базы данных PostgreSQL совпадает с версией, указанной в .Values.postgresql.image.tag.

  1. Если система Test IT запущена, остановите все поды с помощью команды.
  2. Подготовьте внешнюю базу данных PostgreSQL для каждого из сервисов (testitdb, authdb, avatarsdb, licensedb, backgrounddb, globalsearchdb):
    yum install postgresql-contrib
    psql -U postgres
    create database testitdb;
    create user tester with encrypted password 'tester';
    grant all privileges on database testitdb to tester;
    \connect testitdb;
    CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
    
    create database authdb;
    grant all privileges on database authdb to tester;
    \connect authdb;
    CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
    
    create database avatarsdb;
    grant all privileges on database avatarsdb to tester;
    \connect avatarsdb;
    CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
    
    create database backgrounddb;
    grant all privileges on database backgrounddb to tester;
    \connect backgrounddb;
    CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
    
    create database licensedb;
    grant all privileges on database licensedb to tester;
    \connect licensedb;
    CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
    
    create database globalsearchdb;
    grant all privileges on database globalsearchdb to tester;
    \connect globalsearchdb;
    CREATE EXTENSION if not exists "uuid-ossp" SCHEMA public;
    CREATE EXTENSION if not exists "pg_trgm" SCHEMA public;
    
  3. В файле values-override.yaml задайте хост, порт, имя пользователя, пароль и корректные имена баз данных:
    general:
      config:
        POSTGRES_HOST: "postgres"
        POSTGRES_PORT: "5432"
        POSTGRES_USER: "postgres"
        POSTGRES_PASSWORD: "F1rstL0g0N!"
        POSTGRES_DB: "testitdb"
        POSTGRES_AUTH_DB: "authdb"
        POSTGRES_AVATARS_DB: "avatarsdb"
        POSTGRES_BACKGROUND_DB: "backgrounddb"
        POSTGRES_LICENSE_DB: "licensedb"
        POSTGRES_GLOBALSEARCH_DB: "globalsearchdb"
    
  4. Примените изменения с помощью команды:
    cd ~/testit
    helm -n <namespace> -f testit_backend/values-override.yaml upgrade testit-backend testit_backend/
    

Настройка SSL для внешних подключений

Важно

  1. Убедитесь, что конфигурация-SSL во внешних сервисах настроена на проверку только файла CA.crt.
  2. Если для внешних сервисов используются другие файлы CA.crt, убедитесь, что все они добавлены в связку. Для этого внесите изменения в файл:
    testit_backend/templates/configmaps/ssl/ca-bundle.yaml
    
  3. Прежде чем применять изменения, описанные в данной инструкции, убедитесь, что настроены внешние подключения к соответствующим сервисам.
  1. Создайте SSL-сертификаты, используя доменное имя (CN) вашего сервера Postgres и файл CA.crt:
    • ca.crt
    • server.crt
    • server.key
  2. Перенесите сертификаты в соответствующую папку на вашем сервере Postgres. Например:
    • /var/lib/postgresql/tls/ca.crt
    • /var/lib/postgresql/tls/server.crt
    • /var/lib/postgresql/tls/server.key
  3. При запуске сервера Postgres убедитесь, что расположение сертификатов передано верно:
    postgres -c 'max_connections=300' -c 'shared_buffers=256MB' -c 'ssl=on' \
    -c 'ssl_ca_file=/var/lib/postgresql/tls/ca.crt' \
    -c 'ssl_cert_file=/var/lib/postgresql/tls/server.crt' \
    -c 'ssl_key_file=/var/lib/postgresql/tls/server.key'
    
  4. Добавьте файл CA.crt в конфигурационную карту ca-bundle:
    # testit_backend/templates/configmaps/ssl/ca-bundle.yaml
    {{- if .Values.sslEnabled }}
    ---
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: "ca-bundle"
      labels:
        app: testit
        content: ssl-ca
    data:
      ca.crt: |-
        -----BEGIN CERTIFICATE-----
        contents
        -----END CERTIFICATE-----
    {{- end }}
    
  5. Активируйте SSL для Postgres в файле values-override.yaml. Убедитесь, что общий флаг sslEnabled включен:
    sslEnabled: true
    postgres:
      enabled: false
      sslEnabled: true
    
  6. При необходимости в файле values-override.yaml задайте значения переменных для SSL в разделе general.sslConfig.
Обновлено: