Driftsätta Helm-diagram

Helm-diagram för Tableau Server – driftsättning

Viktigt: Den här dokumentationen förutsätter kunskap om Helm och Helm-diagram och tillhandahåller inte detaljerade, normativa exempel. Den är utformad för kunder som är bekanta med både Tableau Server, Helm och Helm-diagram.

Det här avsnittet vägleder dig genom de övergripande stegen för att driftsätta Tableau Server på Kubernetes med hjälp av ett Helm-diagram.

Förutsättningar

Kontrollera att du uppfyller kraven innan du börjar. Mer information finns i:Helm-diagram för Tableau Server – förutsättningar.

Ladda ner Helm-diagram

Helm-diagrammen levereras som en del av Tableau Server i ett konfigurationsverktyg för behållare (tableau-server-container-setup-tool-<version>.tar.gz) och kan laddas ner från nedladdningssidan för Tableau Server.

Efter extraheringen finns de nödvändiga Helm-diagramfilerna i katalogen helm/tableau.

Snabb översikt: Använda ett Helm-diagram för att driftsätta Tableau Server

Viktigt: Det här är en grundläggande beskrivning på hög nivå av hur du driftsätter Tableau Server med hjälp av Helm-diagram. Den är inte avsedd att vara en fullständig procedur. Det förutsätter kunskap om Helm och Helm-diagram.

Innan du börjar ska du kontrollera att du uppfyller förutsättningarna för att driftsätta Tableau Server med Helm-diagram. Mer information finns i Helm-diagram för Tableau Server – förutsättningar.

Lägg till din licensnyckel i values.yaml

Redigera values.yaml och ställ in din licensnyckel.

Driftsätta en Tableau Server-instans med en nod

Driftsätt en Tableau Server-instans med en nod genom att köra följande kommandon via en prompt (ersätt namnutrymmet <namespace> med din version, till exempel tableau eller default):

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

Driftsätta en Tableau Server-instans med flera noder

Driftsätt en Tableau Server-instans med flera noder genom att köra följande kommandon via en prompt och använda samma namnutrymmeskonvention som ovan:

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

EKS-runbook med flera noder (namnutrymme + statisk start-PV)

I det här avsnittet beskrivs åtgärdsordningen för EKS: dedikerat namnutrymme, EFS CSI-tillägg, IAM på nodrollen, statisk start-PV och Helm.

  1. Skapa ett dedikerat namnutrymme.

    Detta måste stämma överens med claimFef.namespace på start-PV:n. I det här exemplet används tableau.

    kubectl create namespace tableau-server
    kubectl get namespace tableau
  2. Bekräfta att EFS CSI-tillägget finns.

    Om tillägget saknas ska du skapa det och vänta tills statusen är 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. Bekräfta Storageclass:

    efs-bootstrap Storageclass – tillämpa om det inte redan finns. Mer information finns i Förutsättningar för Amazon Elastic Kubernetes Service (EKS).

    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. Bekräfta den statiska start-PV:en.

    claimRef måste referera till samma namnutrymme och PVC-namn som Helm-diagrammet skapar (tableau-server-bootstrap). Ersätt fs-... med ditt EFS-filsystem-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 på nodinstansrollen.

    Bifoga skrivskyddade EFS-klient- och EC2-policyer. Se Förutsättningar för Amazon Elastic Kubernetes Service (EKS) för matchning av <your-node-instance-role> från nodgruppen.

    efs-bootstrap Storageclass – tillämpa om det inte redan finns. Mer information finns i Förutsättningar för Amazon Elastic Kubernetes Service (EKS).

    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. Värden

    I values-multinode.yaml (eller en överlagring) ställer du in statiskt PV-läge manuellt

    persistence:
      bootstrap:
    createPV: false
    volumeName: tableau-bootstrap-pv
    storageClass: efs-bootstrap
  7. Kontrollera att image.repository, image.tag och hemligheter/licens är inställda efter behov.

  8. Installera Helm-diagrammet

    Installera diagrammet i samma namnutrymme som PV claimRef:

    helm install tableau-server ./helm/tableau-server \
      -n tableau \
    -f ./helm/tableau-server/values-multinode.yaml
  9. Verifiera lagring och datacenter:

    kubectl get pv,pvc -n tableau
    kubectl get pods -n tableau -w
  10. Status för data-PVC

    Data-PVC:er kan visa Pending en kort stund tills EBS-volymerna fästs. Alla PVC:er bör övergå till Bound, sen Running och så småningom READY 1/1.

  11. Topologi (valfritt)

    Om hooken efter installation är inaktiverad kan du behöva ställa in noden clustercontroller och tillämpa väntande ändringar (se Topologiautomatisering efter installation (hook) senare i det här dokumentet). Kommandot tsm pending-changes apply kan resultera i varningar om driftsättning av index- och sökserver eller samordningstjänstensemblen när du har flera Tableau noder. Åtgärda de här varningarna enligt beskrivningen i Index- och sökserver och Samordningstjänst för Tableau Server.

