Tableau Server in a Container - セットアップ ツールの使用

概要

Tableau Server in a Container は、Tableau 初のコンテナーベースのサーバー製品です。Tableau Server in a Container は、Linux Docker コンテナ内で実行されるオールインワンの Tableau Server インスタンスです。つまり、Tableau Server in a Container のイメージは、自己完結型の Tableau Server アプリケーション全体を実行する Docker イメージです。Tableau Server in a Container は、コンテナーベースの環境で Tableau Server の実行をサポートする数多くのステップの中の最初のステップとなります。Tableau Server in a Container の概念は、Tableau Server が事前にインストールされた VM のようなものと考えると、簡単に理解することができます。イメージは UBI 8 イメージ (バージョン 2022.1 以前は CentOS 7.x) に基づいており、コンテナー内で (systemd ではなく) supervisord を実行します。コンテナーが supervisord を開始すると、直ちに Tableau Server を初期化して起動しようとします。ここにあるドキュメントの多くは、Docker 環境に合わせて Tableau Server を実行できるように、構成を提供して自動化の活用方法を説明するためのものです。

Tableau Server in a Container のイメージのセットアップ ツールを使用すると、カスタム パッケージとアーティファクトを含むようにコンテナー イメージを作成してカスタマイズすることができます。このツールの主な機能の 1 つは、コンテナー イメージを構築し、カスタム データ コネクタをインストールすることです。

Tableau Server in a Container に関する制限事項

  • Tableau Server in a Container では、サーバー ATR を使用したライセンス認証のみをサポートします。Server ATR を使用したオフライン アクティベーションは、2023.1 以降でサポートされています。この機能はコンテナで利用できますが、追加の手順と承認が必要です。エアギャップ環境またはオフライン環境のコンテナで Tableau Server を実行する必要がある場合、詳細についてはアカウント担当者にお問い合わせください。
  • Tableau Server in a Container では現在、Resource Monitoring Tool (RMT) エージェントはサポートされていません。
  • Kerberos は、Tableau Server in a Container ではサポートされていません。

Tableau Server in a Container のセットアップ ツール

Tableau Server in a Container のセットアップ ツールで build-image を実行すると、Tableau .rpm インストーラーと提供されている構成ファイルから Tableau Server in a Container のカスタム イメージが構築されます。

セットアップ ツールでは、Tableau Server インストーラー、ドライバー、およびアーティファクトを入力として受け取り、Docker イメージを作成します。build-image ツールが適切に使用されると、新しく生成されたイメージによって目的のアーティファクトがインストールされます。

構築でサポートされているディストリビューション

Tableau Server in a Container の Docker イメージの構築は、RHEL ベースの Linux システム (RHEL、CentOS、または Amazon Linux 2) でのみサポートされます。他の Linux ディストリビューションでの構築は可能ですが、現在はテストが行われておらず、サポートもされていません。macOS でのイメージの構築はサポートされていません。作成されたイメージは、UBI 8 イメージ (バージョン 2022.1 以前は CentOS 7.x) に基づいています。

コンテナー イメージを構築するには、Docker バージョン 18.09 以降がホストにインストールされている必要があります。一般的に、Docker の最新の安定したバージョンを使用することが推奨されています。一部の Linux ディストリビューションでは、ソフトウェア リポジトリに古いバージョンの Docker のみが提供されています。その場合、別のソースから Docker をインストールする必要がある場合があります。バージョン 18.09 より前のバージョンの Docker には、Tableau Server in a Container に必要な機能が含まれていません。

必要なファイルをダウンロードする

セットアップ ツールを使用するには、ツールおよび互換性のあるサーバー インストーラー .rpm ファイルの両方をダウンロードする必要があります。インストーラー ファイルはバージョン 2021.2.0 以降である必要があります。どちらのファイルも Tableau Server ページ(新しいウィンドウでリンクが開く)からダウンロードできます。

  1. サーバー インストーラー ファイル tableau-server-<version>.rpm バージョン 2021.2.0 以降をダウンロードします。

  2. Server in a Container のセットアップ ツール tableau-server-container-setup-tool-<version>.tar.gz.をダウンロードします。

インストール

