인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
Kubernetes 애플리케이션 발견 참조
Kubernetes 애플리케이션 발견은 Teleport Discovery Service, Teleport Application Service 및 Kubernetes 서비스에 대한 주석을 포함합니다. 이 가이드는 Kubernetes 클러스터에서 Kubernetes 애플리케이션 발견을 관리하기 위해 각각을 구성하는 방법을 보여줍니다.
Teleport 에이전트 Helm 차트 구성
Helm 차트의 kubernetesDiscovery
값을 설정하여 서비스 발견 범위를 구성할 수 있습니다. 자세한 내용은 helm chart documentation를 참조하십시오.
values.yaml
예시:
kubernetesDiscovery:
- types: ["app"]
namespaces: ["toronto", "porto"]
labels:
env: staging
- types: ["app"]
namespaces: ["seattle", "oakland"]
labels:
env: testing
Kubernetes Apps 발견 수동 구성
teleport-kube-agent
Helm 차트가 자동으로 구성을 설정하지만, 필요한 서비스를 수동으로 구성할 수도 있습니다. 그렇게 하려면 Teleport Application Service 및 Teleport Discovery Service의 구성 파일을 조정한 다음, 이러한 서비스를 실행하는 에이전트를 재시작합니다.
Discovery Service의 구성은 kubernetes
필드에 의해 제어됩니다. 예시:
Discovery Service는 발견된 리소스를 서로 다른 집합으로 그룹화할 수 있는 구성 매개변수 - discovery_service.discovery_group
- 를 노출합니다. 이 매개변수는 서로 다른 클라우드 리소스 집합을 감시하는 Discovery Agents들이 충돌하여 다른 서비스에 의해 생성된 리소스를 삭제하는 것을 방지하는 데 사용됩니다.
여러 Discovery Services를 실행할 때, 동일한 클라우드 리소스를 감시하는 경우 각 서비스가 동일한 discovery_group
값으로 구성되어야 하며, 서로 다른 클라우드 리소스를 감시하는 경우에는 다른 값으로 구성해야 합니다.
동일한 Teleport 클러스터 내에서 혼합된 구성을 실행하는 것이 가능하므로 일부 Discovery Services는 동일한 클라우드 리소스를 감시하도록 구성할 수 있고, 다른 서비스는 서로 다른 리소스를 감시하도록 할 수도 있습니다. 예를 들어, 두 개의 서로 다른 클라우드 계정에서 데이터를 분석하는 4-agent 고가용성 구성은 다음과 같이 구성됩니다.
- Production 계정에서 데이터를 폴링하기 위해
discovery_group: "prod"
로 구성된 2개의 Discovery Services. - Staging 계정에서 데이터를 폴링하기 위해
discovery_group: "staging"
로 구성된 2개의 Discovery Services.
# 이 섹션은 Discovery Service를 구성합니다
discovery_service:
enabled: yes
discovery_group: main-cluster
kubernetes:
- types: ["app"]
namespaces: ["toronto", "porto"]
labels:
env: staging
- types: ["app"]
namespaces: ["seattle", "oakland"]
labels:
env: testing
Application Service의 구성은 resources
필드에 의해 제어됩니다. 예시:
app_service:
enabled: yes
resources:
- labels:
"teleport.dev/kubernetes-cluster": "main-cluster"
"teleport.dev/origin": "discovery-kubernetes"
라벨 teleport.dev/kubernetes-cluster
는 Discovery Service 구성의 discovery_group
필드의 값과 일치해야 합니다.
자세한 내용은 discovery_service
및 app_service
구성 참조를 확인할 수 있습니다.
주석
서비스에 대한 Kubernetes 주석을 사용하여 서비스를 애플리케이션으로 변환하는 방법을 세부 조정할 수 있습니다. 모든 주석은 선택사항이며 기본 동작을 오버라이드하지만, 서비스의 가져오기에 필요하지는 않습니다.
teleport.dev/discovery-type
이 서비스가 어떤 유형으로 간주되는지를 제어합니다. 주석이 없는 경우 기본적으로 모든 서비스는 "app" 유형으로 간주됩니다. Discovery Service 구성의 매처가 서비스 유형과 일치하면 가져옵니다. 현재 지원되는 유일한 값은 app
으로, 이는 이 서비스에서 Teleport 애플리케이션이 가져온다는 의미입니다. 향후 데이터베이스 가져오기 기능도 확장할 계획이 있습니다.
teleport.dev/protocol
우리가 생성하는 Teleport 앱의 URI에 대한 프로토콜을 제어합니다. 주석이 설정되지 않은 경우, 노출된 포트의 프로토콜을 결정하기 위해 휴리스틱이 사용됩니다. 모든 휴리스틱이 작동하지 않으면 포트는 건너뜁니다. tcp
프로토콜로 가져오려면 서비스는 명시적 주석 teleport.dev/protocol: "tcp"
를 가져야 합니다.
teleport.dev/port
Kubernetes 서비스의 선호 포트를 제어하며, 서비스에 여러 노출된 포트가 있더라도 이 포트만 사용됩니다. 그 값은 노출된 서비스 포트 중 하나여야 하며, 그렇지 않으면 애플리케이션이 가져오지지 않습니다. 값은 숫자 값이나 서비스에 정의된 포트의 이름으로 일치할 수 있습니다.
teleport.dev/name
결과 앱 이름을 제어합니다. 존재하는 경우 기본 앱 이름 패턴
$SERVICE_NAME-$NAMESPACE-$KUBE_CLUSTER_NAME
을 덮어씁니다. 여러 포트가 노출되는 경우, 결과 앱은
포트 이름이 주석 값에 접미사로 추가되며, $APP_NAME-$PORT1_NAME
, $APP_NAME-$PORT2_NAME
등으로 표시됩니다.
여기서 $APP_NAME
은 주석에 의해 설정된 이름입니다.
teleport.dev/insecure-skip-verify
이 앱에 대한 TLS 인증서 검증이 건너뛰어져야 하는지 여부를 제어합니다.
존재하고 true
로 설정된 경우, TLS 인증서 검증이 건너뛰어집니다.
annotations:
teleport.dev/insecure-skip-verify: "true"
teleport.dev/ignore
이 서비스가 Discovery Service에 의해 무시되어야 하는지 여부를 제어합니다.
이 주석은 서비스가 Discovery Service 구성과 일치할 때 앱으로 가져오는 것을 제외하려는 경우 유용합니다.
예를 들어, 가져오려는 다른 서비스와 동일한 레이블을 공유하는 서비스를 제외하려고 할 수 있습니다.
annotations:
teleport.dev/ignore: "true"
teleport.dev/app-rewrite
필요한 경우 Teleport 앱의 재작성 구성을 제어합니다.
동적 등록 구문을 사용하여 앱을 구성할 때와 동일한 YAML 형식의 전체 재작성 구성을 포함해야 합니다.
(자세한 내용은 문서를 참조하십시오.)
annotations:
teleport.dev/app-rewrite: |
redirect:
- "localhost"
- "jenkins.internal.dev"
headers:
- name: "X-Custom-Header"
value: "example"
- name: "Authorization"
value: "Bearer {{internal.jwt}}"