Introducción

Tableau Server en un contenedor es la primera oferta de servidor basada en contenedores de Tableau. Tableau Server en un contenedor es una instancia de Tableau Server todo en uno que se ejecuta dentro de un contenedor de Docker de Linux. En otras palabras, la imagen de Tableau Server en un contenedor es una imagen de Docker que ejecuta toda una aplicación de Tableau Server independiente. Tableau Server en un contenedor es el primero de pasos necesarios para admitir Tableau Server que se ejecuta en entornos basados en contenedores. La forma más fácil de entender el concepto de Tableau Server en un contenedor es imaginarlo como una máquina virtual con Tableau Server preinstalado. La imagen se basa en una imagen UBI 8 (imagen CentOS 7.x para las versiones 2022.1 y anteriores) y ejecuta supervisord (en lugar de systemd) del contenedor. Cuando el contenedor inicie supervisord, este intentará inmediatamente inicializar y ejecutar Tableau Server. Gran parte de esta documentación tiene como objetivo describir cómo configurar y aprovechar la automatización para que pueda ejecutar Tableau Server en entornos Docker.

La herramienta de configuración de imágenes en un contenedor de Tableau Server le ayuda a crear y personalizar las imágenes de contenedor para incluir paquetes y artefactos personalizados. Una de las funciones principales de la herramienta es crear la imagen del contenedor e instalar conectores de datos personalizados.

Limitaciones

  • Tableau Server en un contenedor solo admite la activación de licencias mediante Server ATR, que requiere que el contenedor tenga acceso a Internet. Por lo tanto, no es posible la activación sin conexión en un entorno aislado.
  • Actualmente, Tableau Server en un contenedor no es compatible con el agente de la Resource Monitoring Tool (RMT).
  • Kerberos no es compatible con Tableau Server en un contenedor.

La herramienta de configuración de Tableau Server en un contenedor

La imagen de creación de la herramienta de configuración de Tableau Server en un contenedor, build-image, crea una imagen personalizada de Tableau Server en un contenedor a partir de un instalador de RPM (.rpm) de Tableau y los archivos de configuración proporcionados.

La herramienta de configuración toma un instalador de Tableau Server y sus controladores junto a otros artefactos como entrada y genera una imagen de Docker. Cuando se utiliza correctamente la herramienta build-image, la imagen recién generada tendrá instalados los artefactos deseados.

Distribuciones admitidas para la creación

La imagen de creación de Tableau Server en un contenedor de Docker solo se admite en un sistema Linux basado en RHEL (RHEL, CentOS o Amazon Linux 2). Es posible que se pueda construir sobre cualquier otra distribución de Linux, pero actualmente no se ha probado ni se admite. No se admite la creación de imágenes en macOS. La imagen creada se basa en una imagen UBI 8 (CentOS 7.x para la versión 2022.1 y anteriores).

Debes usar una distribución que incluya la versión 17 de Docker o posterior. Se recomienda la versión más reciente de Docker. Las versiones de Docker anteriores a la versión 17 no incluyen las funcionalidades necesarias para Tableau Server en un contenedor.

Descargar los archivos necesarios

Para utilizar la herramienta de configuración, debe descargar tanto la herramienta como un archivo de instalador de Server compatible (.rpm). El archivo del instalador debe ser de la versión 2021.2.0 o posterior. Ambos archivos se pueden descargar desde la página de Tableau Server(El enlace se abre en una ventana nueva).

  1. Descargue el archivo de instalación de Server tableau-server-<version>.rpm versión 2021.2.0 o posterior.

  2. Descargue Server en una herramienta de configuración de contenedor, tableau-server-container-setup-tool-<version>.tar.gz.

Instalación

La herramienta de configuración de Tableau Server en un contenedor se proporciona como un tarball. Tendrá que extraer el contenido del archivo comprimido. A continuación se muestra un ejemplo que supone que el archivo de la herramienta de configuración de Tableau Server en un contenedor se encuentra en el directorio actual:

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

Esto crea un nuevo directorio, tableau-server-container-setup-tool-<VERSION> con el script build-image que utiliza para ejecutar la herramienta.

Completar el formulario de registro

