Usar una imagen de Tableau Server en un contenedor

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 (VM) 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.

Para probar la imagen de Tableau Server en un contenedor rápidamente en escenarios de pruebas conceptuales, consulte Guía de inicio rápido: Tableau Server en un contenedor.

Límites de Tableau Server en un contenedor

  • Tableau Server en un contenedor solo admite la activación de licencias mediante Server ATR. La activación sin conexión mediante Server ATR se admite en 2023.1 y versiones posteriores. Esta funcionalidad está disponible en Contenedores pero requiere aprobación y pasos adicionales. Si necesita ejecutar Tableau Server en un contenedor en un entorno aislado o sin conexión, póngase en contacto con su representante de cuentas para obtener más información.
  • 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.

Imagen de Tableau Server en un contenedor

La imagen de Tableau Server en un contenedor es una imagen de Docker que contiene todo Tableau Server. La imagen se crea mediante la herramienta de configuración de Tableau Server en un contenedor. Cuando se crea, la imagen incluye Tableau Server, pero aún no se ha inicializado. El usuario predeterminado en una imagen de Tableau Server en un contenedor es un usuario de no raíz sin privilegios.

Requisitos previos

Ejecute el script configure-container-host

Cuando Tableau Server se instala sin un contenedor, ciertos límites de recursos y propiedades de volcado de núcleos se cambian como parte del proceso de instalación. Esto se realiza para ayudar a optimizar el rendimiento de Tableau Server. Una imagen de Tableau Server en un contenedor no tiene la capacidad de realizar estos cambios en el equipo host, por lo que recomendamos ejecutar el script configure-container-host que se proporciona en la herramienta de configuración de Tableau Server en un contenedor en cualquier máquina donde se ejecutan las imágenes de Tableau Server en un contenedor. Esto ayudará a garantizar que el rendimiento de la imagen de Tableau Server en un contenedor esté a la par con su contraparte sin contenedor.

Para ejecutar el script configure-container-host:

  1. Busque el script (configure-container-host) en el directorio superior de la herramienta de configuración de Tableau Server en un contenedor.
  2. Cópielo en los entornos en los que planea ejecutar Tableau Server.

  3. Determine la cuenta o el ID de usuario sin privilegios que se ejecutará como usuario predeterminado de la imagen de Tableau Server en un contenedor. Este usuario debe existir en el equipo host y debe coincidir con el ID de usuario establecido en la variable de entorno UNPRIVILEGED_TABLEAU_UID del contenedor de Tableau Server. Si no configuró esto al crear su imagen de Docker, el ID de usuario sin privilegios predeterminado dentro del contenedor es 999. Si utiliza la asignación de usuarios de Docker, este ID de usuario debe corresponder con el usuario que existe en el equipo host.

  4. Ejecute el script como raíz:

    sudo ./configure-container-host -u <uid>

Ejecución de la imagen

Para ejecutar una imagen de Docker de Tableau Server en un contenedor, el comando más sencillo para ejecutarla es el siguiente:

docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>

Esto ejecutará la ventana en segundo plano y, después de un tiempo, dará como resultado una instancia completamente instalada de Tableau Server. Tableau Server puede tardar de 10 a 20 minutos en iniciarse por completo, según el hardware del equipo que ejecuta la imagen. Puede confirmar que el contenedor se está ejecutando utilizando el comando docker ps. Una vez que Tableau Server esté operativo, deberá crearse la cuenta de administrador inicial de Tableau Server. Este paso se puede automatizar. Para obtener más información, consulte Automatizar al administrador inicial de Tableau Server.

Resumen de argumentos de ejecución básicos

Todas las opciones utilizadas en el comando Docker run son necesarias, a menudo se proporcionarán más opciones para aprovechar diferentes funciones en la imagen. Por ahora, echemos un vistazo más de cerca a los argumentos utilizados en el comando Docker run más simple para Tableau Server en un contenedor:

ArgumentoDescripción
-e LICENSE_KEY=<key>Tableau Server debe tener licencia. Esta variable de entorno almacenará la clave que se usará para obtener una licencia del servidor. Este es un componente necesario del proceso de inicialización. Puede proporcionar varias licencias separadas mediante comas.
-p 8080:8080Esto indica a Docker que exponga el puerto 8080 dentro del contenedor y lo enlace al puerto 8080 del equipo host. El primer valor de 8080 es configurable, cambiarlo modificará el puerto asignado en el host. Tableau Server espera de forma predeterminada recibir tráfico de usuarios en el puerto 8080 dentro del contenedor, puede elegir si exponer este puerto en un puerto de host diferente o no hacerlo en absoluto.

 

Automatizar al administrador inicial de Tableau Server

Cuando Tableau Server se inicia por primera vez, se debe crear un usuario administrador inicial antes de permitir las conexiones de red remotas a Tableau Server. Esto se puede hacer ejecutando el comando tabcmd initialuser -s localhost:8080 -u <username> -p <password> dentro del contenedor. También puede configurar las credenciales de administrador mediante variables de entorno. TABLEAU_USERNAME y TABLEAU_PASSWORD o TABLEAU_PASSWORD_FILE (preferidos) son las variables de entorno que se pueden establecer para pasar las credenciales de administrador iniciales. Para obtener más información sobre la administración de contraseñas, consulte Administración de contraseñas.

Para obtener más información sobre el comando tabcmd initialuser, consulte initialuser.

Ejemplo

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>

Licencias

Licencias en contenedores

La licencia de Tableau Server en un contenedor utiliza el servicio de autorización para ejecutar (ATR) del servidor para activar Tableau Server implementado en entornos en la nube, virtuales o contenedores sin quedarse sin activaciones de licencias. El servicio ATR logra esto proporcionando concesiones a corto plazo con duración configurable (duración ATR) hasta que se cumpla la fecha de caducidad de la clave de producto. ATR abstrae las licencias de Tableau de los cambios de hardware subyacentes, que son un aspecto fundamental de las implementaciones de contenedores. Dado que el servidor ATR requiere que el contenedor pueda acceder al servicio ATR alojado en Tableau, los contenedores necesitan acceso a Internet. Tableau Server en un contenedor no admite la activación manual o sin conexión. Consulte Activar Tableau Server mediante el servicio de autorización para ejecutar (ATR) para obtener más información.

Importante: Debe proporcionar ya sea la variable de entorno LICENSE_KEY o LICENSE_KEY_FILE (configure solo una).

Al actualizarTableau Server en un contenedor, si ha utilizado el número máximo de activaciones para su licencia, Tableau Server no puede comenzar hasta que haya transcurrido la duración de ATR (4 horas/14 400 segundos de forma predeterminada). Para obtener más información sobre cómo configurar o cambiar la duración de ATR, consulte Activar Tableau Server mediante el servicio de autorización para ejecutar (ATR)(El enlace se abre en una ventana nueva).

Variable de entorno de licencia

Tableau Server en un contenedor admite la configuración de claves de licencia mediante una variable de entorno: LICENSE_KEY puede contener una o varias claves (-e LICENSE_KEY="<key1> , <key2>") mediante una lista separada por comas.

Ejemplo

docker run \
-e LICENSE_KEY="<key1>, <key2>" \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Archivo de licencia

