InfoGrab Docs

GCP 컴퓨트 인스턴스 자동 검색

요약

이 가이드는 Google Compute Engine 가상 머신에 대한 자동 서버 검색을 설정하는 방법을 설명합니다. Teleport Discovery Service는 GCP에 연결하여 구성된 레이블과 일치하는 GCP Compute Engine 인스턴스를 자동으로 검색하고 등록할 수 있습니다.

이 가이드는 Google Compute Engine 가상 머신에 대한 자동 서버 검색을 설정하는 방법을 설명합니다.

작동 방식#

Teleport Discovery Service는 GCP에 연결하여 구성된 레이블과 일치하는 GCP Compute Engine 인스턴스를 자동으로 검색하고 등록할 수 있습니다. 그런 다음 이렇게 검색된 인스턴스에서 스크립트를 실행하여 Teleport를 설치하고, 시작하여 클러스터에 참가시킵니다.

사전 요구 사항#

  • A running Teleport cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.

  • The tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Determine the version of your Teleport cluster. The tctl and tsh clients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at /v1/webapi/find and use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:

      $ TELEPORT_DOMAIN=
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. Follow the instructions for your platform to install tctl and tsh clients:

  • Discovery Service를 실행할 GCP 컴퓨트 인스턴스.
  • 기본 Teleport 설치 스크립트를 사용하는 경우 Ubuntu/Debian/RHEL을 실행하는 Teleport 클러스터에 참가할 GCP 컴퓨트 인스턴스. (다른 Linux 배포판의 경우 Teleport를 수동으로 설치할 수 있습니다.)

To check that you can connect to your Teleport cluster, sign in with tsh login, then verify that you can run tctl commands using your current credentials.

For example, run the following command, assigning to the domain name of the Teleport Proxy Service in your cluster and to your Teleport username:

$ tsh login --proxy= --user=
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

If you can connect to the cluster and run the tctl status command, you can use your current credentials to run subsequent tctl commands from your workstation. If you host your own Teleport cluster, you can also run tctl commands on the computer that hosts the Teleport Auth Service for full permissions.

1/5단계. GCP 초대 토큰 생성#

GCP 컴퓨트 인스턴스를 검색할 때 Teleport는 참가하는 SSH Service 인스턴스의 인증을 위해 GCP 초대 토큰을 사용합니다.

token.yaml 파일을 생성하십시오:

# token.yaml
kind: token
version: v2
metadata:
  # 토큰 이름은 비밀이 아닙니다. 인스턴스는 이 토큰을 사용하기 위해
  # GCP 프로젝트에서 실행 중임을 증명해야 합니다
  name: gcp-discovery-token
spec:
  # 필요한 최소한의 역할 집합 사용 (예: Node, Proxy, App, Kube, DB, WindowsDesktop)
  roles: [Node]

  # 이 토큰에 허용되는 참가 방법 설정
  join_method: gcp

  gcp:
    allow:
      # VM이 참가할 수 있는 GCP 프로젝트 ID.
      - project_ids: []
        # (선택 사항) VM이 참가할 수 있는 위치. 참고: 리전과 영역 모두 허용됩니다.
        locations: []
        # (선택 사항) VM이 참가할 수 있는 서비스 계정의 이메일 주소.
        service_accounts: []

project_ids 필드에 인스턴스의 프로젝트 ID를 추가하십시오. 다음 명령어로 토큰을 Teleport 클러스터에 추가하십시오:

$ tctl create -f token.yaml

2/5단계. Teleport에 대한 IAM 권한 구성#

인스턴스를 검색하는 데 필요한 IAM 권한을 Teleport에 부여할 서비스 계정을 생성하십시오.

GCP 콘솔에서 IAM > 역할로 이동하여 + 역할 만들기를 클릭하십시오. 역할 이름(예: teleport-discovery)을 선택하고 다음 권한을 부여하십시오:

  • compute.instances.get
  • compute.instances.getGuestAttributes
  • compute.instances.list
  • compute.instances.setMetadata
  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list

커스텀 역할

만들기를 클릭하십시오.

IAM > 서비스 계정으로 이동하여 + 서비스 계정 만들기를 클릭하십시오. 서비스 계정 이름(예: teleport-discovery)을 선택하고 이메일 주소를 클립보드에 복사하십시오. 만들기 및 계속을 클릭하십시오.

