Tableau Server Helm Chart - 必要條件

重要提示:本文件假設您瞭解 Helm 和 Helm Chart,並且不嘗試提供詳細的規範性範例。它是為熟悉 Tableau Server 以及 Helm 和 Helm Chart的客戶設計的。

本主題會介紹使用 Helm Chart 部署 Tableau Server 所需的必要條件。

Helm Chart 下載和分發

Helm Chart 會作為容器中的 Tableau Server 設定工具 (tableau-server-container-setup-tool-<version>.tar.gz) 中的一部分提供,並可從 Tableau Server 下載(連結在新視窗開啟)頁面下載。

擷取後,所需的 Helm Chart 檔案位於 helm/tableau 目錄中。

所需工具

  • 已設定為存取 Kubernetes 叢集的 kubectl CLI
  • helm CLI 版本 3.x 或更高版本
  • 可存取 Kubernetes 叢集 (1.19+)

叢集要求

  • 至少一個節點,具有 16GB RAM 和 4 個 CPU 核心(建議 8 個內核)。
  • 已設定 StorageClass,以進行動態 PersistentVolume 佈建。
  • 能夠建立負載平衡器服務或輸入資源。

所需資訊

在開始之前,請確保您具有以下內容:

  • Tableau Server 產品金鑰
  • 初始帳戶的 TSM 管理員 username 和 password
  • 用於存取的 Tableau Server 主機名稱

Amazon Elastic Kubernetes Service (EKS) 必要條件

efs-bootstrap StorageClass

預設情況下,efs-bootstrap 不會在 EKS 中建立。對於多節點啟動程序共用,請在安裝 Helm 之前建立。

對於多節點部署,啟動程序儲存必須可佈建,然後 Pod 才能進行排程。若 efs-bootstrap StorageClass 不會動態佈建 EFS 磁碟區,您必須:

  • 預先建立靜態啟動程序 PV,並將其繫結至 tableau-server-bootstrap

    或

  • 設定 persistence.bootstrap.createPV: true,並提供 valid persistence.bootstrap.pv.csi.volumeHandle(實際 EFS ID、fs-...)。

若未執行此操作,Pod 會保持在「擱置」狀態,且 PVC 未繫結。

  1. 確保叢集中已安裝 EFS CSI 驅動程式。

    kubectl get csidriver efs.csi.aws.com

    即使未安裝 EKS 管理的附加元件,CSIDriver 物件也可能存在。明確確認附加元件。

    若收到 ResourceNotFoundException 錯誤(無附加元件),或 Pod 之後失敗,並出現掛接錯誤(如 driver name efs.csi.aws.com not found in the list of registered CSI drivers),請安裝 EKS 附加元件並等待狀態變為 ACTIVE,然後驗證節點外掛程式 Pod。

    這是必要的,因為多節點啟動程序使用 EFS 支援的磁碟區 (ReadWriteMany)。若其他節點上沒有 EFS CSI 節點外掛程式,啟動程序 PVC 可以進行繫結,但掛接會失敗,Pod 會保持 Init/Pending 狀態。

    若 EFS 掛接失敗,並出現:

      is not authorized to perform: elasticfilesystem:DescribeMountTargets

      或

      Failed to resolve "fs-....efs.<region>.amazonaws.com"

    請使用以下其中一種補救措施:

    • EKS 節點角色上的 IAM 修正(慣用):授與 EFS 和 EC2 讀取權限,以便掛接目標和 AZ 探索運作。從節點群組中解析節點執行個體角色名稱:

      aws eks list-nodegroups --cluster-name <cluster-name>
      aws eks describe-nodegroup \
      --cluster-name <cluster-name> \
      --nodegroup-name <nodegroup-name> \
      --query "nodegroup.nodeRole" \
      --output text
    • 在 attach-role-policy 中使用 IAM **角色名稱** (ARN 的最後區段):

      aws iam attach-role-policy \
      --role-name <your-node-instance-role> \
      --policy-arn arn:aws:iam::aws:policy/AmazonElasticFileSystemClientReadWriteAccess
      aws iam attach-role-policy \
      --role-name <your-node-instance-role> \
      --policy-arn arn:aws:iam::aws:policy/AmazonEC2ReadOnlyAccess
      • 涉及的典型權限:

        • elasticfilesystem:DescribeMountTargets, 
          elasticfilesystem:DescribeFileSystems
        • ec2:DescribeAvailabilityZones (DescribeAvailabilityZones 出現在掛接錯誤中時通常需要此權限)

    • 明確掛接目標 IP:環境中 DNS/探索受到限制時,在啟動程序 PV CSI 磁碟區屬性上設定 mounttargetip。

      • Helm 值(createPV: true 路徑):

        persistence:
        bootstrap:
        pv:
        csi:
        volumeAttributes:
        mounttargetip: "10.x.x.x"
      • 手動 PV 路徑

        spec:
        csi:
        driver: efs.csi.aws.com
        volumeHandle: fs-xxxxxxxx
        volumeAttributes:
        mounttargetip: 10.x.x.x
  2. 建立 efs-bootstrap StorageClass(範例):

    apiVersion: storage.k8s.io/v1
    kind: StorageClass metadata:
    name: efs-bootstrap
    provisioner: efs.csi.aws.com
    reclaimPolicy: Retain
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
  3. 選擇一個啟動程序佈建路徑(必需):

  • 動態 EFS 佈建路徑:

    使用為存取點設定的 EFS CSI 動態 StorageClass(例如 provisioningMode: efs-ap, fileSystemId 和根據平台標準的 permissions/basePath 參數)。

  • 靜態 PV 路徑:

    使用 csi.driver: efs.csi.aws.com 和 csi.volumeHandle: fs-... 手動建立 tableau-bootstrap-pv

    然後設定:

    • persistence.bootstrap.createPV: false

    • persistence.bootstrap.volumeName: tableau-bootstrap-pv

  • Helm 建立的靜態 PV 路徑:

    設定:

    • persistence.bootstrap.createPV: true

    • persistence.bootstrap.pv.csi.volumeHandle: fs-...

非 EKS 必要條件

ReadWriteMany StorageClass

對於未託管在 EKS 上的叢集(或若未使用 EFS),多節點啟動程序共用的關鍵要求是為啟動程序磁碟區提供一個支援 ReadWriteMany (RWX) 存取模式的 StorageClass。這是必需的,因為啟動程序儲存必須可佈建,然後 Pod 才能排程。

適用於 Kubernetes 的常見自我託管 RWX 儲存後端包括:

  • NFS(最通用,最容易進行測試)

  • CephFS

  • Longhorn(若已安裝)

  • GlusterFS

  • NetApp/其他企業儲存

您必須確保已安裝適用於所選後端的相應 CSI 驅動程式。

若要將 Tableau Server 設定為使用自訂 RWX StorageClass,請更新 Helm 值(例如, values-multinode.yaml),以將 persistence.bootstrap.storageClass 設定為 StorageClass 的名稱:

persistence:
  # ... other persistence settings ...

  # Bootstrap volume (required for multi-node)
  bootstrap:
    enabled: true
    storageClass: "my-rwx-storage" # <--- Replace with your StorageClass name
    accessMode: ReadWriteMany
    size: 1Gi
    createPV: false

其他資源

感謝您的意見反應!已成功提交您的意見回饋。謝謝!