Introduzione

Tableau Server in un contenitore è la prima offerta server basata su contenitori di Tableau. Tableau Server in un contenitore è un'istanza completa di Tableau Server in esecuzione all'interno di un contenitore Docker di Linux. In altre parole, è un'immagine Docker che esegue un'intera applicazione Tableau Server autonoma. Tableau Server in un contenitore è il primo di molti passaggi per supportare Tableau Server in esecuzione negli ambienti basati su contenitori. Il modo più semplice per comprendere il concetto di Tableau Server in un contenitore consiste nel considerarlo come una macchina virtuale con Tableau Server preinstallato. L'immagine è basata su un'immagine UBI 8 (CentOS 7.x per la versione 2022.1 e precedenti) ed esegue supervisord (anziché systemd) all'interno del contenitore. All'avvio del contenitore, supervisord tenterà immediatamente di inizializzare e avviare Tableau Server. Gran parte della documentazione seguente ha lo scopo di descrivere come fornire la configurazione e sfruttare l'automazione in modo da eseguire Tableau Server negli ambienti Docker.

Lo strumento di configurazione dell'immagine per Tableau Server in un contenitore consente di personalizzare le immagini del contenitore in modo da includere pacchetti e artefatti personalizzati. Una delle funzionalità principali dello strumento è creare l'immagine del contenitore e installare connettori dati personalizzati.

Limitazioni

  • Tableau Server in un contenitore supporta solo l'attivazione della licenza tramite l'ATR del server, che richiede che il contenitore abbia accesso a Internet. Pertanto, l'attivazione offline in un ambiente air gapped non è possibile.
  • Tableau Server in un contenitore attualmente non supporta l'agente di Resource Monitoring Tool (RMT).
  • Kerberos non è supportato in Tableau Server in un contenitore.

Strumento di configurazione per Tableau Server in un contenitore

Lo strumento di configurazione per Tableau Server in un contenitore, build-image, crea un'immagine personalizzata di Tableau Server in un contenitore da un programma di installazione .rpm di Tableau e dai file di configurazione forniti.

Lo strumento di configurazione accetta come input il programma di installazione di Tableau Server, i driver e altri artefatti e crea una nuova immagine Docker. Se lo strumento build-image viene utilizzato correttamente, nella nuova immagine generata saranno installati gli artefatti desiderati.

Distribuzioni supportate per la compilazione

La creazione dell'immagine per Tableau Server in un contenitore Docker è supportata solo su un sistema Linux basato su RHEL (RHEL, CentOS o Amazon Linux 2). La creazione potrebbe essere possibile su qualsiasi altra distribuzione Linux, ma attualmente queste configurazioni non sono testate né supportate. La creazione di immagini su macOS non è supportata. L'immagine creata è basata su un'immagine UBI 8 (CentOS 7.x per la versione 2022.1 e precedenti).

È necessario utilizzare una distribuzione che includa Docker 17 o versione successiva (preferibilmente la versione di Docker più recente). Le versioni di Docker precedenti alla 17 non includono le funzionalità necessarie per Tableau Server in un contenitore.

Scaricare i file necessari

Per utilizzare lo strumento di configurazione, è necessario scaricare sia lo strumento che un file .rpm del programma di installazione del server compatibile. Il file del programma di installazione deve essere della versione 2021.2.0 o successiva. Entrambi i file possono essere scaricati dalla pagina di Tableau Server(Il collegamento viene aperto in una nuova finestra).

  1. Scarica il file di installazione del server, tableau-server-<version>.rpm versione 2021.2.0 o successiva.

  2. Scarica lo strumento di configurazione per Tableau Server in un contenitore, tableau-server-container-setup-tool-<version>.tar.gz.

Installazione

Lo strumento di configurazione per Tableau Server in un contenitore viene fornito come file tarball. Sarà necessario estrarre il contenuto del file compresso. Di seguito è riportato un esempio che presuppone che l'archivio dello strumento di configurazione per Tableau Server in un contenitore si trovi nella directory corrente:

tar -xzf tableau-server-container-setup-tool-<VERSION>.tar.gz

Viene creata una nuova directory, tableau-server-container-setup-tool-<VERSION> con lo script build-image utilizzato per eseguire lo strumento.

Completare il modulo di registrazione

Modifica il file di registrazione per fornire le informazioni di identificazione univoche necessarie per la registrazione di Tableau Server in conformità con il Contratto di licenza con l'utente finale. Il file, reg-info.json, che opera come modello per le informazioni di registrazione obbligatorie e identificabili in modo univoco, è disponibile nella directory principale dello strumento di configurazione per Tableau Server in un contenitore. Questo file viene utilizzato per registrare l'istanza di Tableau Server in esecuzione nell'immagine. Fornire informazioni accurate garantirà che il processo di registrazione venga completato correttamente.

