Tableau Server 컨테이너 - 설정 도구 사용

소개

Tableau Server 컨테이너는 Tableau의 첫 번째 컨테이너 기반 서버 제품군입니다. Tableau Server 컨테이너는 Linux Docker 컨테이너 내부에서 실행되는 올인원 Tableau Server 인스턴스입니다. 즉, Tableau Server 컨테이너 이미지는 완전히 독립된 전체 Tableau Server 응용 프로그램을 실행하는 docker 이미지입니다. Tableau Server 컨테이너는 컨테이너 기반 환경에서 실행되는 Tableau Server를 지원하기 위한 수많은 단계 중 첫 번째입니다. Tableau Server 컨테이너 개념을 이해하는 가장 쉬운 방법은 Tableau Server가 사전 설치된 VM이라고 생각하는 것입니다. 이미지는 UBI 8 이미지(버전 2022.1 이하의 경우 CentOS 7.x)를 기반으로 하며 컨테이너 내부에서 systemd 대신 supervisord를 실행합니다. 컨테이너가 supervisord를 시작하면 Tableau Server가 즉시 초기화 및 시작됩니다. 여기에 있는 많은 설명서는 Tableau Server를 Docker 환경에서 실행할 수 있도록 구성을 제공하고 자동화를 활용하는 방법을 설명하는 데 목적이 있습니다.

Tableau Server 컨테이너 이미지 설정 도구를 사용하면 컨테이너 이미지를 만들고 사용자 지정 패키지와 아티팩트를 포함하도록 사용자 지정할 수 있습니다. 이 도구의 주요 기능 중 하나는 컨테이너 이미지를 만들고 사용자 지정 데이터 커넥터를 설치하는 것입니다.

Tableau Server 컨테이너 제한 사항

  • Tableau Server 컨테이너는 서버 ATR을 사용한 라이선스 활성화만 지원합니다. 서버 ATR을 사용한 오프라인 활성화는 2023.1 이상에서 지원됩니다. 이 기능은 컨테이너에서 사용할 수 있지만 추가 단계와 승인이 필요합니다. Air-Gapped 환경이나 오프라인 환경에서 Tableau Server 컨테이너를 실행해야 하는 경우 계정 담당자에게 자세한 내용을 문의하십시오.
  • Tableau Server 컨테이너는 현재 RMT(Resource Monitoring Tool) 에이전트를 지원하지 않습니다.
  • Tableau Server 컨테이너에서는 Kerberos가 지원되지 않습니다.

Tableau Server 컨테이너 설정 도구

Tableau Server 컨테이너 설정 도구인 build-image는 Tableau .rpm 설치 프로그램 및 제공된 구성 파일을 사용하여 사용자 지정 Tableau Server 컨테이너 이미지를 작성합니다.

이 설정 도구는 Tableau Server 설치 프로그램, 드라이버 및 다른 아티팩트를 입력으로 가져와 Docker 이미지를 만듭니다. build-image 도구를 올바르게 사용할 경우 새로 생성된 이미지에 원하는 아티팩트가 설치됩니다.

작성 시 지원되는 배포판

Tableau Server 컨테이너 이미지를 작성하는 것은 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 컨테이너에 필요한 기능이 포함되어 있지 않습니다.

필요한 파일 다운로드

설정 도구를 사용하려면 도구와 호환되는 서버 설치 프로그램 .rpm 파일을 모두 다운로드해야 합니다. 설치 프로그램 파일은 버전 2021.2.0 이상이어야 합니다. 두 파일 모두 Tableau Server 페이지(링크가 새 창에서 열림)에서 다운로드할 수 있습니다.

  1. 서버 설치 프로그램 파일 버전 tableau-server-<version>.rpm 2021.2.0 이상을 다운로드합니다.

  2. 컨테이너의 Tableau Server 설정 도구 tableau-server-container-setup-tool-<version>.tar.gz를 다운로드합니다.

설치

Tableau Server 컨테이너 설정 도구는 tarball로 제공됩니다. 이 압축 파일의 내용물을 추출해야 합니다. 다음 예에서는 Tableau Server 컨테이너 설정 도구 아카이브가 사용자의 현재 디렉터리에 있다고 가정합니다.

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

이렇게 하면 도구를 실행하는 데 사용하는 build-image 스크립트를 사용하여 새 디렉터리 tableau-server-container-setup-tool-<VERSION>가 만들어집니다.

등록 양식 작성

등록 파일을 편집하여 최종 사용자 사용권 계약에 따라 Tableau Server를 등록하는 데 필요한 고유 식별 정보를 제공합니다. reg-info.json 파일은 고유하게 식별 가능한 필수 등록 정보의 템플릿 역할을 하며 Tableau Server 컨테이너 설치 도구의 최상위 디렉터리에 있습니다. 이 파일은 이미지에서 실행 중인 Tableau Server 인스턴스를 등록하는 데 사용됩니다. 정확한 정보를 제공하면 등록 프로세스가 올바르게 완료됩니다.

eula 필드 값은 EULA(최종 사용자 사용권 계약)에 동의함을 나타내는 "accept"와 함께 미리 채워집니다. 작성 도구의 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 컨테이너 이미지에 어떤 추가 리소스도 복사하거나 설치하지 않기 때문에 아무 일도 일어나지 않습니다.

오케스트레이션

