Helm 图表先决条件

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 下载页面下载。

提取后,所需的 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

其他资源