Tableau Server in a Container のセットアップ ツールは、tarball として提供されます。圧縮ファイルの内容は抽出する必要があります。次に示すのは、Tableau Server in a Container のセットアップ ツールのアーカイブが現在のディレクトリにあると想定した例です。

tar -xzf tableau-server-container-setup-tool-<VERSION>.tar.gz

これにより、新しいディレクトリ tableau-server-container-setup-tool-<VERSION> がツールの実行に使用する build-image スクリプトとともにが作成されます。

登録フォームを完成させる

エンド ユーザー ライセンス契約に従い、登録ファイルを編集して、Tableau Server を登録するために必要な一意の識別情報を入力します。ファイル reg-info.json は、一意に識別可能な必須登録情報のテンプレートとして使用でき、Tableau Server in a Container のセットアップ ツールの最上位ディレクトリにあります。このファイルは、イメージで実行されている Tableau Server インスタンスを登録するために使用します。正確な情報を提供することで、登録プロセスを適切に完了させることができます。

eula フィールド値には「accept」が事前に入力されており、エンド ユーザー ライセンス契約 (EULA) に同意していることを示します。EULA は、ビルド ツールの EULA ディレクトリで表示できます。EULA で概説されているように、Tableau Server をアクティブ化するときは、一意に識別可能なユーザー登録を送信する必要があります。登録ファイルの編集が完了すると、他のフィールドに一意の情報を反映する値が入力されます。このファイルは、イメージで実行されている Tableau Server インスタンスを登録するために使用します。正確な情報を入力して登録プロセスを完了させ、登録を送信すると、ライセンス付与の要件が満たされます。

注: Tableau Server を使用するには、EULA に同意する必要があります。EULA に同意しない場合、Tableau Server を実行できません。

編集前の登録ファイル テンプレート reg-info.json:

{
"zip" : "<value>",
"country" : "<value>",
"city" : "<value>",
"last_name" : "<value>",
"industry" : "<value>",
"eula" : "accept",
"title" : "<value>",
"phone" : "<value>",
"company" : "<value>",
"state" : "<value>",
"department" : "<value>",
"first_name" : "<value>",
"email" : "<value>"
}

ツールの使用方法

セットアップ ツールには、build-image という実行可能なスクリプトがあります。これを -h オプションを使用して実行すると、以下のヘルプが表示されます。

./src/build-image -h
Usage: build-image --accepteula -i [INPUT_IMAGE_NAME] -o [OUTPUT_IMAGE_NAME] [optional arguments]
Creates new Tableau Server image with pre-installed database drivers, configuration, and instructions.
REQUIRED

--accepteula              Indicate that you have accepted the End User License Agreement (EULA).

The EULA is available in the EULA directory of this tool.

-i installer              Path to the Tableau Server installer.

OPTIONAL

-o output name            Tag of target generated Tableau Server image.

-e environment file       Optional environment file to configuration overrides to docker image at build time.

-v setup tool version     Prints the Setup tool version.


-b base image version     Prints the default base image URL.

基本的な使用例:

./build-image --accepteula -i tableau-server-image.rpm

アーティファクトやセットアップ スクリプトを提供しなくてもコマンドは実行できますが、追加のリソースは元の Tableau Server in a Container のイメージにコピーされず、インストールもされないため、何も実行されません。

オーケストレーション

Tableau では、Linux で実行されている Tableau Server コンテナーのドキュメントとサポートのみが提供されます。Tableau では、Kubernetes や Docker Swarm などのコンテナー オーケストレーション システムのドキュメントやサポートは提供されていません。ただし、Kubernetes を使用して Tableau Server in a Container を展開することができます。Kubernetes で Tableau コンテナーを展開するためのリソースとガイダンスについては、コミュニティでサポートされている GitHub プロジェクト https://github.com/tableau/tableau-server-in-kubernetes(新しいウィンドウでリンクが開く) を参照してください。

イメージをカスタマイズする

構築時に環境変数を設定する

イメージをカスタマイズできる環境変数のサブセットは、イメージの構築時にのみ設定できます。これには、コンテナー内でルート権限を必要とするユーザー、グループ、およびその他のプロパティが含まれます。既定では、ルート アクションは実行時に使用できません。さらに、構築時に特定の環境変数をイメージにベイク処理しておくと、イメージを実行するたびに設定する必要がないため便利です。これらの環境変数はすべて、環境ファイルを build-image スクリプトに渡すことにより設定できます。