Anpassad installation

  1. Anpassa värden

    cp ./helm/tableau-server/values.yaml 
    ./helm/tableau-server/my-values.yaml
    # Edit ./helm/tableau-server/my-values.yaml with your configuration
  2. Installera med anpassade värden

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

Konfiguration

Driftsättningslägen

Driftsättning med en nod

Driftsättning med en nod kör Tableau Server som en monolitisk behållare.

Använd values-single.yaml eller ställ in:

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

Driftsättning med flera noder

Driftsättning med flera noder kör en primär och en eller flera system. Ställ in systemantalet med worker.replicaCount – använd 1, 2 eller ett högre värde som din klusterkapacitet och Tableau-topologi tillåter. Diagrammet skapar tableau-server-worker-0 … tableau-server-worker-(N-1) för replicaCount: N.

Använd values-multinode.yaml (standardexemplet använder två system) eller ange uttryckligen:

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

Topologijustering: values-multinode.yaml levereras med exempeltopologin config.configJson (nod-ID:n som node1, node2, node3). Om du ändrar worker.replicaCount eller omorganiserar tjänster ska du uppdatera den topologin (och eventuella relaterade Tableau-processtilldelningar) så att antalet och rollerna för TSM-noderna matchar din driftsättning – se Tableau Server-hjälpen för klustring och processlayout.

Viktiga konfigurationsalternativ

Bildkonfiguration

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

Licens och hemligheter

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

Alternativt kan du ställa in dessa med hjälp av miljövariabler:

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

Vi rekommenderar att du använder en separat fil (till exempel secrets.yaml) och skickar den med switchen -f.

secrets.yaml:

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

Installera/uppgradera exempel med 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

Obs! Det finns för närvarande inte stöd för att referera till en befintlig Kubernetes-hemlighet (till exempel secrets.existingSecret). Den enda metod som stöds är att använda diagramvärden med en separat värdefil för hemligheter.

Extern PostgreSQL-lagringsplats

Helm-diagrammet aktiverar inte en extern lagringsplats som standard med dedikerade värdenycklar.

Vi rekommenderar att du gör följande för att aktivera en extern lagringsplats:

  1. Driftsätt diagrammet och bekräfta att det primära är felfritt.

  2. Kör Tableaus tsm external repository-kommandon från det primära datacentret.

  3. Använd väntande ändringar.

Exempelarbetsflöde (kommandoidentifiering och -tillämpning):

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

Obs!

  • Konfigurationen av externa lagringsplatser är Tableau-versionsspecifik (SSL-läge, reservomkopplingsalternativ, inloggningsfält). Mer information finns i Extern Tableau Server-lagringsplats och tsm topology.

  • För kunddriftsättningar ska du lagra inloggningsuppgifter för databasen i Kubernetes-hemligheter och undvika oformaterad text i kommandotolkshistoriken.

Beständig lagring

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

