동적 앱 등록
Teleport v18.9동적 앱 등록을 사용하면 Teleport 관리자가 Teleport Application Service 인스턴스에서 읽는 정적 구성 파일을 업데이트하지 않고도 새 앱을 등록하거나 기존 앱을 업데이트/해제할 수 있습니다.
동적 앱 등록을 사용하면 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: true
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: "Example app"
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
# tctl을 원격으로 사용할 수 있도록 Teleport 클러스터에 로그인합니다.
$ 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