Tableau Server en un contenedor también admite claves de licencia de configuración mediante un archivo. Monte un archivo en la ubicación predeterminada del archivo de clave de licencia en el contenedor (/docker/config/license_file) o según lo especificado por la variable de entorno LICENSE_KEY_FILE.

Ejemplo

docker run \
-v <full-path-to-license-file>:/docker/config/license_file \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Tiempo de concesión de la licencia solicitada

Puede especificar el tiempo de concesión de la licencia ATR en un contenedor de Tableau Server configurando la variable de entorno REQUESTED_LEASE_TIME. Debe proporcionar el tiempo de concesión en segundos, con una duración mínima de 3600 segundos (o 1 hora). Se recomienda que reduzca el tiempo de concesión al experimentar y probar Tableau Server para reducir la probabilidad de alcanzar el límite máximo de concesión activado. Para implementaciones de producción, se recomienda encarecidamente no configurar el parámetro REQUESTED_LEASE_TIME (y por lo tanto, utilizar el valor predeterminado), de modo que Tableau pueda determinar el tiempo de concesión ideal.

Ejemplo

docker run \
...
-e REQUESTED_LEASE_TIME=<time-in-seconds> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Ejecución de una imagen no inicializada

Tableau Server tiene dos fases de instalación, primero se instalan los servicios de Tableau Services Manager (TSM). En una instalación local típica, este paso es un momento para que los administradores del servidor registren su servidor, activen sus licencias y configuren el servidor para que se comporte de la manera que desean. La segunda fase de instalación es la configuración e inicio de los procesos de Tableau Server que administran el tráfico de usuarios finales y la lógica empresarial relacionada.

El comportamiento predeterminado de las imágenes de Tableau Server en un contenedor es automatizar todos los pasos de instalación para que el comando docker run de como resultado final un servidor completamente funcional. Sin embargo, si desea iniciar una imagen de Tableau Server en un contenedor y hacer que solo ejecute los servicios de TSM (lo que un administrador de servidor esperaría si ejecutaran initialize-tsm), puede hacerlo pasando la marca TSM_ONLY como una variable de entorno.

Por ejemplo:

docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Interactuar con la imagen

Cuando tiene una imagen de Tableau Server en un contenedor en ejecución, puede llamar directamente a los comandos TSM y tabcmd. Esas herramientas se agregan directamente a la ruta de acceso del entorno del usuario pid 1 (que es la raíz en este momento). Esto significa que usted puede llamar a los comandos TSM y tabcmd de la siguiente manera:

docker exec -it <container> tsm status -v
docker exec -it <container> tabcmd initialuser -s localhost -u <admin> -p <secret>

También es posible abrir un shell en el contenedor para realizar operaciones más generales. Esto generalmente no se recomienda excepto para fines de depuración:

docker exec -it <container> bash

Interfaz web y CLI remota de TSM

De forma predeterminada, no se puede acceder a la interfaz web ni a la CLI remota de TSM. Esto se debe a que requiere un nombre de usuario y una contraseña para autenticarse y, de forma predeterminada, el usuario que ejecuta procesos de Tableau Server en el contenedor no recibe una contraseña. Esto se hace por razones de seguridad (no recomendamos enviar imágenes con una contraseña predeterminada dentro, ya que permitiría el acceso remoto). En algunos casos, la interfaz web de TSM y la realización de llamadas de acceso remoto mediante la CLI de TSM pueden resultar útiles. Si desea utilizar estas funciones, deberá seguir los pasos que se describen a continuación para crear una cuenta de usuario de acceso remoto.

Para obtener información más detallada sobre la interfaz web y la CLI de TSM, consulte Iniciar sesión en la interfaz de usuario web de Tableau Services Manager.

Crear un usuario remoto de TSM

Especifique las variables entorno TSM_REMOTE_UID y TSM_REMOTE_USERNAME al crear una imagen de Tableau Server en un contenedor con la herramienta de configuración. La creación de una cuenta habilitada para TSM en la imagen requiere acceso privilegiado en la imagen que no está disponible en tiempo de ejecución y, por lo tanto, solo se puede realizar cuando la herramienta de configuración de Tableau Server en un contenedor crea la imagen de Docker (build-image ).

Ejemplo de un archivo de environment de la herramienta de configuración de Tableau Server en un contenedor:

TSM_REMOTE_UID=1010
TSM_REMOTE_USERNAME=myuser

Establecer la contraseña para el usuario remoto de TSM

La imagen de Tableau Server en un contenedor requiere una contraseña para la cuenta cuando se ejecuta la imagen. Hay dos formas de establecer la contraseña para esta cuenta.

Archivo de secretos (recomendado)

Cree un archivo llamado remote-user-secret , escriba la contraseña en el archivo y móntela en el contenedor en tiempo de ejecución. TSM_REMOTE_PASSWORD_FILE determina la ubicación esperada (la ubicación predeterminada es/docker/config/remote-user-secret ) del archivo de secretos en el contenedor.

Ejemplo de archivo secreto de usuario remoto:

mypassword

Ejemplo de comando docker run:

docker run \
-e LICENSE_KEY=<key>
-v {absolute-path}/remote-user-secret:/docker/config/remote-user-secret
-p 8080:8080 \
-p 8850:8850 \
-d <Tableau Server in a Container image ID or tag>
Variable de entorno

También puede configurar la variable de entorno TSM_REMOTE_PASSWORD al iniciar la imagen de Docker.

Ejemplo de comando docker run:

docker run \
-e LICENSE_KEY=<key>
-e TSM_REMOTE_PASSWORD=<password>
-p 8080:8080 \
-p 8850:8850 \
-d <Tableau Server in a Container image ID or tag>

Notas de seguridad

  • El puerto 8850 debe estar expuesto para recibir tráfico de solicitudes de TSM.
  • Si la contraseña no se establece correctamente en la imagen en tiempo de ejecución, el contenedor se cerrará inmediatamente.
  • TSM se basa en el sistema de cuentas de usuario de Linux de la imagen. En este caso, la cuenta está restringida dentro de la imagen. Esto significa que la cuenta tendrá un shell restringido y se limitará a ejecutar dos comandos: /bin/true y passwd.

Rotar la contraseña del usuario remoto de TSM

Si desea rotar la contraseña de la cuenta del usuario remoto de TSM, puede hacerlo utilizando cualquiera de estas opciones:

Inicie un nuevo Tableau Server en un contenedor

La contraseña de la cuenta se establece cada vez que se inicia el contenedor. Si conserva los datos de Tableau fuera del contenedor, comenzar una imagen nueva con una nueva contraseña rotará de manera efectiva la contraseña.

  1. Apague y elimine la imagen en ejecución
  2. Establezca un nuevo valor de contraseña en las variables de entorno TSM_REMOTE_PASSWORD o TSM_REMOTE_PASSWORD_FILE (ver arriba) al configurar la imagen.
  3. Inicie la imagen de nuevo.
Rotar la contraseña manualmente dentro de un contenedor en ejecución