環境ファイル

環境ファイルは、-e 引数を使用して build-image スクリプトに渡すことができます。ファイルは次の形式に準拠している必要があります。

<KEY>=<VALUE>
<KEY>=<VALUE>
使用例:

正しい形式で環境ファイルを作成します。

UNPRIVILEGED_TABLEAU_UID=1012
UNPRIVILEGED_TABLEAU_GID=1020
TABLEAU_USERNAME=myuser
TABLEAU_PASSWORD=pw

ファイルをイメージ ビルダーに渡す

./build-image --accepteula -i tableau-server-2020-3.x86_64.rpm -e <path-to-env-file>
環境変数

環境変数はすべて環境ファイルで設定できます。完全なリストを確認するには、[環境変数] セクションを参照してください。

構築時の環境変数は、次のスクリプトを実行してイメージを構築する場合にのみ設定できます。

環境名既定説明
BASE_IMAGE_URLビルド ツール コマンド build-image -b を使用します。build-image ツールと Dockerfile で指定された既定のイメージは、公式にサポートされている唯一のベース イメージです。このパラメーターを使用して、この特定のベース イメージのコピーをカスタム Docker イメージ リポジトリからプルするか、カスタム ベース イメージを定義できます。カスタム定義のベース イメージを使用する場合 (詳細については、「カスタム ベース イメージの定義」を参照) イメージが UBI 8 (バージョン 2022.1 以前は CentOS または RHEL) に基づいており、Tableau Server を適切に実行するために必要なリソースが含まれていることを確認する必要があります。
PRIVILEGED_TABLEAU_GID997特権 Tableau グループの GID。
UNPRIVILEGED_TABLEAU_GID 998 特権のない Tableau グループの GID。
UNPRIVILEGED_TABLEAU_UID 999 Tableau プロセスを実行するユーザーの UID (シングルユーザー展開)。
UNPRIVILEGED_USERNAME tableau 特権のないユーザーの文字列名。
UNPRIVILEGED_GROUP_NAME tableau 特権のないグループの文字列名。
PRIVILEGED_GROUP_NAMEtsmadmin特権グループの文字列名。
LANG en_US.UTF-8ロケール設定

ドライバー、証明書、その他のファイル

Tableau Server イメージには、データ コネクタまたはドライバーが事前にインストールされていません。Bash セットアップ スクリプトを作成して、build-image スクリプトに Tableau Server に必要なデータ コネクターをインストールするよう指示する必要があります。以下のステップに従います。

  1. Tableau Server in a Container のセットアップ ツールが正しくインストールされていることを確認する

  2. Tableau ドライバー ページ https://www.tableau.com/en-us/support/drivers(新しいウィンドウでリンクが開く) からドライバーをダウンロードする

  3. ダウンロードしたドライバー ファイルを、Tableau Server in a Container のセットアップ ツールの customer-files ディレクトリにコピーします。

    customer-files ディレクトリが Docker イメージにコピーされます。コンテナー内の次のパスに配置されます。/docker/customer-files

  4. Tableau Server in a Container のセットアップ ツール customer-files/setup-script でファイルを編集し、Docker にドライバーのインストール方法を指示します。

    このスクリプトは、Docker イメージの構築時に実行される実行可能な bash ファイルです。(このファイルは、技術的には、環境のセットアップ、構成など、イメージ内の任意のアクションを実行するために使用できます。)

    このスクリプトはコンテナ行されるため、Tableau Server in a Container のイメージで実行するときにコマンドが機能する必要があることに注意してください。

    たとえば、"mydriver.rpm" という名前のドライバーをインストールする場合は、これを setup-script で次のように記述します。

    yum install -y /docker/customer-files/mydriver.rpm
Tableau 管理ビュー

Tableau 管理ビューでは、PostgreSQL ドライバーがインストールされている必要があります。これらのビューを使用する場合は、上記のステップに従って PostgreSQL ドライバーをインストールする必要があります。管理ビューの詳細については、管理ビュー を参照してください。