Edite el archivo de registro para proporcionar su información de identificación única necesaria para registrar Tableau Server de acuerdo con el Acuerdo de licencia de usuario final. El archivo reg-info.json sirve como plantilla para su información de registro, única e identificativa, y se encuentra en el directorio superior de Tableau Server en una herramienta de configuración de contenedores. Este archivo se utiliza para registrar la instancia de Tableau Server que se ejecuta en la imagen. Proporcionar información precisa garantizará que el proceso de registro se complete correctamente.

El valor del campo eula es "accept" para indicar que está aceptando nuestro Acuerdo de licencia de usuario final (EULA). Puede ver el EULA en el directorio EULA de la herramienta de compilación. Como se describe en el EULA, debe enviar un registro de usuario de identificación única al activar Tableau Server. Cuando haya terminado de editar el archivo de registro, los otros campos deben tener valores que reflejen su información única. Este archivo se utiliza para registrar la instancia de Tableau Server que se ejecuta en la imagen. Proporcionar información precisa garantizará que el proceso de registro se complete y que su envío cumpla con los requisitos de la concesión de la licencia.

Nota: Debe aceptar el EULA para usar Tableau Server. Si no acepta el EULA, no podrá ejecutar Tableau Server.

La plantilla del archivo 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>"
}

Utilizar la herramienta

Hay un script ejecutable en la herramienta de configuración llamado build-image. Al ejecutarlo con la opción l-h, aparece la ayuda:

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

Uso básico de ejemplo:

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

Ejecutar el comando sin proporcionar artefactos o un script de configuración funciona, pero no hace nada porque no estaría copiando ni instalando ningún recurso adicional en la imagen original de Tableau Server en un contenedor.

Organización

Tableau solo proporciona documentación y soporte para contenedores de Tableau Server que se ejecutan en Linux. Tableau no proporciona documentación ni soporte para sistemas de organización de contenedores como Kubernetes o Docker Swarm. Sin embargo, Kubernetes se puede usar para implementar Tableau Server en un contenedor. Para obtener recursos y orientación sobre la implementación de contenedores de Tableau en Kubernetes, consulte nuestro proyecto de GitHub respaldado por la comunidad: https://github.com/tableau/tableau-server-in-kubernetes(El enlace se abre en una ventana nueva).

Personalización de la imagen

Establecer variables de entorno en el momento de la creación

Un subconjunto de variables de entorno que pueden personalizar su imagen solo se puede configurar cuando se ha creado la imagen. Esto incluye usuario, grupo y otras propiedades que requieren privilegios raíz dentro del contenedor. Las acciones raíz no están disponibles de forma predeterminada en tiempo de ejecución. Además, puede ser útil incluir ciertas variables de entorno en la imagen en el momento de la creación para que no tengan que configurarse cada vez que se ejecuta la imagen. Todas estas variables de entorno se pueden configurar al pasar un archivo de entorno al script de creación de imagen.

Archivo de entorno

El archivo de entorno se puede pasar al script de creación de imagen mediante el argumento -e. El archivo debe ajustarse a este formato:

<KEY>=<VALUE>
<KEY>=<VALUE>
Ejemplo de uso:

Cree un archivo de entorno con el formato correcto:

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

Pase el archivo al generador de imágenes

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

Cualquier variable de entorno se puede configurar en el archivo de entorno. Eche un vistazo a la sección Variables de entorno para ver la lista completa.

Las variables de entorno de tiempo de creación solo se pueden configurar cuando se ejecuta este script para crear la imagen:

Nombre del entorno Predeterminado Descripción
BASE_IMAGE_URL Utilice el comando de la herramienta de creación: build-image -b La imagen predeterminada especificada en la herramienta de creación de imágenes y Dockerfile es la única imagen base admitida oficialmente. Este parámetro se puede usar para extraer una copia de esta imagen base específica de un repositorio de imágenes de Docker personalizado o definir una imagen base personalizada. Si elige usar una imagen base definida de forma personalizada (consulte Definición de una imagen base personalizada para obtener más detalles), es su responsabilidad asegurarse de que esté basada en UBI 8 (CentOS o RHEL 7 para versiones 2022.1 y anteriores) y contenga los recursos necesarios para ejecutar Tableau Server correctamente.
PRIVILEGED_TABLEAU_GID 997 El GID del grupo de Tableau privilegiado.
UNPRIVILEGED_TABLEAU_GID 998 El GID del grupo de Tableau sin privilegios.
UNPRIVILEGED_TABLEAU_UID 999 El UID del usuario que ejecuta procesos de Tableau (implementación de un solo usuario).
UNPRIVILEGED_USERNAME tableau Nombre de cadena del usuario sin privilegios.
UNPRIVILEGED_GROUP_NAME tableau El nombre de cadena del grupo sin privilegios.
PRIVILEGED_GROUP_NAME tsmadmin El nombre de cadena del grupo con privilegios.
LANG en_US.UTF-8 Configuración regional.