Si no desea apagar la imagen, aún puede rotar la contraseña manualmente.

  1. Abra un shell en el contenedor en ejecución.
  2. Inicie sesión como cuenta de usuario remoto mediante el comando su .
  3. Ejecute el comando passwd para aplicar la contraseña.

    Advertencia: Estas rotaciones manuales solo se conservan mientras permanezca la capa de escritura de la instancia del contenedor. Si elimina el contenedor, los cambios manuales no se aplicarán cuando se inicie un nuevo contenedor.

 

Opciones de configuración de iniciales

La configuración de Tableau Server en un contenedor es esencial para obtener el comportamiento de Tableau Server que desee. Tableau Server en un contenedor es una instalación limpia de Tableau Server, por lo que debe proporcionar la misma información al contenedor que al configurar Tableau Server fuera de un contenedor.

Variables de entorno de tiempo de ejecución

Las siguientes variables de entorno de tiempo de ejecución le indican a la imagen de Tableau Server en un contenedor cómo implementar Tableau Server. Un subconjunto de estos se describirá con más detalle.

Todos estos valores se diseñan para reemplazarlos de forma que se consiga una mayor flexibilidad para la configuración.

Nombre del entornoPredeterminadoDescripción
ACCEPTEULA0Se establece automáticamente en 1 cuando se crea una imagen la herramienta de configuración de Tableau Server en un contenedor.
LICENSE_KEY Se establece en la clave de licencia que se usará para obtener una licencia para el servidor. Acepta varias licencias que se separan mediante comas.
LICENSE_KEY_FILE/docker/config/license_file Ruta de acceso del archivo al archivo de licencia. El formato del archivo de licencia debe ser una clave de licencia por línea.
REGISTRATION_FILE/docker/config/tableau_reg.jsonRuta del archivo al archivo de registro dentro de la imagen. De forma predeterminada, contiene la información de registro que se proporcionó cuando se creó la imagen de Tableau Server en un contenedor. Esto se puede sobrescribir en tiempo de ejecución. Para obtener más información, consulte Activar y registrar Tableau Server.
REGISTRATION_DATA Otra forma de sobrescribir la información de registro en tiempo de ejecución. Esta variable de entorno debe establecerse en una cadena JSON serializada que contenga la misma información de registro que se encontraría en un archivo de registro de Tableau Server. Para obtener más información, consulte Activar y registrar Tableau Server.
TABLEAU_USERNAME Esto hace referencia a la cuenta de administrador inicial en Tableau Server. Se recomienda, pero es opcional. Si este usuario no está configurado, la cuenta de administrador inicial para Tableau Server deberá configurarse mediante tabcmd. Si esta variable se establece en un valor, también se requiere una contraseña. Esto solo se utiliza cuando Tableau Server se inicializa por primera vez. Al establecer este valor, Tableau Server en un contenedor intentará inicializar automáticamente al usuario. Para obtener más información, consulte Añadir una cuenta de administrador.
TABLEAU_PASSWORD Una contraseña de texto sin formato para el usuario de Tableau. Esto hace referencia a la cuenta de administrador inicial en Tableau Server. Esto es necesario si TABLEAU_USERNAME está especificado. Para obtener más información, consulte Añadir una cuenta de administrador.
TABLEAU_PASSWORD_FILE Una ruta de archivo a un archivo que contiene solo el texto de contraseña para el usuario de Tableau. Esto hace referencia a la cuenta de administrador inicial en Tableau Server. Esto es necesario si TABLEAU_USERNAME está especificado. Para obtener más información, consulte Añadir una cuenta de administrador.
CONFIG_FILE/docker/config/config.json

Ruta del archivo de configuración de TSM predeterminado. El archivo se utilizará para configurar Tableau Server. Para obtener más información, consulte Ejemplo de archivo de configuración.

No configure CONFIG_DATA si CONFIG_FILE usó

CONFIG_DATA Se puede utilizar como sustituto de CONFIG_FILE. Si desea proporcionar configuración al servidor sin montar un archivo externo, establezca esta variable de entorno en el contenido serializado equivalente de un archivo de configuración de TSM.

Ejemplo CONFIG_DATA="{\"configEntities\":{\"identityStore\":{\"_type\":\"identityStoreType\",\"type\":\"local\"}}}" Para obtener más información, consulte Ejemplo de archivo de configuración.

No configure CONFIG_FILE si CONFIG_DATA se usa