서비스 계정

IAM으로 이동하여 액세스 권한 부여를 클릭하십시오. 서비스 계정의 이메일을 새 주 구성원 필드에 붙여넣고 커스텀 역할을 선택하십시오. 저장을 클릭하십시오.

역할 할당

Discovery Service가 GCP 컴퓨트 인스턴스에서 실행될 경우 인스턴스를 편집하고 서비스 계정을 인스턴스에 할당하고 Compute API에 대한 읽기/쓰기 액세스가 포함되도록 액세스 범위를 설정하십시오.

서비스 계정 할당

다음을 복사하여 teleport-discovery-role.yaml 파일에 붙여넣으십시오:

# teleport-discovery-role.yaml
title: "teleport-discovery"
description: "A role to enable Teleport to discover GCP compute instances"
stage: "ALPHA"
includedPermissions:
- compute.instances.get
- compute.instances.getGuestAttributes
- compute.instances.list
- compute.instances.setMetadata
- iam.serviceAccounts.actAs
- iam.serviceAccounts.get
- iam.serviceAccounts.list

그런 다음 다음 명령어를 실행하여 역할을 생성하십시오:

$ gcloud iam roles create teleport_discovery \
--project= \
--file=teleport-discovery-role.yaml

다음 명령어를 실행하여 서비스 계정을 생성하십시오:

$ gcloud iam service-accounts create teleport-discovery \
--description="A service account to enable Teleport to discover GCP compute instances" \
--display-name="teleport-discovery"

다음 명령어를 실행하여 새 서비스 계정에 새 역할을 추가하십시오:

$ gcloud projects add-iam-policy-binding  \
--member="serviceAccount:teleport-discovery@.iam.gserviceaccount.com" \
--role="projects//roles/teleport_discovery"

Discovery Service가 GCP 컴퓨트 인스턴스에서 실행될 경우 다음 명령어를 실행하여 인스턴스에 서비스 계정을 추가하십시오. 을 Discovery Service VM 이름으로 바꾸십시오:

$ gcloud compute instances set-service-account  \
--service-account=teleport-discovery@.iam.gserviceaccount.com \
--scopes=default,compute-rw

3/5단계. 검색할 인스턴스 구성#

검색할 각 인스턴스에 서비스 계정이 할당되어 있는지 확인하십시오. 서비스 계정에 권한은 필요하지 않습니다. 인스턴스에 서비스 계정이 있는지 확인하려면 다음 명령어를 실행하고 serviceAccounts 아래에 최소 하나의 항목이 있는지 확인하십시오:

$ gcloud compute instances describe --format="yaml(name,serviceAccounts)" 

인스턴스에서 게스트 속성 활성화#

Teleport가 SSH 호스트 키에 액세스할 수 있도록 검색할 인스턴스에서 게스트 속성(자주 업데이트되지 않는 데이터에 사용되는 커스텀 메타데이터의 하위 집합)을 활성화해야 합니다. 인스턴스 메타데이터에서 enable-guest-attributesTRUE로 설정하여 게스트 속성을 활성화하십시오.

$ gcloud compute instances add-metadata  \
--metadata=enable-guest-attributes=True

인스턴스 생성 시 게스트 속성이 활성화된 경우 게스트 속성에 인스턴스의 호스트 키가 자동으로 채워집니다. 인스턴스 생성 후 게스트 속성이 활성화된 경우 아래와 같이 게스트 속성에 호스트 키를 수동으로 추가할 수 있습니다:

add-host-keys.sh 파일을 생성하고 다음 내용을 복사하십시오:

#!/usr/bin/env bash
for file in /etc/ssh/ssh_host_*_key.pub; do
  read -r KEY_TYPE KEY _ <"$file"
  curl -X PUT --data "$KEY" "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/hostkeys/$KEY_TYPE" -H "Metadata-Flavor: Google"
done

다음 명령어를 실행하여 시작 스크립트의 일부로 호스트 키를 추가하십시오:

$ gcloud compute instances add-metadata  \
--metadata-from-file=startup-script="add-host-keys.sh"