Controladores, certificados y otros archivos

La imagen de Tableau Server no incluye controladores o conectores de datos previamente instalados. Deberá crear un script de configuración Bash que mande al script build-image instalar los conectores de datos que necesitará Tableau Server. Estos son los pasos que debe seguir:

  1. Asegúrese de que la herramienta de configuración de Tableau Server en un contenedor esté instalada correctamente.

  2. Descargue el controlador de la página de controladores de Tableau: https://www.tableau.com/es-es/support/drivers(El enlace se abre en una ventana nueva).

  3. Copie el archivo del controlador descargado en el directorio de archivos del cliente en la herramienta de configuración de Tableau Server en un contenedor.

    El directorio customer-files se copiará en la imagen de Docker. Estará ubicado en la siguiente ruta dentro del contenedor:/docker/customer-files.

  4. Edite el archivo en la herramienta de configuración de Tableau Server en un contenedor customer-files/setup-script para decirle a Docker cómo instalar el controlador.

    El script es solo un archivo Bash ejecutable que se ejecuta cuando se crea la imagen de Docker. (Técnicamente, se puede usar para realizar cualquier acción arbitraria en la imagen, incluida la configuración del entorno, la configuración, etc.).

    El script se ejecutará dentro del contenedor, así que tenga en cuenta que los comandos deben funcionar cuando se ejecutan dentro de la imagen de Tableau Server en un contenedor.

    Por ejemplo, si desea instalar un controlador denominado mydriver.rpm es posible que desee escribirlo en setup-script:

    yum install -y /docker/customer-files/mydriver.rpm
Vistas administrativas de Tableau

Las vistas administrativas de Tableau requieren la instalación del controlador PostgreSQL. Si planea usar estas vistas, deberá seguir los pasos anteriores e instalar el controlador PostgreSQL. Para obtener más información sobre las vistas administrativas, consulte Vistas administrativas .

Definición de una imagen base personalizada

La imagen base predeterminada que se utiliza para crear el contenedor de Tableau Server es una imagen UBI 8 (CentOS 7.x para versiones 2022.1 y anteriores) procedente de Docker Hub. En algunos casos, es posible que desee configurar la herramienta de creación de imágenes para extraer la imagen de otro repositorio de imágenes de Docker. Por ejemplo, su empresa puede administrar un repositorio de Docker interno y no quiere que build-image se extraiga de un repositorio público. Siga estos pasos para personalizar la ruta de la imagen base:

  1. Utilice el siguiente comando para ver el nombre y la versión de la imagen base predeterminada de la herramienta de build-image actual:

    ./build-image -b
  2. Extraiga el nombre y la versión de la imagen base que coincida exactamente con Docker Hub y guárdelos o almacénelos en su repositorio de imágenes preferido (según las políticas de imagen de su empresa).

  3. Vuelva a la herramienta de creación de imágenes. Cree o modifique un archivo de entorno existente para incluir la clave de entorno BASE_IMAGE_URL con el valor establecido en una nueva ruta de registro de imagen de Docker:

    BASE_IMAGE_URL=<custom-image-registry-path>
  4. Cree la imagen con el archivo de entorno:

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

Estos pasos le permiten especificar una imagen base completamente diferente. Esta capacidad solo es compatible con imágenes basadas en UBI 8 (RHEL y CentOS 7.x para versiones 2022.1 y anteriores) y se proporciona para ayudar a los clientes a crear imágenes más seguras.

El uso de una imagen base que no sea la predeterminada especificada por Tableau conlleva el riesgo de producir una imagen que no se inicia o no funciona correctamente. Si elige usar una imagen base personalizada, usted es responsable de asegurarse de que la imagen base permita que Tableau Server se ejecute correctamente. Recomendamos usar la imagen base predeterminada a menos que su organización no la admita por algún motivo, como problemas de seguridad.

