Tableau Server dans un conteneur - Utilisation de l’outil d’installation

Introduction

Tableau Server dans un conteneur est la première offre de Tableau d’un serveur basé sur un conteneur. Tableau Server dans un conteneur est une instance Tableau Server tout-en-un qui s’exécute dans un conteneur Linux Docker. En d’autres termes, une image Tableau Server dans un conteneur est une image Docker qui exécute une application Tableau Server autonome complète. Tableau Server dans un conteneur est notre première étape parmi de nombreuses étapes prenant en charge l’exécution de Tableau Server dans des environnements basés sur un conteneur. Pour comprendre simplement le concept de de Tableau Server dans un conteneur, considérez-le comme une machine virtuelle sur laquelle Tableau Server est préinstallé. L’image est basée sur une image UBI 8 (CentOS 7.x pour la version 2022.1 et versions antérieures) et exécute supervisord (au lieu de systemd) au sein du conteneur. Lorsque le conteneur démarre supervisord, il tente immédiatement d’initialiser et de démarrer Tableau Server. Une grande partie de la présente documentation s’applique à décrire comment automatiser la configuration et l’utilisation afin que vous puissiez exécuter Tableau Server dans des environnements Docker.

L’outil d’installation de l’image Tableau Server dans un conteneur vous aide à créer et à personnaliser les images de conteneur de manière à inclure des packages et des artefacts personnalisés. L’une des fonctions principales de l’outil consiste à créer l’image du conteneur et à installer des connecteurs de données personnalisés.

Limitations de Tableau Server dans un conteneur

  • Tableau Server dans un conteneur prend en charge l’activation de licences à l’aide du service ATR du serveur uniquement. L’activation hors ligne à l’aide du service ATR du serveur est prise en charge dans la version 2023.1 et versions ultérieures. Cette fonctionnalité est disponible dans les conteneurs mais nécessite des étapes et une approbation supplémentaires. Si vous devez exécuter Tableau Server dans un conteneur dans un environnement isolé ou hors ligne, contactez votre représentant de compte pour plus d’informations.
  • Tableau Server dans un conteneur ne prend actuellement pas en charge l’agent Resource Monitoring Tool (RMT).
  • Tableau Server dans un conteneur ne prend pas en charge Kerberos.

Outil d’installation de Tableau Server dans un conteneur

L’outil d’installation de Tableau Server dans un conteneur build-image crée une image personnalisée Tableau Server dans un conteneur à partir d’un programme d’installation .rpm de Tableau et des fichiers de configuration fournis.

L’outil d’installation prend un programme d’installation de Tableau Server ainsi que votre pilote et d’autres artefacts comme entrées et génère une image Docker. Lorsque l’outil build-image est utilisé correctement, l’image qui vient d’être générée installe les artefacts souhaités.

Distributions prises en charge pour la création

La création d’une image Docker de Tableau Server dans un conteneur n’est prise en charge que sur un système Linux basé sur RHEL (RHEL, CentOS ou Amazon Linux 2). Il est possible d’utiliser d’autres distributions Linux, mais cette option n’est actuellement ni testée ni prise en charge. La création d’images sur macOS n’est pas prise en charge. L’image créée est basée sur une image UBI 8 (CentOS 7.x pour la version 2022.1 et versions antérieures).

La version 18.09 ou ultérieure de Docker doit être installée sur l’hôte pour créer les images de conteneur. En général, nous vous recommandons d’utiliser la dernière version stable de Docker. Certaines distributions Linux ne fournissent que des versions plus anciennes de Docker dans leurs référentiels de logiciels. Dans ce cas, vous devrez peut-être installer Docker à partir d’une source différente. Les versions de Docker antérieures à la version 18.09 n’incluent pas les fonctionnalités requises pour Tableau Server dans un conteneur.

Télécharger les fichiers nécessaires

