본문으로 건너뛰기

운영 관리

운영 개요 탭

서비스를 배포했다면, 이제 운영이 시작됩니다. KIWI의 운영 모달(Operate Modal)을 사용하면 배포된 서비스의 Pod와 Container를 실시간으로 관리하고 모니터링할 수 있습니다.

왜 운영 관리가 중요할까요?

배포는 시작일 뿐입니다. 실제 서비스 운영에서는 로그 확인, 리소스 모니터링, 문제 해결, 스케일링 등 다양한 작업이 필요합니다. KIWI의 운영 모달은 이 모든 작업을 한 곳에서 처리할 수 있도록 도와줍니다.

운영 기능 개요

flowchart TB
A[운영 모달] --> B[Overview]
A --> C[Pod/Container]
A --> D[Deployment]
A --> E[Logs]
A --> F[Execute]
A --> G[DAST]

C --> C1[목록 조회]
C --> C2[상태 확인]
C --> C3[삭제/재시작]

D --> D1[스케일링]
D --> D2[HPA 관리]
D --> D3[롤백]

E --> E1[실시간 로그]
E --> E2[로그 필터링]

F --> F1[명령 실행]
F --> F2[Shell 접속]

런타임별 지원 기능

Kubernetes와 Docker/Podman 환경에서 사용할 수 있는 기능이 다릅니다. 아래 표를 참고하세요.

  • Pod/Container 관리: Kubernetes에서는 Pod 목록, 상태, 삭제를 지원합니다. Docker/Podman에서는 Container 시작/중지/재시작/삭제가 가능합니다.
  • 스케일링: Kubernetes에서는 Deployment 스케일과 HPA를 지원합니다. Docker/Podman에서는 지원하지 않습니다.
  • 로그 조회: Kubernetes에서는 Pod 로그를, Docker/Podman에서는 Container 로그를 조회합니다.
  • 명령 실행: Kubernetes에서는 kubectl exec를, Docker/Podman에서는 docker exec를 사용합니다.
  • 리소스 모니터링: Kubernetes에서는 Metrics Server와 연동합니다. Docker/Podman에서는 docker stats를 사용합니다.
  • 도메인 관리: Kubernetes에서는 Ingress를, Docker/Podman에서는 서비스 도메인을 관리합니다.
  • DAST 스캔: Kubernetes와 Docker/Podman 모두 지원합니다.
Kubernetes vs Docker 차이점

Kubernetes는 자동 스케일링(HPA)과 같은 고급 기능을 제공하지만, Docker/Podman은 단일 호스트에서 간단하게 Container를 관리하는 데 적합합니다. 프로젝트 요구사항에 맞는 런타임을 선택하세요.


운영 모달 접근

운영 모달은 서비스 관리의 핵심 도구입니다. 아래 단계를 따라 쉽게 접근할 수 있습니다.

열기 방법

  1. [서비스 관리] 페이지로 이동합니다 .
  2. 관리할 서비스의 행에서 Operate 단계를 클릭합니다 .
  3. 운영 모달이 열립니다 .
빠른 접근

자주 사용하는 서비스는 즐겨찾기에 추가하면 더 빠르게 접근할 수 있습니다.

모달 탭 구성

Kubernetes 서비스

  • Overview: 서비스 기본 정보, 배포 상태 요약
  • 파드 목록: Pod 목록, 상태, 스케일링, HPA 관리
  • K8s Deployment: Deployment 설정, 롤백, 이미지 변경
  • K8s Resources: ConfigMap, Secret, PV/PVC 조회
  • K8s Certificates: TLS 인증서 관리
  • Logs: Pod 로그 실시간 조회
  • Execute: Pod 내 명령 실행
  • Domain: Ingress 도메인 설정
  • DAST: 동적 보안 테스트

Docker/Podman 서비스

  • Overview: 서비스 기본 정보
  • 컨테이너 목록: 컨테이너 목록, 제어 (시작/중지/재시작)
  • Docker Deployment: 컨테이너 재배포, 이미지 업데이트
  • Docker Ops: 시스템 정보, 리소스 사용량
  • Docker Resources: 볼륨, 네트워크 정보
  • Logs: 컨테이너 로그 조회
  • Execute: 컨테이너 내 명령 실행
  • Domain: 도메인 설정
  • DAST: 동적 보안 테스트