IGNORE_TOPOLOGY_CONFIG00 o 1. Si se establece en 1, el contenedor ignorará cualquier configuración relacionada con la topología presente en el archivo de configuración designado por CONFIG_FILE.
BACKUP_FILE/docker/config/backup/backup-file.tsbakUna ruta de un archivo de copia de seguridad de Tableau Server (.tsbak). Si se proporciona durante la inicialización, el servidor intentará una restauración.
INIT_CONTAINER00 o 1. Si se establece en 1, Tableau Server solo intentará inicializar TSM e inicializar Tableau Server y el contenedor saldrá al finalizar.
TSM_ONLY00 o 1. Equivalente a instalar las RPM de Tableau Server y ejecutar initialize-tsm. Solo se iniciarán los servicios de TSM (Tableau Services Manager). *Solo funciona si el contenedor se está inicializando por primera vez (esto no funcionará si se está iniciando Tableau Server en un contenedor con un directorio de servidor inicializado previamente).
BOOTSTRAP_INSTALL00 o 1. Indica si el servidor es o no un nodo inicial o adicional. Si se establece en 1, el contenedor esperará indefinidamente hasta que haya un archivo de arranque en la ubicación especificada por $BOOTSTRAP_FILE.
ALWAYS_WRITE_BOOTSTRAP_FILE0 0 o 1. Si se establece en 1, el contenedor escribirá un archivo de arranque (Bootstrap) en la ubicación indicada en BOOTSTRAP_FILE.
WAIT_FOR_BOOTSTRAP_FILE10 o 1. Si se establece en 1 (predeterminado), el contenedor lo detectó es una instalación de trabajador (BOOTSTRAP_INSTALL=1). El contenedor esperará indefinidamente hasta que se detecte un archivo ubicado en la ruta establecida en BOOTSTRAP_FILE. Si se establece en 0 cuando se ejecuta el proceso de inicio, se omitirá esta espera. Esto puede resultar útil en algunos casos de depuración.
BOOTSTRAP_FILE/docker/config/bootstrap/bootstrap.jsonRuta del archivo de arranque (bootstrap). Solo se aplica a los contenedores de trabajo. Este archivo solo debe apuntar a un archivo de arranque. El uso típico sería montar el directorio del archivo de destino (el valor predeterminado sería /docker/config/bootstrap) en el host.
BOOTSTRAP_DATASe puede utilizar como sustituto de BOOTSTRAP_FILE. Si desea proporcionar un archivo de arranque sin montar un archivo externo, establezca esta variable de entorno en el contenido serializado equivalente de un archivo de arranque de TSM. No configure BOOTSTRAP_DATA si usa BOOTSTRAP_FILE.
PORT_RANGE_MIN8800 Por razones de rendimiento, se recomienda exponer solo 200 puertos (8800-9000) en lugar del intervalo de puertos 8000-9000 predeterminado de Tableau Server local porque la exposición de 1000 puertos en Docker puede afectar negativamente al tiempo de inicio de la imagen de Docker. Consulte Exposición de licencias y puertos de TSM a continuación para obtener más información.
PORT_RANGE_MAX9000Se recomienda exponer solo 200 puertos (8800-9000) en lugar del intervalo de puertos 8000-9000 predeterminado de Tableau Server local porque la exposición de 1000 puertos en Docker puede afectar negativamente al tiempo de inicio de la imagen de Docker. Consulte Exposición de licencias y puertos de TSM a continuación para obtener más información.
HTTP_PROXY Para reenviar solicitudes http al servidor proxy, establezca esta variable de entorno para que apunte al host proxy. Por ejemplo, para configurar el proxy en el host de ejemplo para el puerto 8080, ejecute el siguiente comando: HTTP_PROXY=http://example-host:8080/
HTTPS_PROXY Para reenviar solicitudes https al servidor proxy, establezca esta variable de entorno para que apunte al host proxy. Por ejemplo, para configurar el proxy en el host de ejemplo para el puerto 443, ejecute HTTPS_PROXY=http://example-host:443/ Asegúrese de utilizar "http" cuando especifique la URL de la variable ambiental HTTPS_PROXY.
NO_PROXY Para omitir el servidor proxy, especifique excepciones en la variable no_proxy. Utilice esta variable si el servidor proxy no redirige direcciones internas. También debe añadir excepciones a esta configuración de proxy para asegurarse de que todas las comunicaciones internas de un clúster de Tableau Server local (si tiene uno ahora o tiene previsto configurarlo) no se redirijan al servidor proxy. Escriba el nombre de host y la dirección IP de cada equipo, también añada el nombre de host del contenedor. Además, incluya el nombre de host canónico (localhost) y la dirección IP (127.0.0.1) para el equipo local. Por ejemplo, para especificar excepciones para un clúster de tres nodos: NO_PROXY="localhost,127.0.0.1,hostname1,hostname2,hostname3,IP1,IP2,IP3"
COORDINATION_SERVICE_CLIENT_PORTCualquier puerto entre PORT_RANGE_MIN y PORT_RANGE_MAX Puerto de cliente para el servicio de coordinación.
COORDINATION_SERVICE_PEER_PORTCualquier puerto entre PORT_RANGE_MIN y PORT_RANGE_MAX Puerto del mismo nivel para el servicio de coordinación.
COORDINATION_SERVICE_LEADER_PORTCualquier puerto entre PORT_RANGE_MIN y PORT_RANGE_MAX Puerto líder para el servicio de coordinación.
LICENSE_SERVICE_VENDOR_DAEMON_PORTCualquier puerto entre PORT_RANGE_MIN and PORT_RANGE_MAX Puerto daemon de proveedor para el servicio de licencias.
AGENT_FILE_TRANSFER_PORTCualquier puerto entre PORT_RANGE_MIN y PORT_RANGE_MAX Puerto de transferencia de archivos para el servicio del agente.
CONTROLLER_PORTCualquier puerto entre PORT_RANGE_MIN y PORT_RANGE_MAX Puerto https para el servicio de controlador.
REQUESTED_LEASE_TIMEEl valor predeterminado actualmente es de 4 horas.Establezca el tiempo de concesión solicitado para las activaciones del servidor ATR. Debe proporcionar el valor de tiempo en segundos y la duración mínima es de 14400 segundos (o 4 horas). Por lo general, no se recomienda cambiar este valor para implementaciones de producción. Sin embargo, al desarrollar o crear prototipos con Tableau Server en un contenedor, es posible que desee establecer este valor en el valor mínimo para minimizar la pérdida de activaciones.

Variables de entorno Readonly

Estas son propiedades de entorno que describen algunas de las propiedades básicas de la imagen de Tableau Server en un contenedor. No se recomienda reemplazar estos valores.

Nombre del entornoPredeterminadoDescripción
PRE_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/pre_init_commandRuta a un archivo ejecutable/Bash personalizado del usuario que se ejecutará en Tableau Server antes de la inicialización de Tableau Server. Nota: Asegúrese de que el archivo tenga permiso de ejecución para todos los usuarios; de lo contrario, ejecute chmod +rx <path-to-pre-init-command-file>
POST_INIT_COMMAND_SCRIPT${DOCKER_CONFIG}/customer-files/post_init_commandRuta a un archivo ejecutable/Bash personalizado del usuario que se ejecutará en Tableau Server después de que el servidor esté en pleno funcionamiento y en ejecución. Nota: Asegúrese de que el archivo tenga permiso de ejecución para todos los usuarios; de lo contrario, ejecute chmod +rx <path-to-post-init-command-file>
DATA_DIR/var/opt/tableau/tableau_serverEl directorio de datos donde se deben escribir los bits de Tableau Server.
INSTALL_DIR/opt/tableau/tableau_serverEl directorio de instalación donde se escriben los bits de instalación de Tableau Server.
SERVICE_NAMETableau ServerNombre de la aplicación que se ejecuta en el contenedor.
SERVICE_VERSIONN/DVersión de Tableau Server instalada en el contenedor.
DOCKER_CONFIG/dockerDirectorio que almacena la configuración de Docker específica de Tableau.
ENV_FILE${DOCKER_CONFIG}/customer-files/environmentArchivo que contiene todas las modificaciones del entorno de usuario.

Variables de entorno en tiempo de creación

   
BASE_IMAGE_URLUtilice el comando de la herramienta de creación: build-image -bLa 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, 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. Para obtener más información sobre imágenes base personalizadas, consulte Usar una imagen de Tableau Server en un contenedor.
PRIVILEGED_TABLEAU_GID997 El GID del grupo de Tableau privilegiado.
UNPRIVILEGED_TABLEAU_GID998 El GID del grupo de Tableau sin privilegios.
UNPRIVILEGED_TABLEAU_UID999 El UID del usuario que ejecuta procesos de Tableau (implementación de un solo usuario).
UNPRIVILEGED_USERNAMEtableau Nombre de cadena del usuario sin privilegios.
UNPRIVILEGED_GROUP_NAMEtableau El nombre de cadena del grupo sin privilegios.
PRIVILEGED_GROUP_NAMEtsmadmin El nombre de cadena del grupo con privilegios.
LANGen_US.UTF-8Configuración regional.

 

Modificaciones de la configuración de Tableau Server

Estas variables de entorno se pueden sobrescribir mediante Docker para apuntar a cualquier archivo del contenedor. Por lo tanto, si desea especificar un punto de montaje diferente, puede hacerlo.

Tableau Server necesita un archivo de configuración para iniciarse y ejecutarse:

CONFIG_FILE=/docker/config/config.json

CONFIG_FILE hace referencia a un archivo de configuración de TSM. El formato y el uso son idénticos al archivo de configuración descrito en Ejemplo de archivo de configuración.

Comandos de preinicialización y posinicialización

Tableau Server ejecuta una secuencia de comandos de instalación automatizada diseñada para llevar al servidor de un estado preinicializado a una ejecución completa. Sin embargo, a veces es posible que desee agregar su propio código de automatización en el proceso de inicialización. Ofrecemos dos vínculos para hacerlo: el script de preinicialización y el script de posinicialización.

Script de preinicialización