För kluster som använder statisk EFS CSI (till exempel med mounttargetip) kan Helm hantera både start-PV och PVC:

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 lägger till en init-behållare som chown/chmods /docker/config/bootstrap, som gör att Tableau-processen (UID/GID 999:998) kan skriva bootstrap.json på delade EFS-monteringar som standard i root:root.

När createPV: true skapar diagrammet start-PV:n från värden (till exempel tableau-bootstrap-pv) och binder tableau-server-bootstrap PVC till det.

Om du hanterar start-PV:n manuellt ska du skapa tableau-bootstrap-pv först och sedan installera Helm med createPV: false och 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

Resursgränser

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

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

Servicekonfiguration

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 för Ingress-konfiguration (exempel: NGINX Ingress-styrenhet)

  1. Installera en Ingress-styrenhet i klustret (krävs innan du aktiverar Ingress för diagram).

  2. Ange Ingress-värden i värdefilen:

    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. Skapa DNS-post som hänvisar tableau.example.com till slutpunkten för Ingress/belastningsutjämnaren.

  4. Skapa en TLS-hemlighet (eller använd cert-manager) i versionsnamnutrymmet.

  5. Driftsätt/uppgradera diagrammet och verifiera 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

Mer information finns i:

Hälsokontroller

Diagrammet har stöd för avsökningar för start, livaktighet och beredskap. Startavsökningen tillåter lång förstagångsinitiering (t.ex. failureThreshold: 200 × periodSeconds) innan livaktighet/beredskap körs:

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

För systemdatacenter med flera noder är diagrammet som standard worker.healthChecks.enabled: false för att undvika falska avsökningsfel när systemen kör begränsade processuppsättningar (till exempel endast administratörsagent + klusterstyrenhet).

Användning

Komma åt Tableau Server

Efter installationen får du åtkomst till Tableau Server baserat på din tjänstekonfiguration:

  • ClusterIP: Använd portvidarebefordran eller Ingress

  • NodePort: Åtkomst via <node-ip>:<node-port>

  • LoadBalancer: Åtkomst via den externa IP-adress som tillhandahålls

Använda TSM-kommandon

# 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

Använda 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

Visa Tableau Server-loggar

# 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

Kommandotolksåtkomst

# 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

Uppgradera

Uppgradera Helm-diagrammet för Tableau Server

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

Uppgradera med nya värden

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

Topologiautomatisering efter installation (hook)

För installationer med flera noder kan det här diagrammet köra ett hook-jobb efter installation/uppgradering som:

  • väntar på att arbetsnoder ska registreras i TSM

  • anger tilldelning av clustercontroller-arbetsprocess

  • kör tsm pending-changes apply -iw --ignore-prompt när ändringar väntar.

Konfiguration:

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

Standard:

  • Inaktiveras i values.yaml

  • I values-multinode.yaml ska du markera hooks.autoApplyWorkerTopology.enabled (kan vara true eller false beroende på version, aktivera för clustercontroller-konfiguration)

Verifiera hook-körning:

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

Manuell återgång om hooken är inaktiverad eller slutar fungera – kör tsm topology set-process för varje TSM-nod (vanligtvis nod2 genom nod(1+N) när du har N system; bekräfta ID:n med 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

Obs! Använd -iw för tsm pending-changes apply. Det här -ig-alternativet är inte giltigt i den här miljön.

Avinstallera

helm uninstall tableau-server

Varning: Detta tar bort alla resurser, inklusive beständiga volymer. Se till att säkerhetskopiera dina data innan du avinstallerar.

Valideringssteg

Kör följande före publicering eller när du ändrar diagrammet:

  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. Mall (torrkörning):

    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. Installera test (valfritt):

    1. I ett testnamnutrymme kör du helm install med values-single eller values-multinode.

    2. Kör kubectl rollout status (för StatefulSet väntar du på datacentret Ready) och grundläggande grovtest (t.ex. tsm status eller HTTP till tjänsten).

Mer information om felsökning finns i Helm-diagram för Tableau Server – felsökning.

Ytterligare resurser