본문으로 건너뛰기

Teleport

Teleport는 Lumie의 운영자 접근 평면입니다. 저장소는 이를 같은 네임스페이스의 두 ArgoCD 애플리케이션으로 관리합니다. teleport 클러스터 자체와 브라우저 앱을 Teleport 프록시 뒤에 등록하는 teleport-agent입니다.

책임

  • lumie-infra.com과 동일한 인증서가 적용되는 와일드카드 서브도메인에서 운영자 접근을 종단
  • 로컬 디스크 대신 PostgreSQL에 Teleport 클러스터 상태 저장
  • teleport-agent에 등록된 브라우저 앱 entry를 게시합니다. 일부 entry는 소유 App-of-Apps 슬라이스에서 체크인되어 있지만 비활성화된 서비스를 가리킬 수 있습니다.
  • Teleport 커스텀 리소스를 통해 Kubernetes 및 앱 접근 역할 노출

소스 경로

경로역할
lumie-infra/security/teleport/argocd.yamlteleportteleport-agent 두 ArgoCD Application 오브젝트
lumie-infra/security/teleport/helm-values.yamlTeleport 클러스터 설정, auth 스토리지, TLS, HA 프록시 설정
lumie-infra/security/teleport/kustomization.yamlHelm 차트 진입점 + NodePort 패치
lumie-infra/security/teleport/agent/helm-values.yaml앱 등록과 rewrite 규칙
lumie-infra/security/teleport/agent/kustomization.yaml시크릿 기반 rewrite 헤더를 치환하는 init-container 패치
lumie-infra/security/teleport/manifests/certificate.yamllumie-infra.com용 와일드카드 인증서 요청
lumie-infra/security/teleport/manifests/provision-token.yaml앱 에이전트용 Kubernetes join 토큰
lumie-infra/security/teleport/manifests/role-admin.yaml전체 Kubernetes 및 앱 라벨 접근을 가진 Teleport 역할 kube-admin
lumie-infra/security/teleport/manifests/vault-static-secret.yamlTeleport의 PostgreSQL 자격 증명을 위한 Vault 시크릿
lumie-infra/security/teleport/manifests/teleport-agent-credentials-vss.yamlZot basic auth rewrite용 Vault 시크릿

소유권 경계

  • security/teleport/**는 Teleport 클러스터와 앱 에이전트만 소유합니다.
  • audit-event export는 applications/teleport-event-handler/** 아래 별도 애플리케이션이며, 같은 teleport 네임스페이스를 공유하더라도 Teleport 클러스터 overlay의 일부가 아닙니다.
  • 앱 워크로드는 일반적으로 자체 퍼블릭 운영자 ingress를 정의하지 않으며, 이 보안 슬라이스에서 Teleport가 접근 계약을 소유합니다.

퍼블릭 표면과 계약

표면계약
클러스터 이름lumie-infra.com
퍼블릭 주소lumie-infra.com:443teleport.teleport.svc.cluster.local:443
서비스 유형포트 443에 대해 30443으로 패치된 NodePort
TLSapex와 와일드카드 이름을 모두 커버하는 cert-manager 발급 teleport-tls Secret
스토리지 백엔드공유 infra-db의 PostgreSQL 데이터베이스 teleport
Join 방식provision 토큰 teleport-agent를 사용한 Kubernetes in_cluster

kube agent는 public 인증서 이름이 아니라 내부 서비스를 통해 조인하므로 insecureSkipProxyTLSVerify: true를 사용해 teleport.teleport.svc.cluster.local:443에 연결합니다.

런타임 흐름

앱 접근 계약

앱 에이전트는 lumie-infra/security/teleport/agent/helm-values.yaml에서 내부 서비스를 Teleport 앱으로 등록합니다. 등록 자체가 대상 서비스 배포를 증명하지는 않습니다. 예를 들어 Tekton 앱 entry는 등록되어 있지만 Tekton Argo CD 애플리케이션은 applications/kustomization.yaml에서 비활성입니다.

  • vault
  • grafana
  • argocd
  • headlamp
  • goldilocks
  • tekton
  • prometheus
  • alertmanager
  • karma
  • minio
  • zot
  • thanos
  • rabbitmq
  • lumie-document
  • gitea
  • tilt
  • code
  • coder

일부 앱은 요청 rewrite가 필요합니다. 체크인된 중요한 예시는 다음과 같습니다.

  • vault는 OIDC redirect URI가 외부 Teleport 주소를 사용하도록 Host 헤더를 다시 씁니다.
  • zot는 시크릿 기반 rewrite 헤더로 basic auth를 주입합니다.
  • rabbitmqminio는 브라우저 콘솔을 위해 Host를 다시 씁니다.

Teleport는 rewrite.headers 안에서 환경 변수를 확장하지 않으므로, agent overlay는 시작 전에 구성을 전처리하는 init container를 StatefulSet에 패치합니다.

장애 동작과 운영 리스크

  • 와일드카드 인증서 장애는 단일 앱이 아니라 전체 접근 평면을 망가뜨립니다.
  • 잘못된 infra-db-credentials 시크릿은 auth 상태 읽기/쓰기를 막아 로그인과 인증서 기반 세션 흐름에 영향을 줍니다.
  • 에이전트의 init-container 치환이 실패하면 Zot은 등록되더라도 필요한 인증 헤더가 렌더링되지 않아 사용할 수 없을 수 있습니다.
  • 저장소는 kube-admin 역할을 정의하지만, 사용자에 대한 역할 할당은 여기서 체크인된 계약 밖입니다.
  • NodePort 30443은 선언된 상태의 일부이며, 그 앞단의 로드 밸런서나 DNS 계층은 이 패치와 계속 정렬되어야 합니다.

관측성

  • Teleport 클러스터와 에이전트 워크로드에 대한 kubectl logs가 주요 운영 신호입니다.
  • 별도 teleport-event-handler 애플리케이션이 audit 이벤트를 내보내므로, audit-event 전달이 깨졌다면 이 overlay가 아니라 այնտեղ에서 디버깅해야 합니다.
  • 서비스 readiness, 인증서 상태, ArgoCD 앱 헬스가 상시 제어 평면 계약을 커버합니다.

검증

kubectl get applications.argoproj.io -n argocd teleport teleport-agent
kubectl get deploy -n teleport -l app.kubernetes.io/instance=teleport
kubectl get statefulset teleport-agent -n teleport
kubectl get svc teleport -n teleport
kubectl get secret,certificate teleport-tls -n teleport
kubectl get teleportprovisiontokens.resources.teleport.dev teleport-agent -n teleport
kubectl get teleportrolev7.resources.teleport.dev kube-admin -n teleport
kubectl logs -n teleport -l app.kubernetes.io/instance=teleport --all-containers --tail=200
kubectl logs -n teleport statefulset/teleport-agent --all-containers --tail=200

성공 신호:

  • teleportteleport-agent 두 Argo CD 애플리케이션이 모두 HealthySynced 상태입니다.
  • teleport 서비스가 Kustomize 패치와 Terraform NLB 계약에 맞는 node port 30443NodePort입니다.
  • teleport-tls 인증서가 준비 상태이고, backing secret이 존재합니다.
  • teleport 네임스페이스에 TeleportProvisionToken teleport-agent와 TeleportRoleV7 kube-admin이 존재합니다.
  • Teleport 클러스터 로그에 PostgreSQL 스토리지 연결 실패가 없고, teleport-agent StatefulSet 로그에 config substitution 또는 앱 등록 오류가 없습니다.

관련 페이지