Este script se ejecutará inmediatamente después de que se inicialicen los procesos básicos de TSM y antes de que se ejecuten otros pasos de configuración de TSM. Esto es útil para ejecutar comandos de configuración de TSM antes de que se ejecute Tableau Server. Para los cambios de configuración realizados en este punto, no es necesario aplicar los cambios porque la automatización normal de Tableau Server lo hace después de que se complete la secuencia de comandos.

Secuencia de comandos de posinicialización

Este script se ejecutará después de que se complete el resto de la inicialización de Tableau Server y la automatización de inicio. Tableau Server será completamente funcional y se estará ejecutando cuando se ejecute este script. Se deben aplicar los cambios de configuración realizados en este punto.

Instrucciones

Para agregar un script personalizado a uno de estos vínculos en la imagen, siga estos pasos:

  1. Escriba su guión personalizado.
  2. Copie el script personalizado en el directorio customer-files de Tableau Server, en la herramienta de creación de imágenes de Tableau Server en contenedores.
  3. Cambie el nombre del script para que sea pre_init_command o post_init_command, dependiendo de cuándo le gustaría que se ejecute el script (puede usar ambos vínculos de forma independiente).
  4. Asegúrese de que los permisos del script sean ejecutables por otro (chmod +rx <command-file> ) o que los permisos de propiedad coincidan con el usuario sin privilegios del contenedor.

Configuración del usuario

Tableau Server utiliza un usuario sin privilegios para ejecutar procesos de servidor. Este usuario se crea dentro del contenedor cuando se inicializa Tableau Server en un contenedor. De forma predeterminada, el usuario se denomina tableau con un UID de 999. Si va a implementar Tableau Server en un contenedor que utiliza monturas para almacenar datos externamente en el equipo host, es posible que prefiera cambiar el UID para asignar a un UID en el equipo host. El uso de espacios de nombres de usuario Docker es otra forma de lograr el mismo resultado.

Herramientas y utilidades de Tableau Server en un contenedor

Todas las funciones de herramientas y utilidades de Tableau Server en un contenedor se encuentran en este directorio:

/docker/

Administración de permisos de archivos

Al pasar los archivos de configuración al contenedor, querrá asegurarse de que el usuario que ejecuta el proceso de Tableau Server dentro del contenedor tenga permiso para acceder a los archivos. Para evitar conceder acceso a todos los usuarios a los archivos que se montan en el contenedor, puede cambiar el UID o el GID del usuario que ejecuta Tableau Server dentro del contenedor para que coincida con el propietario del usuario o grupo en el host. El usuario contenedor tendrá un UID determinado por la variable de entorno UNPRIVILEGED_TABLEAU_UID (valor predeterminado: 999) y GID determinado por UNPRIVILEGED_TABLEAU_GID(valor predeterminado: 998). Estos valores se pueden cambiar reemplazando la variable de entorno o puede usar una asignación Docker user namepace para asociar el UID/GID en el contenedor a un UID/GID diferente en el host.

Administración de contraseñas

Ciertas funcionalidades y opciones requieren que las credenciales de usuario se proporcionen como una configuración en el contenedor. Las credenciales de administrador inicial de Tableau son un ejemplo de credenciales opcionales que habilitan funcionalidades adicionales. En estos casos siempre proporcionamos dos métodos para establecer la contraseña. Primero, puede proporcionar un archivo que contenga la contraseña y proporcionar una ruta de acceso de archivo a una variable de entorno. Después, puede establecer una variable de entorno para almacenar la contraseña directamente.

La opción recomendada es proporcionar la contraseña como una ruta de acceso de archivo al contenedor. Proporcionar un secreto en un archivo es un patrón admitido en Docker, Docker Swarm, Kubernetes y otros sistemas de organización de contenedores. Almacenar contraseñas directamente en variables de entorno es un patrón común, por lo que lo admitimos, pero normalmente significa que la contraseña es menor segura.

Ejemplos

Echemos un vistazo a la credencial TABLEAU_USERNAME. Puede proporcionar la contraseña para el usuario como TABLEAU_PASSWORD o TABLEAU_PASSWORD_FILE. Al ejecutar una imagen de Tableau Server en un contenedor, puede proporcionar cualquiera de las variables de entorno para proporcionar la contraseña.

La variable de entorno de archivo de contraseña espera una ruta de acceso de archivo dentro del contenedor a un archivo de secretos válido. El archivo de secretos debe ser una sola línea que contenga el secreto.

Ejemplo de uso de un archivo de secretos
docker run \
...
-e TABLEAU_USERNAME=admin \
-e TABLEAU_PASSWORD_FILE=/etc/admin-secret \
-v <full-path-to-pw-file>:/etc/admin-secret \
-d <Tableau Server in a Container image ID or tag>
Ejemplo de contenido de un archivo de secretos
mypassword23879172

Alternativamente, se puede almacenar directamente la contraseña en texto sin formato en la variable de entorno de contraseña. Este enfoque se considera menos seguro, pero es más conveniente y un patrón común con los contenedores.

Ejemplo
docker run \
...
-e TABLEAU_USERNAME=admin \
-e TABLEAU_PASSWORD=password \
-d <Tableau Server in a Container image ID or tag>

Configuración de Tableau Server después de que se esté ejecutando

Una vez que Tableau Server se ha inicializado y se está ejecutando, la mejor manera de interactuar con el servidor es utilizar la herramienta CLI de TSM. Esta es la herramienta clásica de Tableau Server para realizar tareas administrativas. En el futuro, permitiremos que Tableau Server reaccione a los cambios en la configuración estática proporcionada en la variable de entorno CONFIG_FILE entre ejecuciones. Pero por ahora, después de inicializar Tableau Server, debe interactuar con el servidor mediante las herramientas clásicas.

Para obtener más información sobre la línea de comandos de TSM, consulte Referencia de la línea de comandos de tsm.

Estado

Hay dos comprobaciones de estado básicas para Tableau Server que se proporcionan en la imagen. Estos se pueden usar para verificar la vitalidad y preparación del servidor.

Comprobación de la vitalidad

La comprobación de la vitalidad indica si los servicios de TSM se están ejecutando o no. Esto significa que indicará si los servicios de organización de Tableau Server funcionan. Este cheque se puede invocar aquí:

/docker/alive-check

Otra opción es exponer el puerto 8850 que ejecuta el servicio de Tableau Controller para proporcionar funciones administrativas a través de un navegador web. Se podría comprobar periódicamente el estado del servicio a través de comprobaciones de estado tcp.

Comprobación de la preparación

La comprobación de preparación indica si Tableau Server se está ejecutando y los servicios empresariales están listos para recibir tráfico. Puede determinarse con el siguiente script:

/docker/server-ready-check

Otra opción es utilizar comprobaciones de estado tcp en el puerto 8080 (o cualquier puerto con el que Tableau Server esté vinculado para recibir tráfico). A veces, este tipo de comprobación de estado tcp es más fiable que la comprobación lista para el servidor, ya que la comprobación lista del servidor se basa en el estado del servicio notificado a TSM, que a veces se puede retrasar a medida que se actualiza el estado del servicio.

Datos persistentes