Il valore del campo eula è precompilato con "accept" per indicare che accetti il Contratto di licenza con l'utente finale (EULA). Puoi visualizzare l'EULA nella directory EULA dello strumento di compilazione. Come indicato nell'EULA, devi inviare una registrazione utente identificabile in modo univoco quando attivi Tableau Server. Al termine della modifica del file di registrazione, gli altri campi dovrebbero avere valori che riflettono le tue informazioni univoche. Questo file viene utilizzato per registrare l'istanza di Tableau Server in esecuzione nell'immagine. Fornire informazioni accurate garantirà che il processo di registrazione venga completato e che l'invio soddisfi i requisiti per la concessione della licenza.

Nota: è necessario accettare l'EULA per utilizzare Tableau Server. Se non accetti l'EULA, non potrai eseguire Tableau Server.

Il modello del file di registrazione reg-info.json prima della modifica:

{
"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>"
}

Come utilizzare lo strumento

Nello strumento di configurazione è disponibile uno script eseguibile denominato build-image. Eseguendo questo script con l'opzione -h, vengono visualizzate le informazioni della Guida:

./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.

Esempio di utilizzo di base:

./build-image --accepteula -i tableau-server-image.rpm

È possibile eseguire il comando senza specificare artefatti o uno script di configurazione, tuttavia in tal caso non viene effettuata alcuna operazione, perché non viene eseguita la copia o l'installazione di risorse aggiuntive nell'immagine originale di Tableau Server in un contenitore.

Orchestrazione

Tableau fornisce solo documentazione e supporto per i contenitori Tableau Server in esecuzione su Linux. Tableau non fornisce documentazione o supporto per sistemi di orchestrazione dei contenitori come Kubernetes o Docker Swarm. Kubernetes può tuttavia essere utilizzato per distribuire Tableau Server in un contenitore. Per risorse e indicazioni sulla distribuzione di contenitori Tableau in Kubernetes, fai riferimento al progetto GitHub supportato dalla community: https://github.com/tableau/tableau-server-in-kubernetes(Il collegamento viene aperto in una nuova finestra).

Personalizzazione dell'immagine

Impostazione delle variabili di ambiente in fase di compilazione

Un sottoinsieme di variabili d'ambiente che consentono di personalizzare l'immagine può essere impostato solo quando l'immagine è stata creata. Questo include l'utente, il gruppo e altre proprietà che richiedono privilegi root all'interno del contenitore. Le azioni root non sono disponibili per impostazione predefinita in fase di esecuzione. Inoltre, può essere utile inserire determinate variabili di ambiente nell'immagine in fase di compilazione, in modo che non debbano essere impostate ogni volta che viene eseguita l'immagine. Tutte queste variabili di ambiente possono essere impostate passando un file di ambiente allo script build-image.

File di ambiente

Il file di ambiente può essere passato allo script build-image tramite l'argomento -e. Il file deve essere conforme a questo formato:

<KEY>=<VALUE>
<KEY>=<VALUE>
Esempio di utilizzo:

Crea un file di ambiente con il formato corretto:

UNPRIVILEGED_TABLEAU_UID=1012
UNPRIVILEGED_TABLEAU_GID=1020
TABLEAU_USERNAME=myuser
TABLEAU_PASSWORD=pw

Passa il file allo strumento di compilazione delle immagini

./build-image --accepteula -i tableau-server-2020-3.x86_64.rpm -e <path-to-env-file>
Variabili di ambiente

Qualsiasi variabile di ambiente può essere impostata nel file di ambiente. Consulta la sezione Variabili di ambiente per vedere l'elenco completo.

Le variabili di ambiente in fase di compilazione possono essere impostate solo quando viene eseguito questo script per creare l'immagine:

Nome dell'ambiente Impostazione predefinita Descrizione
BASE_IMAGE_URL Utilizza il comando dello strumento di compilazione: build-image -b L'immagine predefinita specificata nello strumento build-image e Dockerfile è l'unica immagine di base ufficialmente supportata. Questo parametro può essere utilizzato per eseguire il pull di una copia di questa specifica immagine di base da un repository di immagini Docker personalizzato o definire un'immagine di base personalizzata. Se scegli di utilizzare un'immagine di base personalizzata (vedi Definizione di un'immagine di base personalizzata per maggiori dettagli), devi assicurarti che sia basata su UBI 8 (CentOS 7 o RHEL 7 per la versione 2022.1 e precedenti) e che contenga le risorse necessarie per eseguire correttamente Tableau Server.
PRIVILEGED_TABLEAU_GID 997 GID del gruppo Tableau con privilegi.
UNPRIVILEGED_TABLEAU_GID 998 GID del gruppo Tableau senza privilegi.
UNPRIVILEGED_TABLEAU_UID 999 UID dell'utente che esegue i processi Tableau (distribuzione con un singolo utente).
UNPRIVILEGED_USERNAME tableau Nome stringa dell'utente senza privilegi.
UNPRIVILEGED_GROUP_NAME tableau Nome stringa del gruppo senza privilegi.
PRIVILEGED_GROUP_NAME tsmadmin Nome stringa del gruppo con privilegi.
LANG en_US.UTF-8 Impostazione per le impostazioni locali

Driver, certificati e altri file

L'immagine di Tableau Server non viene fornita con connettori dati o driver preinstallati. Dovrai creare uno script di installazione Bash che comunicherà allo script build-image di installare i connettori dati necessari per Tableau Server. Questi sono i passaggi necessari:

  1. Assicurati che lo strumento di configurazione per Tableau Server in un contenitore sia installato correttamente

  2. Scarica il driver dalla pagina dei driver di Tableau: https://www.tableau.com/it-it/support/drivers(Il collegamento viene aperto in una nuova finestra)

  3. Copia il file del driver scaricato nella directory customer-files dello strumento di configurazione per Tableau Server in un contenitore.

    La directory customer-files verrà copiata nell'immagine Docker. Sarà disponibile nel seguente percorso all'interno del contenitore:/docker/customer-files

  4. Modifica il file nello strumento di configurazione per Tableau Server in un contenitore customer-files/setup-script per comunicare a Docker come installare il driver.

    Lo script è semplicemente un file Bash eseguibile che viene eseguito durante la compilazione dell'immagine Docker. Tecnicamente, può essere utilizzato per eseguire qualsiasi azione arbitraria nell'immagine, come l'impostazione dell'ambiente, la configurazione e così via.

    Lo script verrà eseguito all'interno del contenitore, quindi tieni presente che i comandi devono funzionare quando vengono eseguiti all'interno dell'immagine di Tableau Server in un contenitore.

    Se ad esempio vuoi installare un driver denominato mydriver.rpm, puoi scrivere questo in setup-script:

    yum install -y /docker/customer-files/mydriver.rpm
Viste amministrative di Tableau

Le viste amministrative di Tableau richiedono l'installazione del driver PostgreSQL. Se prevedi di utilizzare queste viste, dovrai seguire i passaggi precedenti e installare il driver PostgreSQL. Per maggiori informazioni sulle viste amministrative, consulta Viste amministrative

Definizione di un'immagine di base personalizzata

L'immagine di base predefinita utilizzata per creare il contenitore Tableau Server è un'immagine UBI 8 (CentOS 7.x per la versione 2022.1 e precedenti ) proveniente da Docker Hub. In alcuni casi, potresti voler configurare lo strumento build-image in modo da eseguire il pull dell'immagine da un diverso repository di immagini Docker. Ad esempio, la tua azienda potrebbe gestire un repository Docker interno e non volere che build-image esegua il pull da un repository pubblico. Utilizza la procedura seguente per personalizzare il percorso dell'immagine di base:

  1. Utilizza questo comando per visualizzare il nome e la versione correnti dell'immagine di base predefinita dello strumento build-image:

    ./build-image -b
  2. Esegui il pull del nome e della versione dell'immagine di base esattamente corrispondenti da Docker Hub ed effettua l'archiviazione/memorizzazione nella cache nel repository di immagini che preferisci (in base ai criteri aziendali per le immagini)

  3. Torna allo strumento build-image. Crea o modifica un file di ambiente esistente in modo da includere la chiave di ambiente BASE_IMAGE_URL con il valore impostato su un nuovo percorso del registro dell'immagine Docker:

    BASE_IMAGE_URL=<custom-image-registry-path>
  4. Compila l'immagine con il file di ambiente:

    ./build-image --accepteula -i <rpm> -e <path-to-env-file>

Questi passaggi consentono di specificare un'immagine di base completamente diversa. Questa funzionalità è supportata solo per le immagini basate su UBI 8 (RHEL e CentOS 7.x per la versioni 2022.1 e precedenti) ed è disponibile per aiutare i clienti a creare immagini più sicure.

L'utilizzo di un'immagine di base diversa da quella predefinita specificata da Tableau comporta il rischio di produrre un'immagine che non viene avviata o non funziona correttamente. Se scegli di utilizzare un'immagine di base personalizzata, devi assicurarti che l'immagine di base consenta il corretto funzionamento di Tableau Server. È consigliabile utilizzare l'immagine di base predefinita, a meno che non sia accettabile per la tua organizzazione per qualche motivo, ad esempio per problemi di sicurezza.

L'immagine di base personalizzata deve essere basata su UBI 8 (RHEL 7 o CentOS 7 per la versione 2022.1 e precedenti). L'utilizzo di qualsiasi altra distribuzione determinerà la creazione di un'immagine non supportata.

Utilizzo di repository interni per yum e pip

L'immagine di Tableau Server in un contenitore è configurata per l'utilizzo dei repository yum e pip predefiniti per eseguire il pull dei pacchetti dipendenti. Se è necessario modificare, rimuovere o aggiungere repository (ad esempio, potrebbero essere utilizzati repository interni per migliorare la sicurezza), sarà necessario modificare uno degli script di inizializzazione dello strumento di configurazione dell'immagine.

Modifica lo script <setup_tool>/src/image/init/setup_default_environment.bash nel codice sorgente per utilizzare i repository interni. Posiziona tutti i file di repository richiesti per il repository interno nella directory <setup_tool>/src/image/init/. La directory verrà copiata nell'immagine Docker.

Immagini di base e sicurezza

Molti clienti potrebbero eseguire strumenti di scansione dei contenitori (come AquaScan o TwistLock) sull'immagine Docker di Tableau Server generata. Questi strumenti di sicurezza genereranno un report di potenziali vulnerabilità di sicurezza (anche denominate Common Vulnerabilities and Exposures o CVE). Esistono due tipi di vulnerabilità associate a un'immagine di Tableau Server in un contenitore:

  • CVE associate a Tableau Server o a una libreria da cui sono presenti dipendenze.
  • CVE associate alla distribuzione Linux sottostante.

Tableau è responsabile delle CVE associate direttamente a Tableau Server. Il team di sicurezza analizza questi report per determinare l'impatto e la gravità, in modo da stabilire le priorità dei problemi per la risoluzione. La priorità e le tempistiche per la risoluzione dei problemi di base saranno determinate dal punteggio di gravità CVSS originale. Gli aggiornamenti della sicurezza dei componenti di terze parti in genere non vengono resi disponibili per le versioni precedenti, a meno che non sia presente un percorso del codice eseguibile che espone la vulnerabilità.

Con il modello di distribuzione basato su contenitori, i clienti devono affrontare una serie diversa di problemi correlati alle vulnerabilità del livello del sistema operativo. Tradizionalmente, con Tableau Server, Tableau concentra i propri sforzi sulla fornitura di un'applicazione sicura e il cliente è responsabile della gestione dei sistemi operativi (Linux o Windows). Tuttavia, con la containerizzazione, il sistema operativo (UBI 8 a partire dalla versione 2023.3, CentOS 7.x o RHEL 7.x per la versione 2022.1 e precedenti) e l'applicazione vengono combinati in un unico contenitore. Tableau si assume la responsabilità delle CVE associate a Tableau Server e di determinare se una CVE di una libreria di terze parti potrebbe avere un impatto per i clienti. Tuttavia, i clienti devono essere responsabili dei problemi relativi al livello del sistema operativo. Per risolvere i problemi di sicurezza del livello del sistema operativo, i clienti possono sostituire il livello di base del sistema operativo con una versione personalizzata (basato su UBI 8 per la versione 2022.3 e successive, RHEL o CentOS 7.x per la versione 2022.1 e precedenti). In questo caso devi verificare il corretto funzionamento di Tableau Server. La rimozione di una libreria da cui dipende Tableau Server a causa di problemi di sicurezza può determinare la creazione di un'istanza non funzionante di Tableau Server. In caso di modifica del livello del sistema operativo di base, i clienti sono responsabili della convalida del corretto funzionamento.

Protezione avanzata di Tableau Server in un contenitore

Puoi applicare le procedure standard di protezione avanzata a Tableau Server in un contenitore. Per maggiori informazioni sulla protezione avanzata di Tableau Server, consulta Checklist per il miglioramento della sicurezza.

Esempi di configurazione della distribuzione

Docker

Utilizzo di base di Tableau Server in un contenitore
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
Utilizzo di base di Tableau Server in un contenitore con l'utente amministratore iniziale automatizzato
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>
Modalità solo TSM
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Utilizzo di base multi-nodo
Nodo iniziale

Opzione 1: utilizza questa opzione se la configurazione del server (CONFIG_FILE) specifica una topologia multi-nodo:

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>

Opzione 2: utilizza questa opzione se desideri una distribuzione multi-nodo anche se la configurazione del server non specifica la topologia multi-nodo:

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>
Nodo aggiuntivo
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>
Esternalizzare l'utilizzo dei dati
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>
Utilizzo di base dell'inizializzazione del contenitore

Inizializzazione del contenitore

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>

Esecuzione del contenitore

docker run \
-v <empty-data-dir>:/var/opt/tableau \
--hostname=localhost \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Ripristino di base da backup con nodo singolo
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>

 

 

Grazie per il tuo feedback.