# Настройка Шлюз данных Qlik — прямой доступ в контейнере

В этом разделе описывается, как настроить контейнеризированный Direct Access Gateway. В нем приведены предварительные требования и инструкции по установке, а также описаны ограничения и особенности, о которых следует знать при работе с контейнеризированным Direct Access Gateway.

Примечание к информацииПоддерживается начиная с Direct Access Gateway 1.8.0.

## Что такое контейнеризированный Direct Access Gateway?

Вы можете развернуть Direct Access Gateway в контейнере Docker. Этот тип развертывания называется контейнеризированным Direct Access Gateway. Контейнеризированные развертывания Direct Access Gateway поддерживаются для Linux, macOS и Windows.

Контейнеризированный Direct Access Gateway обеспечивает переносимость в вашу среду Direct Access Gateway.

## Рекомендации по использованию Шлюз данных Qlik — прямой доступ

Для успешной работы с Шлюз данных Qlik — прямой доступ настоятельно рекомендуется придерживаться следующих рекомендаций:

* Не используйте один и тот же шлюз Direct Access Gateway для разработки, тестирования принятия пользователями и для производственной среды, так как это увеличивает риск перегрузки доступных ресурсов и ставит под угрозу стабильность системы. С точки зрения деятельности предприятия, недостаточные ресурсы вкупе со снижением стабильности могут привести к задержке обновлений производственных данных приложения.

* Чтобы обеспечить оптимальную производительность, установите шлюз Direct Access Gateway в среде, расположенной ближе всего к источнику данных.

## Предварительные требования к системе

В этом разделе описываются требования для использования контейнеризированного Direct Access Gateway.

### Требования к программному обеспечению

* Docker Engine версии 20.9+ и плагин Docker Compose (docker compose, синтаксис v2), установленные на хосте.

### Необходимые порты и протоколы

