Infograb logo
동적 앱 등록

동적 앱 등록은 Teleport 관리자가 Teleport Application Service 인스턴스에서 읽는 정적 구성 파일을 업데이트할 필요 없이 새로운 앱을 등록(또는 기존 앱을 업데이트/등록 해제)할 수 있게 해줍니다.

Application Service 인스턴스는 주기적으로 Teleport Auth Service에 app 리소스를 쿼리하여, 각 리소스는 Application Service가 애플리케이션을 프록시하는 데 필요한 정보를 포함합니다.

동적 등록은 Application Service 인스턴스의 풀 관리에 유용합니다. 그리고 백그라운드에서 Teleport Discovery Service는 동적 등록을 사용하여 Kubernetes 애플리케이션을 등록합니다.

필수 권한

동적으로 등록된 애플리케이션과 상호작용하기 위해서는 사용자가 app 리소스를 관리할 수 있는 권한이 있는 Teleport 역할을 가져야 합니다.

다음 예시에서는 역할이 사용자가 app 리소스에 대해 가능한 모든 작업을 수행할 수 있게 허용합니다:

allow:
  rules:
    - resources:
        - app
      verbs: [list, create, read, update, delete]

동적 등록 활성화

동적 등록을 활성화하려면, 이 서비스에서 등록하기를 원하는 리소스 레이블 선택기 목록이 포함된 resources 섹션을 Application Service 구성에 포함해야 합니다:

app_service:
  enabled: "yes"
  resources:
  - labels:
      "*": "*"

와일드카드 선택기를 사용하여 Application Service에서 클러스터의 모든 동적 앱 리소스를 등록할 수 있으며, 특정 레이블 세트를 제공하여 일부를 등록할 수도 있습니다:

resources:
- labels:
    "env": "prod"
- labels:
    "env": "test"

앱 리소스 생성

app 리소스를 생성하여 Teleport가 애플리케이션을 동적으로 프록시할 수 있도록 구성합니다. 다음 예시는 Teleport를 구성하여 localhost:4321에서 example이라는 애플리케이션을 프록시하고, 이를 공개 주소 test.example.com에서 사용할 수 있게 합니다:

kind: app
version: v3
metadata:
  name: example
  description: "예제 앱"
  labels:
    env: test
spec:
  uri: http://localhost:4321
  public_addr: test.example.com

전체 앱 리소스 스펙 참조를 확인하세요.

동적 등록을 생성하는 사용자는 애플리케이션 레이블과 app 리소스에 접근할 수 있는 역할을 가져야 합니다. 이 예시 역할에서 사용자는 env: test 레이블이 있는 애플리케이션 서비스를 생성하고 유지할 수 있습니다.

kind: role
metadata:
  name: dynamicappregexample
spec:
  allow:
    app_labels:      
      env: test
    rules:
    - resources:
      - app
      verbs:
      - list
      - create
      - read
      - update
      - delete
version: v5

애플리케이션 리소스를 생성하려면 다음을 실행합니다:

로컬 머신에서 tctl을 사용할 수 있도록 클러스터에 tsh로 로그인합니다.

"tsh login"을 먼저 실행하지 않고도 Auth Service 호스트에서 tctl을 실행할 수 있습니다.

tsh login --proxy=teleport.example.com --user=myuser
tctl create app.yaml

Teleport 클러스터에 로그인하여 원격으로 tctl을 사용할 수 있습니다.

tsh login --proxy=mytenant.teleport.sh --user=myuser
tctl create app.yaml

리소스가 생성되면, 최소한 하나의 Application Service 인스턴스가 해당 레이블 선택자에 따라 수집하는 한, 사용 가능한 앱 목록(tsh apps ls 또는 UI) 중에 나타납니다.

기존 애플리케이션 리소스를 업데이트하려면 다음을 실행합니다:

tctl create -f app.yaml

업데이트된 리소스의 레이블이 더 이상 특정 앱 에이전트와 일치하지 않으면, 해당 앱이 등록 해제되고 프록시가 중지됩니다.

애플리케이션 리소스를 삭제하려면 다음을 실행합니다:

tctl rm app/example
Teleport 원문 보기