A menudo, necesitamos apagar contenedores y volver a encenderlos sin perder ninguna información importante. Las imágenes Tableau Server en un contenedor admiten esto, ya que puede montar determinados directorios fuera del contenedor para que pueda destruir o eliminar completamente las instancias de contenedor y conservar los datos. Estos datos se pueden usar para iniciar otra instancia de contenedor y reanudar en el mismo momento en el que lo dejó el contenedor anterior.

Las siguientes secciones hablan de los diferentes tipos de estado administrado.

Datos de Tableau Server

Todos los datos del servidor se almacenan en el directorio de datos. El directorio de datos se encarga de almacenar todos los datos relacionados con el usuario y los metadatos de tiempo de ejecución del servicio. La externalización de estos datos significa que los datos del usuario se pueden conservar incluso después de que Tableau Server en un contenedor se elimine por completo.

Estos datos son transferibles y pueden usarse con un sistema de almacenamiento en bloque administrado en la nube, como los volúmenes de EBS en AWS.

Cuando se usa Tableau Server en un contenedor junto con el almacén de archivos externo, el directorio de datos debe estar en EBS. No utilice un sistema de archivos de red (por ejemplo, NFS) para el directorio de datos. El directorio del almacén de archivos externo puede estar en un volumen NFS.

Nombres de host estáticos

Tableau Server no gestiona bien los cambios dinámicos de nombre de host, por lo que es importante especificar el nombre de host interno del contenedor para que sea coherente entre las ejecuciones del contenedor. El nombre de host dentro de un contenedor es arbitrario y se puede establecer en cualquier valor. El uso de la opción --hostname permite especificar el nombre de host interno del contenedor. Compruebe que los contenedores subsiguientes que utilizan los mismos datos persistentes se ejecutan con el mismo valor de nombre de host.

Esto no debe confundirse con las instalaciones de servidor de varios nodos. En estos casos, a cada uno de los nodos adicionales se les debe asignar un nombre de host diferente. Importante: Cuando se reinicia un único contenedor, el nombre del contenedor de repuesto que usará los mismos datos persistentes para esa instancia debe coincidir.

Ejemplo completo

A continuación, se muestra un ejemplo en el que el directorio de datos se monta fuera del contenedor.

docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
--hostname=<static (internal) name of host machine> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Copia de seguridad y restauración

Tableau Server en un contenedor admite la creación de copias de seguridad de Tableau Server y la restauración de Tableau Server desde un archivo de copia de seguridad (.tsbak). El primer paso es ejecutar una imagen de Tableau Server en un contenedor, tener el archivo de copia de seguridad (.tsbak) montado en la imagen y establecer la variable de entorno con la ruta de acceso del archivo al archivo de copia de seguridad BACKUP_FILE. Además, debe proporcionar el archivo de configuración json de copia de seguridad en la variable de entorno CONFIG_FILE. El contenedor de Tableau Server automatiza el proceso de restauración incluso para implementaciones de varios nodos. Si en algún momento esta automatización no logra restaurar completamente el sistema, siempre puede recurrir a las herramientas y los procesos clásicos de Tableau Server, como los comandos de TSM, para interactuar con Tableau Server de la misma manera que lo haría con una implementación sin contenedor.

Para obtener más información sobre cómo realizar una copia de seguridad y restauración de una instancia estándar de Tableau Server, consulte Realizar una copia de seguridad y restauración completa de Tableau Server.

Copia de seguridad en el contenedor de Tableau Server

  1. Abra el shell dentro de Tableau Server en una versión de contenedor A. Cree archivos de copia de seguridad del repositorio y de copia de seguridad de topología y configuración.

    docker exec -it my-server bash
    
    # Just providing filename automatically produces the backup file at /var/opt/tableau/tableau_server/data/tabsvc/files/backups/
    tsm maintenance backup -f <repository-backup>.tsbak -d
    
    # Any filepath where current user(UNPRIVILEGED USER) can write.
    tsm settings export -f /var/opt/tableau/tableau_server/data/tabsvc/files/backups/<topology-conf-backup>.json
  2. Copie los archivos creados en el paso anterior en el equipo host. Cambie el permiso del archivo para que se establezca el permiso de lectura total para ambos archivos.

    docker cp my-server:/var/opt/tableau/tableau_server/data/tabsvc/files/backups/<repository-backup>.tsbak ./<repository-backup>.tsbak
    docker cp my-server:/var/opt/tableau/tableau_server/data/tabsvc/files/backups/<topology-conf-backup>.json ./<topology-conf-backup>.json
    chmod a+r ./<repository-backup>.tsbak ./<topology-conf-backup>.json
  3. Almacene los artefactos de copia de seguridad en un lugar seguro. Siga los pasos de restauración a continuación cuando sea necesario.

Restaurar dentro del contenedor de Tableau Server

Las copias de seguridad de cualquier versión compatible de Tableau Server (contenedor y no contenedor) se pueden restaurar dentro del contenedor de Tableau Server.

Requisitos previos
  • Archivo de copia de seguridad de Tableau Server.
  • Archivo json de configuración que contiene información de configuración y topología.
  • Nota: Es probable que tenga que cambiar los archivos de copia de seguridad para que tengan un conjunto de permisos de lectura total. Los archivos de copia de seguridad normalmente están bloqueados para el usuario que creó el archivo, el cual probablemente será diferente del usuario Tableau que se ejecuta en el contenedor.
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>

Notas:

  • Si está restaurando un sistema de varios nodos, también debe iniciar los otros nodos para que funcione la automatización de la restauración. Consulte la sección Tableau Server en un contenedor de varios nodos de este documento para obtener más información. Solo el nodo inicial requiere el archivo de copia de seguridad, el archivo de configuración de copia de seguridad y la licencia.
  • Los archivos de copia de seguridad solo deben proporcionarse la primera vez que se ejecuta el contenedor. Una vez que se inicializa el servidor, no es necesario seguir montando los archivos de copia de seguridad.

 

Migración desde Tableau Server a Tableau Server en un contenedor

Para migrar desde una instalación estándar de Tableau Server a Tableau Server en un contenedor, debe utilizar la técnica de copia de seguridad y restauración. Las copias de seguridad de cualquier versión compatible de Tableau Server (contenedor y no contenedor) se pueden restaurar dentro del contenedor de Tableau Server. Consulte la sección anterior Restaurar dentro del contenedor de Tableau Server para obtener más información.

Actualización de versiones de Tableau Server

Existen dos formas de actualizar Tableau Server. El método de la imagen de actualización enumerado en esta sección es la solución recomendada. Sin embargo, como alternativa, también es posible actualizar Tableau Server mediante copia de seguridad o restauración.

Actualización mediante la imagen de actualización

La imagen de actualización es una imagen de Docker que se puede crear utilizando el script build-upgrade-image de la herramienta de configuración de Tableau Server en un contenedor. El propósito de la imagen es únicamente actualizar el Tableau Server en un contenedor que se está ejecutando en ese momento.

