Infograb logo
코드로서의 인프라

이 섹션에서는 텔레포트의 동적 리소스를 관리하는 방법을 설명합니다. 이를 통해 인프라가 변경됨에 따라 텔레포트 클러스터의 동작을 조정할 수 있습니다. 동적 리소스의 설계는 Terraform, Helm 및 텔레포트 tctl 클라이언트 도구와 같은 코드로서의 인프라 도구를 사용하여 관리할 수 있게 해줍니다.

동적 리소스란 무엇인가요?

텔레포트 클러스터를 구성하는 방법에는 두 가지가 있습니다:

  • 정적 구성 파일: 시작 시 텔레포트 프로세스는 로컬 파일 시스템에서 구성 파일을 읽습니다(기본 경로는 /etc/teleport.yaml입니다). 정적 구성 설정은 서비스가 수신 대기하는 포트와 같이 자주 변경되지 않을 것으로 예상되는 클러스터의 측면을 제어합니다.
  • 동적 리소스: 동적 리소스는 역할, 로컬 사용자 및 등록된 인프라 리소스와 같이 시간이 지남에 따라 변경될 가능성이 있는 클러스터의 측면을 제어합니다.

이 접근 방식을 통해 텔레포트 인스턴스를 재시작하지 않고도 텔레포트 구성을 점진적으로 조정할 수 있습니다.

클러스터는 다양한 객체(즉, 리소스)로 구성되어 있으며, 이에 대해 수행할 수 있는 세 가지 일반적인 작업이 있습니다: get, createremove.

텔레포트의 모든 리소스에는 세 가지 필수 필드가 있습니다:

  • kind: 리소스 유형
  • name: 리소스를 고유하게 식별하는 메타데이터의 필수 필드
  • version: 리소스 형식의 버전

모든 다른 필드는 리소스에 특정적입니다.

텔레포트 엔터프라이즈 클라우드는 운영자에게 정적 구성 파일을 노출하지 않지만, 특정 설정을 위해 정적 구성 파일을 사용하는 것은 사실입니다. 텔레포트가 동적 리소스와 정적 리소스 파일을 조화시키는 방법에 대한 내용을 읽어 정적 구성 설정의 값을 확인하는 방법을 이해하세요.

동적 리소스를 검사할 때는 어떤 필드는 내부적으로만 사용되며 변경할 수 없도록 되어 있음을 유의하세요. 다른 필드는 미래 사용을 위해 예약되어 있습니다.

동적 리소스 관리

텔레포트는 동적 리소스를 적용하는 세 가지 방법을 제공합니다: tctl 클라이언트 도구, 텔레포트 Terraform 제공자 및 Kubernetes Operator.

세 가지 방법 모두 텔레포트 인증 서비스의 gRPC 엔드포인트에 연결하여 인증 서비스 백엔드에 저장된 클러스터 리소스를 조작합니다. 텔레포트의 구성 인터페이스 설계는 코드로서의 인프라 및 GitOps 접근 방식에 적합합니다.

tctl, Terraform 제공자 및 Kubernetes Operator를 사용하여 시작하려면 다음을 따르세요:

internal.logins 특성을 포함한 텔레포트 역할에 대한 추가 정보는 텔레포트 접근 제어 참조를 참조하세요.

tctl을 사용한 YAML 문서

리소스를 YAML 문서로 정의하고 tctl 클라이언트 도구를 사용하여 적용할 수 있습니다. 다음은 env:test 레이블이 있는 서버에 대한 접근을 허용하는 role 리소스의 예입니다:

kind: role
version: v7
metadata:
  name: developer
spec:
  allow:
    logins: ['ubuntu', 'debian', '{{internal.logins}}']
    node_labels:
      'env': 'test'

tctl은 로컬 파일 시스템에서 작동하므로, 디렉터리 트리에 있는 모든 구성 문서를 적용하는 명령을 작성할 수 있습니다. 자세한 내용은 CLI 참조를 참조하세요.

텔레포트 Terraform 제공자

텔레포트의 Terraform 제공자는 나머지 인프라와 동일한 코드로서의 인프라 소스 내에서 텔레포트 리소스를 관리할 수 있게 해줍니다. 텔레포트 구성 리소스마다 하나의 Terraform 리소스가 있습니다. 예를 들어:

resource "teleport_role" "developer" {
  version = "v7"
  metadata = {
    name = "developer"
  }

  spec = {
    allow = {
      logins = ["ubuntu", "debian", "{{internal.logins}}"]

      node_labels = {
        key   = ["env"]
        value = ["test"]
      }
    }
  }
}

Terraform 제공자로 시작하기.

텔레포트 Kubernetes Operator

텔레포트 Kubernetes Operator는 텔레포트 리소스를 Kubernetes 리소스로 적용하여 텔레포트 설정을 나머지 Kubernetes 인프라와 함께 관리할 수 있게 해줍니다. 다음은 위의 두 역할과 동등한 TeleportRoleV7 리소스의 예입니다:

