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

Назовите свой проект

  • Версия внешнего сервиса должна совпадать с версией, указанной в файле docker-compose.yml.
  • В качестве примера в этой инструкции используется проект с именем testit. Вы можете использовать другое название.
  1. При настройке внешней базы данных Redis установите следующий параметр:

    appendonly yes
    
  2. В файле docker-compose.yml закомментируйте или удалите секцию с сервисом БД (auth_cache), который будет заменен на внешний сервис, зависимости от него других контейнеров (все упоминания сервиса БД в блоках depends_on), и его вольюм (auth-cache-volume) в списке volumes в файле docker-compose.yml.

  3. В .env-файле укажите данные для подключения к внешней БД, где external-server — IP или DNS-имя хоста, на котором установлен Redis (без указания протокола и порта). AUTH_CACHE_CONNECTION_STRING=external-server

  4. Перезапустите систему Test IT:

    docker compose -f docker-compose.yml --project-name testit up --detach --timeout 120 --remove-orphans
    

Включение аутентификации в Redis

  1. Добавьте пароль в базу данных Redis.

    auth-cache:
    <...>
    command: >
     redis-server
     --appendonly yes
     --requirepass "${REDIS_PASSWORD}"
    
  2. Раскомментируйте в файле .env следующую строку:

    REDIS_PASSWORD=<YOUR_PASSWORD>
    
  3. Отредактируйте в файле .env строку AUTH_CACHE_CONNECTION_STRING, добавив в нее password=<YOUR_PASSWORD>, например:

    AUTH_CACHE_CONNECTION_STRING=auth-cache:6379,password=<YOUR_PASSWORD>
    

Настройка безопасного соединения

  1. Подготовьте файлы сертификатов — корневой ca.crt, а также подписанные с помощью него сертификат и ключ сервера server.crt и server.key. CN сертификата сервера должен быть auth-cache. Названия сертификатов и ключа могут быть любыми.

  2. Настройте права пользователя redis (999) в файле server.key:

    chown 999 server.key
    chgrp 999 server.key
    chmod 600 server.key
    
  3. Скопируйте файлы server.crt и server.key для auth-cache в вольюм:

    server_certs=$(docker inspect testit_auth-cache-tls-volume --format '{{ .Mountpoint }}')
    cp server.crt ${server_certs}/
    cp server.key ${server_certs}/
    
  4. Скопируйте файл сертификата CA, с помощью которого были выписаны сертификаты серверов, в вольюм trusted-certificates-volume:

    trusted_certs=$(docker inspect testit_trusted-certificates-volume --format '{{ .Mountpoint }}')
    cp ca.crt ${trusted_certs}/
    
  5. В файл docker-compose.yml:

    • Добавьте в секции auth-cache под секцией command следующие строки:

      auth-cache:
          <...>
          command: >
          <...>
          --tls-port 6379
          --port 0
          --tls-cert-file "${REDIS_TLS_CERT_FILE}"
          --tls-key-file "${REDIS_TLS_KEY_FILE}"
          --tls-auth-clients no
      
    • В файле .env отредактируйте строку AUTH_CACHE_CONNECTION_STRING, добавив ssl=true:

      AUTH_CACHE_CONNECTION_STRING=auth-cache:6379,password=<YOUR_PASSWORD>,ssl=true
      
    • Раскомментируйте следующие строки и отредактируйте при необходимости:

      REDIS_TLS_CERT_FILE=/tls/server.crt
      REDIS_TLS_KEY_FILE=/tls/server.key
      
Обновлено: