Tableau Server: Helm-grafiek - Implementeren

Belangrijk: in deze documentatie wordt uitgegaan dat de gebruiker basiskennis heeft over Helm en Helm-grafieken. Er worden geen gedetailleerde, prescriptieve voorbeelden gegeven. De documentatie is ontworpen voor klanten die bekend zijn met zowel Tableau Server, Helm en Helm-grafieken.

In dit onderwerp worden de belangrijkste stappen voor het implementeren van Tableau Server op Kubernetes beschreven met behulp van een Helm-grafiek.

Vereisten

Voordat u begint, moet u ervoor zorgen dat u aan de vereisten voldoet. Zie Tableau Server: Helm-grafiek - Vereisten voor meer informatie.

Helm-grafiek downloaden

De Helm-grafieken worden geleverd als onderdeel van de installatietool voor Tableau Server in een container (tableau-server-container-setup-tool-<version>.tar.gz) en kunnen worden gedownload van de downloadpagina van Tableau Server(Link wordt in een nieuw venster geopend) .

Na extractie bevinden de benodigde Helm-grafiekbestanden zich in de directory helm/tableau.

Snel overzicht: een Helm-grafiek gebruiken om Tableau Server te implementeren

Belangrijk: dit is een eenvoudige beschrijving op hoog niveau van het implementeren van Tableau Server met behulp van Helm-grafieken. Dit is niet bedoeld als een volledige procedure. De beschrijving gaat ervan uit dat de gebruiker bekend is met Helm en Helm-grafieken.

Voordat u begint, moet u ervoor zorgen dat u voldoet aan de vereisten voor het implementeren van Tableau Server met behulp van Helm-grafieken. Zie Tableau Server: Helm-grafiek - Vereisten voor details.

Voeg uw licentiesleutel toe aan values.yaml

Bewerk values.yaml en stel uw licentiesleutel in.

Een Tableau Server met één knooppunt implementeren

Implementeer een instantie van Tableau Server met één knooppunt door deze opdrachten uit te voeren bij een prompt (vervang uw release-naamruimte door <namespace>, bijvoorbeeld tableau of default):

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

Een Tableau Server met meerdere knooppunten implementeren

Implementeer een serverinstantie met meerdere knooppunten door deze opdrachten uit te voeren bij een prompt, met behulp van dezelfde naamruimteconventie als hierboven:

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

EKS-handboek voor meerdere knooppunten (naamruimte + statische bootstrap PV)

In deze sectie wordt de volgorde van bewerkingen voor EKS beschreven: speciale naamruimte, EFS CSI-add-on, IAM op de knooppuntrol, statische bootstrap-PV en Helm.

  1. Maak een toegewijde naamruimte.

    Deze moet overeenkomen met claimFef.namespace op de bootstrap-PV. In dit voorbeeld wordt tableau gebruikt.

    kubectl create namespace tableau-server
    kubectl get namespace tableau
  2. Bevestig dat de EFS CSI-add-on bestaat.

    Als de add-on ontbreekt, maak deze dan aan en wacht tot de status gelijk is aan 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. Bevestig de Storageclass:

    efs-bootstrap Storageclass: van toepassing als deze nog niet aanwezig is. Zie Vereisten voor de Amazon Elastic Kubernetes Service (EKS) voor meer informatie.

    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. Bevestig de statische bootstrap PV.

    claimRef moet verwijzen naar dezelfde naamruimte en PVC-naam die de Helm-grafiek maakt (tableau-server-bootstrap). Vervang fs-... door uw EFS-bestandssysteem-ID:

    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 op de rol van de knooppuntinstantie.

    Koppel EFS-client- en EC2-beleid voor alleen-lezen. Zie Vereisten voor de Amazon Elastic Kubernetes Service (EKS) voor het oplossen van <your-node-instance-role> vanuit de knooppuntgroep.

    efs-bootstrap Storageclass: van toepassing als deze nog niet aanwezig is. Zie Vereisten voor de Amazon Elastic Kubernetes Service (EKS) voor meer informatie.

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

    Stel de handmatige statische PV-modus in via values-multinode.yaml (of een overlay)

    persistence:
      bootstrap:
    createPV: false
    volumeName: tableau-bootstrap-pv
    storageClass: efs-bootstrap
  7. Zorg ervoor dat image.repository, image.tag en geheimen/licentie zijn ingesteld zoals vereist.

  8. Installeer de Helm-grafiek

    Installeer de grafiek in dezelfde naamruimte als de PV claimRef:

    helm install tableau-server ./helm/tableau-server \
      -n tableau \
    -f ./helm/tableau-server/values-multinode.yaml
  9. Controleer de opslag en pods:

    kubectl get pv,pvc -n tableau
    kubectl get pods -n tableau -w
  10. Data-PVC-status

    Data-PVC's kunnen kort worden weergegeven als Pending totdat EBS-volumes zijn gekoppeld. Alle PVC's moeten overgaan naar Bound, vervolgens naar Running en uiteindelijk naar READY 1/1.

  11. Topologie (optioneel)

    Als de hook na de installatie is uitgeschakeld, moet u mogelijk een clustercontroller-knooppunt instellen en in behandeling zijnde wijzigingen toepassen (zie Topologieautomatisering na de installatie (hook) verderop in dit document). De opdracht tsm pending-changes apply kan resulteren in waarschuwingen over de distributie van de indexerings- en zoekserver of het coördinatieservice-ensemble wanneer u meerdere Tableau-knooppunten hebt. Volg deze waarschuwingen op zoals beschreven in Indexerings- en zoekserver en Tableau Server - Coördinatieservice.

Aangepaste installatie

  1. Waarden aanpassen

    cp ./helm/tableau-server/values.yaml 
    ./helm/tableau-server/my-values.yaml
    # Edit ./helm/tableau-server/my-values.yaml with your configuration
  2. Installeren met aangepaste waarden

    helm install tableau-server ./helm/tableau-server -f ./helm/tableau-server/my-values.yaml

Configuratie

Implementatiemodi

Implementatie met één knooppunt

Bij een implementatie met één knooppunt wordt Tableau Server uitgevoerd als een monolithische container.

Gebruik values-single.yaml of gebruik de volgende instellingen:

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

Implementatie met meerdere knooppunten

Bij een implementatie met meerdere knooppunten worden één primaire en een of meer workers uitgevoerd. Stel het aantal workers in met worker.replicaCount: gebruik 1, 2 of een andere waarde die uw clustercapaciteit en Tableau-topologie toestaan. De grafiek maakt tableau-server-worker-0 … tableau-server-worker-(N-1) voor replicaCount: N.

Gebruik values-multinode.yaml (standaardvoorbeeld gebruikt twee workers) of stel het volgende expliciet in:

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

Topologie-uitlijning: values-multinode.yaml wordt geleverd met een config.configJson-voorbeeldtopologie (knooppunt-ID's zoals node1, node2, node3). Als u worker.replicaCount wijzigt of services herschikt, moet u die topologie (en eventuele gerelateerde Tableau-procestoewijzingen) bijwerken, zodat het aantal en de rollen van TSM-knooppunten overeenkomen met uw implementatie. Zie Tableau Server Help voor clustering en proceslay-out.

Configuratieopties voor sleutels

Configuratie van afbeelding

image:
repository: tableau_server_image
tag: "latest"
pullPolicy: IfNotPresent
pullSecrets: []

Licentie en geheimen

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

U kunt deze ook instellen met behulp van omgevingsvariabelen:

env:
LICENSE_KEY: "YOUR-LICENSE-KEY"
TSM_REMOTE_PASSWORD: "password"
TABLEAU_USERNAME: "admin"
TABLEAU_PASSWORD: "password"

We raden aan om een apart bestand (bijvoorbeeld secrets.yaml) te gebruiken en dit met de -f-schakeloptie door te geven.

secrets.yaml:

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

Voorbeeld van installeren/upgraden met 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

Opmerking: verwijzingen naar een bestaand Kubernetes-geheim (bijvoorbeeld secrets.existingSecret) worden momenteel niet ondersteund. De enige ondersteunde methode is het gebruik van grafiekwaarden met een afzonderlijk waardebestand voor geheimen.

Externe PostgreSQL-opslagplaats

De Helm-grafiek schakelt standaard geen externe opslagplaats in met behulp van speciale waardesleutels.

We raden u aan de volgende stappen te ondernemen om een externe opslagplaats in te schakelen:

  1. Implementeer de grafiek en controleer of de status van de primaire pod in orde is.

  2. Voer Tableau tsm external repository-opdrachten uit vanaf de primaire pod.

  3. Pas lopende wijzigingen toe.

Voorbeeld van workflow (opdrachten detecteren en toepassen):

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

Opmerkingen:

  • De configuratie van de externe opslagplaats is specifiek voor de verschillende Tableau-versies (SSL-modus, failover-opties, referentievelden). Zie Externe opslagplaats Tableau Server en tsm-topologie voor meer informatie.

  • Voor klantimplementaties slaat u de databasereferenties op in Kubernetes Secrets en vermijdt u platte tekst in de shell-geschiedenis.

Permanente opslag

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

Voor clusters die gebruikmaken van statische EFS-CSI (bijvoorbeeld met mounttargetip), kan Helm zowel bootstrap-PV als PVC beheren:

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 voegt een initiële container toe die chown/chmods /docker/config/bootstrap uitvoert, zodat het Tableau-proces (UID/GID 999:998) bootstrap.json kan schrijven op gedeelde EFS-koppelingen die standaard zijn ingesteld op root:root.

Bij de waarde createPV: true maakt de grafiek de bootstrap-PV op basis van waarden (bijvoorbeeld tableau-bootstrap-pv) en wordt tableau-server-bootstrap PVC hieraan gebonden.

Als u bootstrap-PV handmatig beheert, maakt u eerst tableau-bootstrap-pv aan en installeert u Helm vervolgens met createPV: false en 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

Resourcelimieten

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

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

Serviceconfiguratie

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

Ingress-functionaliteit

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

Handboek voor Ingress-installatie (voorbeeld: NGINX Ingress Controller)

  1. Installeer een ingress-controller in het cluster (vereist voordat u de Ingress-functie voor de grafiek inschakelt).

  2. Stel Ingress-waarden in uw waardebestand in:

    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. Maak een DNS-record die tableau.example.com naar uw ingress-/loadbalancer-eindpunt verwijst.

  4. Maak een TLS-geheim (of gebruik cert-manager) in de release-naamruimte.

  5. Grafiek implementeren/upgraden en Ingress-functie verifiëren:

    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

Zie voor meer informatie:

Statuscontroles

De grafiek ondersteunt testen voor startup, liveness en readiness (opstarten, levendigheid en gereedheid). De opstarttest maakt een lange eerste initialisatie mogelijk (bijv. failureThreshold: 200 × periodSeconds) voordat de levendigheid/gereedheid wordt uitgevoerd:

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

Bij workerpods met meerdere knooppunten is de grafiek standaard ingesteld op worker.healthChecks.enabled: false om 'valse' testfouten te voorkomen wanneer workers beperkte processets uitvoeren (bijvoorbeeld alleen beheerdersagent + clustercontroller).

Gebruik

Toegang tot Tableau Server

Na de installatie krijgt u toegang tot Tableau Server op basis van uw serviceconfiguratie:

  • ClusterIP: gebruik port-forwarding of Ingress

  • NodePort: toegang via <node-ip>:<node-port>

  • LoadBalancer: toegang via het meegeleverde externe IP-adres

TSM-opdrachten gebruiken

# 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

Gebruik van 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

Tableau Server-logboeken weergeven

# 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

Toegang tot 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

Upgraden

De Tableau Server Helm-grafiek upgraden

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

Upgraden met nieuwe waarden

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

Topologieautomatisering na installatie (hook)

Voor installaties met meerdere knooppunten kan met deze grafiek een hookjob na de installatie/na de upgrade worden uitgevoerd die:

  • wacht totdat workerknooppunten zijn geregistreerd in TSM

  • de toewijzing van clustercontroller-workerprocessen instelt

  • de opdracht tsm pending-changes apply -iw --ignore-prompt uitvoert wanneer er wijzigingen in behandeling zijn

Configuratie:

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

Standaardwaarden:

  • uitgeschakeld in values.yaml

  • In values-multinode.yaml controleert u hooks.autoApplyWorkerTopology.enabled (de waarde kan true of false zijn, afhankelijk van de release; inschakelen voor hands-off clustercontroller-instelling van worker)

Controleer de uitvoering van de 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

Handmatige hersteloptie als de hook is uitgeschakeld of uitvalt: voer tsm topology set-process uit voor het TSM-knooppunt van elke worker (meestal knooppunt2 tot en met knooppunt(1+N) als u N workers hebt; bevestig de ID's met 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

Opmerking: gebruik -iw voor tsm pending-changes apply. De optie -ig is niet geldig in deze omgeving.

Verwijderen

helm uninstall tableau-server

Waarschuwing: hiermee worden alle bronnen verwijderd, inclusief persistente volumes. Zorg ervoor dat u een back-up van uw data maakt voordat u deze verwijdert.

Validatiestappen

Voer voor de release of bij het wijzigen van de grafiek het volgende uit:

  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. Sjabloon (dry-run):

    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. Installatietest (optioneel):

    1. Voer helm install in een testnaamruimte uit met values-single of values-multinode.

    2. Voer kubectl rollout status uit (voor StatefulSet, wacht op pod Ready) voer ook eenvoudige 'smoke-checks' uit (bijv. tsm status of HTTP naar de service).

Zie Tableau Server: Helm-grafiek - Problemen oplossen voor gedetailleerde probleemoplossing.

Aanvullende bronnen

Bedankt voor uw feedback.De feedback is verzonden. Dank u wel.