⏱️ 예상 읽기 시간: 12분

소개

명령줄 도구를 통한 Kubernetes 클러스터 관리는 특히 여러 클러스터를 다루거나 복잡한 배포를 처리할 때 매우 어려울 수 있습니다. Kite는 클러스터 관리 및 모니터링을 위한 직관적인 웹 인터페이스를 제공하는 최신의 경량 Kubernetes 대시보드입니다.

기존 Kubernetes 대시보드와 달리 Kite는 다음과 같은 기능을 제공합니다:

  • 최신 UI/UX 다크/라이트 테마 지원
  • 멀티 클러스터 관리 기능
  • Prometheus 통합을 통한 실시간 모니터링
  • 라이브 YAML 편집을 포함한 포괄적인 리소스 관리
  • OAuth 및 RBAC 지원을 통한 보안 기능

이 튜토리얼에서는 Kubernetes 클러스터 관리를 위해 Kite를 설치, 구성 및 효과적으로 사용하는 방법을 살펴보겠습니다.

Kite란 무엇인가?

Kitezxh326이 개발한 오픈소스 Kubernetes 대시보드입니다. 사용자 경험과 실용적인 기능에 중점을 둔 기존 Kubernetes 대시보드의 최신 대안으로 설계되었습니다.

주요 기능

🎯 최신 사용자 경험

  • 멀티 테마 지원: 다크, 라이트, 컬러 테마와 시스템 환경 설정 감지
  • 고급 검색: 모든 리소스에 걸친 글로벌 검색
  • 국제화: 영어와 중국어 지원
  • 반응형 디자인: 데스크톱, 태블릿, 모바일 기기에 최적화

🏘️ 멀티 클러스터 관리

  • 원활한 클러스터 전환: 여러 Kubernetes 클러스터 간 전환
  • 클러스터별 모니터링: 각 클러스터에 대한 독립적인 Prometheus 구성
  • Kubeconfig 통합: kubeconfig 파일에서 클러스터 자동 검색
  • 클러스터 접근 제어: 클러스터 접근 관리를 위한 세분화된 권한

🔍 포괄적인 리소스 관리

  • 전체 리소스 커버리지: Pod, Deployment, Service, ConfigMap, Secret, PV, PVC, Node 등
  • 라이브 YAML 편집: 구문 강조 및 검증이 포함된 내장 Monaco 에디터
  • 상세한 리소스 뷰: 컨테이너, 볼륨, 이벤트, 조건에 대한 심층 정보
  • 리소스 관계: 관련 리소스 간의 연결 시각화
  • 리소스 작업: UI에서 직접 리소스 생성, 업데이트, 삭제, 스케일링, 재시작
  • 커스텀 리소스: CRD(Custom Resource Definition) 완전 지원
  • 빠른 이미지 태그 선택기: 컨테이너 이미지 태그를 쉽게 선택하고 변경

📈 모니터링 및 관찰 가능성

  • 실시간 메트릭: Prometheus 기반 CPU, 메모리, 네트워크 사용량 차트
  • 클러스터 개요: 포괄적인 클러스터 상태 및 리소스 통계
  • 라이브 로그: 필터링 및 검색 기능을 포함한 실시간 Pod 로그 스트리밍
  • 웹/노드 터미널: 브라우저를 통해 Pod/노드에서 직접 명령 실행
  • 노드 모니터링: 상세한 노드 수준 성능 메트릭 및 활용도
  • Pod 모니터링: 개별 Pod 리소스 사용량 및 성능 추적

🔐 보안

  • OAuth 통합: UI에서 OAuth 관리 지원
  • 역할 기반 접근 제어: UI에서 사용자 권한 관리 지원
  • 사용자 관리: UI에서 포괄적인 사용자 관리 및 역할 할당

사전 요구사항

Kite를 설치하기 전에 다음 사항을 확인하세요:

  1. Kubernetes 클러스터: 실행 중인 Kubernetes 클러스터 (v1.19+)
  2. kubectl: 클러스터에 구성 및 연결됨
  3. Helm (선택사항이지만 권장): 버전 3.0+
  4. Prometheus (선택사항): 모니터링 기능용
  5. 클러스터 관리자 권한: 설치에 필요

사전 요구사항 확인

# kubectl 연결 확인
kubectl cluster-info

# Kubernetes 버전 확인
kubectl version --short

# Helm 설치 확인 (Helm 사용 시)
helm version

# 클러스터 관리자 권한 확인
kubectl auth can-i '*' '*' --all-namespaces

설치 방법