カスタム ベース イメージを定義する

Tableau Server コンテナーの構築に使用される既定のベース イメージは、Docker Hub から提供される UBI 8 イメージ (バージョン 2022.1 以前の CentOS 7.x) です。場合によっては、別の Docker イメージ リポジトリからイメージをプルするように build image ツールを構成したほうがよいこともあります。たとえば、社内で Docker リポジトリを管理していて、build-image をパブリック リポジトリからプルしたくない場合などです。このベース イメージのパスをカスタマイズするには、次のステップに従います。

  1. 次のコマンドを使用して、現在の build-image ツールの既定のベース イメージ名とバージョンを表示します

    ./build-image -b
  2. 完全に一致するベース イメージ名とバージョンを Docker Hub から取得し、お気に入りのイメージ リポジトリに保存/キャッシュします (会社のイメージ ポリシーに従います)

  3. build image ツールに戻ります。既存の環境ファイルを作成または変更して、値が次の新しい Docker イメージ レジストリ パスに設定されている BASE_IMAGE_URL 環境キーを含めます。

    BASE_IMAGE_URL=<custom-image-registry-path>
  4. 次の環境ファイルを使用してイメージを構築します。

    ./build-image --accepteula -i <rpm> -e <path-to-env-file>

これらのステップを行うことにより、完全に異なるベース イメージを指定できます。この機能は、UBI 8 ベースのイメージ (バージョン 2022.1 以前の RHEL および CentOS 7.x) にのみ対応しており、より安全なイメージを作成できるように提供されています。

Tableau で指定された既定以外のベース イメージを使用すると、正常に起動または機能しないイメージが生成されるリスクがあります。カスタム ベース イメージを使用する場合は、そのベース イメージで Tableau Server を正しく実行できるようにする必要があります。セキュリティ上の懸念などの理由で組織から許可されない場合以外は、既定のベース イメージを使用することをお勧めします。

カスタム ベース イメージは、UBI 8 (バージョン 2022.1 以前の RHEL 7 または CentOS 7) に基づいている必要があります。他のディストリビューションを使用すると、サポートされていないイメージになります。

yum と pip の内部リポジトリを使用する

コンテナー イメージ内の Tableau Server は、デフォルトの yum リポジトリと pip リポジトリを使用して依存パッケージをプルするように構成されています。リポジトリを編集、削除、追加する必要がある場合 (たとえば、セキュリティを向上させるために内部リポジトリを使用する場合など)、イメージ設定ツールの初期化スクリプトを変更する必要があります。

内部リポジトリを使用するには、ソースコードの <setup_tool>/src/image/init/setup_default_environment.bash スクリプトを変更します。内部リポジトリに必要なリポジトリ ファイルはすべて <setup_tool>/src/image/init/ ディレクトリに格納します。このディレクトリが Docker イメージにコピーされます。

ベース イメージとセキュリティ

多くのお客様は、生成された Tableau Server Dockerイメージに対してコンテナー スキャン ツール (AquaScan や TwistLock など) を実行します。これらのセキュリテ ィツールによって、潜在的なセキュリティの脆弱性 (または共通脆弱性識別子(CVE)) のレポートが生成されます。Tableau Server in a Container のイメージに関連する脆弱性には次の 2 つのタイプがあります。

  • Tableau Server に関連付けられている CVE または依存関係のあるライブラリに関連付けられている CVE。
  • 基盤となる Linux ディストリビューションに関連付けられている CVE。

Tableau は、Tableau Server に直接関連付けられている CVE の責任を担います。セキュリティ チームはこれらのレポートを分析して影響と重要度を判断し、問題を解決する優先順位を付けます。ベースラインの修復の優先順位とタイムラインは、元の CVSS 重要度スコアによって決定されます。サードパーティ コンポーネントのセキュリティ更新プログラムは、脆弱性を明らかにする実行可能なコード パスがない限り、通常は、古いリリースにはバックポートされません。

