# Configurando Qlik Data Gateway - Direct Access em um contêiner

Este tópico descreve como configurar o Direct Access gateway conteinerizado. Ele fornece pré-requisitos e instruções de instalação e descreve as limitações e considerações das quais você deve estar ciente ao trabalhar com Direct Access gateway conteinerizado.

Nota informativaSuportado a partir de Direct Access gateway 1.8.0.

## O que é Direct Access gateway conteinerizado?

Você pode implementar Direct Access gateway em um contêiner Docker. Este tipo de implementação é chamado de Direct Access gateway conteinerizado. As implantações conteinerizadas do Direct Access gateway são suportadas para Linux, macOS e WindowsLocale.

O Direct Access gateway conteinerizado oferece portabilidade para o seu ambiente Direct Access gateway.

## Melhores práticas ao usar o Qlik Data Gateway - Direct Access

Para uma experiência bem-sucedida ao usar o Qlik Data Gateway - Direct Access, é altamente recomendável seguir estas práticas recomendadas:

* Não use o mesmo Direct Access gateway para desenvolvimento, testes de aceitação do usuário e produção, pois isso aumentará o risco de sobrecarregar os recursos disponíveis e impactar a estabilidade do sistema. Do ponto de vista comercial, a combinação de recursos insuficientes e diminuição da estabilidade pode resultar em atrasos nas atualizações dos dados do aplicativo de produção.

* Para um desempenho ideal, instale o Direct Access gateway em um ambiente o mais próximo possível da sua fonte de dados.

## Pré-requisitos do sistema

Esta seção descreve os requisitos para usar o Direct Access gateway conteinerizado.

### Requisitos de software

* Docker Engine versão 20.9+ e o plugin do Docker Compose (docker compose, sintaxe v2) instalados no host.

### Portas e protocolos necessários