Pour utiliser l’outil d’installation, vous devez télécharger à la fois l’outil et un fichier de programme d’installation de serveur compatible .rpm. Le fichier d’installation doit être à la version 2021.2.0 ou ultérieure. Les deux fichiers peuvent être téléchargés à partir de la page Tableau Server(Le lien s’ouvre dans une nouvelle fenêtre).

  1. Téléchargez le fichier d’installation du serveur, tableau-server-<version>.rpm version 2021.2.0 ou ultérieure.

  2. Téléchargez l’outil d’installation de Tableau Server dans un conteneur, tableau-server-container-setup-tool-<version>.tar.gz.

Installation

Cet outil est fourni sous forme d’archive. Vous devrez extraire le contenu du fichier compressé. Voici un exemple qui part de l’hypothèse que l’archive de l’outil d’installation de Tableau Server dans un conteneur se trouve dans votre répertoire actuel :

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

Cela crée un nouveau répertoire, tableau-server-container-setup-tool-<VERSION> avec le script build-image que vous utilisez pour exécuter l’outil.

Remplir le formulaire d’enregistrement

Modifiez le fichier d’enregistrement pour fournir vos informations d’identification uniques nécessaires pour enregistrer Tableau Server conformément au contrat de licence de l’utilisateur final. Le fichier reg-info.json sert de modèle pour vos informations d’enregistrement requises qui vous identifient de manière unique. Vous le trouverez dans le répertoire supérieur de l’outil d’installation de Tableau Server dans un conteneur. Ce fichier sera utilisé pour enregistrer l’instance Tableau Server exécutée dans l’image. Il est important de fournir des informations exactes pour assurer le bon déroulement du processus d’enregistrement.

La valeur de champ eula est pré-remplie avec « accepter » pour indiquer que vous acceptez notre contrat de licence de l’utilisateur final (CLUF). Vous pouvez afficher le CLUF dans le répertoire CLUF de l’outil de build. Comme indiqué dans le CLUF, vous devez soumettre un enregistrement d’utilisateur qui vous identifie de manière unique lors de l’activation de Tableau Server. Lorsque vous avez terminé de modifier le fichier d’enregistrement, les autres champs doivent présenter des valeurs reflétant vos informations uniques. Ce fichier sera utilisé pour enregistrer l’instance Tableau Server exécutée dans l’image. La fourniture d’informations exactes garantira que le processus d’enregistrement est terminé et que votre soumission répond aux exigences de l’octroi de la licence.

Remarque : vous devez accepter le CLUF pour utiliser Tableau Server. Si vous n’acceptez pas le CLUF, vous ne pouvez pas exécuter Tableau Server.

Modèle du fichier d’enregistrement reg-info.json avant modification :

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

Comment utiliser l’outil

Un script exécutable intitulé build-image est inclus dans l’outil d’installation. Si vous exécutez ce script avec l’option -h, l’aide s’affiche :

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

Exemple d’utilisation de base :

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

La commande peut s’exécuter correctement même si vous ne fournissez pas d’artefacts, mais elle n’a aucun effet parce qu’aucune ressource supplémentaire n’est copiée ou installée sur l’image d’origine Tableau Server dans un conteneur.

Orchestration

Tableau fournit uniquement la documentation et l’assistance pour les conteneurs Tableau Server s’exécutant sous Linux. Tableau ne fournit pas de documentation ni de support pour les systèmes d’orchestration de conteneurs tels que Kubernetes ou Docker Swarm. Il est toutefois possible d’utiliser Kubernetes pour déployer Tableau Server dans un conteneur. Pour obtenir des ressources et des conseils sur le déploiement de conteneurs Tableau dans Kubernetes, reportez-vous à notre projet GitHub pris en charge par la communauté : https://github.com/tableau/tableau-server-in-kubernetes(Le lien s’ouvre dans une nouvelle fenêtre).

Personnalisation de l’image

Définition de variables d’environnement au moment de la création d’image