Kite는 여러 방법으로 설치할 수 있습니다. 가장 일반적인 접근 방식을 다루겠습니다.

방법 1: Helm 설치 (권장)

Helm은 더 나은 구성 관리 및 업그레이드 기능을 제공하므로 권장되는 설치 방법입니다.

1단계: Kite Helm 저장소 추가

# 공식 Kite Helm 저장소 추가
helm repo add kite https://zxh326.github.io/kite

# Helm 저장소 업데이트
helm repo update

# 저장소가 추가되었는지 확인
helm repo list | grep kite

2단계: 기본 구성으로 Kite 설치

# kube-system 네임스페이스에 Kite 설치
helm install kite kite/kite -n kube-system

# 배포 완료 대기
kubectl rollout status deployment/kite -n kube-system

3단계: 설치 확인

# Pod 상태 확인
kubectl get pods -n kube-system -l app=kite

# 서비스 상태 확인
kubectl get services -n kube-system -l app=kite

# Kite 로그 확인
kubectl logs -n kube-system -l app=kite

방법 2: kubectl 설치

Helm을 사용하지 않으려면 kubectl을 사용하여 Kite를 직접 설치할 수 있습니다.

1단계: 설치 매니페스트 적용

# GitHub에서 설치 (최신 버전)
kubectl apply -f https://raw.githubusercontent.com/zxh326/kite/refs/heads/main/deploy/install.yaml

# 또는 로컬로 다운로드하여 적용
curl -O https://raw.githubusercontent.com/zxh326/kite/refs/heads/main/deploy/install.yaml
kubectl apply -f install.yaml

2단계: 설치 확인

# 배포 상태 확인
kubectl get deployment kite -n kube-system

# Pod 상태 확인
kubectl get pods -n kube-system -l app=kite

방법 3: Docker (개발/테스트)

개발 또는 테스트 목적으로 Docker를 사용하여 Kite를 실행할 수 있습니다.

# Docker로 Kite 실행
docker run --rm -p 8080:8080 ghcr.io/zxh326/kite:latest

# 사용자 정의 kubeconfig 사용
docker run --rm -p 8080:8080 \
  -v ~/.kube/config:/app/.kube/config:ro \
  ghcr.io/zxh326/kite:latest

Kite 대시보드 액세스

포트 포워딩 (빠른 액세스)

Kite에 액세스하는 가장 간단한 방법은 포트 포워딩입니다:

# 로컬 포트 8080을 Kite 서비스로 포워딩
kubectl port-forward -n kube-system svc/kite 8080:8080

# 대시보드 액세스
open http://localhost:8080

LoadBalancer 서비스 (클라우드 환경)

클라우드 배포의 경우 LoadBalancer를 사용하여 Kite를 노출할 수 있습니다:

# 서비스를 LoadBalancer 유형으로 패치
kubectl patch svc kite -n kube-system -p '{"spec": {"type": "LoadBalancer"}}'

# 외부 IP 가져오기
kubectl get svc kite -n kube-system

Ingress 구성 (프로덕션)

프로덕션 배포의 경우 Ingress를 구성하세요:

# kite-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: kite-ingress
  namespace: kube-system
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  rules:
  - host: kite.yourdomain.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kite
            port:
              number: 8080
  tls:
  - hosts:
    - kite.yourdomain.com
    secretName: kite-tls
# Ingress 구성 적용
kubectl apply -f kite-ingress.yaml

구성

기본 구성

Kite는 환경 변수 또는 구성 파일을 통해 구성할 수 있습니다. 주요 구성 옵션은 다음과 같습니다:

# Helm 배포용 values.yaml
config:
  # 서버 구성
  port: 8080
  
  # Kubernetes 구성
  kubeconfig: ""  # kubeconfig 파일 경로
  
  # 멀티 클러스터 지원
  clusters:
    - name: "production"
      kubeconfig: "/configs/prod-kubeconfig"
    - name: "staging"
      kubeconfig: "/configs/staging-kubeconfig"
  
  # Prometheus 구성
  prometheus:
    enabled: true
    endpoint: "http://prometheus-server.monitoring.svc.cluster.local:80"
  
  # 보안 구성
  auth:
    enabled: false
    oauth:
      provider: "github"
      clientId: "your-client-id"
      clientSecret: "your-client-secret"

고급 Helm 구성

# 사용자 정의 값으로 설치
helm install kite kite/kite -n kube-system \
  --set config.prometheus.enabled=true \
  --set config.prometheus.endpoint="http://prometheus:9090" \
  --set config.auth.enabled=true