운영 시나리오 가이드

각 상황에 맞는 가이드를 선택하여 따라해 보세요.

기본 운영

일상적인 서비스 운영에 필요한 핵심 기능들입니다.

  • 로그 모니터링: 실시간 로그 조회 및 필터링으로 문제를 빠르게 파악합니다 .
  • Container 관리: Pod/Container 제어 및 스케일링으로 서비스를 안정적으로 운영합니다 .
  • Shell 접속: 원격 명령 실행으로 심층적인 디버깅을 수행합니다 .

클러스터 관리

Kubernetes 클러스터의 고급 관리 기능입니다. 아래 기능은 [런타임 환경] 페이지에서 K8s 클러스터를 선택하여 접근합니다.

  • 메트릭 서버 설치: HPA와 리소스 모니터링의 기반이 되는 메트릭 서버를 설치합니다 .
  • 모니터링 확장: Prometheus와 cAdvisor로 상세한 실시간 모니터링을 구성합니다 .
  • K8s RBAC 관리: ServiceAccount와 네임스페이스 기반으로 팀별 권한을 관리합니다 .
  • K8s 인증서 갱신: 클러스터 인증서 만료를 사전에 확인하고 갱신합니다 .
  • HPA 자동 스케일링: 트래픽 변화에 따라 Pod를 자동으로 확장/축소합니다 .

주요 기능 상세

Pod/컨테이너 상태 관리

Pod 상태 종류 (Kubernetes)

  • Running: 정상 실행 중입니다. 대응이 필요 없습니다.
  • Pending: 스케줄링이나 이미지 풀링 중입니다. 이벤트를 확인하세요.
  • Succeeded: Job이 완료되었습니다. 대응이 필요 없습니다.
  • Failed: 실행이 실패했습니다. 로그를 확인하고 재시작하세요.
  • Unknown: 상태를 알 수 없습니다. 노드 상태를 확인하세요.

컨테이너 상태 (Docker)

  • running: 실행 중입니다. Stop, Restart가 가능합니다.
  • paused: 일시 정지 상태입니다. Unpause, Stop이 가능합니다.
  • exited: 종료된 상태입니다. Start, Remove가 가능합니다.
  • created: 생성된 상태입니다. Start, Remove가 가능합니다.

스케일링 (Kubernetes)

수동 스케일

  1. 파드 목록 탭으로 이동
  2. Deployment 선택
  3. 레플리카 수 입력
  4. Scale 버튼 클릭

스케일 옵션:

  • Scale Up: 레플리카 수 증가
  • Scale Down: 레플리카 수 감소
  • Scale to Zero: 0으로 스케일 (일시 중지)

HPA (Horizontal Pod Autoscaler)

자동 스케일링을 위한 HPA를 설정합니다.

  • 최소 레플리카: 최소 Pod 수입니다. 고가용성(HA)을 위해 2를 권장합니다.
  • 최대 레플리카: 최대 Pod 수입니다. 10을 권장합니다.
  • CPU 목표: CPU 사용률 목표입니다. 70-80%를 권장합니다.
  • 메모리 목표: 메모리 사용률 목표입니다. 70-80%를 권장합니다.
Metrics Server 필요

HPA 사용을 위해서는 클러스터에 Metrics Server가 설치되어 있어야 합니다. KIWI에서 Metrics Server 상태 확인 및 설치가 가능합니다.

로그 모니터링

로그 조회 옵션

  • Pod/컨테이너 선택: 로그를 조회할 대상 선택
  • Lines: 표시할 로그 라인 수 (100, 500, 1000)
  • Follow: 실시간 로그 스트리밍 (tail -f)
  • Timestamps: 타임스탬프 표시 여부
  • Previous: 이전 컨테이너의 로그 (재시작된 경우)

로그 검색

  • 로그 뷰어 내 검색 기능으로 특정 키워드 필터링
  • ERROR, WARNING, INFO 등 로그 레벨별 검색
  • 정규표현식 지원

명령 실행 (Execute)