Сведения о необходимых портах и протоколах см. в [Необходимые порты и протоколы](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm#Ports).

### Рекомендуемое оборудование

* Хост: 8 ядер, 32 ГБ оперативной памяти, 5 ГБ дискового пространства, доступного для Docker

* Необязательно: задайте соответствующие ограничения для контейнера в compose-файле, чтобы шлюз имел выделенные ресурсы, а не конкурировал с другими контейнерами или процессами на хосте:

  ```
  direct-access-agent:
      image: ...
      deploy:
        resources:
          limits:
            cpus: "6"
            memory: 24G
  ...
  dcaas:
      image: ...
      deploy:
        resources:
          limits:
            cpus: "2"
  ```

#### Минимальное оборудование

Минимальное оборудование подходит только для определенных сценариев с небольшими выделенными развертываниями (разработка, тестирование или производство), используемыми для постоянных небольших объемов данных с ограниченным количеством одновременных перезагрузок.

* Хост: 4 ядра, 8 ГБ оперативной памяти, 5 ГБ дискового пространства, доступных для Docker

* Необязательно: задайте соответствующие ограничения для контейнера в compose-файле, чтобы шлюз имел выделенные ресурсы, а не конкурировал с другими контейнерами или процессами на хосте:

  ```
  direct-access-agent:
      image: ...
      deploy:
        resources:
          limits:
            cpus: "2"
            memory: 4G
  ...
  dcaas:
      image: ...
      deploy:
        resources:
          limits:
            cpus: "2"
  ```

## Установка Шлюз данных Qlik — прямой доступ

Настройка Direct Access Gateway подразумевает процедуры, которые необходимо выполнить как в центре активности Администрирование, так и на сервере Direct Access Gateway.

Примечание к информацииДля процедур шлюза данных, которые необходимо выполнить в центре активности Администрирование, требуются права администратора клиента.

### Этап 1. Загрузка Шлюз данных Qlik — прямой доступ

1. В центре активности Администрирование выберите Шлюзы данных.

   Все существующие шлюзы данных будут перечислены в [таблице, где отображается базовая информация о каждом шлюзе](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-managing-console.htm#gateprop).

2. На панели инструментов нажмите кнопку Развернуть.

   Откроется диалоговое окно Развертывание шлюза данных.

3. Выберите Шлюз данных — прямой доступ — контейнеризированный шлюз прямого доступа, примите клиентское соглашение Qlik и нажмите Скачать. Установочный файл Direct Access gateway (docker-compose.qlik-data-gateway-direct-access.yml) будет загружен на ваш компьютер.

### Этап 2: запустите развертывание, запустив файл Docker Compose

Чтобы начать развертывание Direct Access Gateway, выполните следующую команду:

docker compose -f docker-compose.qlik-data-gateway-direct-access.yml up

### Этап 3: настройка Direct Access Gateway

Подробные инструкции по настройке см. в [Этап 3: настройка Direct Access Gateway](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm#Stage3).

### Этап четыре: регистрация шлюза данных

Следующий шаг — регистрация шлюза данных. Это можно сделать как через центр активности Администрирование, так и в командной строке.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)

#### Вариант 1: через центр активности Администрирование

Вы можете зарегистрировать шлюз с помощью центра активности Администрирование. См. [Вариант 1: через центр активности Администрирование](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm#StageConsole).

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)

#### Вариант 2: автоматическая регистрация с помощью командной строки

Вы также можете автоматически зарегистрировать Direct Access Gateway из командной строки, не используя центр действий Администрирование status. Этот метод использует краткосрочный сессионный токен, сгенерированный клиентом OAuth.

Примечание к информацииАвтоматическая регистрация поддерживается только через командную строку. REST API для автоматической регистрации шлюзов в настоящее время недоступен.

Предварительные требования

Ключ API с разрешением администратора клиента на создание клиентов OAuth и управление ими.

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)Регистрация шлюза с помощью автоматической регистрации

1. Сначала необходимо настроить среду Python для генерации идентификатора клиента OAuth, а также ключа утверждения (кратковременного токена) в контейнере direct-access-agent. Выполните следующие команды по отдельности в указанном порядке:

   1. docker exec -it --user root direct-access-agent-1 bash

   2. apt-get update && apt-get install -y python3 python3-pip

   3. apt install python3.11-venv

   4. python3 -m venv .venv

   5. source .venv/bin/activate

   6. pip install cryptography pyjwt

   7. [](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)python3 generate\_gateway\_assertion.py --tenant-url &lt;tenant-url&gt;

2. Для [последней команды в приведенном выше списке](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm#python3) следите за интерактивными подсказками и скопируйте client\_id (идентификатор клиента OAuth) и assertion, когда они будут предоставлены. Пока сохраните эти данные на бумаге или во временном текстовом файле — они понадобятся на последующих этапах процесса.

3. Когда вы запишете client\_id и assertion, очистите среду Python с помощью следующей команды:

   deactivate

4. Установите для метода согласия OAuth-клиента значение trusted.

   curl "https://&lt;tenant-url&gt;/api/v1/oauth-clients/&lt;client-id&gt;/connection-configs/me" -X PATCH -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;api-key&gt;' -d '[{"op":"replace","path":"/consentMethod","value":"trusted"}]'

5. Запросите токен доступа. Это также запускает автоматическое создание учетной записи бота, используемой шлюзом.

   curl "https://&lt;tenant-url&gt;/oauth/token" -X POST -H 'content-type: application/x-www-form-urlencoded' -d "grant\_type=client\_credentials" -d "client\_id=&lt;client-id&gt;" -d "client\_assertion\_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" -d "client\_assertion=&lt;assertion&gt;" -d "scope=admin.direct-access-gateways:register\_gateway admin.direct-access-gateways:delete\_gateway"

   Примечание к информации

   Если срок действия утверждения истек, повторно запустите скрипт из виртуальной среды.

6. Найдите автоматически созданного пользователя-бота.

   curl "https://&lt;tenant-url&gt;/api/v1/users" -H 'accept: application/json' -H 'authorization: Bearer &lt;API-key&gt;'

7. Скопируйте идентификатор my-bot-client.

8. Создайте роль "DAG Registration".

   curl "https://&lt;tenant-url&gt;/api/v1/roles" -X POST -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;API-key&gt;' -d '{"name":"DAG Registration","description":"Role for registering a gateway","assignedScopes":["admin.direct-access-gateways:register\_gateway", "admin.direct-access-gateways:delete\_gateway"]}'

9. Назначьте роли уровня клиента пользователю-боту.

   curl "https://&lt;tenant-url&gt;/api/v1/users/&lt;bot-user-ID&gt;" -X PATCH -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;API-key&gt;' -d ' [ { "op": "replace", "path": "/assignedRoles", "value": [ { "name": "DAG Registration" } ] } ]'

10. Получить пространство Шлюза прямого доступа.

    curl "https://&lt;tenant-url&gt;/api/v1/spaces" -H 'authorization: Bearer &lt;API-key&gt;'

11. Скопируйте идентификатор пространства Direct Access Gateway.

12. Добавьте пользователя-бота в пространство с разрешением Может редактировать.

    curl "https://&lt;tenant-url&gt;/api/v1/spaces/&lt;DAG-space-ID&gt;/assignments" -X POST -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;API-key&gt;' -d '{"assigneeId": "&lt;bot-user-ID&gt;","roles": ["consumer","dataconsumer","producer"], "type": "user"}'

13. Если срок действия существующего утверждения истек, сгенерируйте новое. Выполните следующую команду:

    python3 generate\_gateway\_assertion.py --tenant-url &lt;tenant-url&gt;

14. Выполните необходимые шаги в командной строке. Поскольку клиент OAuth уже создан, необходимо обновить JWK с помощью этого вызова API:

    curl "https://&lt;tenant-url&gt;/api/v1/oauth-clients/&lt;client-ID&gt;" -X PATCH -H 'accept: application/json' -H 'content-type: application/json' -H 'authorization: Bearer &lt;API-key&gt;' -d '[{"op":"replace","path":"/publicKeys/0/y","value":"&lt;Y-value-from-JWK&gt;"},{"op":"replace","path":"/publicKeys/0/x","value":"&lt;X-value-from-JWK&gt;"},{"op":"remove","path":"/publicKeys/0/use"},{"op":"replace","path":"/publicKeys/0/kid","value":"&lt;kid-value-from-JWK&gt;"}]'

15. Зарегистрируйте шлюз:

    dotnet ConnectorAgent.dll qcs register\_gateway --tenant\_url &lt;tenant-url&gt; --gateway\_name &lt;DAG-name&gt; --gateway\_description &lt;DAG-description&gt; --space\_name &lt;space-name&gt; --client-id &lt;client-ID&gt; --assertion &lt;assertion&gt;

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm)Удаление автоматически зарегистрированного шлюза

Выполните следующие действия, чтобы отменить регистрацию шлюза, который был зарегистрирован с помощью описанного выше автоматического метода на основе токена сеанса. Эти шаги также удаляют клиент OAuth, пользователя-бота и роль, созданные для него.

1. Сгенерируйте утверждение, как описано в [разделе выше](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm#AutoRegister).

2. Удалите шлюз:

   dotnet ConnectorAgent.dll qcs delete\_gateway --tenant\_url &lt;tenant-url&gt; --gateway\_name &lt;gateway-name&gt; --client-id &lt;client-ID&gt; --assertion &lt;assertion&gt;

3. Найдите учетную запись пользователя-бота, созданную для шлюза.

   curl "https://&lt;tenant-url&gt;/api/v1/users" -H 'accept: application/json' -H 'authorization: Bearer &lt;api-key&gt;'

4. Скопируйте идентификатор бота.

5. Удалить эту учетную запись пользователя-бота.

   curl -X DELETE "https://&lt;tenant-url&gt;/api/v1/users/&lt;bot-user-ID&gt;" -H "Authorization: Bearer &lt;api-key&gt;"

6. Найдите роль «DAG Registration», созданную для шлюза.

   curl "https://&lt;tenant-url&gt;/api/v1/roles?limit=1&filter=(name%20eq%20%22DAG%20Registration%22)" -H "Authorization: Bearer &lt;api-key&gt;"

7. Скопируйте идентификатор роли.

8. Удалите эту роль.

   curl -X DELETE "https://&lt;tenant-url&gt;/api/v1/roles/&lt;role-ID&gt; -H "Authorization: Bearer &lt;api-key&gt;"

9. Удалите клиент OAuth.

   curl -X DELETE https://&lt;tenant-url&gt;/api/v1/oauth-clients/&lt;OAuth-client-ID&gt; -H "qlik-confirm-delete: &lt;OAuth-client-ID&gt;" -H "Authorization: Bearer &lt;api-key&gt;

### Этап 5. Запуск службы Шлюз данных Qlik — прямой доступ на сервере Direct Access Gateway

Чтобы запустить службу Шлюз данных Qlik — прямой доступ, запустите контейнеры dcaas-dg и direct-access-agent.

### Этап 6. Добавление подключения к источнику данных

См. [Этап 6. Добавление подключения к источнику данных](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm#Stage6).

## Параметры среды

В этом разделе перечислены определенные переменные среды из файла docker-compose.qlik-data-gateway-direct-access.yml, которые может потребоваться настроить для правильного подключения источников данных через шлюз.

* ALLOW\_SOURCES: разделенный запятыми список разрешенных имен хостов и IP-адресов. Когда агенту шлюза требуется подключиться к чему-либо на вашем собственном сервере или к другому хосту в локальной или частной сети (например, к базе данных на localhost, имени сервиса Docker или хосту с частным IP-адресом), вы добавляете этот адрес в ALLOW\_SOURCES — в противном случае попытка подключения будет отклонена.

## Поддерживаемые источники данных

* Для контейнеризированных установок поддерживаются следующие коннекторы ODBC:

  * PostgreSQL
  * SQL Server
  * Oracle

  Для получения дополнительной информации о коннекторах ODBC см. раздел [Базы данных ODBC ― Qlik Cloud](https://help.qlik.com/en-US/cloud-services/Subsystems/ODBC_Connector_help/Content/Connectors_ODBC/Introduction/ODBC-connector.htm) (только английский язык).

* REST коннектор (REST через Direct Access gateway). Для получения дополнительных сведений об источниках данных REST см. [Источники REST ‒ Qlik Cloud](https://help.qlik.com/en-US/cloud-services/Subsystems/REST_Connector_help/Content/Connectors_REST/REST-connector.htm) (только английский язык).

## Подробнее

* [Настройка Шлюз данных Qlik — прямой доступ](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm)
* [Настройка Шлюз данных Qlik — прямой доступ на сервере Windows](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-win.htm)