---
schema_version: "1"
id: 507c42d8cb3acd4c728aba0a3eacf7e395654f9f543827b3a849c97cfd97b170
title: Helm 图表先决条件
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/server/server-helm-prerequisites.md
canonical_url: https://help.tableau.com/v0.0/server/zh-cn/server-helm-prerequisites.htm
source_site: help.tableau.com
content_type: documentation
content_hash: b5306418540abfc25e11949385ee432f52f175e379278712090f0ec0f030bcb3
description: 重要信息：本文档假设您了解 Helm 和 Helm 图表，并不试图提供详细的说明性示例。它是为熟悉 Tableau Server 以及 Helm 和 Helm 图表的客户设计的。
---
[跳转到主要内容](#main-content)

# Tableau Server Helm 图表 - 先决条件

**重要信息**：本文档假设您了解 Helm 和 Helm 图表，并不试图提供详细的说明性示例。它是为熟悉 Tableau Server 以及 Helm 和 Helm 图表的客户设计的。

本主题介绍使用 Helm 图表部署 Tableau Server 所需的先决条件。

## Helm 图表下载和分发

Helm 图表将作为“容器中的 Tableau Server”设置工具 (`tableau-server-container-setup-tool-<version>.tar.gz`) 的一部分提供，并可从 [Tableau Server 下载](http://tableau.com/zh-cn/support/releases/server/latest)页面下载。

提取后，所需的 Helm 图表文件位于 `helm/tableau` 目录中。

## 所需工具

- `kubectl` CLI（配置为访问 Kubernetes 群集）
- `helm` CLI 版本 3.x 或更高版本
- 访问 Kubernetes 群集 (1.19+)

## 群集要求

- 至少一个具有 16GB RAM 和 4 个 CPU 内核（推荐使用 8 个内核）的节点。
- 为动态 PersistentVolume 预置配置的 StorageClass。
- 能够创建 LoadBalancer 服务或入口资源。

## 所需信息

在开始之前，请确保您具有以下各项：

- 您的 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

## 其他资源

- [Tableau Server Helm 图表 - 概述](https://help.tableau.com/v0.0/server/zh-cn/server-in-container_helm-chart.htm)
- [Tableau Server Helm 图表 - 部署](https://help.tableau.com/v0.0/server/zh-cn/server-helm-deploy.htm)
- [Tableau Server Helm 图表 - 疑难解答](https://help.tableau.com/v0.0/server/zh-cn/server-helm-troubleshooting.htm)
- [Helm 文档](https://helm.sh/docs/)
- [Tableau Server 文档](https://help.tableau.com/current/server-linux/zh-cn/)