단일 명령 실행

  1. Execute 탭으로 이동
  2. 대상 Pod/컨테이너 선택
  3. 명령어 입력
  4. Execute 버튼 클릭

자주 사용하는 명령

# 프로세스 확인
ps aux

# 메모리 확인
free -m

# 디스크 사용량
df -h

# 네트워크 연결 확인
netstat -tlnp

# 환경 변수 확인
env | grep -i <keyword>

# 파일 내용 확인
cat /app/config/application.yml

# 로그 파일 확인
tail -f /var/log/app.log

권한 및 보안

운영 기능은 민감한 작업을 포함하므로 적절한 권한 관리가 중요합니다.

권한 안내

운영 기능에 접근할 수 없다면 기관 관리자에게 권한을 요청하세요.

감사 로그

보안과 추적성을 위해 모든 운영 작업은 자동으로 감사 로그에 기록됩니다.

  • 명령 실행 이력: 누가 언제 어떤 명령을 실행했는지 추적
  • 스케일 변경 이력: Pod 수 변경 기록
  • Pod/Container 삭제 이력: 삭제된 리소스 추적
  • 배포 변경 이력: 이미지, 설정 변경 기록
왜 감사 로그가 중요할까요?

문제가 발생했을 때 누가 어떤 작업을 했는지 추적할 수 있어, 원인 분석과 책임 소재 파악에 도움이 됩니다.


문제 해결

공통 문제

  • Pod 목록 표시 안됨: 권한이 부족하거나 네임스페이스에 접근할 수 없습니다. Kubeconfig 권한을 확인하세요.
  • 로그 조회 실패: Pod가 종료되었거나 네트워크 문제가 있습니다. Pod 상태를 확인하고 Previous 옵션을 사용해 보세요.
  • 명령 실행 실패: 컨테이너 내에 shell이 없습니다. 이미지에 /bin/sh가 포함되어 있는지 확인하세요.
  • HPA 생성 실패: Metrics Server가 설치되어 있지 않습니다. Metrics Server를 설치하세요.

Kubernetes 관련

  • Pending 상태 지속: 리소스 부족 또는 노드 문제입니다. kubectl describe pod로 이벤트를 확인하세요.
  • CrashLoopBackOff: 애플리케이션 오류입니다. 로그를 확인하고 설정을 검토하세요.
  • ImagePullBackOff: 이미지 풀에 실패했습니다. 이미지 경로와 Registry 인증을 확인하세요.

Docker 관련

  • 컨테이너 시작 안됨: 포트 충돌 또는 볼륨 문제입니다. docker logs로 에러를 확인하세요.
  • 로그 없음: 컨테이너가 stdout으로 출력하지 않습니다. 애플리케이션 로그 설정을 확인하세요.

베스트 프랙티스

안전하고 효율적인 운영을 위한 권장 사항입니다.

운영 안전성

Production 환경 주의사항

Production 환경에서 작업할 때는 항상 신중하게 행동하세요.

  • Execute 사용 주의: Production에서 데이터 변경 명령(rm, mv 등) 실행 전 반드시 확인합니다 .
  • Scale to Zero 사전 고지: 서비스 중단이 발생하므로 관련 팀에 미리 공지합니다 .
  • 로그 정기 확인: 에러 패턴을 조기에 발견하면 큰 문제를 예방할 수 있습니다 .
  • HPA 설정 검토: 급격한 스케일 변경을 방지하기 위해 적절한 min/max 값을 설정합니다 .

문제 대응 순서

문제가 발생했을 때 체계적으로 대응하면 빠르게 해결할 수 있습니다.

  1. Overview 확인: 먼저 전체 상태를 파악합니다 .
  2. Pod 상태 확인: Running/Pending/Failed 상태를 확인합니다 .
  3. 로그 확인: 에러 메시지를 분석하여 원인을 파악합니다 .
  4. 명령 실행: 필요시 env, process 등을 확인하여 추가 디버깅합니다 .
  5. 필요시 재시작: Pod를 삭제하면 Deployment가 자동으로 새 Pod를 생성합니다 .
체크리스트 활용

위 순서를 체크리스트로 만들어 두면 긴급 상황에서도 침착하게 대응할 수 있습니다.


관련 가이드