InfoGrab Docs

Kubernetes 앱 검색 아키텍처

Teleport가 Kubernetes에서 실행 중인 애플리케이션을 자동으로 검색하는 방법을 알아보세요.

Kubernetes 애플리케이션 자동 검색은 두 부분으로 구성됩니다: Kubernetes 클러스터의 서비스 목록을 주기적으로 폴링 해당 목록을 기반으로 Teleport 앱을 생성하고 요청을 프록시. Note Teleport Agent가 대상 Kubernetes 클러스터 내에서 실행될 때만 작동합니다. Kubernetes 서비스 폴링 # Kubernetes 클러스터에서 실행 중인 Discovery 서비스는 주기적으로 서비스를 나열하고 서비스 구성의 kubernetes 필드에 지정된 매처에 따라 필터링합니다. 유형, 네임스페이스 및 서비스 레이블을 기반으로 서비스를 필터링할 수 있습니다. kube-system 및 kube-public 네임스페이스에서 실행 중인 서비스는 자동으로 무시됩니다. 현재 기본적으로 모든 서비스는 "app" 유형으로 간주되지만, Kubernetes 주석 teleport.dev/discovery-type 으로 서비스에 대해 변경할 수 있습니다. 서비스 유형이 매처에 지정된 것과 같지 않으면, 서비스가 무시됩니다. 기본적으로 생성된 Teleport 앱의 이름은 Kubernetes 서비스 이름, 네임스페이스 및 Kubernetes 클러스터 이름으로 구성됩니다: $SERVICE_NAME-$NAMESPACE-$KUBE_CLUSTER_NAME . 해당 이름은 Kubernetes 주석 teleport.dev/name 으로 변경할 수 있습니다. 서비스에서 노출된 모든 포트는 별도로 고려되므로, 서비스에 하나 이상의 포트가 노출된 경우 하나의 Kubernetes 서비스가 여러 Teleport 앱 리소스 생성으로 이어질 수 있습니다. 그 경우 포트 이름이 앱 이름에 추가됩니다. 기본적으로 Discovery 서비스는 HTTP/HTTPS를 제공하는 포트만 노출하려고 합니다. 이 포트가 HTTP를 제공하는지 이해하기 위해, Discovery 서비스는 여러 휴리스틱을 사용하거나 HEAD HTTP 요청으로 노출된 포트를 프로브하려고 합니다. 포트가 HTTP/HTTPS를 제공하는지 결정하기 위한 휴리스틱은 다음과 같습니다: Kubernetes 서비스 포트 정의에 appProtocol 필드가 있고 값이 http / https 인 경우 URI에서 사용됩니다. 노출된 포트의 이름이 https 이거나 숫자 값이 443인 경우 https 가 사용됩니다. Teleport는 HTTP/HTTPS 요청을 제공하는지 확인하기 위해 포트에 HTTP 요청을 수행합니다. 노출된 포트의 이름이 http 이거나 숫자 값이 80 또는 8080인 경우 http 가 사용됩니다. 그렇지 않으면 이 포트는 무시됩니다. 하지만 서비스에서 주석 teleport.dev/protocol 이 사용되고 값이 "tcp"이면, 이 포트는 TCP 앱으로 노출됩니다. Teleport 앱 생성 및 요청 프록시 # 관련 Kubernetes 서비스가 나열되고 필터링된 후, Discovery 서비스는 기존 것과 새 것을 조정하면서 Teleport 앱을 생성합니다: 검색된 앱이 Teleport 백엔드에 없으