Tableau Server em um Contêiner - Usar ferramenta de configuração
Introdução
O Tableau Server em um Contêiner é a primeira oferta de servidor em contêiner do Tableau. O Tableau Server em um contêiner é uma instância multifuncional do Tableau Server em execução dentro de um contêiner Docker do Linux. Em outras palavras, um Tableau Server em um Contêiner é uma imagem de docker que executa um aplicativo completo e independente do Tableau Server. O Tableau Server em um Contêiner é o primeiro de muitos passos para aceitar a execução do Tableau Server em um ambiente de contêineres. A maneira mais fácil de entender o conceito do Tableau Server em um Contêiner é imaginá-lo como uma VM com o Tableau Server pré-instalado. A imagem é baseada em uma imagem UBI 8 (CentOS 7.x para versão 2022.1 e anterior) e executa supervisord
(em vez de systemd
) dentro do contêiner. Quando o contêiner é iniciado, o supervisord
imediatamente tenta inicializar e executar o Tableau Server. Grande parte desta documentação visa descrever como estabelecer a configuração e utilizar a automação de modo que você possa executar o Tableau Server em ambientes do Docker.
A ferramenta de configuração de Tableau Server em uma Imagem de contêiner ajuda a criar e personalizar imagens de contêiner para incluir pacotes e artefatos personalizados. Uma das funções principais da ferramenta é criar a imagem do contêiner e instalar conectores de dados personalizados.
Limitações para o Tableau Server em um Contêiner
- O Tableau Server em um contêiner oferece suporte apenas à ativação de licença usando o Server ATR. A ativação offline usando o Server ATR é compatível com 2023.1 e versões posteriores. Esta funcionalidade está disponível em Contêineres, mas requer etapas extras e aprovação. Se você precisar executar o Tableau Server em um contêiner em um ambiente isolado ou off-line, entre em contato com o representante da sua conta para obter mais informações.
- O Tableau Server em um Contêiner atualmente não é compatível com o agente da Resource Monitoring Tool (RMT).
- O Kerberos não é compatível com o Tableau Server em um Contêiner.
Ferramenta de configuração Tableau Server em um Contêiner
O Tableau Server em uma Ferramenta de configuração de contêiner, build-image
, cria uma imagem personalizada de Tableau Server em um Contêiner de um Instalador do Tableau .rpm
e os arquivos de configuração fornecidos.
A ferramenta de Configuração usa uma imagem de contêiner do Tableau Server e artefatos do cliente como entrada e produz uma imagem do Docker. Quando usada corretamente, a ferramenta build-image
recém-gerada instala os artefatos desejados.
Distribuições com suporte para criação
A criação do Tableau Server em uma imagem do de Docker do Contêiner só é aceita em um sistema Linux baseado em RHEL (RHEL, CentOS ou Amazon Linux 2). Criar em quaisquer outras distribuições Linux pode ser possível, mas atualmente não foi testado e não é aceito. A criação de imagens no macOS não é compatível. A imagem criada é baseada em uma imagem UBI 8 (CentOS 7.x para versão 2022.1 e anteriores).
Você deve ter o Docker versão 18.09 ou posterior instalado no host para criar as imagens do contêiner. Em geral, recomendamos o uso da versão estável mais recente do Docker. Algumas distribuições do Linux fornecem apenas versões mais antigas do Docker em seus repositórios de software; nesse caso, pode ser necessário instalar o Docker de uma fonte diferente. As versões do Docker anteriores à versão 18.09 não incluem recursos necessários para o Tableau Server em um contêiner.
Baixar os arquivos bootstrap
Para usar a Ferramenta de configuração, você precisa baixar a ferramenta e um arquivo .rpm
do Instalador de servidor compatível. O arquivo do instalador deve ser da versão 2021.2.0 ou posterior. Ambos os arquivos podem ser baixados da página do Tableau Server(O link abre em nova janela).
Baixe o arquivo do instalador do servidor,
tableau-server-<version>.rpm
na versão 2021.2.0 ou posterior.Baixe o Server em uma ferramenta de Configuração do contêiner,
tableau-server-container-setup-tool-<version>.tar.gz
.
Instalação
A ferramenta de configuração Tableau Server em um Contêiner é fornecida como um tarball. É necessário extrair o conteúdo do arquivo compactado. Este é um exemplo que pressupõe que o arquivo da ferramenta de configuração Tableau Server em um Contêiner está no diretório atual:
tar -xzf tableau-server-container-setup-tool-<VERSION>.tar.gz
Isso cria um novo diretório, tableau-server-container-setup-tool-<VERSION>
com o script build-image
que você usa para executar a ferramenta.
Preencher o formulário de registro
Edite o arquivo de registro para fornecer suas informações de identificação exclusivas necessárias para registrar o Tableau Server, de acordo com o Contrato de licença do usuário final. O arquivo ,reg-info.json
, serve como um modelo para suas informações de registro identificáveis exclusivamente e obrigatórias e está localizado no diretório superior do Tableau Server em uma ferramenta de configuração de contêiner. Esse arquivo é usado para registrar a instância do Tableau Server em execução na imagem. Fornecer informações precisas garantirá que o processo de registro seja concluído de maneira adequada.
O valor do campo eula
é pré-preenchido com "aceitar" para indicar que você está aceitando nosso Contrato de Licença de Usuário Final (EULA). Você pode visualizar o EULA no diretório EULA da ferramenta de compilação. Conforme descrito no EULA, você deve enviar um registro de usuário identificável exclusivamente ao ativar o Tableau Server. Quando terminar de editar o arquivo de registro, os outros campos devem ter valores que reflitam suas informações exclusivas. Esse arquivo é usado para registrar a instância do Tableau Server em execução na imagem. Fornecer informações precisas garantirá que o processo de registro seja concluído e que seu envio atenda aos requisitos da concessão da licença.
Observação: você deve aceitar o EULA para usar o Tableau Server. Se você não aceitar o EULA, não poderá executar o Tableau Server.
O modelo de arquivo de registro reg-info.json
antes de editar:
{ "zip" : "<value>", "country" : "<value>", "city" : "<value>", "last_name" : "<value>", "industry" : "<value>", "eula" : "accept", "title" : "<value>", "phone" : "<value>", "company" : "<value>", "state" : "<value>", "department" : "<value>", "first_name" : "<value>", "email" : "<value>" }
Instruções de uso da ferramenta
Há um script executável na ferramenta de configuração chamado build-image
. Executá-lo com a opção -h
exibe a ajuda:
./src/build-image -h Usage: build-image --accepteula -i [INPUT_IMAGE_NAME] -o [OUTPUT_IMAGE_NAME] [optional arguments] Creates new Tableau Server image with pre-installed database drivers, configuration, and instructions. REQUIRED --accepteula Indicate that you have accepted the End User License Agreement (EULA). The EULA is available in the EULA directory of this tool. -i installer Path to the Tableau Server installer. OPTIONAL -o output name Tag of target generated Tableau Server image. -e environment file Optional environment file to configuration overrides to docker image at build time. -v setup tool version Prints the Setup tool version. -b base image version Prints the default base image URL.
Exemplo básico de uso:
./build-image --accepteula -i tableau-server-image.rpm
A execução do comando, sem fornecer os artefatos ou um script de configuração funciona, mas não faz nada porque não copiaria ou instalaria os recursos adicionais na imagem de Contêiner original do Tableau Server.
Orquestração
O Tableau fornece apenas documentação e suporte para contêineres do Tableau Server em execução no Linux. O Tableau não fornece documentação ou suporte para sistemas de orquestração de contêineres como Kubernetes ou Docker Swarm. O Kubernetes pode, no entanto, ser usado para implantar o Tableau Server em um Contêiner. Para obter recursos e orientação sobre a implantação de Contêineres do Tableau no Kubernetes, consulte nosso projeto GitHub com suporte da comunidade: https://github.com/tableau/tableau-server-in-kubernetes(O link abre em nova janela) .
Personalização da imagem
Definição de variáveis de ambiente em tempo de criação
Um subconjunto de variáveis de ambiente que podem personalizar sua imagem só pode ser definido quando a imagem é criada. Isso inclui usuário, grupo e outras propriedades que requerem privilégio de root dentro do contêiner. As ações raiz não estão disponíveis por padrão no tempo de execução. Além disso, pode ser útil embutir certas variáveis de ambiente na imagem no momento da criação para que não tenham que ser definidas toda vez que a imagem for executada. Todas essas variáveis de ambiente podem ser definidas passando um arquivo de ambiente para o script de imagem de criação.
Arquivo de ambiente
O arquivo de ambiente pode ser passado para o script de imagem de criação usando o argumento -e
. O arquivo deve estar de acordo com este formato:
<KEY>=<VALUE> <KEY>=<VALUE>
Exemplo de uso:
Crie um arquivo de ambiente com o formato correto:
UNPRIVILEGED_TABLEAU_UID=1012 UNPRIVILEGED_TABLEAU_GID=1020 TABLEAU_USERNAME=myuser TABLEAU_PASSWORD=pw
Passe o arquivo para o criador de imagens
./build-image --accepteula -i tableau-server-2020-3.x86_64.rpm -e <path-to-env-file>
Variáveis de ambiente
Qualquer variável de ambiente pode ser definida no arquivo de ambiente. Confira a seção Variáveis de ambiente para ver a lista completa.
As variáveis de ambiente de tempo de criação só podem ser definidas quando este script é executado para construir a imagem:
Nome do ambiente | Padrão | Descrição |
---|---|---|
BASE_IMAGE_URL | Use o comando da ferramenta de criação:build-image -b | A imagem padrão especificada na ferramenta de imagem de criação e Dockerfile é a única imagem base oficialmente compatível. Este parâmetro pode ser usado para extrair uma cópia desta imagem de base específica de um repositório de imagens docker personalizado ou definir uma imagem de base personalizada. Se você optar por usar uma imagem de base definida de forma personalizada (consulte Definição de uma imagem de base personalizada, para obter mais detalhes), é sua responsabilidade garantir que ela seja baseada em UBI 8 (CentOS 7 ou RHEL 7 para versão 2022.1 e anterior) e contenha os recursos necessários para executar o Tableau Server corretamente. |
PRIVILEGED_TABLEAU_GID | 997 | A GID do grupo com privilégios do Tableau. |
UNPRIVILEGED_TABLEAU_GID | 998 | A GID do grupo sem privilégios do Tableau. |
UNPRIVILEGED_TABLEAU_UID | 999 | A UID do usuário que executa processos do Tableau (implantação de um único usuário). |
UNPRIVILEGED_USERNAME
| tableau | O nome da cadeia de caracteres do usuário sem privilégios. |
UNPRIVILEGED_GROUP_NAME
| tableau | O nome da cadeia de caracteres do grupo sem privilégios. |
PRIVILEGED_GROUP_NAME | tsmadmin | O nome da cadeia de caracteres do grupo com privilégios. |
LANG | en_US.UTF-8 | Configuração de localidade |
Drivers, certificados e outros arquivos
A imagem do Tableau Server não vem com conectores de dados ou drivers pré-instalados. Você precisará criar um script de configuração bash que instruirá o script build-image
para instalar os conectores de dados de que o Tableau Server precisará. Estas são as etapas que você executaria:
Certifique-se de que o Tableau Server em uma ferramenta de configuração de Contêiner esteja instalado corretamente
Baixe o driver na página do driver do Tableau: https://www.tableau.com/en-us/support/drivers(O link abre em nova janela)
Copie o arquivo de driver baixado no diretório de arquivos do cliente no Tableau Server em uma ferramenta de configuração de Contêiner.
O diretório
customer-files
será copiado para a imagem do docker. Ele estará localizado no seguinte caminho dentro do contêiner:/docker/customer-files
Edite o arquivo no Tableau Server em uma ferramenta de configuração de contêiner
customer-files/setup-script
para dizer ao Docker como instalar o driver.O script é apenas um arquivo bash executável que é executado quando a imagem Docker é construída. (Tecnicamente, pode ser usado para executar qualquer ação arbitrária na imagem, incluindo configuração do ambiente, configuração etc.)
O script será executado dentro do contêiner, portanto, esteja ciente de que os comandos devem funcionar quando executados dentro do Tableau Server em uma imagem de contêiner.
Por exemplo, se você deseja instalar um driver chamado mydriver.rpm”, grave-o em:
setup-script
:yum install -y /docker/customer-files/mydriver.rpm
Exibições administrativas do Tableau
As exibições administrativas do Tableau exigem que o driver PostgreSQL seja instalado. Se você planeja usar essas visualizações, precisará seguir as etapas acima e instalar o driver PostgreSQL. Para obter mais informações sobre exibições administrativas, consulte Exibições administrativas
Definição de uma imagem de base personalizada
A imagem de base padrão usada para criar o contêiner do Tableau Server é uma imagem UBI 8 (CentOS 7.x para versão 2022.1 e anterior) originada do Docker Hub. Em alguns casos, você pode querer configurar a ferramenta de criação de imagem para extrair a imagem de um repositório de imagens docker diferente. Por exemplo, a empresa pode gerenciar um repositório docker interno e não querer o build-image
extraindo de um repositório público. Siga estas etapas para personalizar o caminho de imagem de base:
Use o seguinte comando para ver o atual nome e versão da imagem de base padrão da ferramenta
build-image
:./build-image -b
Extraia o nome e a versão da imagem de base exatamente correspondente do Docker Hub e armazene/coloque em cache no seu repositório de imagens preferido (de acordo com as políticas de imagem da sua empresa)
Volte para a ferramenta de criação de imagem. Crie ou modifique um arquivo de ambiente existente para incluir a chave de ambiente
BASE_IMAGE_URL
com o valor definido para um novo caminho de registro de imagem do docker:BASE_IMAGE_URL=<custom-image-registry-path>
Crie a imagem com o arquivo de ambiente:
./build-image --accepteula -i <rpm> -e <path-to-env-file>
Essas etapas permitem que você especifique uma imagem de base completamente diferente. Esse recurso é compatível apenas com imagens baseadas em UBI 8 (RHEL e CentOS 7.x para versão 2022.1 e anteriores) e é fornecido para ajudar os clientes a criar imagens mais seguras.
Usar uma imagem de base diferente do padrão especificado pelo Tableau traz o risco de produzir uma imagem que não inicia ou não funciona corretamente. Se você optar por usar uma imagem de base personalizada, será responsável por garantir que a imagem de base permita que o Tableau Server seja executado corretamente. Recomendamos o uso da imagem de base padrão, a menos que seja inaceitável para sua organização por algum motivo, como questões de segurança.
A imagem de base personalizada deve ser baseada em UBI 8 (RHEL 7 ou CentOS 7 para versão 2022.1 e anterior). O uso de qualquer outra distribuição resultará em uma imagem não suportada.
Utilização de repositórios internos para yum e pip
A imagem do Tableau Server em Contêiner está configurada para usar os repositórios padrão yum e pip para extrair pacotes dependentes. Se você precisar editar, remover ou adicionar repositórios (por exemplo, repositórios internos podem ser usados para melhorar a segurança), será necessário modificar um dos scripts de inicialização da ferramenta de configuração de imagem.
Modifique o script <setup_tool>/src/image/init/setup_default_environment.bash
no código-fonte para usar os repositórios internos. Mantenha quaisquer arquivos de repositório necessários para o repositório interno no diretório <setup_tool>/src/image/init/
. O diretório será copiado para a imagem do docker.
Imagens de base e segurança
Muitos clientes executarão ferramentas de verificação de contêiner (como AquaScan ou TwistLock) na imagem gerada do Docker do Tableau Server. Essas ferramentas de segurança irão gerar um relatório de vulnerabilidades de segurança em potencial (ou Vulnerabilidades e Exposições comuns ou CVE). Existem dois tipos de vulnerabilidades associadas ao Tableau Server em uma imagem de Contêiner:
- CVEs associadas ao Tableau Server ou a uma biblioteca da qual dependemos.
- CVEs associadas à distribuição Linux subjacente.
O Tableau é responsável pelas CVEs associadas diretamente ao Tableau Server. A equipe de segurança analisa esses relatórios para determinar o impacto e a gravidade para ajudar a priorizar os problemas para resolução. A prioridade e cronogramas de remediação de linha de base serão determinados pela pontuação de gravidade CVSS original. As atualizações de segurança de componentes de terceiros geralmente não serão portadas para versões anteriores, a menos que haja um caminho de código executável que exponha a vulnerabilidade.
Com o modelo de distribuição em contêineres, os clientes enfrentam um conjunto diferente de desafios em torno das vulnerabilidades da camada do sistema operacional. Tradicionalmente, com o Tableau Server, o Tableau concentraria seus esforços no fornecimento de um aplicativo seguro e o cliente seria responsável por gerenciar os sistemas operacionais (Linux ou Windows). No entanto, com a conteinerização, o SO (UBI 8 a partir da versão 2023.3, CentOS 7.x ou RHEL 7.x para a versão 2022.1 e anterior) e o aplicativo são empacotados juntos em um contêiner. O Tableau se responsabiliza pela CVE associada ao Tableau Server e por determinar se uma CVE de uma biblioteca de terceiros afetaria os clientes. No entanto, os clientes devem ser responsáveis pelos problemas da camada do sistema operacional. Para que os clientes resolvam os problemas de segurança na camada do sistema operacional, os clientes podem substituir a camada base do sistema operacional por sua própria versão (baseada em UBI 8 para a versão 2022.3 e posterior, RHEL ou CentOS 7.x para a versão 2022.1 e anterior). Ao fazer isso, você deve validar se o Tableau Server é executado corretamente. A remoção de uma biblioteca da qual o Tableau Server depende, devido a problemas de segurança, pode resultar em uma instância não funcional do Tableau Server. Se você alterar a camada do sistema operacional de base, os clientes são responsáveis por validar o funcionamento.
Proteção do Tableau Server em um Contêiner
Você pode aplicar as etapas de proteção padrão ao Tableau Server em um contêiner. Para obter mais informações sobre como proteger o Tableau Server, consulte Lista de verificação do reforço de segurança.
Exemplos de configuração de implantação
Docker
Uso básico do Tableau Server em um Contêiner
docker run \ -e LICENSE_KEY=<key> -p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Uso básico do Tableau Server em um Contêiner com Usuário administrador inicial automatizado
docker run \ -e LICENSE_KEY=<key> \ -e TABLEAU_USERNAME=<myadmin> \ -e TABLEAU_PASSWORD_FILE=/etc/tableau-admin-secret \ -v <full-path-to-pw-file>:/etc/tableau-admin-secret \ -p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Único modo do TSM
docker run \ -e TSM_ONLY=1 \ -p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Uso básico de vários nós
Nó inicial
Opção 1: use se a configuração do servidor (CONFIG_FILE
) especifica uma topologia de vários nós:
docker run \ -v <network-shared-directory>:/docker/config/bootstrap \ -v <full-path-to-config-file>:/docker/config/config.json:ro \ -e LICENSE_KEY=<key> \ -p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \ --hostname=<name-of-host-machine> \ -d <Tableau Server in a Container image ID or tag>
Opção 2: use se desejar uma implantação de vários nós, mesmo se a configuração do servidor não especificar a topologia de vários nós:
docker run \ -v <network-shared-directory>:/docker/config/bootstrap \ -e LICENSE_KEY=<key> -e ALWAYS_WRITE_BOOTSTRAP_FILE=1 \ -p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \ --hostname=<name-of-host-machine> \ -d <Tableau Server in a Container image ID or tag>
Nó adicional
docker run \ -v <network-shared-directory>:/docker/config/bootstrap \ -e BOOTSTRAP_INSTALL=1 \ -p 8080:8080 -p 8800-9000:8800-9000 \ --hostname=<name-of-host-machine> \ -d <Tableau Server in a Container image ID or tag>
Externalizar o uso de dados
docker run \ -v <empty-data-dir>:/var/opt/tableau \ -e LICENSE_KEY=<key> \ --hostname=localhost \ -p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Uso básico do init-container
Contêiner Init
docker run \ -v <empty-data-dir>:/var/opt/tableau \ -e LICENSE_KEY=<key> \ -e INIT_CONTAINER=1 \ --hostname=localhost \ -p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Contêiner de execução
docker run \ -v <empty-data-dir>:/var/opt/tableau \ --hostname=localhost \ -p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Restauração básica do nó único de backup
docker run \ -v <full-path-to-backup-file>:/docker/config/backup/backup-file.tsbak \ -v <full-path-to-config-only-file>:/docker/config/config.json:ro \ -e LICENSE_KEY=<key> \ -p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Docker-Compose
version: '3.2' services: tableau-server: hostname: localhost volumes: - <your-tsm-command-file>:/docker/config/tsm-commands:ro - <your-config-file >:/docker/config/config.json:ro ports: - "8080:8080" image: ${IMAGE_NAME} environment: - LICENSE_KEY=<license-key>