Para portas e protocolos necessários, consulte [Portas e protocolos necessários](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm#Ports).

### Hardware recomendado

* Host: 8 núcleos, 32 GB de memória, 5 GB de armazenamento disponível para o Docker

* Opcional: defina limites correspondentes no contêiner no arquivo compose para que o gateway tenha capacidade dedicada, em vez de competir com outros contêineres ou processos no host:

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

#### Hardware mínimo

O hardware mínimo é adequado apenas para cenários específicos que usam implementações dedicadas menores (desenvolvimento, teste ou produção), com volumes de dados continuamente baixos e um número limitado de recargas simultâneas.

* Host: 4 núcleos, 8 GB de memória, 5 GB de armazenamento disponíveis para o Docker

* Opcional: defina limites correspondentes no contêiner no arquivo compose para que o gateway tenha capacidade dedicada, em vez de competir com outros contêineres ou processos no host:

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

## Instalando o Qlik Data Gateway - Direct Access

A configuração do Direct Access gateway envolve procedimentos que precisam ser executados no centro de atividades de Administração e no servidor do Direct Access gateway.

Nota informativaOs procedimentos de gateway de dados que precisam ser executados no centro de atividades de Administração exigem permissão do administrador de locatários.

### Estágio um: baixe o Qlik Data Gateway - Direct Access

1. No centro de atividades de Administração, selecione Gateways de dados.

   Todos os gateways de dados existentes serão listados em [uma tabela mostrando informações básicas sobre cada gateway](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-managing-console.htm#gateprop).

2. Clique no botão Implementar da barra de ferramentas.

   O diálogo Implementar gateway de dados é aberto.

3. Selecione Data Gateway - Direct Access - Containerized Direct Access Gateway, aceite o Qlik Contrato do Cliente e clique em Baixar. O arquivo de instalação do Direct Access gateway (docker-compose.qlik-data-gateway-direct-access.yml) será baixado em sua máquina.

### Etapa dois: Inicie a implementação executando o arquivo do Docker Compose

Para iniciar a implementação do Direct Access gateway, execute o seguinte comando:

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

### Etapa três: Configuração de Direct Access gateway

Para obter instruções detalhadas de configuração, consulte [Etapa três: Configurar Direct Access gateway](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm#Stage3).

### Etapa quatro: Registrar o gateway de dados

A próxima etapa é registrar o gateway de dados. Isso pode ser feito por meio da central de atividades Administração ou na linha de comando.

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

#### Opção 1: Pela central de atividades Administração

Você pode registrar o gateway usando a central de atividades Administração. Consulte [Opção 1: Por meio da central de atividades Administração](https://help.qlik.com/pt-BR/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)

#### Opção 2: Registro automático usando a linha de comando

Você também pode registrar Direct Access gateway automaticamente a partir da linha de comando, sem usar a central de atividades Administração." Este método utiliza um token de sessão de curta duração gerado a partir de um cliente OAuth.

Nota informativaO registro automático é suportado apenas por meio da linha de comando. Uma API REST para registro automático de gateway não está disponível no momento.

Pré-requisitos

Uma chave de API com permissão de administrador do locatário para criar e gerenciar clientes OAuth.

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

1. Primeiro, você precisa configurar um ambiente Python para gerar um ID de cliente OAuth, bem como uma chave de asserção (token de curta duração) no contêiner direct-access-agent. Execute os seguintes comandos separadamente, nesta ordem:

   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. Para o [último comando na lista acima](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm#python3), seguir os prompts interativos e copiar o client\_id (ID do cliente OAuth) e o assertion quando fornecidos. Guarde esses detalhes em papel ou em um arquivo de texto temporário por enquanto — eles serão necessários para etapas posteriores do processo.

3. Quando você tiver anotado o client\_id e o assertion, limpe o ambiente Python com o seguinte comando:

   deactivate

4. Defina o método de consentimento do cliente OAuth como confiável.

   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. Solicite um token de acesso. Isso também aciona a criação automática da conta de usuário do bot usada pelo gateway.

   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"

   Nota informativa

   Se a asserção tiver expirado, execute novamente o script a partir do ambiente virtual.

6. Localize o usuário de bot criado automaticamente.

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

7. Copie o ID de my-bot-client.

8. Crie uma função "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. Atribua funções no nível do locatário ao usuário do bot.

   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. Obter o espaço do Direct Access Gateway.

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

11. Copie o ID do espaço do Direct Access Gateway.

12. Adicione o usuário bot ao espaço com a permissão Pode editar.

    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. Caso a asserção existente tenha expirado, gere uma nova. Execute o seguinte comando:

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

14. Siga as etapas necessárias no prompt de comando. Como o cliente OAuth já foi criado, é necessário atualizar o JWK usando esta chamada de 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. Registre o gateway:

    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)Remover um gateway registrado automaticamente

Use as etapas a seguir para cancelar o registro de um gateway que foi registrado usando o método automático baseado em token de sessão descrito acima. Essas etapas também removem o cliente OAuth, o usuário do bot e a função que foram criados para ele.

1. Gere uma asserção, conforme descrito [na seção acima](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm#AutoRegister).

2. Exclua o gateway:

   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. Localize a conta de usuário do bot que foi criada para o gateway.

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

4. Copie o ID do bot.

5. Exclua esta conta de usuário do bot.

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

6. Localize a função “DAG Registration” que foi criada para o gateway.

   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. Copie o ID da função.

8. Exclua esta função.

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

9. Exclua o cliente 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;

### Estágio cinco: inicie o serviço Qlik Data Gateway - Direct Access no servidor do Direct Access gateway

Para iniciar o serviço Qlik Data Gateway - Direct Access, inicie os contêineres dcaas-dg e direct-access-agent.

### Estágio seis: adicione uma conexão à sua fonte de dados

Consulte [Estágio seis: adicione uma conexão à sua fonte de dados](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-container.htm#Stage6).

## Configurações do ambiente

Esta seção lista variáveis de ambiente específicas do arquivo docker-compose.qlik-data-gateway-direct-access.yml que você pode precisar configurar para conectar adequadamente suas fontes de dados por meio do gateway.

* ALLOW\_SOURCES: Uma lista de permissões separada por vírgulas de nomes de host e IPs. Quando o agente do gateway precisa se conectar a algo no seu próprio servidor ou em outro host na rede local ou privada (por exemplo, um banco de dados em localhost, um nome de serviço do Docker ou um host de IP privado), você adiciona esse endereço a ALLOW\_SOURCES — caso contrário, a tentativa de conexão é recusada.

## Fontes de dados com suporte

* Os seguintes conectores ODBC são suportados para instalações conteinerizadas:

  * PostgreSQL
  * SQL Server
  * Oracle

  Para obter mais informações sobre conectores ODBC, consulte [Bancos de dados ODBC - Qlik Cloud](https://help.qlik.com/en-US/cloud-services/Subsystems/ODBC_Connector_help/Content/Connectors_ODBC/Introduction/ODBC-connector.htm) (somente em inglês).

* REST conector (REST via Direct Access gateway). Para obter mais informações sobre fontes de dados REST, consulte [Fontes REST ‒ Qlik Cloud](https://help.qlik.com/en-US/cloud-services/Subsystems/REST_Connector_help/Content/Connectors_REST/REST-connector.htm) (somente em inglês).

## Saiba mais

* [Configurando o Qlik Data Gateway - Direct Access](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setting-up.htm)
* [Configurando Qlik Data Gateway - Direct Access em um servidor Windows](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Gateways/direct-access-gateway-setup-win.htm)