동적 앱 등록은 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=myusertctl create app.yaml
Teleport 클러스터에 로그인하여 원격으로 tctl을 사용할 수 있습니다.
tsh login --proxy=mytenant.teleport.sh --user=myusertctl create app.yaml
리소스가 생성되면, 최소한 하나의 Application Service 인스턴스가 해당 레이블 선택자에 따라 수집하는 한, 사용 가능한 앱 목록(tsh apps ls
또는 UI) 중에 나타납니다.
기존 애플리케이션 리소스를 업데이트하려면 다음을 실행합니다:
tctl create -f app.yaml
업데이트된 리소스의 레이블이 더 이상 특정 앱 에이전트와 일치하지 않으면, 해당 앱이 등록 해제되고 프록시가 중지됩니다.
애플리케이션 리소스를 삭제하려면 다음을 실행합니다:
tctl rm app/example