La imagen base personalizada debe basarse en UBI 8 (RHEL 7 o CentOS 7 para versiones 2022.1 y anteriores). El uso de cualquier otra distribución resultará en una imagen no compatible.

Uso de repositorios internos para yum y pip

La imagen de Tableau Server en contenedor está configurada para usar los repositorios yum y pip predeterminados para extraer paquetes dependientes. Si necesita editar, eliminar o agregar repositorios (por ejemplo, los repositorios internos pueden usarse para mejorar la seguridad), deberá modificar uno de los scripts de inicialización de la herramienta de configuración de imagen.

Modifique el script <setup_tool>/src/image/init/setup_default_environment.bash en el código fuente para usar los repositorios internos. Guarde todos los archivos del repositorio necesarios para el repositorio interno en el directorio <setup_tool>/src/image/init/. El directorio se copiará a la imagen de Docker.

Imágenes base y seguridad

Muchos clientes ejecuta herramientas de análisis de contenedores (como AquaScan o TwistLock) en la imagen de Docker de Tableau Server generada. Estas herramientas de seguridad generan un informe de posibles vulnerabilidades de seguridad (o vulnerabilidades y exposiciones comunes o CVE). Hay dos tipos de vulnerabilidades asociadas con una imagen de Tableau Server en un contenedor:

  • CVE asociados con Tableau Server o con una biblioteca de la que tenemos una dependencia.
  • CVE asociados con la distribución de Linux subyacente.

Tableau es responsable de los CVE asociados directamente con Tableau Server. El equipo de seguridad analiza estos informes para determinar el impacto y la gravedad para ayudar a priorizar los problemas para su resolución. La prioridad y los plazos de remediación de referencia serán determinados por la puntuación de gravedad CVSS original. Las actualizaciones de seguridad de componentes de terceros generalmente no se incluirán en versiones anteriores a menos que haya una ruta de código ejecutable que exponga la vulnerabilidad.

Con el modelo de distribución en contenedores, los clientes se enfrentan a un conjunto diferente de desafíos en torno a las vulnerabilidades de la capa del sistema operativo. Tradicionalmente, con Tableau Server, Tableau concentraría sus esfuerzos en entregar una aplicación segura y el cliente es responsable de administrar los sistemas operativos (Linux o Windows). Sin embargo, con la contenedorización, el sistema operativo (UBI 8 a partir de la versión 2023.3, CentOS 7.x o RHEL 7.x para versiones 2022.1 y anteriores) y la aplicación se empaquetan juntos en un contenedor. Tableau asume la responsabilidad del CVE asociado con Tableau Server y de determinar si un CVE de una biblioteca de terceros afectaría a los clientes. Sin embargo, los clientes deben ser responsables de los problemas de la capa del sistema operativo. Para que los clientes aborden los problemas de seguridad en la capa del sistema operativo, los clientes pueden reemplazar la capa del sistema operativo con su propia versión (UBI 8 para versiones 2022.3 y posteriores, RHEL o CentOS 7.x para versiones 2022.1 y anteriores). Al hacer esto, debe comprobar que Tableau Server se ejecute correctamente. La eliminación de una biblioteca de la que depende Tableau Server debido a problemas de seguridad puede resultar en una instancia no funcional de Tableau Server. Si cambia la capa del sistema operativo base, los clientes son responsables de comprobar que funciona.

Mejora de la seguridad de Tableau Server en un contenedor

Puede aplicar los pasos de refuerzo estándar a Tableau Server en un contenedor. Para obtener más información sobre cómo fortalecer Tableau Server, consulte Lista de comprobación de mejora de la seguridad.

Ejemplos de configuración de la implementación

Docker

Uso básico de Tableau Server en un contenedor
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
Uso básico de Tableau Server en un contenedor con usuario 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>
Modo solo TSM
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Uso básico de varios nodos
Nodo inicial

Opción 1: use esto si la configuración del servidor (CONFIG_FILE ) especifica una topología de varios nodos:

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>

Opción 2: utilice esta opción si desea una implementación de varios nodos incluso si la configuración del servidor no especifica la topología de varios nodos:

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 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 el uso de datos
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 de 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>

Ejecutar contenedor

docker run \
-v <empty-data-dir>:/var/opt/tableau \
--hostname=localhost \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Restauración básica a partir de una copia de seguridad de nodo único
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>

 

 

¡Gracias por sus comentarios!