Headlamp는 오픈 소스이자 확장 가능한 Kubernetes SIG UI 프로젝트로, 사용자가 클러스터 리소스를 탐색, 관리 및 디버깅할 수 있도록 설계되었습니다.
Knative는 Kubernetes에 서버리스 워크로드를 가져와 트래픽 라우팅, 오토스케일링, 리비전(Revision) 관리를 처리함으로써, 팀이 인프라와 싸우지 않고도 배포와 반복 작업을 수행할 수 있게 해줍니다. 하지만 Knative 워크로드를 일상적으로 운영하는 것은 여전히 어려울 수 있습니다. 실행 중인 전체 상황을 파악하려면 여전히 kn CLI, kubectl, 그리고 Kubernetes UI 사이를 수없이 오가야 하기 때문입니다.
저희는 이러한 간극을 메우기 위해 Headlamp Knative 플러그인을 개발했습니다. 이를 통해 운영자는 한 곳에서 워크로드를 검토하고 이해하며 조치를 취할 수 있습니다. 이 플러그인은 LFX 멘토십 프로그램의 일환으로 제작되었습니다. 저희가 출시한 기능들을 소개합니다.
Headlamp용 Knative 플러그인에 대한 짧은 시연 영상입니다:
Headlamp의 맵 뷰(Map View)와 Knative 리소스 통합
Headlamp의 리소스 매핑 기능은 Knative CRD에서도 작동합니다. KServices, Revisions, DomainMappings가 서로 어떻게 연결되어 있는지 단일 그래프 뷰에서 확인할 수 있습니다.

KService 관리: 트래픽 분할 편집, 파드 재시작 및 로그 확인
KService는 Knative의 최상위 리소스입니다. 이는 Route, Configuration, Revision의 생명주기를 관리하며 애플리케이션을 실행하고 노출하는 데 필요한 모든 것을 제어합니다.
이 플러그인은 KService에 대한 전체 상세 뷰를 제공하며, 트래픽 분할, 오토스케일링 어노테이션 등을 실시간으로 수정할 수 있는 편집 모드(Edit Mode) 토글 기능을 지원합니다. YAML 보기, 로그 열기, 재배포 트리거, 백엔드 파드 재시작과 같은 공통 작업은 헤더 부분에 배치되어 있으며, 사용자의 현재 RBAC 권한에 따라 실행 여부가 제어됩니다.

트래픽 분할: 점진적 배포 및 테스트를 위한 리비전 간 라우팅
Knative를 사용하면 동일한 서비스의 여러 리비전으로 트래픽을 라우팅할 수 있습니다. 이는 카나리(Canary) 릴리스, 점진적 배포, 태그가 지정된 미리보기 URL 및 A/B 테스트에 유용합니다.
플러그인은 각 리비전에 할당된 트래픽, 최신 준비 리비전, 준비 상태, 생성 시간 및 구성된 태그를 보여줍니다. 편집 모드에서는 백분율과 태그를 인라인으로 조정할 수 있습니다. 플러그인은 저장하기 전에 트래픽 합계가 100%인지, 태그가 고유한지 검증합니다. URL이 보고된 태그된 라우트는 클릭 가능한 링크로 렌더링됩니다.

오토스케일링 구성: 유효 설정 및 클러스터 기본값 확인
Knative의 오토스케일러는 동시성 목표(concurrency targets), 대상 사용률, RPS 목표, 최소/최대 스케일, 초기 스케일, 안정화 윈도우, 스케일 다운 지연 등 광범위한 설정을 지원합니다. 각 워크로드에 적용되는 실제 유효값은 KService 레벨의 어노테이션과 클러스터 전역의 ConfigMap이 조합되어 결정됩니다.
플러그인은 config-autoscaler 및 config-defaults를 읽어 KService별 유효 구성을 컨텍스트에 맞게 보여주므로, 특정 설정이 명시적으로 구성된 것인지 아니면 클러스터 기본값을 따르는 것인지 한눈에 알 수 있습니다.

Prometheus 메트릭: 요청률, 지연 시간 및 리소스 사용률 모니터링
Headlamp용 Prometheus 플러그인과 함께 사용하면, 플러그인이 KService 및 리비전 상세 페이지에서 요청률, 지연 시간 및 리소스 사용률 그래프를 렌더링합니다. 리비전별 요청률 분석은 특히 트래픽 분할이 진행 중일 때 이를 검증하는 데 유용합니다.

기타 CRD를 위한 대시보드
이 플러그인에는 Revisions, DomainMappings, ClusterDomainClaims에 대한 목록 및 상세 뷰와 클러스터 레벨의 네트워킹 개요(config-network 및 config-gateway를 읽어 유효 인그레스 클래스, 게이트웨이 설정 및 백엔드 서비스를 표시)가 포함되어 있습니다. 이를 통해 운영자는 Headlamp를 벗어나지 않고도 Knative의 상태를 완벽하게 파악할 수 있습니다.

Headlamp에 Knative 플러그인을 설치하는 방법
- 클러스터에 Knative가 설치되어 있는지 확인하세요.
- Headlamp 데스크톱에서 Plugin Catalog를 열고, 'Knative'를 검색한 후 'Install'을 클릭합니다.
- Headlamp를 새로고침하면 사이드바에 새로운 'Knative' 항목이 나타납니다.
개발용 또는 소스 레벨의 설정에 대해서는 Knative 플러그인 README를 참조하세요. 현재 릴리스 버전은 0.3.0-beta입니다.
여러분의 의견을 들려주세요
Knative 운영자와 사용자분들의 피드백을 기다립니다. 버그를 발견하거나 아직 지원되지 않는 워크플로우에 대한 지원이 필요하다면 이슈를 생성해 주세요. Kubernetes Slack의 #headlamp 채널에서도 저희를 만나실 수 있습니다.