# 또는 values 파일 사용
helm install kite kite/kite -n kube-system -f custom-values.yaml

환경 변수

Docker 또는 사용자 정의 배포로 실행할 때:

# 기본 구성
export KITE_PORT=8080
export KITE_KUBECONFIG=/path/to/kubeconfig

# Prometheus 통합
export KITE_PROMETHEUS_ENABLED=true
export KITE_PROMETHEUS_ENDPOINT=http://prometheus:9090

# 인증
export KITE_AUTH_ENABLED=true
export KITE_OAUTH_PROVIDER=github
export KITE_OAUTH_CLIENT_ID=your-client-id
export KITE_OAUTH_CLIENT_SECRET=your-client-secret

Kite 대시보드 사용하기

대시보드 개요

Kite에 처음 액세스하면 다음과 같은 메인 대시보드를 볼 수 있습니다:

  1. 클러스터 개요: 실시간 클러스터 통계 및 상태
  2. 리소스 요약: Pod, 서비스, 배포 등의 빠른 카운트
  3. 노드 상태: 노드 상태 및 리소스 활용도
  4. 최근 이벤트: 최신 클러스터 이벤트 및 활동

네비게이션 및 인터페이스

상단 네비게이션 바

  • 클러스터 선택기: 여러 클러스터 간 전환
  • 검색: 모든 리소스에 걸친 글로벌 검색
  • 테마 토글: 다크/라이트 테마 간 전환
  • 사용자 메뉴: 인증 및 사용자 설정

사이드바 네비게이션

  • 워크로드: Deployment, ReplicaSet, Pod, Job 등
  • 서비스: Service, Ingress, NetworkPolicy
  • 스토리지: PersistentVolume, PersistentVolumeClaim, StorageClass
  • 설정: ConfigMap, Secret
  • RBAC: ServiceAccount, Role, RoleBinding
  • 클러스터: Node, Namespace, Event

리소스 관리

리소스 보기

  1. 목록 보기: 모든 리소스 유형으로 이동하여 포괄적인 목록 확인
  2. 상세 보기: 모든 리소스를 클릭하여 자세한 정보 확인
  3. YAML 보기: 원시 YAML 구성 보기 및 편집
  4. 관계: 관련 리소스 및 종속성 확인

리소스 생성

# 예제: Kite를 통해 배포 생성
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: default
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.21
        ports:
        - containerPort: 80
  1. 워크로드 > 배포로 이동
  2. 생성 버튼 클릭
  3. 내장 Monaco 에디터를 사용하여 YAML 작성
  4. 적용을 클릭하여 리소스 생성

리소스 편집

  1. 모든 리소스를 클릭하여 세부 정보 열기
  2. 편집 또는 YAML 탭 클릭
  3. Monaco 에디터에서 구성 수정
  4. 적용을 클릭하여 변경 사항 저장

스케일링 및 작업

  • 배포 스케일링: 스케일 버튼을 사용하거나 복제본을 직접 편집
  • 배포 재시작: 배포의 모든 Pod 재시작
  • 리소스 삭제: 확인과 함께 리소스 제거
  • 로그 보기: Pod에서 실시간으로 로그 스트리밍
  • 명령 실행: Pod용 내장 터미널 사용

멀티 클러스터 관리

클러스터 추가

  1. 자동 검색: Kite는 kubeconfig에서 클러스터를 자동으로 검색할 수 있습니다
  2. 수동 구성: 구성 파일을 통해 클러스터 추가
  3. 동적 추가: UI를 통해 클러스터 추가 (인증이 활성화된 경우)

클러스터 전환

상단 네비게이션의 클러스터 선택기를 사용하여 클러스터 간 전환하세요. 각 클러스터는 다음을 유지합니다:

  • 리소스 상태
  • 모니터링 구성
  • 사용자 권한
  • 설정

모니터링 및 관찰 가능성

실시간 메트릭

Prometheus 통합을 통해 Kite는 다음을 제공합니다:

  1. 클러스터 메트릭:
    • CPU 및 메모리 활용도
    • Pod 및 노드 수
    • 리소스 할당 및 사용량
  2. 노드 메트릭:
    • 개별 노드 성능
    • 시간에 따른 리소스 사용량
    • 노드 조건 및 이벤트
  3. Pod 메트릭:
    • 컨테이너 리소스 사용량
    • 성능 트렌드
    • 상태 상황

