---
schema_version: "1"
id: c4e210a3b506ca29ecfbfc45774da602aebe86a166e3821c960f8cdd1a0e6cca
title: Implementación de gráficos de Helm
collection: tableau
version: current
locale: es-es
portal_url: https://docs.salesforce.com/tableau/current/es-es/server/server-helm-deploy.md
canonical_url: https://help.tableau.com/current/server/es-es/server-helm-deploy.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 3eb94318b0eab8834c47a5f48dfd2122813eb2be8f7e72c4d834d39db4aa7d28
description: "Importante: Esta documentación asume un conocimiento de Helm y los gráficos de Helm y no intenta proporcionar ejemplos detallados y prescriptivos"
---
[Saltar al contenido principal](#main-content)

# Gráfico de Helm de Tableau Server: Implementar

**Importante**: Esta documentación asume un conocimiento de Helm y los gráficos de Helm y no intenta proporcionar ejemplos detallados y prescriptivos. Está diseñado para clientes que están familiarizados con Tableau Server y Helm y con los gráficos de Helm.

Este tema lo guía a través de los pasos de alto nivel para implementar Tableau Server en Kubernetes mediante un gráfico de Helm.

## Requisitos previos

Antes de empezar, asegúrese de que cumple los requisitos previos. Para más información, consulte [Gráfico de Helm de Tableau Server: requisitos previos](https://help.tableau.com/current/server/es-es/server-helm-prerequisites.htm).

### Descarga del gráfico de Helm

Los gráficos de Helm se enviarán como parte de la herramienta de configuración de Tableau Server en un contenedor (`tableau-server-container-setup-tool-<version>.tar.gz`) y se puede descargar desde la página [Descargar Tableau Server](http://tableau.com/es-es/support/releases/server/latest).

Después de la extracción, los archivos de gráfico de Helm necesarios se encuentran en el directorio `helm/tableau`.

## Descripción general rápida sobre el uso de un gráfico de Helm para implementar Tableau Server

**Importante**: Esta es una descripción básica sobre la implementación de Tableau Server mediante gráficos de Helm. No es el procedimiento completo. Se presupone el conocimiento de Helm y los gráficos de Helm.

Antes de comenzar, asegúrese de cumplir los requisitos previos para implementar Tableau Server mediante gráficos de Helm. Consulte [Gráfico de Helm de Tableau Server: requisitos previos](https://help.tableau.com/current/server/es-es/server-helm-prerequisites.htm) para obtener información detallada.

### Agregar su clave de licencia a values.yaml

Edite `values.yaml` y establezca su clave de licencia.

### Implementar Tableau Server de un solo nodo

Implemente una instancia de nodo único de Tableau Server ejecutando estos comandos en un símbolo del sistema (sustituya el espacio de nombres de su versión por `<namespace>`, por ejemplo `tableau` o `default`):

helm install tableau-server ./helm/tableau-server \\  
  -n <namespace> \\  
  --create-namespace \\
  -f ./helm/tableau-server/values-single.yaml

### Implementar Tableau Server de varios nodos

Implemente una instancia de varios nodos de Server ejecutando estos comandos en un símbolo del sistema, utilizando la misma convención de espacio de nombres que la anterior:

helm install tableau-server ./helm/tableau-server \\  
\-n <namespace> \\  
\--create-namespace \\
-f ./helm/tableau-server/values-multinode.yaml

## Runbook multinodo de EKS (espacio de nombres + PV de arranque estático)

En esta sección se describe el orden de las operaciones para EKS: espacio de nombres dedicado, complemento EFS CSI, IAM en el rol de nodo, PV de arranque estático y Helm.

1. Cree un espacio de nombres dedicado.
    
    Esto debe coincidir con `claimFef.namespace` en el PV de arranque. Este ejemplo usa `tableau`.
    
    kubectl create namespace tableau-server
    kubectl get namespace tableau
2. Confirme que el complemento EFS CSI existe.
    
    Si falta el complemento, créelo y espere hasta que el estado sea `ACTIVE`:
    
    kubectl get csidriver efs.csi.aws.com
    aws eks describe-addon \\
      --cluster-name <cluster-name> \\  
      --addon-name aws-efs-csi-driver \\
      --region <region> \\
      --query 'addon.status'
3. Confirme la clase de almacenamiento:
    
    Clase de almacenamiento `efs-bootstrap`: aplicar si aún no está presente. Consulte [Requisitos previos de Amazon Elastic Kubernetes Service (EKS)](https://help.tableau.com/current/server/es-es/server-helm-prerequisites.htm#EKS-Prereq-storageclass) para obtener más información.
    
    kubectl get csidriver efs.csi.aws.com
    aws eks describe-addon \\
      --cluster-name <cluster-name> \\  
      --addon-name aws-efs-csi-driver \\
      --region <region> \\
      --query 'addon.status'
4. Confirme el PV de arranque estático.
    
    `claimRef` debe hacer referencia al mismo espacio de nombres y nombre de PVC que crea el gráfico de Helm (`tableau-server-bootstrap`). Reemplace `fs-...` con su ID de sistema de archivos EFS:
    
    cat > /tmp/tableau-bootstrap-pv.yaml <<'EOF'
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: tableau-bootstrap-pv
    spec:
      capacity:
        storage: 1Gi
      volumeMode: Filesystem
      accessModes:
        - ReadWriteMany
    persistentVolumeReclaimPolicy: Retain
    storageClassName: efs-bootstrap
    claimRef:
      namespace: tableau
      name: tableau-server-bootstrap
    csi:
      driver: efs.csi.aws.com
      volumeHandle: <fs-xxxxxxxxxxxxxxxxx>
    EOF
    kubectl apply -f /tmp/tableau-bootstrap-pv.yaml
    kubectl get pv tableau-bootstrap-pv
5. IAM en el rol de instancia del nodo.
    
    Adjunte el cliente EFS y las directivas de solo lectura de EC2. Consulte [Requisitos previos de Amazon Elastic Kubernetes Service (EKS)](https://help.tableau.com/current/server/es-es/server-helm-prerequisites.htm#EKS-Prereq-storageclass) para resolver `<your-node-instance-role>` del grupo de nodos.
    
    Clase de almacenamiento `efs-bootstrap`: aplicar si aún no está presente. Consulte [Requisitos previos de Amazon Elastic Kubernetes Service (EKS)](https://help.tableau.com/current/server/es-es/server-helm-prerequisites.htm#EKS-Prereq-storageclass) para obtener más información.
    
    kubectl get csidriver efs.csi.aws.com
    aws eks describe-addon \\
      --cluster-name <cluster-name> \\  
      --addon-name aws-efs-csi-driver \\
      --region <region> \\
      --query 'addon.status'
6. Valores
    
    En `values-multinode.yaml` (o una superposición), establezca el modo fotovoltaico estático manual
    
    persistence:
      bootstrap:  
        createPV: false  
        volumeName: tableau-bootstrap-pv  
        storageClass: efs-bootstrap
7. Asegúrese de `image.repository`, `image.tag`y secrets/license se establecen según sea necesario.
8. Instale el gráfico de Helm
    
    Instale el gráfico en el mismo espacio de nombres que el PV `claimRef`:
    
    helm install tableau-server ./helm/tableau-server \\
      -n tableau \\  
      -f ./helm/tableau-server/values-multinode.yaml
9. Verifique el almacenamiento y los pods:
    
    kubectl get pv,pvc -n tableau
    kubectl get pods -n tableau -w
10. Estado de los PVC de datos
    
    Los PVC de datos pueden mostrar `Pending` brevemente hasta que se conecten los volúmenes de EBS. Todos los PVC deben hacer la transición a `Bound`, después `Running`y, finalmente, `READY 1/1`.
11. Topología (opcional)
    
    Si el enlace posterior a la instalación está deshabilitado, es posible que deba configurar el nodo `clustercontroller` y aplicar los cambios pendientes (consulte Automatización de topología posterior a la instalación (enlace) más adelante en este documento). El comando `tsm pending-changes apply` puede generar advertencias sobre la distribución de Index and Search Server o el conjunto del servicio de coordinación cuando tiene varios nodos de Tableau. Aborde estas advertencias como se documenta en [Index and Search Server](https://help.tableau.com/current/server/es-es/server_process_index-and-search.htm) y [Servicio de coordinación de Tableau Server](https://help.tableau.com/current/server/es-es/server_process_coordination.htm).

### Instalación personalizada

1. Personalizar valores
    
    cp ./helm/tableau-server/values.yaml   
    ./helm/tableau-server/my-values.yaml  
    \# Edit ./helm/tableau-server/my-values.yaml with your configuration
2. Instalar con valores personalizados
    
    helm install tableau-server ./helm/tableau-server -f ./helm/tableau-server/my-values.yaml

## Configuración

### Modos de implementación

#### Implementación de un solo nodo

La implementación de un solo nodo ejecuta Tableau Server como un contenedor monolítico.

Use `values-single.yaml` o establezca:

deploymentMode: "single"  
primary:  
  replicaCount: 1  
worker:  
  replicaCount: 0

#### Implementación de varios nodos

La implementación de varios nodos ejecuta un nodo principal y uno o más trabajadores. Establezca el recuento de trabajadores con `worker.replicaCount`: use 1, 2 o cualquier valor superior que permitan la capacidad del clúster y la topología de Tableau. El gráfico crea `tableau-server-worker-0 … tableau-server-worker-(N-1)` para `replicaCount: N`.

Use `values-multinode.yaml` (el ejemplo predeterminado usa dos trabajadores) o establezca explícitamente:

deploymentMode: "multinode"  
primary:  
  replicaCount: 1  
worker:  
  replicaCount: 3    # example: three workers

Alineación de topología: `values-multinode.yaml` se envía con una topología `config.configJson` de muestra (ID de nodo como `node1`, `node2`, `node3`). Si cambia `worker.replicaCount` o reorganiza los servicios, actualice esa topología (y cualquier asignación de proceso de Tableau relacionada) para que el número y las funciones de los nodos de TSM coincidan con su implementación. Consulte la ayuda de Tableau Server para obtener información sobre la agrupación en clústeres y el diseño de procesos.

### Opciones de configuración de clave

#### Configuración de imagen

image:  
  repository: tableau\_server\_image  
  tag: "latest"  
  pullPolicy: IfNotPresent  
  pullSecrets: \[\]

#### Licencia y secretos

secrets:
  licenseKey: "YOUR-LICENSE-KEY"  
  tsmRemotePassword: "password"  
  tableauUsername: "admin"  
  tableauPassword: "password"

Alternativamente, puede configurarlos usando variables de entorno:

env:  
  LICENSE\_KEY: "YOUR-LICENSE-KEY"  
  TSM\_REMOTE\_PASSWORD: "password"  
  TABLEAU\_USERNAME: "admin"  
  TABLEAU\_PASSWORD: "password"

Recomendamos utilizar un archivo independiente (por ejemplo, `secrets.yaml`) y pasándolo con el switch `-f`.

`secrets.yaml`:

secrets:  
  licenseKey: "YOUR-LICENSE-KEY"  
  tsmRemotePassword: "YOUR-TSM-PASSWORD"  
  tableauUsername: "YOUR-ADMIN-USER"  
  tableauPassword: "YOUR-ADMIN-PASSWORD"

Ejemplo de instalación/actualización con `secrets.yaml`:

helm upgrade --install tableau-server ./helm/tableau-server \\  
  -n default \\  
  -f ./helm/tableau-server/values-multinode.yaml \\  
  -f ./helm/tableau-server/secrets.yaml

**Nota:** Hacer referencia a un secreto de Kubernetes preexistente (por ejemplo, s`ecrets.existingSecret`) no se admite actualmente. El único método admitido es usar valores de gráfico con un archivo de valores secretos separado.

#### Repositorio de PostgreSQL externo

El gráfico de Helm no habilita un repositorio externo de forma predeterminada mediante claves de valores dedicadas.

Le recomendamos que siga estos pasos para habilitar un repositorio externo:

1. Implemente el gráfico y confirme que el gráfico principal esté en buen estado.
2. Ejecute los comandos `tsm external repository` de Tableau desde el pod principal.
3. Aplique los cambios pendientes.

Flujo de trabajo de ejemplo (descubrimiento y aplicación de comandos):

\# Discover command syntax for your Tableau version
kubectl exec -n default tableau-server-primary-0 -- sh -lc 'tsm topology external-services repository enable --help'  
\# After enabling external repository with Tableau-supported args/options:  
kubectl exec -n default tableau-server-primary-0 -- sh -lc 'tsm pending-changes apply -iw --ignore-prompt'  
kubectl exec -n default tableau-server-primary-0 -- sh -lc 'tsm status -v'

Notas:

- La configuración del repositorio externo es específica de la versión de Tableau (modo SSL, opciones de conmutación por error, campos de credenciales). Para obtener más información, consulte [Repositorio externo de Tableau Server](https://help.tableau.com/current/server/es-es/server_external_repo.htm) y [tsm topology](https://help.tableau.com/current/server/es-es/cli_topology_tsm.htm).
- Para las implementaciones de clientes, almacene las credenciales de la base de datos en Kubernetes Secrets y evite el texto sin formato en el historial de shell.

#### Almacenamiento persistente

persistence:  
  enabled: true  
  storageClass: "standard"  
  accessMode: ReadWriteOnce  
  size: 100Gi  
  
  # Bootstrap volume (required for multi-node)  
  bootstrap:  
    enabled: true  
    storageClass: "standard"  
    accessMode: ReadWriteMany  
    size: 1Gi  
    createPV: false

Para clústeres que usan EFS CSI estático (por ejemplo, con `mounttargetip`), Helm puede administrar tanto PV como PVC de arranque:

persistence:  
  bootstrap:  
    enabled: true  
    storageClass: "efs-bootstrap"  
    accessMode: ReadWriteMany  
    size: 1Gi  
    createPV: true  
    permissionsFix:  
      enabled: true  
    pv:  
      name: "tableau-bootstrap-pv"  
      csi:  
        driver: efs.csi.aws.com  
        volumeHandle: "fs-xxxxxxxx"  
        volumeAttributes:  
          mounttargetip: "10.x.x.x"

`permissionsFix.enabled` añade un contenedor init que `chown/chmods /docker/config/bootstrap` para que el proceso de Tableau (UID/GID 999:998) pueda escribir `bootstrap.json` en montajes EFS compartidos que son `root:root` de manera predeterminada.

Cuando `createPV: true`, el gráfico crea el PV de arranque a partir de valores (por ejemplo `tableau-bootstrap-pv`) y enlaza el PVC `tableau-server-bootstrap` a él.

Si administra el PV de arranque manualmente, cree `tableau-bootstrap-pv` primero, luego instale Helm con `createPV: false` y `volumeName: tableau-bootstrap-pv:`

apiVersion: v1
kind: PersistentVolume
metadata:
  name: tableau-bootstrap-pv
spec:
  capacity:
    storage: 1Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteMany
  persistentVolumeReclaimPolicy: Retain
  storageClassName: efs-bootstrap
  csi:
    driver: efs.csi.aws.com
    volumeHandle: fs-xxxxxxxx
    volumeAttributes:
      mounttargetip: 10.x.x.x

kubectl apply -f tableau-bootstrap-pv.yaml
kubectl get pv tableau-bootstrap-pv

#### Límites de recursos

primary:
  resources:
    limits:
      cpu: "4"
      memory: "8Gi"
    requests:
      cpu: "2"
      memory: "4Gi"

worker:
  resources:
    limits:
      cpu: "4"
      memory: "8Gi"
    requests:
      cpu: "2"
      memory: "4Gi"

#### Configuración del servicio

service:
  primary:
    type: ClusterIP  # or NodePort, LoadBalancer
    ports:
      http: 80
      https: 8080
      tsm: 8850

#### Ingress

ingress:
  enabled: true
  className: "nginx"
  hosts:
    - host: tableau.example.com
      paths:
        - path: /
          pathType: Prefix
  tls:
    - secretName: tableau-tls
      hosts:
        - tableau.example.com

#### Runbook de configuración de Ingress (ejemplo: controlador de ingreso NGINX)

1. Instale un controlador de Ingress en el clúster (requerido antes de habilitar la entrada del gráfico).
2. Establezca valores de Ingress en su archivo de valores:
    
    ingress:  
      enabled: true  
      className: "nginx"  
      annotations:  
        nginx.ingress.kubernetes.io/proxy-body-size: "64m"  
        nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"  
        nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"  
      hosts:  
        - host: tableau.example.com  
          paths:  
            - path: /  
              pathType: Prefix  
      tls:  
        - secretName: tableau-tls  
          hosts:  
            - tableau.example.com
3. Cree un registro DNS que apunte a tableau.example.com a su extremo de ingress/equilibrador de carga.
4. Cree un secreto TLS (o use cert-manager) en el espacio de nombres de la versión.
5. Implementar/actualizar el gráfico y verificar el ingress:
    
    helm upgrade --install tableau-server ./helm/tableau-server -n default -f ./helm/tableau-server/values.yaml  
    kubectl get ingress -n default  
    kubectl describe ingress tableau-server

Para obtener más información, consulte:

- [Concepto de Ingress de Kubernetes](https://kubernetes.io/docs/concepts/services-networking/ingress/)
- [Guía de implementación de ingress-nginx](https://kubernetes.github.io/ingress-nginx/deploy/)
- [Introducción a cert-manager](https://cert-manager.io/docs/tutorials/getting-started-aks-letsencrypt/)

#### Comprobaciones de estado

El gráfico admite sondas de inicio, vitalidad y preparación. La sonda de inicio permite una inicialización larga por primera vez (por ejemplo, failureThreshold: 200 × periodSeconds) antes de que se ejecute la actividad/preparación:

healthChecks:
  startup:
    enabled: true
    initialDelaySeconds: 300
    periodSeconds: 15
    timeoutSeconds: 30
    failureThreshold: 200
  liveness:
    enabled: true
    initialDelaySeconds: 300
    periodSeconds: 30
    timeoutSeconds: 10
    failureThreshold: 3
  readiness:
    enabled: true
    initialDelaySeconds: 300
    periodSeconds: 10
    timeoutSeconds: 5
    failureThreshold: 3

Para los pods de trabajadores de varios nodos, el gráfico tiene los valores predeterminados `worker.healthChecks.enabled: false` para evitar errores de sondeo falsos cuando los trabajadores ejecutan conjuntos de procesos limitados (por ejemplo, agente de administración + controlador de clúster solamente).

### Uso

#### Acceder a Tableau Server

Después de la instalación, acceda a Tableau Server según la configuración de su servicio:

- **ClusterIP**: Usar reenvío de puertos o Ingress
- **NodePort**: Acceso a través de `<node-ip>:<node-port>`
- **LoadBalancer**: Acceso a través de la IP externa proporcionada

#### Usar comandos de TSM

\# Get pod name
POD\_NAME=$(kubectl get pods -l app.kubernetes.io/component=primary -o jsonpath='{.items\[0\].metadata.name}')

# Run tabcmd
kubectl exec -it $POD\_NAME -- tsm status
kubectl exec -it $POD\_NAME -- tsm configuration get

#### Usar tabcmd

\# Get pod name
POD\_NAME=$(kubectl get pods -l app.kubernetes.io/component=primary -o jsonpath='{.items\[0\].metadata.name}')

# Run tabcmd
kubectl exec -it $POD\_NAME -- tabcmd login -u admin -p password
kubectl exec -it $POD\_NAME -- tabcmd sites

#### Ver registros de Tableau Server

\# Primary node logs
kubectl logs -l app.kubernetes.io/component=primary -f

# Worker node logs (multi-node)
kubectl logs -l app.kubernetes.io/component=worker -f

# All logs
kubectl logs -l app.kubernetes.io/instance=tableau-server -f

#### Acceso de Shell

\# Get pod name
POD\_NAME=$(kubectl get pods -l app.kubernetes.io/component=primary -o jsonpath='{.items\[0\].metadata.name}')

# Open shell
kubectl exec -it $POD\_NAME -- /bin/bash

### Actualización

#### Actualizar el gráfico de Helm de Tableau Server

helm upgrade tableau-server ./helm/tableau-server -f ./helm/tableau-server/values.yaml

#### Actualizar con nuevos valores

helm upgrade tableau-server ./helm/tableau-server -f ./helm/tableau-server/new-values.yaml

### Automatización de topología posterior a la instalación (enlace)

Para instalaciones de varios nodos, este gráfico puede ejecutar un trabajo de enlace posterior a la instalación/actualización que:

- espera a que los nodos trabajadores se registren en TSM
- establece la asignación del proceso `clustercontroller` del trabajador
- ejecuta `tsm pending-changes apply -iw --ignore-prompt` cuando los cambios están pendientes

Configuración:

hooks:
  autoApplyWorkerTopology:
    enabled: true
    kubectlImage: "bitnami/kubectl:latest"
    timeoutSeconds: 3600

Valores predeterminado:

- deshabilitado en `values.yaml`
- en `values-multinode.yaml`, comprobar `hooks.autoApplyWorkerTopology.enabled` (puede ser `true` o `false` dependiendo de la versión; habilitar para la configuración de trabajadores no intervencionistas `clustercontroller`)

Verifique la ejecución del enlace:

kubectl get jobs -n default
kubectl get pods -n default -l job-name=tableau-server-hook-topology
kubectl logs -n default job/tableau-server-hook-topology

Fallback manual si el enlace está deshabilitado o falla: ejecute `tsm topology set-process` para cada nodo de TSM del trabajador (normalmente del nodo 2 al nodo (1+N) cuando tiene N trabajadores; confirme los ID con `tsm topology list-nodes -v`):

kubectl exec -n default tableau-server-primary-0 -- sh -lc '
tsm topology set-process -n node2 -pr clustercontroller -c 1
tsm topology set-process -n node3 -pr clustercontroller -c 1
# Add one line per additional worker node, e.g. for four workers:
# tsm topology set-process -n node4 -pr clustercontroller -c 1
# tsm topology set-process -n node5 -pr clustercontroller -c 1
tsm pending-changes apply -iw --ignore-prompt
tsm topology list-nodes -v

tsm status -v

**Nota**: Utilice `-iw` para `tsm pending-changes apply`. La opción `-ig` no es válida en este entorno.

### Desinstalación

helm uninstall tableau-server

**Advertencia**: Esto eliminará todos los recursos, incluidos los volúmenes persistentes. Asegúrese de hacer una copia de seguridad de sus datos antes de desinstalar.

#### Pasos de validación

Antes del lanzamiento o al cambiar el gráfico, ejecute:

1. Lint:
    
    helm lint helm/tableau-server -f helm/tableau-server/values-single.yaml  
    helm lint helm/tableau-server -f helm/tableau-server/values-multinode.yaml
2. Plantilla (ensayo):
    
    helm template tableau-server helm/tableau-server -f helm/tableau-server/values-single.yaml  
    helm template tableau-server helm/tableau-server -f helm/tableau-server/values-multinode.yaml
3. Prueba de instalación (opcional):
    
    1. En un espacio de nombres de prueba, ejecute `helm install` con values-single o values-multinode.
    2. Ejecute `kubectl rollout status` (para StatefulSet, espere a que el pod esté listo) y comprobaciones de humo básicas (por ejemplo, `tsm status` o HTTP al servicio).

Para obtener información detallada sobre la solución de problemas, consulte [Gráfico de Helm de Tableau Server: solución de problemas](https://help.tableau.com/current/server/es-es/server-helm-troubleshooting.htm).

## Recursos adicionales

- [Documentación de Tableau Server](https://help.tableau.com/current/server-linux/es-es/)
- [Documentación de Helm](https://helm.sh/docs/)
- [Actualización del gráfico de Helm](https://helm.sh/docs/helm/helm_upgrade/)