다음 명령어를 실행하여 SSH를 통해 호스트 키를 추가하십시오:

$ gcloud compute ssh  \
--command='for file in /etc/ssh/ssh_host_*_key.pub; do KEY_TYPE=$(awk '\''{print $1}'\'' $file); KEY=$(awk '\''{print $2}'\''  $file); curl -X PUT --data "$KEY" "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/hostkeys/$KEY_TYPE" -H "Metadata-Flavor: Google"; done'

4/5단계. Teleport Discovery Service 설치#

Tip

다른 Teleport 서비스(예: Auth 또는 Proxy)를 이미 실행 중인 호스트에서 Discovery Service를 실행할 계획이라면 이 단계를 건너뛸 수 있습니다.

Discovery Service를 실행할 가상 머신에 Teleport를 설치하십시오.

To install a Teleport Agent on your Linux server:

The recommended installation method is the cluster install script. It will select the correct version, edition, and installation mode for your cluster.

  1. Assign to your Teleport cluster hostname and port, but not the scheme (https://).

  2. Run your cluster's install script:

    $ curl "https:///scripts/install.sh" | sudo bash
    

5/5단계. GCP 컴퓨트 인스턴스를 검색하도록 Teleport 구성#

자체 호스트에서 Discovery Service를 실행하는 경우 서비스가 클러스터에 연결하기 위한 유효한 초대 토큰이 필요합니다. Teleport Auth Service에 대해 다음 명령어를 실행하여 토큰을 생성하십시오:

$ tctl tokens add --type=discovery

생성된 토큰을 Discovery Service를 실행할 가상 머신의 /tmp/token에 저장하십시오.

에 클러스터의 Teleport Proxy Service 호스트 및 포트를 지정하고, 에 등록할 리소스 그룹을 식별하는 이름을 지정하십시오:

# teleport.yaml
version: v3
teleport:
  join_params:
    token_name: "/tmp/token"
    method: token
  proxy_server: "teleport.example.com:443" />"
auth_service:
  enabled: false
proxy_service:
  enabled: false
ssh_service:
  enabled: false
discovery_service:
  enabled: true
  discovery_group:  name="gcp-prod" />

등록할 리소스에 대한 매처를 생성하십시오.

Tip

동적 구성은 Terraform을 사용하여 관리할 수 있는 Discovery Config를 사용합니다. 자세한 내용은 Terraform discovery_config 참조를 참조하십시오.

정적 구성은 처음에는 더 간단하지만 등록 변경 시 teleport.yaml 편집 및 Discovery Service 재시작이 필요하므로 유연성이 낮습니다.

이전에 구성한 것과 동일한 discovery group이 있는 Discovery Config 리소스를 생성하여 GCP VM 검색을 활성화하십시오.

다음 내용으로 discovery-gcp-prod.yaml 파일을 생성하십시오:

kind: discovery_config
version: v1
metadata:
  name: example-discovery-config
spec:
  discovery_group:  name="gcp-prod" />
  gcp:
    - types: ["gce"]
      # VM이 참가할 수 있는 GCP 프로젝트의 ID.
      project_ids: []
      # (선택 사항) VM이 참가할 수 있는 위치. 참고: 리전과 영역 모두 허용됩니다.
      locations: []
      # (선택 사항) VM이 참가할 수 있는 서비스 계정의 이메일 주소.
      service_accounts: []
      # (선택 사항) 참가하는 VM이 가져야 하는 레이블.
      labels:
        "env": "prod" # label:env=prod인 가상 머신 매칭

spec.gcp 아래의 키를 GCP 환경에 맞게 조정하십시오. 특히 Discovery Service와 연결할 프로젝트 ID, 위치, 서비스 계정, 레이블을 확인하십시오.

다음 명령어를 실행하여 Discovery Config를 생성하십시오:

$ tctl create -f discovery-gcp-prod.yaml

일치하는 인스턴스가 자동으로 Teleport 클러스터에 추가됩니다.

언제든지 Discovery Config를 업데이트할 수 있으며, 서비스가 자동으로 변경 사항을 재적용합니다.

GCP VM 검색을 활성화하려면 teleport.yamldiscovery_service.gcp 섹션에 최소 하나의 항목이 포함되어야 합니다:

# teleport.yaml
# ...
discovery_service:
  enabled: true
  discovery_group:  name="gcp-prod" />
  gcp:
    - types: ["gce"]
      # VM이 참가할 수 있는 GCP 프로젝트의 ID.
      project_ids: []
      # (선택 사항) VM이 참가할 수 있는 위치. 참고: 리전과 영역 모두 허용됩니다.
      locations: []
      # (선택 사항) VM이 참가할 수 있는 서비스 계정의 이메일 주소.
      service_accounts: []
      # (선택 사항) 참가하는 VM이 가져야 하는 레이블.
      labels:
        "env": "prod" # label:env=prod인 가상 머신 매칭

discovery_service.gcp 아래의 키를 GCP 환경에 맞게 조정하십시오. 특히 Discovery Service와 연결할 프로젝트, 위치, 서비스 계정, 태그를 확인하십시오.

GCP 자격 증명#

Teleport Discovery Service가 로그인할 수 있도록 위에서 생성한 teleport-discovery GCP 서비스 계정의 자격 증명이 있어야 합니다.

가장 쉬운 방법은 GCP 인스턴스에서 Discovery Service를 실행하고 해당 인스턴스에 서비스 계정을 할당하는 것입니다. 대체 방법에 대한 자세한 내용은 애플리케이션 기본 자격 증명 설정을 참조하십시오.

자동 검색 레이블#

Teleport applies a set of default labels to resources on AWS, Azure, and Google Cloud that join a cluster via auto-discovery. See the auto-discovery labels reference

고급 구성#

(!docs/pages/includes/auto-discovery/server-advanced-config.mdx matcher="gcp"!)

Use a custom installation script#

(!docs/pages/includes/server-access/custom-installer.mdx matcher="gcp"!)

다음 단계#

GCP 컴퓨트 인스턴스 자동 검색

원문 보기
요약

이 가이드는 Google Compute Engine 가상 머신에 대한 자동 서버 검색을 설정하는 방법을 설명합니다. Teleport Discovery Service는 GCP에 연결하여 구성된 레이블과 일치하는 GCP Compute Engine 인스턴스를 자동으로 검색하고 등록할 수 있습니다.

이 가이드는 Google Compute Engine 가상 머신에 대한 자동 서버 검색을 설정하는 방법을 설명합니다.

작동 방식#

Teleport Discovery Service는 GCP에 연결하여 구성된 레이블과 일치하는 GCP Compute Engine 인스턴스를 자동으로 검색하고 등록할 수 있습니다. 그런 다음 이렇게 검색된 인스턴스에서 스크립트를 실행하여 Teleport를 설치하고, 시작하여 클러스터에 참가시킵니다.

사전 요구 사항#

  • A running Teleport cluster. If you want to get started with Teleport, sign up for a free trial or set up a demo environment.

  • The tctl and tsh clients.

    Installing `tctl` and `tsh` clients
    1. Determine the version of your Teleport cluster. The tctl and tsh clients must be at most one major version behind your Teleport cluster version. Send a GET request to the Proxy Service at /v1/webapi/find and use a JSON query tool to obtain your cluster version. Replace with the web address of your Teleport Proxy Service:

      $ TELEPORT_DOMAIN=
      $ TELEPORT_VERSION="$(curl -s https://$TELEPORT_DOMAIN/v1/webapi/find | jq -r '.server_version')"
      
    2. Follow the instructions for your platform to install tctl and tsh clients:

  • Discovery Service를 실행할 GCP 컴퓨트 인스턴스.
  • 기본 Teleport 설치 스크립트를 사용하는 경우 Ubuntu/Debian/RHEL을 실행하는 Teleport 클러스터에 참가할 GCP 컴퓨트 인스턴스. (다른 Linux 배포판의 경우 Teleport를 수동으로 설치할 수 있습니다.)

To check that you can connect to your Teleport cluster, sign in with tsh login, then verify that you can run tctl commands using your current credentials.

For example, run the following command, assigning to the domain name of the Teleport Proxy Service in your cluster and to your Teleport username:

$ tsh login --proxy= --user=
$ tctl status
# Cluster  (=teleport.url=)
# Version  (=teleport.version=)
# CA pin   (=presets.ca_pin=)

If you can connect to the cluster and run the tctl status command, you can use your current credentials to run subsequent tctl commands from your workstation. If you host your own Teleport cluster, you can also run tctl commands on the computer that hosts the Teleport Auth Service for full permissions.

1/5단계. GCP 초대 토큰 생성#

GCP 컴퓨트 인스턴스를 검색할 때 Teleport는 참가하는 SSH Service 인스턴스의 인증을 위해 GCP 초대 토큰을 사용합니다.

token.yaml 파일을 생성하십시오:

# token.yaml
kind: token
version: v2
metadata:
  # 토큰 이름은 비밀이 아닙니다. 인스턴스는 이 토큰을 사용하기 위해
  # GCP 프로젝트에서 실행 중임을 증명해야 합니다
  name: gcp-discovery-token
spec:
  # 필요한 최소한의 역할 집합 사용 (예: Node, Proxy, App, Kube, DB, WindowsDesktop)
  roles: [Node]

  # 이 토큰에 허용되는 참가 방법 설정
  join_method: gcp

  gcp:
    allow:
      # VM이 참가할 수 있는 GCP 프로젝트 ID.
      - project_ids: []
        # (선택 사항) VM이 참가할 수 있는 위치. 참고: 리전과 영역 모두 허용됩니다.
        locations: []
        # (선택 사항) VM이 참가할 수 있는 서비스 계정의 이메일 주소.
        service_accounts: []

project_ids 필드에 인스턴스의 프로젝트 ID를 추가하십시오. 다음 명령어로 토큰을 Teleport 클러스터에 추가하십시오:

$ tctl create -f token.yaml

2/5단계. Teleport에 대한 IAM 권한 구성#

인스턴스를 검색하는 데 필요한 IAM 권한을 Teleport에 부여할 서비스 계정을 생성하십시오.

GCP 콘솔에서 IAM > 역할로 이동하여 + 역할 만들기를 클릭하십시오. 역할 이름(예: teleport-discovery)을 선택하고 다음 권한을 부여하십시오:

  • compute.instances.get
  • compute.instances.getGuestAttributes
  • compute.instances.list
  • compute.instances.setMetadata
  • iam.serviceAccounts.actAs
  • iam.serviceAccounts.get
  • iam.serviceAccounts.list

커스텀 역할

만들기를 클릭하십시오.

IAM > 서비스 계정으로 이동하여 + 서비스 계정 만들기를 클릭하십시오. 서비스 계정 이름(예: teleport-discovery)을 선택하고 이메일 주소를 클립보드에 복사하십시오. 만들기 및 계속을 클릭하십시오.

서비스 계정

IAM으로 이동하여 액세스 권한 부여를 클릭하십시오. 서비스 계정의 이메일을 새 주 구성원 필드에 붙여넣고 커스텀 역할을 선택하십시오. 저장을 클릭하십시오.

역할 할당

Discovery Service가 GCP 컴퓨트 인스턴스에서 실행될 경우 인스턴스를 편집하고 서비스 계정을 인스턴스에 할당하고 Compute API에 대한 읽기/쓰기 액세스가 포함되도록 액세스 범위를 설정하십시오.

서비스 계정 할당

다음을 복사하여 teleport-discovery-role.yaml 파일에 붙여넣으십시오:

# teleport-discovery-role.yaml
title: "teleport-discovery"
description: "A role to enable Teleport to discover GCP compute instances"
stage: "ALPHA"
includedPermissions:
- compute.instances.get
- compute.instances.getGuestAttributes
- compute.instances.list
- compute.instances.setMetadata
- iam.serviceAccounts.actAs
- iam.serviceAccounts.get
- iam.serviceAccounts.list

그런 다음 다음 명령어를 실행하여 역할을 생성하십시오:

$ gcloud iam roles create teleport_discovery \
--project= \
--file=teleport-discovery-role.yaml

다음 명령어를 실행하여 서비스 계정을 생성하십시오:

$ gcloud iam service-accounts create teleport-discovery \
--description="A service account to enable Teleport to discover GCP compute instances" \
--display-name="teleport-discovery"

다음 명령어를 실행하여 새 서비스 계정에 새 역할을 추가하십시오:

$ gcloud projects add-iam-policy-binding  \
--member="serviceAccount:teleport-discovery@.iam.gserviceaccount.com" \
--role="projects//roles/teleport_discovery"

Discovery Service가 GCP 컴퓨트 인스턴스에서 실행될 경우 다음 명령어를 실행하여 인스턴스에 서비스 계정을 추가하십시오. 을 Discovery Service VM 이름으로 바꾸십시오:

$ gcloud compute instances set-service-account  \
--service-account=teleport-discovery@.iam.gserviceaccount.com \
--scopes=default,compute-rw

3/5단계. 검색할 인스턴스 구성#

검색할 각 인스턴스에 서비스 계정이 할당되어 있는지 확인하십시오. 서비스 계정에 권한은 필요하지 않습니다. 인스턴스에 서비스 계정이 있는지 확인하려면 다음 명령어를 실행하고 serviceAccounts 아래에 최소 하나의 항목이 있는지 확인하십시오:

$ gcloud compute instances describe --format="yaml(name,serviceAccounts)" 

인스턴스에서 게스트 속성 활성화#

Teleport가 SSH 호스트 키에 액세스할 수 있도록 검색할 인스턴스에서 게스트 속성(자주 업데이트되지 않는 데이터에 사용되는 커스텀 메타데이터의 하위 집합)을 활성화해야 합니다. 인스턴스 메타데이터에서 enable-guest-attributesTRUE로 설정하여 게스트 속성을 활성화하십시오.

$ gcloud compute instances add-metadata  \
--metadata=enable-guest-attributes=True

인스턴스 생성 시 게스트 속성이 활성화된 경우 게스트 속성에 인스턴스의 호스트 키가 자동으로 채워집니다. 인스턴스 생성 후 게스트 속성이 활성화된 경우 아래와 같이 게스트 속성에 호스트 키를 수동으로 추가할 수 있습니다:

add-host-keys.sh 파일을 생성하고 다음 내용을 복사하십시오:

#!/usr/bin/env bash
for file in /etc/ssh/ssh_host_*_key.pub; do
  read -r KEY_TYPE KEY _ <"$file"
  curl -X PUT --data "$KEY" "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/hostkeys/$KEY_TYPE" -H "Metadata-Flavor: Google"
done

다음 명령어를 실행하여 시작 스크립트의 일부로 호스트 키를 추가하십시오:

$ gcloud compute instances add-metadata  \
--metadata-from-file=startup-script="add-host-keys.sh"

다음 명령어를 실행하여 SSH를 통해 호스트 키를 추가하십시오:

$ gcloud compute ssh  \
--command='for file in /etc/ssh/ssh_host_*_key.pub; do KEY_TYPE=$(awk '\''{print $1}'\'' $file); KEY=$(awk '\''{print $2}'\''  $file); curl -X PUT --data "$KEY" "http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/hostkeys/$KEY_TYPE" -H "Metadata-Flavor: Google"; done'