Un sous-ensemble de variables d’environnement permettant de personnaliser votre image ne peut être défini que lors de la création de l’image. Cela inclut l’utilisateur, le groupe et d’autres propriétés qui nécessitent le privilège root à l’intérieur du conteneur. Les actions racine ne sont pas disponibles par défaut au moment de l’exécution. De plus, il peut être utile d’intégrer certaines variables d’environnement dans l’image au moment de la création afin qu’elles n’aient pas à être définies à chaque exécution de l’image. Toutes ces variables d’environnement peuvent être définies en transmettant un fichier d’environnement au script build-image.

Fichier d’environnement

Le fichier d’environnement peut être transmis au script build-image à l’aide de l’argument -e. Le fichier doit être conforme à ce format :

<KEY>=<VALUE>
<KEY>=<VALUE>
Exemple d’utilisation :

Créez un fichier d’environnement au format correct :

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

Transmettez le fichier au générateur d’images

./build-image --accepteula -i tableau-server-2020-3.x86_64.rpm -e <path-to-env-file>
Variables d’environnement

Toute variable d’environnement peut être définie dans le fichier d’environnement. Consultez la liste complète dans la section Variables d’environnement.

Les variables d’environnement d’heure de création ne peuvent être définies que lorsque ce script est exécuté pour créer l’image :

Nom de l’environnementPar défautDescription
BASE_IMAGE_URLUtilisez cette commande de l’outil de création : build-image -bL’image par défaut spécifiée dans l’outil build-image et Dockerfile est la seule image de base officiellement prise en charge. Ce paramètre peut être utilisé soit pour extraire une copie de cette image de base spécifique à partir d’un référentiel d’images Docker personnalisé, soit pour définir une image de base personnalisée. Si vous choisissez d’utiliser une image de base personnalisée (voir Définir une image de base personnalisée pour plus de détails), il vous incombe de vérifier qu’elle est basée sur UBI 8 (CentOS 7 ou RHEL 7 pour la version 2022.1 et versions antérieures) et qu’elle contient les ressources nécessaires pour exécuter correctement Tableau Server.
PRIVILEGED_TABLEAU_GID997GID du groupe Tableau privilégié.
UNPRIVILEGED_TABLEAU_GID 998 GID du groupe Tableau non privilégié.
UNPRIVILEGED_TABLEAU_UID 999 UID de l’utilisateur qui exécute des processus Tableau (déploiement utilisateur unique).
UNPRIVILEGED_USERNAME tableau Nom de chaîne de l’utilisateur non privilégié.
UNPRIVILEGED_GROUP_NAME tableau Nom de chaîne du groupe non privilégié.
PRIVILEGED_GROUP_NAMEtsmadminNom de chaîne du groupe privilégié.
LANG en_US.UTF-8Paramètres régionaux

Pilotes, certificats et autres fichiers

L’image Tableau Server n’est pas fournie avec des connecteurs de données ou des pilotes préinstallés. Vous devrez créer un script de configuration bash qui demandera au script build-image d’installer les connecteurs de données dont Tableau Server aura besoin. Voici les étapes à suivre :

  1. Assurez-vous que l’outil d’installation de Tableau Server dans un conteneur est correctement installé

  2. Téléchargez le pilote depuis la page des pilotes Tableau : https://www.tableau.com/fr-fr/support/drivers(Le lien s’ouvre dans une nouvelle fenêtre)

  3. Copiez le fichier de pilote téléchargé dans le répertoire customer-files de l’outil d’installation de Tableau Server dans un conteneur.

    Le répertoire customer-files sera copié dans l’image docker. Il sera situé dans le chemin suivant à l’intérieur du conteneur : /docker/customer-files

  4. Dans l’outil d’installation de Tableau Server dans un conteneur, modifiez le fichier customer-files/setup-script pour indiquer à Docker comment installer le pilote.

    Le script est simplement un fichier bash exécutable qui est exécuté lorsque l’image Docker est générée. (Techniquement, il peut être utilisé pour effectuer des actions arbitraires dans l’image, y compris l’installation de l’environnement, la configuration, etc.)

    Le script sera exécuté à l’intérieur du conteneur. Vous devez donc garder à l’esprit que les commandes doivent fonctionner lorsqu’elles sont exécutées dans l’image Tableau Server dans un conteneur.

    Par exemple, si vous souhaitez installer un pilote intitulé « mydriver.rpm », vous pouvez écrire ce script dans setup-script :

    yum install -y /docker/customer-files/mydriver.rpm