Siga los pasos a continuación para realizar la actualización.

  1. Cree una imagen de actualización mediante el script build-upgrade-image. Se necesitan las RPM del servidor de Tableau de la nueva versión para crear este contenedor.
  2. Cierre el contenedor que actualmente ejecuta Tableau Server.
  3. Inicie la imagen de actualización al montar el mismo directorio de datos del cierre del contenedor en el paso anterior.
  4. El proceso de actualización lleva un tiempo, pero el servidor de Tableau se actualizará. Compruebe los registros de Docker para el proceso de actualización. El contenedor se cerrará después del proceso de actualización.
  5. Inicie un nuevo Tableau Server en un contenedor de una versión más reciente. Monte el mismo directorio de los pasos anteriores.

Ejemplo:

Digamos que tenemos un Tableau Server en un contenedor que ejecuta Tableau Server. Estas son algunas de las características de este ejemplo:

  • Tengo datos valiosos y no quiero perder ninguno durante el proceso de actualización. El directorio de datos debe conservarse fuera del contenedor.
  • El contenedor se llama my-server. La imagen de Docker se denomina tableau-server:versionA.
  • La versión del servidor my-server que se utiliza actualmente es la versión A.
  • La versión del servidor a la que deseo actualizar es la versión B.
  1. Obtenga las RPM de Tableau Server para la versión B. Cree una imagen de actualización.

    # For all the options available in the script
    ./build-upgrade-image -h
     
    # Frequently used command to create a upgrade-image
    ./build-upgrade-image --installer=<path to the tableau server version B> -i tableau-server:versionA -o tableau-server-upgrade:versionAB
  2. Detenga el contenedor my-server.

    docker stop my-server -t 120
  3. Inicie la imagen recién creada tableau-server-upgrade:versionAB. Monte el mismo directorio de datos del contenedor detenido anteriormente. El contenedor inicia el proceso de actualización a la versión B.

    docker run --name my-upgrade-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    tableau-server-upgrade:versionAB
  4. El contenedor se detendrá una vez que se complete la actualización. Compruebe los registros de Docker para ver los registros del proceso de actualización y asegúrese de que el proceso se complete correctamente. También puede comprobar el código de salida del contenedor de Docker para asegurarse de que el proceso de actualización se complete correctamente.

    # The log file /var/opt/tableau/tableau_server/logs/upgrade-console.log is created after 3-4 mins into the start of upgrade container. When the upgrade completes successfully, "upgrade is complete" log will be # seen.
    docker logs my-upgrade-server
    ...
    ...
    Verifying licensing state.
    Tableau Server has been upgraded to version near.20.0801.1050.
    >> The upgraded Tableau binary directory will be added to PATH for new shells. To get the
    >> updated path, either start a new session, or for bash users run:
    >> source /etc/profile.d/tableau_server.sh
    Starting service...
    Starting service...
    Job id is '12', timeout is 30 minutes.
    Service was started successfully.
    Status: RUNNING
    Tableau Server is Running
    upgrade is complete
  5. Detenga el contenedor my-upgrade-server. Inicie la nueva versión B de la imagen de Tableau Server en un contenedor y monte el directorio de datos desde el contenedor my-upgrade-server detenido

    # Stop the server.
    docker stop my-upgrade-server -t 120
    
    
    # Run the new version Hu
    docker run --name my-upgraded-server \
    -v <data-dir mount from previous step>:/var/opt/tableau \
    ...
    ...
    tableau-server:versionB

Actualización mediante el método de copia de seguridad/restauración

Siga los pasos de la sección Copia de seguridad y restauración de este documento. El único ajuste necesario para cambiar una operación de restauración de copia de seguridad en una operación de actualización es restaurar la copia de seguridad en una nueva versión de Tableau Server.

Tableau Server en un contenedor de varios nodos

Tableau Server en un contenedor de varios nodos hace referencia a una única implementación de Tableau Server distribuida en varios nodos. En este contexto, el nodo múltiple es el mismo que el de varios nodos de Tableau Server, donde determinados procesos se pueden ejecutar en otros nodos para aumentar la capacidad, la potencia de procesamiento, etc. Es distinto de la puesta en marcha de varios contenedores de Tableau Server individuales donde cada contenedor es un servidor independiente con sus propios datos diferenciados.

Tableau Server en un contenedor de varios nodos funciona de manera muy similar a una instalación de múltiples nodos de Tableau Server sin contenedor y utiliza el mismo mecanismo subyacente. Para obtener una descripción general de la configuración de una instalación de múltiples nodos de Tableau Server sin contenedor, consulte Instalaciones distribuidas y de alta disponibilidad de Tableau Server.

Este es un ejemplo:

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=<static (internal) 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=<static (internal) 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=<static (internal) name of host machine> \
-d <Tableau Server in a Container image ID or tag>

Exposición de licencias y puertos de TSM

Para que los nodos de trabajo se comuniquen con la instancia principal, necesitamos abrir puertos adicionales. Deberá permitir el tráfico desde otros nodos en la instancia de contenedor principal de Tableau Server en los siguientes intervalos de puertos:

Service Ports: 8800-9000
Postgres Port: 8060
Licensing Ports: 27000-27010

Tenga cuidado de cuántos puertos abre: Se recomienda exponer solo 200 puertos (8800-9000), en lugar del intervalo de puertos 8000-9000 predeterminado de Tableau Server local porque la exposición de 1000 puertos en Docker puede afectar negativamente al rendimiento y al tiempo de inicio de la imagen de Docker. Puede utilizar un intervalo de puertos más pequeño o más grande en función de la complejidad de la topología de Tableau Server. Por lo general, no recomendamos exponer menos de 100 puertos, de lo contrario corre el riesgo de que los servicios de un clúster no puedan hablar con determinados servicios. Si especifica su propio intervalo de puertos, asegúrese de exponer el puerto 8850 (esto se incluye implícitamente en el 8800-9000). El intervalo de puertos se especifica al establecer las variables de entorno PORT_RANGE_MIN y PORT_RANGE_MAX.

Los nodos adicionales también tendrán que exponer el intervalo de puertos de servicio (8800-9000), pero no el intervalo de puertos de licencia. Es importante tener en cuenta que estos intervalos de puertos son solo para permitir la comunicación entre procesos de Tableau Server. Estos puertos no deben exponerse a usuarios ni a otros dispositivos que no sean equipos que ejecuten contenedores de Tableau Server en un contenedor para el mismo clúster de varios nodos.

Estas reglas de puerto son coherentes con la documentación del firewall de Tableau Server. Para obtener más información, consulte Configurar el firewall local.

Resolver nombres de host

Los varios nodos de Tableau Server en un contenedor deben ejecutarse con nombres de host coherentes porque Tableau Server admite cambios dinámicos de nombre de host. Al ejecutar los nodos múltiples de Tableau Server, esos nodos querrán comunicarse entre sí. Los nodos de Tableau Server intentarán comunicarse entre sí utilizando los nombres de host que están configurados para que los varios nodos de Tableau Server en un contenedor los usen. Por ejemplo, si ejecuta el nodo inicial con un nombre de host "inicial", los nodos adicionales intentarán enviar tráfico a un host denominado "inicial". Hay varias formas de configurar imágenes para resolver nombres de host en otras imágenes. El archivo /etc/hosts de cada contenedor para asignar el nombre de host del contenedor arbitrario (es decir, "inicial") a la dirección IP que está ejecutando el otro contenedor.

Arranque de nodos adicionales