コンテナー化されたディストリビューション モデルを使用するお客様は、OS レイヤーの脆弱性に関するさまざまな課題に直面しています。従来の Tableau Server では、Tableau は安全なアプリケーションの提供に注力し、お客様はオペレーティング システム (Linux または Windows) の管理の責任を担っていました。しかし、コンテナー化されたことで、OS (バージョン 2023.3 からは UBI 8、バージョン 2022.1 以前は CentOS 7.x または RHEL 7.x) とアプリケーションが 1 つのコンテナーにまとめられ、パッケージ化されました。Tableau は、Tableau Server に関連付けられている CVE に対する責任と、サードパーティ ライブラリの CVE がお客様に影響を与えるかどうかを判断する責任を担います。ただし、OS レイヤーに関する問題の責任はお客様が負う必要があります。OS レイヤーのセキュリティ問題に対処するため、お客様は、ベース OS レイヤーを独自のバージョン (バージョン 2022.3 以降は UBI-8 ベース、2022.1 以前は RHEL または CentOS 7.x) に置き換えることができます。その際、Tableau Server が正常に動作していることを検証する必要があります。Tableau Server が依存しているライブラリを削除すると、セキュリティ上の問題により、Tableau Server のインスタンスが機能しなくなる可能性があります。ベース OS レイヤーを変更した場合、お客様はそれが機能することを検証する責任を担います。

Tableau Server in a Container を強化する

Tableau Server in a Container に標準的な強化ステップを適用できます。Tableau Server の強化の詳細については、セキュリティ強化チェックリストを参照してください。

展開構成の例

Docker

Tableau Server in a Container の基本的な使用例
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
自動化された初期管理ユーザーによる Tableau Server in a Container の基本的な使用例
docker run \
-e LICENSE_KEY=<key> \
-e TABLEAU_USERNAME=<myadmin> \
-e TABLEAU_PASSWORD_FILE=/etc/tableau-admin-secret \
-v <full-path-to-pw-file>:/etc/tableau-admin-secret \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
TSM 専用モード
docker run \
-e TSM_ONLY=1 \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
マルチノードの基本的な使用例
最初のノード

オプション 1: サーバー構成 (CONFIG_FILE) でマルチノード トポロジが指定される場合にこれを使用します。

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-v <full-path-to-config-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<name-of-host-machine> \
-d <Tableau Server in a Container image ID or tag>

オプション 2: サーバー構成でマルチ ノードトポロジが指定されていない場合でも、マルチノード展開が必要な場合は、これを使用します。

docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e LICENSE_KEY=<key> -e ALWAYS_WRITE_BOOTSTRAP_FILE=1 \
-p 8080:8080 -p 8800-9000:8800-9000 -p 27000-27010:27000-27010 \
--hostname=<name-of-host-machine> \
-d <Tableau Server in a Container image ID or tag>
追加ノード
docker run \
-v <network-shared-directory>:/docker/config/bootstrap \
-e BOOTSTRAP_INSTALL=1 \
-p 8080:8080 -p 8800-9000:8800-9000 \
--hostname=<name-of-host-machine> \
-d <Tableau Server in a Container image ID or tag>
データ使用の外部化
docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
--hostname=localhost \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
Init コンテナーの基本的な使用例

Init コンテナー

docker run \
-v <empty-data-dir>:/var/opt/tableau \
-e LICENSE_KEY=<key> \
-e INIT_CONTAINER=1 \
--hostname=localhost \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

コンテナーの実行

docker run \
-v <empty-data-dir>:/var/opt/tableau \
--hostname=localhost \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>
シングルノード バックアップからの基本的な復元
docker run \
-v <full-path-to-backup-file>:/docker/config/backup/backup-file.tsbak \
-v <full-path-to-config-only-file>:/docker/config/config.json:ro \
-e LICENSE_KEY=<key> \
-p 8080:8080 -d <Tableau Server in a Container image ID or tag>

Docker の構成

version: '3.2'
services:
    tableau-server:
         hostname: localhost
         volumes:
              - <your-tsm-command-file>:/docker/config/tsm-commands:ro
              - <your-config-file >:/docker/config/config.json:ro
         ports:
              - "8080:8080"
         image: ${IMAGE_NAME}
         environment:
              - LICENSE_KEY=<license-key>

 

 

フィードバックをありがとうございます。フィードバックは正常に送信されました。ありがとうございます!