Vues administratives Tableau

Les vues administratives Tableau nécessitent l’installation du pilote PostgreSQL. Si vous prévoyez d’utiliser ces vues, vous devrez suivre les étapes ci-dessus et installer le pilote PostgreSQL. Pour plus d’informations sur les vues administratives, consultez Vues administratives .

Définition d’une image de base personnalisée

L’image de base par défaut utilisée pour créer le conteneur Tableau Server est une image UBI 8 (CentOS 7.x pour la version 2022.1 et versions antérieures) provenant de Docker Hub. Dans certains cas, vous souhaiterez peut-être configurer l’outil build-image de manière à extraire l’image depuis un autre référentiel d’images Docker. Par exemple, votre entreprise peut gérer un référentiel Docker interne et ne pas vouloir que le script build-image extraie une image depuis un référentiel public. Procédez comme suit pour personnaliser le chemin d’accès de l’image de base :

  1. Utilisez la commande suivante pour afficher le nom et la version de l’image de base par défaut de l’outil build-image actuel :

    ./build-image -b
  2. Depuis Docker Hub, extrayez le nom et la version exacts de l’image de base, et procédez à son stockage/sa mise en cache sur votre référentiel d’images préféré (conformément aux politiques de votre entreprise en matière de gestion des images)

  3. Revenez à l’outil build-image. Créez ou modifiez un fichier d’environnement existant de manière à inclure la clé d’environnement BASE_IMAGE_URL avec la valeur définie sur un nouveau chemin de registre d’images docker :

    BASE_IMAGE_URL=<custom-image-registry-path>
  4. Créez l’image avec le fichier d’environnement :

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

Ces étapes vous permettent de spécifier une image de base complètement différente. Cette capacité est prise en charge uniquement pour les images UBI 8 (RHEL et CentOS 7.x pour la version 2022.1 et versions antérieures) et aide les clients à créer des images plus sécurisées.

Si vous utilisez une image de base autre que celle par défaut spécifiée par Tableau, vous risquez d’obtenir une image qui ne démarre pas ou ne fonctionne pas correctement. Si vous choisissez d’utiliser une image de base personnalisée, il vous incombe de vérifier que l’image de base permet à Tableau Server de s’exécuter correctement. Nous vous recommandons d’utiliser l’image de base par défaut, à moins qu’elle ne soit pas acceptable pour votre entreprise pour une raison quelconque, par exemple des problèmes de sécurité.

L’image de base personnalisée doit être basée sur UBI 8 (RHEL 7 ou CentOS 7 pour la version 2022.1 et versions antérieures). L’utilisation de toute autre distribution entraînera une image non prise en charge.

Utilisation de référentiels internes pour yum et pip

L’image Tableau Server dans un conteneur est configurée pour utiliser les référentiels yum et pip par défaut de manière à extraire les packages dépendants. Si vous devez modifier, supprimer ou ajouter des référentiels (par exemple, des référentiels internes peuvent être utilisés pour améliorer la sécurité), vous devrez modifier l’un des scripts d’initialisation de l’outil de configuration d’image.

Modifiez le script <setup_tool>/src/image/init/setup_default_environment.bash dans le code source pour utiliser les référentiels internes. Veuillez conserver tous les fichiers de référentiel requis pour le référentiel interne dans le répertoire <setup_tool>/src/image/init/. Ce répertoire sera copié dans l’image docker.