로그 스트리밍

  1. 모든 Pod로 이동
  2. 로그 탭 클릭
  3. 다음 기능을 포함한 실시간 로그 스트리밍:
    • 다중 컨테이너 지원
    • 검색 및 필터링
    • 다운로드 기능
    • 자동 새로 고침 옵션

터미널 액세스

  1. 모든 Pod로 이동
  2. 터미널 탭 클릭
  3. 컨테이너에서 직접 명령 실행:
    • 다중 컨테이너 지원
    • 전체 터미널 에뮬레이션
    • 파일 업로드/다운로드
    • 세션 관리

Prometheus 통합

Prometheus 설치

Prometheus가 설치되어 있지 않은 경우 Helm을 사용하여 배포할 수 있습니다:

# Prometheus Helm 저장소 추가
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

# Prometheus 설치
helm install prometheus prometheus-community/kube-prometheus-stack \
  --namespace monitoring \
  --create-namespace \
  --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false

Prometheus로 Kite 구성

Prometheus를 포함하도록 Kite 구성을 업데이트하세요:

# values.yaml
config:
  prometheus:
    enabled: true
    endpoint: "http://prometheus-kube-prometheus-prometheus.monitoring.svc.cluster.local:9090"

Kite 설치를 업그레이드하세요:

helm upgrade kite kite/kite -n kube-system -f values.yaml

메트릭 확인

  1. Kite 대시보드 액세스
  2. 클러스터 개요로 이동
  3. 메트릭 차트가 데이터를 표시하는지 확인
  4. 개별 노드 및 Pod 메트릭 확인

보안 구성

인증 설정

OAuth 구성

Kite는 다양한 공급자와 OAuth 인증을 지원합니다:

# values.yaml
config:
  auth:
    enabled: true
    oauth:
      provider: "github"  # 또는 "google", "gitlab"
      clientId: "your-github-client-id"
      clientSecret: "your-github-client-secret"
      redirectUrl: "http://kite.yourdomain.com/auth/callback"

GitHub OAuth 앱 생성

  1. GitHub 설정 > 개발자 설정 > OAuth 앱으로 이동
  2. “새 OAuth 앱” 클릭
  3. 애플리케이션 세부 정보 입력:
    • 애플리케이션 이름: Kite Dashboard
    • 홈페이지 URL: http://kite.yourdomain.com
    • 권한 부여 콜백 URL: http://kite.yourdomain.com/auth/callback
  4. 클라이언트 ID 및 클라이언트 비밀 기록

RBAC 구성

Kite에 대한 적절한 RBAC 규칙을 생성하세요:

# kite-rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: kite
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: kite
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["*"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kite
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: kite
subjects:
- kind: ServiceAccount
  name: kite
  namespace: kube-system
# RBAC 구성 적용
kubectl apply -f kite-rbac.yaml

사용자 관리

인증이 활성화되면 다음을 수행할 수 있습니다:

  1. 사용자 관리: UI를 통해 사용자 추가/제거
  2. 역할 할당: 사용자를 Kubernetes RBAC 역할에 매핑
  3. 액세스 감사: 사용자 활동 및 권한 추적
  4. 세션 관리: 세션 타임아웃 및 정책 제어

문제 해결

일반적인 문제

1. Pod가 시작되지 않음

# Pod 상태 확인
kubectl get pods -n kube-system -l app=kite

# Pod 로그 확인
kubectl logs -n kube-system -l app=kite

# 이벤트 확인
kubectl get events -n kube-system --sort-by=.metadata.creationTimestamp

일반적인 해결책:

  • RBAC 권한 확인
  • 리소스 제한 확인
  • 적절한 kubeconfig 구성 확인

2. 메트릭이 표시되지 않음

# Prometheus 연결 확인
kubectl exec -n kube-system deployment/kite -- wget -qO- http://prometheus-endpoint:9090/api/v1/query?query=up

# Prometheus 서비스 확인
kubectl get svc -n monitoring

해결책:

  • Prometheus 엔드포인트 구성 확인
  • 네트워크 정책 확인
  • Prometheus가 Kubernetes 메트릭을 수집하는지 확인

3. 인증 문제

OAuth 구성 확인:

  • 클라이언트 ID 및 비밀 확인
  • 리디렉션 URL 확인
  • 공급자별 설정 확인

4. 멀티 클러스터 문제

# kubeconfig 파일 확인
kubectl config get-contexts

# 클러스터 연결 테스트
kubectl cluster-info --context=cluster-name

디버그 모드

문제 해결을 위해 디버그 로깅을 활성화하세요:

# values.yaml
config:
  debug: true
  logLevel: "debug"

상태 확인

Kite는 상태 확인 엔드포인트를 제공합니다:

# 상태 확인
curl http://localhost:8080/health

# 준비 상태 확인
curl http://localhost:8080/ready

# 메트릭 엔드포인트
curl http://localhost:8080/metrics

고급 기능

커스텀 리소스 정의 (CRD)

Kite는 클러스터의 모든 CRD를 자동으로 지원합니다:

  1. 자동 검색: CRD가 자동으로 감지되고 나열됩니다
  2. 전체 CRUD 작업: 커스텀 리소스 생성, 읽기, 업데이트, 삭제
  3. YAML 편집: 구문 강조로 커스텀 리소스 편집
  4. 상태 추적: 커스텀 리소스 상태 및 조건 모니터링

이미지 태그 관리

Kite는 컨테이너 이미지 관리를 위한 직관적인 인터페이스를 제공합니다:

  1. 태그 선택: 컨테이너 레지스트리에서 사용 가능한 태그 탐색
  2. 빠른 업데이트: 몇 번의 클릭으로 배포 이미지 업데이트
  3. 롤백 지원: 이전 이미지 버전으로 쉬운 롤백
  4. 레지스트리 통합: Docker Hub, ECR, GCR 및 사설 레지스트리 지원

대량 작업

여러 리소스에 대한 작업 수행:

  1. 다중 선택: 목록 보기에서 여러 리소스 선택
  2. 대량 삭제: 여러 리소스를 한 번에 제거
  3. 대량 라벨링: 여러 리소스에서 라벨 추가/제거
  4. 대량 스케일링: 여러 배포를 동시에 스케일링

리소스 템플릿

일반적인 리소스에 대한 템플릿 생성 및 사용:

  1. 템플릿 저장: 자주 사용하는 리소스 구성 저장
  2. 템플릿 라이브러리: 조직 템플릿 라이브러리 구축
  3. 빠른 배포: 최소한의 변경으로 템플릿에서 리소스 배포
  4. 매개변수 대체: 유연성을 위해 템플릿에서 변수 사용

모범 사례

보안 모범 사례

  1. RBAC 사용: 적절한 역할 기반 접근 제어 구현
  2. 인증 활성화: 사용자 인증을 위해 OAuth 사용
  3. 네트워크 정책: Kite에 대한 네트워크 액세스 제한
  4. TLS 암호화: 적절한 인증서로 HTTPS 사용
  5. 정기 업데이트: Kite를 최신 버전으로 유지

성능 최적화

  1. 리소스 제한: 적절한 CPU 및 메모리 제한 설정
  2. Prometheus 튜닝: Prometheus 쿼리 및 보존 최적화
  3. 네트워크 최적화: 가능한 경우 로컬 Prometheus 사용
  4. 캐싱: 더 나은 성능을 위해 적절한 캐싱 활성화

운영 가이드라인

  1. 구성 백업: Kite 및 클러스터 구성 백업
  2. 모니터링: Kite 자체의 상태 및 성능 모니터링
  3. 로그 관리: 적절한 로그 순환 및 보존 구현
  4. 문서화: 클러스터별 구성 및 절차 문서화

결론

Kite는 개발자와 운영자 경험을 크게 향상시키는 Kubernetes 클러스터 관리를 위한 최신의 직관적인 인터페이스를 제공합니다. 멀티 클러스터 지원, 실시간 모니터링, 고급 보안 옵션을 포함한 포괄적인 기능 세트로 기존 Kubernetes 대시보드의 훌륭한 대안 역할을 합니다.

주요 요점:

  1. 쉬운 설치: 다양한 배포 시나리오를 지원하는 여러 설치 방법
  2. 풍부한 기능 세트: 최신 UI/UX를 갖춘 포괄적인 리소스 관리
  3. 멀티 클러스터 지원: 여러 Kubernetes 클러스터의 원활한 관리
  4. 모니터링 통합: Prometheus를 통한 실시간 메트릭 및 관찰 가능성
  5. 보안 중심: 내장 인증 및 RBAC 지원
  6. 활발한 개발: 정기적인 업데이트 및 커뮤니티 지원

단일 개발 클러스터를 관리하든 여러 프로덕션 환경을 관리하든, Kite는 효과적인 Kubernetes 운영에 필요한 도구와 인터페이스를 제공합니다.

추가 리소스

이 튜토리얼에 대해 질문이나 피드백이 있으신가요? 언제든지 연락하거나 GitHub의 Kite 프로젝트에 기여해 주세요!