---
schema_version: "1"
id: 1097ee23ab20f6b3db1733642dc0f8b57d5bb1911b361d339642a27807576c5e
title: Distribuzione della carta Helm
collection: tableau
version: current
locale: it-it
portal_url: https://docs.salesforce.com/tableau/current/it-it/server/server-helm-deploy.md
canonical_url: https://help.tableau.com/current/server/it-it/server-helm-deploy.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 265893a46ad3b4c2be6ed746d83e9ee4b8707e4fcb6615f2e507f0b4d8eeb617
description: "Importante: questa documentazione presuppone la conoscenza di Helm e delle carte Helm e non intende fornire esempi dettagliati e prescrittivi"
---
[Passa al contenuto principale](#main-content)

# Carta Helm di Tableau Server - Distribuzione

**Importante**: questa documentazione presuppone la conoscenza di Helm e delle carte Helm e non intende fornire esempi dettagliati e prescrittivi. È destinata ai clienti che hanno familiarità sia con Tableau Server che con Helm e le carte Helm.

Questo argomento illustra le fasi generali della distribuzione di Tableau Server su Kubernetes mediante una carta Helm.

## Prerequisiti

Prima di iniziare, assicurati di soddisfare i prerequisiti. Per maggiori informazioni, consulta [Carta Helm di Tableau Server - Prerequisiti](https://help.tableau.com/current/server/it-it/server-helm-prerequisites.htm).

### Download della carta Helm

Le carte Helm vengono fornite come parte dello strumento di configurazione di Tableau Server in un contenitore (`tableau-server-container-setup-tool-<version>.tar.gz`) e possono essere scaricate dalla pagina di [download di Tableau Server](http://tableau.com/it-it/support/releases/server/latest).

Dopo l’estrazione, i file delle carte Helm necessarie si trovano nella directory `helm/tableau`.

## Panoramica rapida della distribuzione di Tableau Server tramite una carta Helm

**Importante**: questa è una descrizione di base e generale della distribuzione di Tableau Server mediante carte Helm. Non intende descrivere una procedura completa. Presuppone la conoscenza di Helm e delle carte Helm.

Prima di iniziare, verifica di soddisfare i prerequisiti per la distribuzione di Tableau Server mediante carte Helm. Per i dettagli, consulta [Carta Helm di Tableau Server - Prerequisiti](https://help.tableau.com/current/server/it-it/server-helm-prerequisites.htm).

### Aggiungere il codice prodotto a values.yaml

Modifica `values.yaml` e imposta il tuo codice prodotto.

### Distribuire Tableau Server a nodo singolo

Distribuisci un’istanza a nodo singolo di Tableau Server eseguendo questi comandi in un prompt (sostituisci `<namespace>` con lo spazio dei nomi della tua versione, ad esempio `tableau` o `default`):

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

### Distribuire Tableau Server multi-nodo

Distribuisci un’istanza multi-nodo di Tableau Server eseguendo questi comandi in un prompt, utilizzando la stessa convenzione per lo spazio dei nomi di cui sopra:

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

## Runbook multi-nodo EKS (spazio dei nomi + PV di bootstrap statico)

Questa sezione descrive l’ordine delle operazioni per EKS: spazio dei nomi dedicato, componente aggiuntivo CSI EFS, IAM per il ruolo del nodo, PV di bootstrap statico e Helm.

1. Crea uno spazio dei nomi dedicato.
    
    Deve corrispondere a `claimFef.namespace` nel PV di bootstrap. Questo esempio utilizza `tableau`.
    
    kubectl create namespace tableau-server
    kubectl get namespace tableau
2. Verifica che il componente aggiuntivo CSI EFS esista.
    
    Se il componente aggiuntivo non è presente, crealo e attendi che lo stato diventi `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. Conferma la Storageclass:
    
    Storage class `efs-bootstrap`: applica se non è già presente. Per i dettagli, consulta [Prerequisiti di Amazon Elastic Kubernetes Service (EKS)](https://help.tableau.com/current/server/it-it/server-helm-prerequisites.htm#EKS-Prereq-storageclass).
    
    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. Conferma il valore PV di bootstrap statico.
    
    `claimRef` deve fare riferimento allo stesso spazio dei nomi e allo stesso nome PVC creato dalla carta Helm (`tableau-server-bootstrap`). Sostituisci `fs-...` con l’ID del tuo file system 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 nel ruolo dell’istanza del nodo.
    
    Collega il client EFS e i criteri di sola lettura EC2. Vedi [Prerequisiti di Amazon Elastic Kubernetes Service (EKS)](https://help.tableau.com/current/server/it-it/server-helm-prerequisites.htm#EKS-Prereq-storageclass) per la risoluzione di `<your-node-instance-role>` dal gruppo di nodi.
    
    Storage class `efs-bootstrap`: applica se non è già presente. Per i dettagli, consulta [Prerequisiti di Amazon Elastic Kubernetes Service (EKS)](https://help.tableau.com/current/server/it-it/server-helm-prerequisites.htm#EKS-Prereq-storageclass).
    
    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. Valori
    
    In `values-multinode.yaml` (o una sovrapposizione), imposta la modalità PV statica manuale
    
    persistence:
      bootstrap:  
        createPV: false  
        volumeName: tableau-bootstrap-pv  
        storageClass: efs-bootstrap
7. Assicurati che `image.repository`, `image.tag`e i segreti e la licenza siano impostati come richiesto.
8. Installa la carta Helm
    
    Installa la carta nello stesso spazio dei nomi del PV `claimRef`:
    
    helm install tableau-server ./helm/tableau-server \\
      -n tableau \\  
      -f ./helm/tableau-server/values-multinode.yaml
9. Verifica l’archiviazione e i pod:
    
    kubectl get pv,pvc -n tableau
    kubectl get pods -n tableau -w
10. Stato PVC dei dati
    
    Lo stato delle PVC dei dati potrebbe comparire brevemente come `Pending` finché i volumi EBS non si collegano. Tutte le PVC devono passare allo stato `Bound`, quindi a `Running`e infine a `READY 1/1`.
11. Topologia (facoltativa)
    
    Se l’hook di post-installazione è disabilitato, potresti aver bisogno di impostare il nodo `clustercontroller` e di applicare le modifiche in sospeso (consulta Automazione della topologia post-installazione (hook) più avanti in questo documento). Quando sono presenti più nodi Tableau, il comando `tsm pending-changes apply` può generare avvisi sulla distribuzione del server di indicizzazione e ricerca o sull’insieme dei servizi di coordinamento. Gestisci questi avvisi come documentato in [Server di indicizzazione e ricerca](https://help.tableau.com/current/server/it-it/server_process_index-and-search.htm) e [Servizio di coordinamento di Tableau Server](https://help.tableau.com/current/server/it-it/server_process_coordination.htm).

### Installazione personalizzata

1. Personalizza i valori
    
    cp ./helm/tableau-server/values.yaml   
    ./helm/tableau-server/my-values.yaml  
    \# Edit ./helm/tableau-server/my-values.yaml with your configuration
2. Installa con valori personalizzati
    
    helm install tableau-server ./helm/tableau-server -f ./helm/tableau-server/my-values.yaml

## Configurazione

### Modalità di distribuzione

#### Distribuzione a nodo singolo

La distribuzione a nodo singolo esegue Tableau Server come contenitore monolitico.

Usa `values-single.yaml` oppure imposta:

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

#### Distribuzione multi-nodo

La distribuzione multi-nodo esegue un nodo primario e uno o più worker. Imposta il conteggio dei worker con `worker.replicaCount`: utilizza 1, 2 o qualsiasi valore superiore consentito dalla capacità del cluster e dalla topologia di Tableau. La carta crea `tableau-server-worker-0 … tableau-server-worker-(N-1)` per `replicaCount: N`.

Usa `values-multinode.yaml` (l’esempio predefinito utilizza due worker) o impostalo in modo esplicito:

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

Allineamento della topologia: `values-multinode.yaml` viene fornito con una topologia `config.configJson` di esempio (ID nodo come `node1`, `node2`, `node3`). Se modifichi `worker.replicaCount` o riorganizzi i servizi, aggiorna la topologia (ed eventuali assegnazioni di processi di Tableau correlati) in modo che il numero e i ruoli dei nodi TSM corrispondano alla distribuzione. Consulta la Guida di Tableau Server per il clustering e il layout dei processi.

### Opzioni di configurazione chiave

#### Configurazione dell’immagine

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

#### Licenza e segreti

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

In alternativa, puoi impostarli utilizzando le variabili di ambiente:

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

È consigliabile utilizzare un file separato (ad esempio, `secrets.yaml`) e passarlo con lo switch `-f`.

`secrets.yaml`:

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

Esempio di installazione/aggiornamento 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:** il riferimento a un segreto Kubernetes preesistente (ad esempio s`ecrets.existingSecret`) non è attualmente supportato. L’unico metodo supportato è l’utilizzo dei valori della carta con un file di valori segreto separato.

#### Repository PostgreSQL esterno

La carta Helm non abilita un repository esterno per impostazione predefinita utilizzando chiavi valori dedicate.

Ti consigliamo di eseguire queste fasi per abilitare un repository esterno:

1. Distribuisci la carta e verifica che il pod primario sia integro.
2. Esegui i comandi Tableau `tsm external repository` dal pod primario.
3. Applica le modifiche in sospeso.

Esempio di flusso di lavoro (individuazione e applicazione di comandi):

\# 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'

Note:

- La configurazione del repository esterno è specifica della versione di Tableau (modalità SSL, opzioni di failover, campi delle credenziali). Per ulteriori informazioni, consulta [Repository esterno di Tableau Server](https://help.tableau.com/current/server/it-it/server_external_repo.htm) e [tsm topology](https://help.tableau.com/current/server/it-it/cli_topology_tsm.htm).
- Per le distribuzioni dei clienti, archivia le credenziali del database nei segreti di ed evita il testo normale nella cronologia della shell.

#### Archiviazione 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

Per i cluster che utilizzano CSI EFS statica (ad esempio con `mounttargetip`), Helm può gestire sia PV che PVC di bootstrap:

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` aggiunge un contenitore di inizializzazione che `chown/chmods /docker/config/bootstrap` in modo che il processo Tableau (UID/GID 999:998) possa scrivere `bootstrap.json` sui montaggi EFS condivisi che per impostazione predefinita utilizzano `root:root`.

Quando `createPV: true`, la carta crea il valore PV di bootstrap da valori (ad esempio `tableau-bootstrap-pv`) ed esegue il binding delle PVC `tableau-server-bootstrap` a questo valore.

Se gestisci manualmente i PV di bootstrap, crea `tableau-bootstrap-pv` , quindi installa Helm con `createPV: false` e `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

#### Limiti delle risorse

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

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

#### Configurazione del servizio

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 di installazione ingress (esempio: controller ingress NGINX)

1. Installa un controller ingress nel cluster (necessario per abilitare l’ingresso per la carta).
2. Imposta i valori di ingress nel file dei valori:
    
    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. Crea un record DNS che punta a tableau.example.com all’endpoint bilanciamento di ingresso/bilanciamento.
4. Crea un segreto TLS (o utilizza cert-manager) nello spazio dei nomi della versione.
5. Distribuisci/aggiorna la carta e verifica l’ingresso:
    
    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

Per maggiori informazioni, consulta:

- [Concetto Ingress in Kubernetes (in inglese)](https://kubernetes.io/docs/concepts/services-networking/ingress/)
- [Guida alla distribuzione di ingress-nginx (in inglese)](https://kubernetes.github.io/ingress-nginx/deploy/)
- [Primi passi in cert-manager (in inglese)](https://cert-manager.io/docs/tutorials/getting-started-aks-letsencrypt/)

#### Controlli di integrità

La carta supporta le sonde di avvio, di attività e di preparazione. La sonda di avvio consente una prima inizializzazione estesa (ad esempio, failureThreshold: 200 × periodSeconds) prima dell’esecuzione di attività/preparazione:

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

Per i pod worker multi-nodo, la carta utilizza come valore predefinito `worker.healthChecks.enabled: false` per evitare falsi errori della sonda quando i worker eseguono insiemi di processi limitati (ad esempio, solo agente amministrazione + controller cluster).

### Utilizzo

#### Accesso a Tableau Server

Dopo l’installazione, accedi a Tableau Server in base alla configurazione del servizio:

- **ClusterIP**: utilizza port-forwarding o Ingress
- **NodePort**: accedi tramite `<node-ip>:<node-port>`
- **LoadBalancer**: accedi tramite l’IP esterno fornito

#### Uso dei comandi 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

#### Uso di 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

#### Visualizzazione dei log di 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

#### Accesso alla 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

### Aggiornamento

#### Aggiornare la carta Helm di Tableau Server

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

#### Aggiornare con nuovi valori

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

### Automazione della topologia post-installazione (hook)

Per le installazioni multi-nodo, questa carta può eseguire un processo hook post-installazione/post-aggiornamento che:

- attende la registrazione dei nodi di lavoro in TSM
- imposta l’assegnazione del processo `clustercontroller` ai worker
- esegue `tsm pending-changes apply -iw --ignore-prompt` quando le modifiche sono in sospeso

Configurazione:

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

Impostazioni predefinite:

- disabilitato in `values.yaml`
- in `values-multinode.yaml`, seleziona `hooks.autoApplyWorkerTopology.enabled` (può essere `true` o `false` a seconda della versione; abilita per la configurazione automatica di `clustercontroller` dei worker)

Verifica l’esecuzione dell’hook:

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 manuale se l’hook è disabilitato o non riesce: esegui `tsm topology set-process` per ogni nodo TSM di lavoro (in genere da nodo2 a nodo(1+N) quando sono presenti N worker; conferma gli 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**: usa `-iw` per `tsm pending-changes apply`. L’opzione `-ig` non è valida in questo ambiente.

### Disinstallazione

helm uninstall tableau-server

**Avviso**: verranno eliminate tutte le risorse, inclusi i volumi persistenti. Assicurati di eseguire il backup dei dati prima della disinstallazione.

#### Fasi di convalida

Prima del rilascio o quando modifichi la carta, esegui:

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. Template (prova):
    
    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. Test di installazione (facoltativo):
    
    1. In uno spazio dei nomi di test, esegui `helm install` con values-single o values-multinode.
    2. Esegui `kubectl rollout status` (per StatefulSet, attendi che il pod sia pronto) e i controlli di sicurezza di base (ad es `tsm status` o HTTP per il servizio).

Per informazioni dettagliate sulla risoluzione dei problemi, consulta [Carta Helm di Tableau Server - Risoluzione dei problemi](https://help.tableau.com/current/server/it-it/server-helm-troubleshooting.htm).

## Risorse aggiuntive

- [Documentazione di Tableau Server](https://help.tableau.com/current/server-linux/it-it/)
- [Documentazione di Helm](https://helm.sh/docs/)
- [Aggiornamento della carta Helm (in inglese)](https://helm.sh/docs/helm/helm_upgrade/)