El contenedor de Tableau Server inicial que se ejecuta como parte de un clúster genera un archivo de arranque que los nodos adicionales posteriores deben usar para unirse al clúster. Una vez que se registran nodos adicionales en la topología del clúster, puede comenzar a asignar procesos de Tableau Server para que se ejecuten en ellos. Este proceso se puede automatizar por completo. Si ha proporcionado un archivo de configuración de Tableau Server (normalmente se proporciona al montar un archivo de configuración en la ruta de archivo especificada por CONFIG_FILE, ruta predeterminada: /docker/config/config.json) que especifica una topología de varios nodos, el nodo inicial esperará automáticamente hasta que se hayan registrado todos los nodos adicionales. Una vez registrada, la topología de varios nodos se aplicará en todo el clúster.

Una vez que el nodo inicial en Tableau Server en un contenedor termina de ejecutar Tableau Server, puede hacer que genere un archivo de arranque para los nodos adicionales.

docker exec -it <container-name> tsm topology nodes get-bootstrap-file -f $BOOTSTRAP_FILE

Este comando se llama automáticamente si establece el valor de ALWAYS_WRITE_BOOTSTRAP_FILE como 1.

Consideraciones sobre seguridad

El archivo de arranque contiene secretos de servidor que le permiten establecer una sesión de TSM con el nodo inicial. Esto significa que si un usuario malintencionado obtiene el archivo podría enviar comandos TSM al servidor durante un período de tiempo. El archivo también contiene datos que permitirían descifrar secretos de configuración del servidor. Este archivo debe tratarse como confidencial y solo los servicios y sistemas que se refieren directamente al establecimiento de una implementación de varios nodos deben poder acceder a él.

Caducidad del archivo de arranque

Los archivos de arranque tienen una sesión de tiempo limitado que dura 2 horas. En ese intervalo, los nodos adicionales no deberán proporcionar credenciales al nodo inicial para unirse como nodos adicionales. Es posible utilizar un archivo de arranque o Bootstrap una vez que la sesión ha expirado; sin embargo, implicaría tener que proporcionar credenciales al nodo inicial.

Transferencia del archivo de arranque (Bootstrap)

Los nodos de trabajo de Tableau Server en un contenedor deben disponer del archivo de arranque y consumirlo. El archivo de arranque deberá compartirse con todos los nodos de Tableau Server en un contenedor que desee usar como nodos de trabajo para esta implementación. Puede hacerlo de las siguientes maneras.

Transferir el archivo a través de una red segura

Parte de la automatización en el nodo inicial puede implicar el envío del archivo directamente a los nodos adicionales. Esto debe hacerse usando algún cliente/herramienta de transferencia de archivos seguros. Esto es probablemente más útil en escenarios donde se pueden generar varios archivos de arranque a lo largo de la vida del nodo inicial (para agregar más nodos adicionales en un momento posterior, posiblemente).

Utilice un montaje de archivo de red

Un montaje de archivo de red compartido por todos los contenedores de una implementación determinada es otra opción.

Otro

El objetivo final es transferir de forma segura un archivo producido por un contenedor y transferirlo a un conjunto específico de otros contenedores. Cualquier método que logre esto y sea seguro es suficiente.

Inicio de nodos adicionales

Para iniciar un nodo adicional de Tableau Server en un contenedor, inicie el contenedor con la variable de entorno BOOTSTRAP_INSTALL con el valor 1.

Esto indicará a la instancia de Tableau Server en un contenedor que se quede en reposo hasta que exista un archivo de arranque en la ruta especificada por la variable de entorno BOOTSTRAP_FILE (que también se puede configurar). Consulte la tabla de variables de entorno para ver la ruta de acceso predeterminada del archivo. Para que quede claro, si ejecuta una imagen de Tableau Server en un contenedor en "modo nodo adicional", el contenedor no iniciará supervisord ni ningún otro proceso que no sea un script bash que se ejecute como pid 1 que compruebe cada 5 segundos para ver si el archivo de arranque existe. Una vez que el archivo esté presente, Tableau Server en un contenedor procederá a inicializarse como un nodo adicional.

Configuración de nodos adicionales

La configuración de los nodos adicionales para ejecutar una topología específica funciona igual en una implantación normal de Tableau Server. También viene con los mismos requisitos, lo que significa que agregar nuevos procesos en un nodo puede requerir un reinicio en todo el clúster. Para obtener más información, consulte Configurar nodos.

Consideraciones sobre las funciones de Tableau Server

Algunas características de Tableau Server funcionan de manera diferente en contenedores. Esta sección habla de características específicas que tienen consideraciones especiales o diferentes en un entorno de contenedor.

Active Directory

Establecer el controlador de dominio de AD

Si planea usar Active Directory como un almacén de identidades para las páginas web y los sitios de Tableau Server, debe tener en cuenta una consideración adicional. Los servidores de Tableau que se ejecutan en entornos Linux determinan dinámicamente con qué controlador de dominio de AD comunicarse mediante el examen de su subred IP. A los contenedores se les pueden asignar direcciones IP arbitrarias y, en este caso, Tableau Server no necesariamente podrá usar su dirección IP para encontrar un controlador de dominio apropiado. Por esta razón, puede ser necesario configurar un controlador de dominio o nombre de host específico para que Tableau Server se comunique. Para hacerlo, siga estos pasos:

  1. Determine qué controlador de dominio desea que use Tableau Server y obtenga el nombre de host.
  2. Establezca la clave de configuración wgserver.domain.ldap.hostname en el nombre de host mediante las opciones de configuración de administración estándar de Tableau Server:

    • Establezca el valor en el archivo de configuración json CONFIG_FILE.
    • Use el comando de configuración TSM.

      tsm configuration set -k wgserver.domain.ldap.hostname -v <hostname>

Importar certificado de AD al almacén de claves de Tableau Server

De forma predeterminada, Tableau Server en un contenedor se comunica con AD a través de StartTLS siempre que se use un enlace simple. Por lo tanto, cuando el contenedor se ejecuta en esta configuración, es necesario importar el certificado del servidor AD al almacén de claves de Tableau Server; de lo contrario, la inicialización del servidor fallará. Para hacerlo, siga estos pasos:

  1. Cree un script pre-init-command (consulte la sección de script de preinicialización). Añada la siguiente línea para agregar el certificado de AD al almacén de claves del servidor de Tableau.

    ${INSTALL_DIR}/packages/repository.${SERVICE_VERSION}/jre/bin -importcert -noprompt -alias startTlsCert -file <mounted-certificate-path> -storetype JKS -storepass changeit -keystore ${DATA_DIR}/config/tableauservicesmanagerca.jks
  2. Monte el certificado del servidor de AD en la ruta de archivo proporcionada para el parámetro -file en el script pre-init-command.

Alternativamente, se puede deshabilitar la configuración predeterminada para comunicarse con AD a través de StartTLS. Establezca wgserver.domain.ldap.starttls.enabled en false para deshabilitar StartTLS. Pero no se recomienda.

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=<static (internal) 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=<static (internal) 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=<static (internal) 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=<static (internal) name of host machine> \
-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=<static (internal) name of host machine> \
-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=<static (internal) name of host machine> \
-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!Sus comentarios se han enviado correctamente. ¡Gracias!