apiVersion: resources.teleport.dev/v1
kind: TeleportRoleV7
metadata:
  name: developer
spec:
  allow:
    logins: ['ubuntu', 'debian', '{{internal.logins}}']
    node_labels:
      'env': 'test'

쿠버네티스 Operator로 시작하기.

동적 리소스와 정적 구성 파일을 조화시키기

일부 동적 리소스는 텔레포트의 정적 구성 파일 내의 필드와 동일한 설정을 할당합니다. 이러한 필드에 대해 텔레포트 인증 서비스는 시작 시 및 텔레포트 리소스를 생성하거나 제거할 때 정적 및 동적 구성을 조화시킵니다.

정적 구성 필드에 적용되는 구성 리소스

정적 구성 파일과 필드를 공유하는 네 가지 동적 리소스가 있습니다:

  • session_recording_config
  • cluster_auth_preference
  • cluster_networking_config
  • ui_config

session_recording_config

동적 리소스 필드정적 구성 필드
spec.modeauth_service.session_recording
spec.proxy_checks_host_keysauth_service.proxy_checks_host_keys

cluster_auth_preference

동적 리소스 필드정적 구성 필드
spec.typeauth_service.authentication.type
spec.second_factorauth_service.authentication.second_factor
spec.connector_nameauth_service.authentication.connector_name
spec.u2fauth_service.authentication.u2f
spec.disconnect_expired_certauth_service.disconnect_expired_cert
spec.allow_local_authauth_service.authentication.local_auth
spec.message_of_the_dayauth_service.message_of_the_day
spec.locking_modeauth_service.authentication.locking_mode
spec.webauthnauth_service.authentication.webauthn
spec.require_session_mfaauth_service.authentication.require_session_mfa
spec.allow_passwordlessauth_service.authentication.passwordless
spec.device_trustauth_service.authentication.device_trust
spec.idpproxy_service.idp
spec.allow_headlessauth_service.authentication.headless

cluster_networking_config

동적 리소스 필드정적 구성 필드
spec.client_idle_timeoutauth_service.client_idle_timeout
spec.keep_alive_intervalauth_service.keep_alive_interval
spec.keep_alive_count_maxauth_service.keep_alive_count_max
spec.session_control_timeoutauth_service.session_control_timeout
spec.idle_timeout_messageauth_service.client_idle_timeout_message
spec.web_idle_timeoutauth_service.web_idle_timeout
spec.proxy_listener_modeauth_service.proxy_listener_mode
spec.routing_strategyauth_service.routing_strategy
spec.tunnel_strategyauth_service.tunnel_strategy
spec.proxy_ping_intervalauth_service.proxy_ping_interval
spec.case_insensitive_routingauth_service.case_insensitive_routing

ui_config

동적 리소스 필드정적 구성 필드
spec.scrollback_linesproxy_service.ui.scrollback_lines
spec.show_resourcesproxy_service.ui.show_resources

출처 레이블

텔레포트 인증 서비스는 teleport.dev/origin 레이블을 구성 리소스에 적용하여 정적 구성 파일, 동적 구성 리소스 또는 기본값에서 유래되었는지를 나타냅니다.

teleport.dev/origin 레이블의 가능한 값은 다음과 같습니다:

  • defaults
  • config-file
  • dynamic
  • terraform
  • kubernetes

인증 서비스가 시작할 때, 동적 구성 리소스의 필드와 대응되는 정적 구성 필드의 값을 조회합니다. 이러한 필드 중 어떤 필드라도 값이 있으면 해당 동적 구성 리소스를 생성하고 백엔드에 저장합니다.

값이 없는 모든 정적 구성 필드에 대해 인증 서비스는 백엔드에 해당 동적 구성 리소스가 있는지 확인합니다. 없다면 기본값으로 하나를 생성하고 teleport.dev/origin=defaults 레이블을 추가합니다.

인증 서비스가 이미 정적 구성 파일에서 구성을 로드한 후에 동적 구성 리소스를 생성하려고 하면, 인증 서비스는 오류를 반환합니다.

동적 구성 리소스를 제거하면 인증 서비스는 해당 구성 필드를 기본값으로 복원하고 teleport.dev/origin=defaults 레이블을 추가합니다.

클라우드 호스팅된 텔레포트 배포는 구성 파일을 사용하지만, 운영자가 수정할 수는 없습니다. 텔레포트 엔터프라이즈 클라우드 사용자들은 teleport.dev/origin=config-file 레이블이 있는 구성 리소스를 볼 수 있습니다.

추가 읽기

구성 참조

텔레포트 API를 사용하는 다른 방법

텔레포트 Kubernetes Operator, Terraform 제공자 및 tctl은 모두 텔레포트 인증 서비스의 gRPC API의 클라이언트입니다. 귀하의 조직의 요구에 맞게 텔레포트를 확장하기 위해 자체 API 클라이언트를 구축하려면 API 가이드를 읽어보세요.

Teleport 원문 보기