4/5단계. Teleport Discovery Service 설치#

Tip

다른 Teleport 서비스(예: Auth 또는 Proxy)를 이미 실행 중인 호스트에서 Discovery Service를 실행할 계획이라면 이 단계를 건너뛸 수 있습니다.

Discovery Service를 실행할 가상 머신에 Teleport를 설치하십시오.

To install a Teleport Agent on your Linux server:

The recommended installation method is the cluster install script. It will select the correct version, edition, and installation mode for your cluster.

  1. Assign to your Teleport cluster hostname and port, but not the scheme (https://).

  2. Run your cluster's install script:

    $ curl "https:///scripts/install.sh" | sudo bash
    

5/5단계. GCP 컴퓨트 인스턴스를 검색하도록 Teleport 구성#

자체 호스트에서 Discovery Service를 실행하는 경우 서비스가 클러스터에 연결하기 위한 유효한 초대 토큰이 필요합니다. Teleport Auth Service에 대해 다음 명령어를 실행하여 토큰을 생성하십시오:

$ tctl tokens add --type=discovery

생성된 토큰을 Discovery Service를 실행할 가상 머신의 /tmp/token에 저장하십시오.

에 클러스터의 Teleport Proxy Service 호스트 및 포트를 지정하고, 에 등록할 리소스 그룹을 식별하는 이름을 지정하십시오:

# teleport.yaml
version: v3
teleport:
  join_params:
    token_name: "/tmp/token"
    method: token
  proxy_server: "teleport.example.com:443" />"
auth_service:
  enabled: false
proxy_service:
  enabled: false
ssh_service:
  enabled: false
discovery_service:
  enabled: true
  discovery_group:  name="gcp-prod" />

등록할 리소스에 대한 매처를 생성하십시오.

Tip

동적 구성은 Terraform을 사용하여 관리할 수 있는 Discovery Config를 사용합니다. 자세한 내용은 Terraform discovery_config 참조를 참조하십시오.

정적 구성은 처음에는 더 간단하지만 등록 변경 시 teleport.yaml 편집 및 Discovery Service 재시작이 필요하므로 유연성이 낮습니다.

이전에 구성한 것과 동일한 discovery group이 있는 Discovery Config 리소스를 생성하여 GCP VM 검색을 활성화하십시오.

다음 내용으로 discovery-gcp-prod.yaml 파일을 생성하십시오:

kind: discovery_config
version: v1
metadata:
  name: example-discovery-config
spec:
  discovery_group:  name="gcp-prod" />
  gcp:
    - types: ["gce"]
      # VM이 참가할 수 있는 GCP 프로젝트의 ID.
      project_ids: []
      # (선택 사항) VM이 참가할 수 있는 위치. 참고: 리전과 영역 모두 허용됩니다.
      locations: []
      # (선택 사항) VM이 참가할 수 있는 서비스 계정의 이메일 주소.
      service_accounts: []
      # (선택 사항) 참가하는 VM이 가져야 하는 레이블.
      labels:
        "env": "prod" # label:env=prod인 가상 머신 매칭

spec.gcp 아래의 키를 GCP 환경에 맞게 조정하십시오. 특히 Discovery Service와 연결할 프로젝트 ID, 위치, 서비스 계정, 레이블을 확인하십시오.

다음 명령어를 실행하여 Discovery Config를 생성하십시오:

$ tctl create -f discovery-gcp-prod.yaml

일치하는 인스턴스가 자동으로 Teleport 클러스터에 추가됩니다.

언제든지 Discovery Config를 업데이트할 수 있으며, 서비스가 자동으로 변경 사항을 재적용합니다.

GCP VM 검색을 활성화하려면 teleport.yamldiscovery_service.gcp 섹션에 최소 하나의 항목이 포함되어야 합니다:

# teleport.yaml
# ...
discovery_service:
  enabled: true
  discovery_group:  name="gcp-prod" />
  gcp:
    - types: ["gce"]
      # VM이 참가할 수 있는 GCP 프로젝트의 ID.
      project_ids: []
      # (선택 사항) VM이 참가할 수 있는 위치. 참고: 리전과 영역 모두 허용됩니다.
      locations: []
      # (선택 사항) VM이 참가할 수 있는 서비스 계정의 이메일 주소.
      service_accounts: []
      # (선택 사항) 참가하는 VM이 가져야 하는 레이블.
      labels:
        "env": "prod" # label:env=prod인 가상 머신 매칭

discovery_service.gcp 아래의 키를 GCP 환경에 맞게 조정하십시오. 특히 Discovery Service와 연결할 프로젝트, 위치, 서비스 계정, 태그를 확인하십시오.

GCP 자격 증명#

Teleport Discovery Service가 로그인할 수 있도록 위에서 생성한 teleport-discovery GCP 서비스 계정의 자격 증명이 있어야 합니다.

가장 쉬운 방법은 GCP 인스턴스에서 Discovery Service를 실행하고 해당 인스턴스에 서비스 계정을 할당하는 것입니다. 대체 방법에 대한 자세한 내용은 애플리케이션 기본 자격 증명 설정을 참조하십시오.

자동 검색 레이블#

Teleport applies a set of default labels to resources on AWS, Azure, and Google Cloud that join a cluster via auto-discovery. See the auto-discovery labels reference

고급 구성#

(!docs/pages/includes/auto-discovery/server-advanced-config.mdx matcher="gcp"!)

Use a custom installation script#

(!docs/pages/includes/server-access/custom-installer.mdx matcher="gcp"!)

다음 단계#