Images de base et sécurité

De nombreux clients exécuteront des outils d’analyse de conteneurs (tels que AquaScan ou TwistLock) sur l’image Docker générée de Tableau Server. Ces outils de sécurité généreront un rapport sur les vulnérabilités de sécurité potentielles (CVE, ou Common Vulnerabilities and Exposures). Il existe deux types de vulnérabilités associées à l’image de Tableau Server dans un conteneur :

  • CVE associés à Tableau Server ou à une bibliothèque dont nous dépendons.
  • CVE associés à la distribution Linux sous-jacente.

Tableau est responsable des CVE associés directement à Tableau Server. L’équipe de sécurité analyse ces rapports pour déterminer l’impact et la gravité afin de hiérarchiser les problèmes à résoudre. La priorité et les délais de correction de base seront déterminés par le score de gravité CVSS d’origine. Les mises à jour de sécurité des composants tiers ne seront généralement pas rétroportées dans des versions plus anciennes, sauf s’il existe un chemin de code exécutable qui expose la vulnérabilité.

Avec le modèle de distribution conteneurisé, les clients sont confrontés à un ensemble différent de défis concernant les vulnérabilités de la couche OS. Traditionnellement, avec Tableau Server, Tableau concentre ses efforts sur la livraison d’une application sécurisée et le client est responsable de la gestion des systèmes d’exploitation (Linux ou Windows). Avec la conteneurisation, en revanche, le système d’exploitation (UBI 8 à partir de la version 2023.3, CentOS 7.x ou RHEL 7.x pour la version 2022.1 et versions antérieures) et l’application sont regroupés dans un seul conteneur. Tableau assume la responsabilité du CVE associé à Tableau Server et il lui incombe également de déterminer si un CVE d’une bibliothèque tierce aurait un impact sur les clients. Les problèmes de la couche du système d’exploitation relèvent par contre de la responsabilité des clients. Afin de pouvoir résoudre les problèmes de sécurité dans la couche du système d’exploitation, les clients peuvent éventuellement remplacer la couche du système d’exploitation par leur propre version (basée sur UBI 8 pour la version 2022.3 et versions ultérieures, RHEL ou CentOS 7.x pour la version 2022.1 et versions antérieures). Dans ce cas, vous devez vérifier que Tableau Server s’exécute correctement. La suppression d’une bibliothèque dont dépend Tableau Server en raison de problèmes de sécurité peut entraîner un dysfonctionnement de l’instance de Tableau Server. Si vous modifiez la couche de base du système d’exploitation, il incombe aux clients de valider son fonctionnement.

Renforcer la sécurité de Tableau Server dans un conteneur

Vous pouvez appliquer les étapes standard de renforcement de la sécurité de Tableau Server dans un conteneur. Pour plus d’informations sur ce processus, consultez Liste de contrôle pour une sécurité renforcée.

Exemples de configuration de déploiement

Docker

Utilisation de base de Tableau Server dans un conteneur
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
Utilisation de base de Tableau Server dans un conteneur avec un utilisateur administrateur initial automatisé
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>
Mode TSM uniquement
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Utilisation de base d’une topologie multinœud
Nœud initial

Option 1 : utilisez cette option si la configuration du serveur (CONFIG_FILE) spécifie une topologie multinœud :

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>

Option 2 : utilisez cette option si vous souhaitez un déploiement multinœud même si la configuration du serveur ne spécifie pas une topologie multinœud :

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œud supplémentaire
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>
Externaliser l’utilisation des données
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>
Utilisation de base d’init-container

Init Container

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>

Run Container

docker run \
-v <empty-data-dir>:/var/opt/tableau \
--hostname=localhost \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Restauration de base depuis une sauvegarde sur un seul nœud
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>

 

 

Merci de vos commentaires !Avis correctement envoyé. Merci