Tableau는 Linux에서 실행되는 Tableau Server 컨테이너에 대한 설명서 및 지원만 제공합니다. Tableau는 Kubernetes 또는 Docker Swarm과 같은 컨테이너 오케스트레이션 시스템에 대한 설명서나 지원을 제공하지 않습니다. 그러나 Kubernetes는 Tableau Server 컨테이너를 배포하는 데 사용할 수 있습니다. 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

파일을 Image Builder로 전달합니다.

./build-image --accepteula -i tableau-server-2020-3.x86_64.rpm -e <path-to-env-file>
환경 변수

환경 파일에서 모든 환경 변수를 설정할 수 있습니다. 전체 목록을 보려면 환경 변수 섹션을 살펴보십시오.

빌드 타임 환경 변수는 이 스크립트를 실행하여 이미지를 작성하는 경우에만 설정할 수 있습니다.

환경 이름기본값설명
BASE_IMAGE_URLbuild 도구 명령 사용: build-image -bbuild-image 도구와 Dockerfile에 지정된 기본 이미지는 공식적으로 지원되는 유일한 기본 이미지입니다. 이 매개 변수는 사용자 지정 Docker 이미지 리포지토리에서 이 특정 기본 이미지의 복사본을 가져오거나 사용자 지정 기본 이미지를 정의하는 데 사용할 수 있습니다. 사용자 정의 기본 이미지를 사용하도록 선택한 경우(자세한 내용은 사용자 지정 기본 이미지 정의 참조), UBI 8(버전 2022.1 이하의 경우 CentOS 7 또는 RHEL 7)을 기반으로 하고 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 이미지는 사전 설치된 데이터 커넥터 또는 드라이버와 함께 제공되지 않습니다. Tableau Server에 필요한 데이터 커넥터를 설치하도록 build-image 스크립트에 지시하는 bash setup-script를 만들어야 합니다. 다음 단계를 수행하십시오.

  1. Tableau Server 컨테이너 설정 도구가 제대로 설치되어 있는지 확인합니다.

  2. Tableau 드라이버 페이지 https://www.tableau.com/ko-kr/support/drivers(링크가 새 창에서 열림)에서 드라이버를 다운로드합니다.

  3. 다운로드한 드라이버 파일을 Tableau Server 컨테이너 설정 도구의 customer-files 디렉터리에 복사합니다.

    customer-files 디렉터리가 docker 이미지로 복사됩니다. 이는 컨테이너 내부의 /docker/customer-files 경로에 있습니다.

  4. Tableau Server 컨테이너 설정 도구 customer-files/setup-script의 파일을 편집하여 Docker에 드라이버 설치 방법을 지시합니다.

    스크립트는 Docker 이미지가 작성될 때 실행되는 bash 실행 파일입니다. (기술적으로 환경 설정, 구성 등을 포함하여 이미지에서 임의의 동작을 수행하는 데 사용할 수 있습니다.)

    스크립트는 컨테이너 내부에서 실행되므로 Tableau Server 컨테이너 이미지 내에서 실행될 때 명령이 작동해야 합니다.

    예를 들어 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(Common Vulnerabilities and Exposures)에 대한 보고서를 생성합니다. Tableau Server 컨테이너 이미지와 연관된 두 가지 유형의 취약점이 있습니다.

  • Tableau Server 또는 종속 관계에 있는 라이브러리와 연관된 CVE
  • 기초 Linux 배포판과 연관된 CVE

Tableau는 Tableau Server와 직접 연관된 CVE를 처리합니다. 보안 팀은 이러한 보고서를 분석하여 문제 해결에 우선 순위를 지정할 수 있도록 영향도와 심각도를 결정합니다. 기본 수정 우선 순위와 일정은 원래 CVSS 심각도 점수에 따라 결정됩니다. 타사 구성 요소 보안 업데이트는 일반적으로 취약점을 노출하는 실행 가능한 코드 경로가 없는 한 이전 릴리스로 백포팅되지 않습니다.

컨테이너형 배포 모델을 사용하는 고객은 OS 계층 취약점과 관련된 여러 가지 문제에 직면해 있습니다. 전통적으로 Tableau는 Tableau Server를 통해 안전한 응용 프로그램을 제공하는 데 주력했으며 고객은 운영 체제(Linux 또는 Windows)를 관리해야 합니다. 그러나 컨테이너화를 사용하면 OS(버전 2023.3부터 UBI 8, 버전 2022.1 이하는 CentOS 7.x 또는 RHEL 7.x) 및 응용 프로그램이 하나의 컨테이너에 함께 패키징됩니다. 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 컨테이너 강화

Tableau Server 컨테이너에 표준 강화 단계를 적용할 수 있습니다. Tableau Server 강화에 대한 자세한 내용은 보안 강화 검사 목록을 참조하십시오.

배포 구성 예

Docker

Tableau Server 컨테이너 기본 사용법
docker run \
-e LICENSE_KEY=<key>
-p 8080:8080
-d <Tableau Server in a Container image ID or tag>
자동화된 초기 관리자 사용자가 있는 Tableau Server 컨테이너 기본 사용법
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>
컨테이너 초기화 기본 사용법

컨테이너 초기화

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-Compose

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>

 

 

피드백을 제공해 주셔서 감사합니다!귀하의 피드백이 제출되었습니다. 감사합니다!