- Published on
인프라 엔지니어가 자주 사용하는 쿠버네티스 필수 도구 10선
1. 개요
쿠버네티스(Kubernetes)는 이제 클라우드 네이티브 환경의 사실상 표준이 되었습니다. 하지만 kubectl 명령어만으로 대규모 클러스터를 효율적으로 관리하기란 쉽지 않습니다. 이 글에서는 현업 인프라 엔지니어들이 매일 사용하며 검증된 필수 도구 10가지를 소개합니다.
| 카테고리 | 도구 |
|---|---|
| 패키지 관리 | Helm, Kustomize |
| 클러스터 관리 | k9s, Lens, kubectx/kubens |
| GitOps/CD | Argo CD |
| 모니터링 | Prometheus, Grafana |
| 로깅 | Stern |
| 보안 | Trivy |
| 플러그인 | krew |
2. Helm: 쿠버네티스의 사실상 표준 패키지 매니저
2.1 Helm이란?
Helm은 쿠버네티스 애플리케이션을 정의, 설치, 업그레이드하기 위한 패키지 매니저입니다. 복잡한 YAML 파일들을 차트(Chart)라는 단위로 패키징하여 배포와 버전 관리를 획기적으로 단순화합니다.
- 공식 웹사이트: https://helm.sh
2.2 핵심 개념
| 용어 | 설명 |
|---|---|
| Chart | 쿠버네티스 리소스를 정의하는 파일들의 패키지 |
| Repository | Chart를 저장하고 공유하는 저장소 |
| Release | 클러스터에 배포된 Chart의 인스턴스 |
| Values | Chart의 설정값을 커스터마이징하는 파일 |
2.3 설치 방법
# MacOS
brew install helm
# Linux (스크립트)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# Windows (Chocolatey)
choco install kubernetes-helm
2.4 기본 사용법
# Repository 추가
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
# Chart 검색
helm search repo nginx
# Chart 설치
helm install my-nginx bitnami/nginx
# 설치된 Release 목록 확인
helm list
# Values 파일로 커스터마이징 설치
helm install my-nginx bitnami/nginx -f custom-values.yaml
# Release 업그레이드
helm upgrade my-nginx bitnami/nginx --set replicaCount=3
# Release 삭제
helm uninstall my-nginx
# 배포 이력 확인 및 롤백
helm history my-nginx
helm rollback my-nginx 1
2.5 Chart 구조
mychart/
├── Chart.yaml # Chart 메타정보
├── values.yaml # 기본 설정값
├── charts/ # 의존성 Chart
├── templates/ # 쿠버네티스 매니페스트 템플릿
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── _helpers.tpl # 템플릿 헬퍼 함수
│ └── NOTES.txt # 설치 후 안내 메시지
└── .helmignore # 패키징 시 제외할 파일
2.6 실무 활용 팁
- 환경별 Values 파일 분리:
values-dev.yaml,values-stg.yaml,values-prd.yaml로 환경별 설정을 분리하여 관리 - Helm Diff 플러그인: 업그레이드 전 변경사항을 미리 확인
helm plugin install https://github.com/databus23/helm-diff helm diff upgrade my-release ./mychart - Helmfile: 여러 Chart를 선언적으로 관리하여 복잡한 배포 자동화
3. k9s: TUI 기반 클러스터 올인원 관리 도구
3.1 k9s란?
k9s는 터미널에서 쿠버네티스 클러스터를 관리하기 위한 TUI(Terminal User Interface) 도구입니다. kubectl 명령어를 일일이 입력하는 대신 직관적인 인터페이스로 리소스를 탐색하고 관리할 수 있습니다.
- 공식 웹사이트: https://k9scli.io
- GitHub: https://github.com/derailed/k9s
3.2 주요 특징
- 실시간 리소스 모니터링: Pod, Deployment, Service 등 모든 리소스 상태를 실시간으로 확인
- 직관적인 네비게이션: 키보드 중심의 빠른 탐색과 조작
- YAML 편집: 리소스 YAML을 직접 수정하고 적용
- 다중 클러스터 지원: 여러 클러스터를 손쉽게 전환
- Pulse, Xray, Popeye: 클러스터 상태 진단 기능 내장
3.3 설치 방법
# MacOS
brew install k9s
# Linux
curl -sS https://webinstall.dev/k9s | bash
# Go로 설치
go install github.com/derailed/k9s@latest
3.4 주요 단축키
| 단축키 | 기능 |
|---|---|
: | 리소스 종류 전환 (예: :pod, :svc, :deploy) |
/ | 리소스 검색 및 필터링 |
Enter | 선택한 리소스 상세 정보 보기 |
l | Pod 로그 보기 |
s | Pod 쉘 접속 |
e | 리소스 YAML 편집 |
d | 리소스 삭제 |
Ctrl+a | 모든 네임스페이스 리소스 보기 |
? | 단축키 도움말 |
3.5 k9s vs kubectl 비교
| 작업 | kubectl | k9s |
|---|---|---|
| Pod 목록 | kubectl get pods | :pod 입력 후 Enter |
| Pod 로그 | kubectl logs <pod-name> | Pod 선택 후 l |
| Pod 쉘 접속 | kubectl exec -it <pod> -- /bin/sh | Pod 선택 후 s |
| 네임스페이스 변경 | kubectl config set-context --namespace=<ns> | :ns 후 선택 |
| 클러스터 전환 | kubectl config use-context <ctx> | :ctx 후 선택 |
4. Argo CD: 대표적인 GitOps CD 도구
4.1 Argo CD란?
Argo CD는 쿠버네티스를 위한 선언적 GitOps 지속적 배포(CD) 도구입니다. Git 저장소를 단일 진실 공급원(Single Source of Truth)으로 삼아 애플리케이션 배포를 자동화합니다.
- 공식 웹사이트: https://argo-cd.readthedocs.io
4.2 GitOps의 핵심 원칙
- 선언적 구성: 모든 시스템 상태를 선언적으로 정의
- 버전 관리: Git을 통한 구성 이력 추적
- 자동 적용: 승인된 변경사항의 자동 배포
- 지속적 동기화: 실제 상태와 원하는 상태의 지속적 비교 및 조정
4.3 설치 방법
# 네임스페이스 생성 및 Argo CD 설치
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# CLI 설치 (MacOS)
brew install argocd
# 초기 Admin 비밀번호 확인
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
# UI 접속을 위한 포트 포워딩
kubectl port-forward svc/argocd-server -n argocd 8080:443
4.4 Application 배포 예시
# application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: my-app
namespace: argocd
spec:
project: default
source:
repoURL: https://github.com/myorg/my-app-config.git
targetRevision: HEAD
path: overlays/production
destination:
server: https://kubernetes.default.svc
namespace: production
syncPolicy:
automated:
prune: true # Git에서 삭제된 리소스 자동 삭제
selfHeal: true # 클러스터 상태가 Git과 다르면 자동 복구
syncOptions:
- CreateNamespace=true
4.5 핵심 기능
| 기능 | 설명 |
|---|---|
| Sync | Git 저장소와 클러스터 상태 동기화 |
| Rollback | 이전 커밋 상태로 즉시 롤백 |
| Health Status | 애플리케이션 및 리소스 상태 실시간 모니터링 |
| SSO 통합 | OIDC, LDAP, SAML 등 인증 연동 |
| RBAC | 세밀한 접근 권한 제어 |
| Multi-Cluster | 여러 클러스터를 단일 UI에서 관리 |
4.6 실무 활용 시나리오
개발자 → Git Push → Argo CD 감지 → 자동 Sync → 클러스터 배포
↓
Slack/Teams 알림
- 개발자 셀프 서비스: 개발자가 Git에 커밋만 하면 자동으로 배포되어 인프라팀 개입 최소화
- 감사 추적: 모든 배포 이력이 Git에 남아 감사(Audit) 용이
- 빠른 롤백: 문제 발생 시 이전 커밋으로 즉시 롤백
5. kubectx/kubens: 멀티 클러스터 빠른 전환 도구
5.1 kubectx/kubens란?
kubectx와 kubens는 쿠버네티스 컨텍스트(클러스터)와 네임스페이스를 빠르게 전환할 수 있는 CLI 도구입니다. 멀티 클러스터 환경에서 작업할 때 필수적인 도구입니다.
5.2 설치 방법
# MacOS
brew install kubectx
# Linux (직접 설치)
sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
# krew 플러그인으로 설치
kubectl krew install ctx
kubectl krew install ns
5.3 사용법
# 현재 컨텍스트 확인
kubectx
# 컨텍스트 전환
kubectx my-production-cluster
# 이전 컨텍스트로 전환
kubectx -
# 컨텍스트 이름 변경 (별칭 지정)
kubectx prod=arn:aws:eks:ap-northeast-2:123456789:cluster/production
# 현재 네임스페이스 확인
kubens
# 네임스페이스 전환
kubens kube-system
# 이전 네임스페이스로 전환
kubens -
5.4 fzf와의 연동
fzf(fuzzy finder)가 설치되어 있으면 인터랙티브 선택 모드를 사용할 수 있습니다.
# fzf 설치
brew install fzf
# 이후 kubectx/kubens 실행 시 인터랙티브 선택 UI 제공
kubectx # 화살표 키로 선택 가능
5.5 기존 kubectl 명령어와 비교
| 작업 | kubectl | kubectx/kubens |
|---|---|---|
| 컨텍스트 목록 | kubectl config get-contexts | kubectx |
| 컨텍스트 전환 | kubectl config use-context <name> | kubectx <name> |
| 네임스페이스 목록 | kubectl get ns | kubens |
| 네임스페이스 전환 | kubectl config set-context --current --namespace=<ns> | kubens <ns> |
6. Lens: 클러스터 시각화 데스크톱 GUI 관리 도구
6.1 Lens란?
Lens는 쿠버네티스 클러스터의 전반적인 상태를 시각화해주는 데스크톱 GUI 관리 도구입니다. 여러 클러스터를 단일 인터페이스에서 관리하고, 실시간 모니터링과 트러블슈팅을 직관적으로 수행할 수 있습니다.
- 공식 웹사이트: https://k8slens.dev (현재는 OpenLens로 오픈소스 버전 유지)
- OpenLens GitHub: https://github.com/MuhammedKalworith/OpenLens
6.2 주요 기능
| 기능 | 설명 |
|---|---|
| 멀티 클러스터 관리 | 로컬/원격 클러스터를 단일 UI에서 관리 |
| 실시간 모니터링 | CPU, 메모리, 네트워크 사용량 실시간 그래프 |
| 리소스 관리 | Pod, Deployment, Service 등 모든 리소스 조회/편집/삭제 |
| 터미널 내장 | 클러스터에 직접 kubectl 명령어 실행 |
| Helm Chart 관리 | GUI에서 Helm Chart 설치/업그레이드/삭제 |
| 로그 뷰어 | Pod 로그 실시간 스트리밍 및 검색 |
| 확장 기능 | 다양한 Extension 설치 가능 |
6.3 설치 방법
# MacOS (Homebrew)
brew install --cask openlens
# Windows (Chocolatey)
choco install openlens
# Linux (AppImage 또는 Snap)
sudo snap install openlens --classic
6.4 활용 팁
- 카탈로그: 자주 사용하는 클러스터를 카탈로그에 등록하여 빠르게 접근
- Hot Bar: 자주 사용하는 리소스를 핫바에 등록하여 원클릭 접근
- Prometheus 연동: 내장 Prometheus로 상세한 메트릭 대시보드 확인
- kubectl 대체 X: GUI 도구이지만 복잡한 작업은 여전히 CLI가 효율적
7. krew: 쿠버네티스 공식 플러그인 패키지 매니저
7.1 krew란?
krew는 kubectl 플러그인을 발견하고 설치하기 위한 공식 패키지 매니저입니다. 200개 이상의 커뮤니티 플러그인을 손쉽게 설치하여 kubectl의 기능을 확장할 수 있습니다.
- 공식 웹사이트: https://krew.sigs.k8s.io
7.2 설치 방법
# MacOS/Linux
(
set -x; cd "$(mktemp -d)" &&
OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/')" &&
KREW="krew-${OS}_${ARCH}" &&
curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
tar zxvf "${KREW}.tar.gz" &&
./"${KREW}" install krew
)
# PATH에 추가 (~/.bashrc 또는 ~/.zshrc)
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"
7.3 기본 사용법
# 플러그인 검색
kubectl krew search
# 특정 플러그인 검색
kubectl krew search ctx
# 플러그인 설치
kubectl krew install ctx
kubectl krew install ns
# 설치된 플러그인 목록
kubectl krew list
# 플러그인 업데이트
kubectl krew upgrade
# 플러그인 삭제
kubectl krew uninstall ctx
7.4 추천 플러그인
| 플러그인 | 설명 |
|---|---|
ctx | 컨텍스트 빠른 전환 (kubectx) |
ns | 네임스페이스 빠른 전환 (kubens) |
neat | YAML 출력에서 불필요한 필드 제거 |
tree | 리소스 간 소유 관계를 트리로 표시 |
images | Pod에서 사용 중인 이미지 목록 조회 |
whoami | 현재 인증된 사용자 정보 확인 |
access-matrix | RBAC 권한을 매트릭스로 시각화 |
sniff | Pod 네트워크 트래픽 캡처 (tcpdump) |
stern | 멀티 Pod 로그 실시간 tail |
resource-capacity | 노드별 리소스 용량 및 사용량 확인 |
8. Prometheus/Grafana: 메트릭 수집과 시각화
8.1 Prometheus란?
Prometheus는 CNCF 졸업 프로젝트로, 시계열 데이터베이스 기반의 오픈소스 모니터링 시스템입니다. 쿠버네티스 환경에서 메트릭을 수집하고 알림을 생성하는 데 사실상 표준으로 사용됩니다.
- 공식 웹사이트: https://prometheus.io
8.2 Grafana란?
Grafana는 Prometheus를 비롯한 다양한 데이터 소스의 메트릭을 시각화하는 대시보드 도구입니다. 직관적인 UI와 풍부한 시각화 옵션으로 실시간 모니터링 대시보드를 구성할 수 있습니다.
- 공식 웹사이트: https://grafana.com
8.3 아키텍처
┌─────────────────────────────────────────────────────────────┐
│ Kubernetes Cluster │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Pod │ │ Pod │ │ Node │ │
│ │ (metrics)│ │ (metrics)│ │ Exporter │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
│ └─────────────┼─────────────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ Prometheus │ ← 메트릭 수집 (Pull 방식) │
│ │ Server │ │
│ └──────┬──────┘ │
│ │ │
│ ┌────────────┼────────────┐ │
│ ▼ ▼ ▼ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Grafana │ │Alertmanager│ │ 기타 │ │
│ │Dashboard │ │ (알림) │ │연동도구 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
└─────────────────────────────────────────────────────────────┘
8.4 Helm으로 설치 (kube-prometheus-stack)
# Prometheus + Grafana + Alertmanager 통합 스택 설치
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace
# Grafana 접속 (기본 ID/PW: admin/prom-operator)
kubectl port-forward svc/prometheus-grafana -n monitoring 3000:80
8.5 주요 메트릭 예시
# 노드별 CPU 사용률
100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# Pod 메모리 사용량 (MB)
sum(container_memory_working_set_bytes{container!=""}) by (pod) / 1024 / 1024
# 네임스페이스별 CPU 요청량
sum(kube_pod_container_resource_requests{resource="cpu"}) by (namespace)
# Deployment 레플리카 상태
kube_deployment_status_replicas_available / kube_deployment_spec_replicas
8.6 Grafana 대시보드 추천
| 대시보드 ID | 이름 | 용도 |
|---|---|---|
| 315 | Kubernetes Cluster Monitoring | 클러스터 전체 개요 |
| 6417 | Kubernetes Cluster (Prometheus) | 상세 클러스터 모니터링 |
| 747 | Node Exporter Full | 노드 상세 메트릭 |
| 13770 | Kubernetes Pod Overview | Pod별 리소스 사용량 |
9. Stern: 멀티 Pod 실시간 로그 Tail 도구
9.1 Stern이란?
Stern은 여러 Pod와 컨테이너의 로그를 하나의 터미널 창에서 동시에 실시간으로 tail 할 수 있는 도구입니다. Pod 이름의 정규식 매칭을 지원하여 관련된 모든 Pod의 로그를 한눈에 확인할 수 있습니다.
- GitHub: https://github.com/stern/stern
9.2 설치 방법
# MacOS
brew install stern
# Linux
curl -Lo stern https://github.com/stern/stern/releases/latest/download/stern_linux_amd64.tar.gz
tar -xzf stern_linux_amd64.tar.gz
sudo mv stern /usr/local/bin/
# krew로 설치
kubectl krew install stern
9.3 기본 사용법
# Pod 이름에 'api'가 포함된 모든 Pod 로그
stern api
# 특정 네임스페이스의 Pod 로그
stern api --namespace production
# 모든 네임스페이스에서 검색
stern api --all-namespaces
# 정규식으로 Pod 선택
stern 'frontend-.*'
# 특정 컨테이너만 선택
stern api --container nginx
# 최근 10분 로그부터 시작
stern api --since 10m
# 타임스탬프 표시
stern api --timestamps
# JSON 로그를 예쁘게 출력
stern api --output json | jq .
# 특정 라벨의 Pod 로그
stern --selector app=my-service
9.4 출력 예시
frontend-abc123 container1 → {"level":"info","msg":"Request received",...}
frontend-def456 container1 → {"level":"info","msg":"Request received",...}
backend-xyz789 container1 → {"level":"debug","msg":"Processing...",...}
9.5 kubectl logs와 비교
| 기능 | kubectl logs | stern |
|---|---|---|
| 단일 Pod 로그 | 가능 | 가능 |
| 멀티 Pod 로그 | 불편 (각각 실행) | 자동 집계 |
| 정규식 매칭 | 불가능 | 가능 |
| 컬러 구분 | 없음 | Pod/컨테이너별 컬러 |
| 실시간 스트리밍 | -f 옵션 | 기본 동작 |
10. Kustomize: 순수 YAML 오버레이 기반 설정 관리
10.1 Kustomize란?
Kustomize는 순수 YAML 파일의 상속 및 오버레이 구조를 통해 환경별(Dev/Stg/Prd) 설정을 관리하는 도구입니다. 템플릿 엔진 없이 YAML 패치 방식으로 동작하며, kubectl에 내장되어 있습니다.
10.2 Helm vs Kustomize
| 항목 | Helm | Kustomize |
|---|---|---|
| 접근 방식 | 템플릿 엔진 (Go Template) | 순수 YAML 오버레이 |
| 학습 곡선 | 상대적으로 높음 | 낮음 (YAML만 알면 됨) |
| 패키징 | Chart로 패키징/공유 | 디렉토리 기반 |
| 외부 의존성 | helm 바이너리 필요 | kubectl에 내장 |
| 복잡한 로직 | 조건문, 반복문 가능 | 단순 패치만 가능 |
10.3 디렉토리 구조
my-app/
├── base/ # 공통 베이스 설정
│ ├── kustomization.yaml
│ ├── deployment.yaml
│ └── service.yaml
└── overlays/ # 환경별 오버레이
├── dev/
│ ├── kustomization.yaml
│ └── replica-patch.yaml
├── stg/
│ ├── kustomization.yaml
│ └── replica-patch.yaml
└── prd/
├── kustomization.yaml
└── replica-patch.yaml
10.4 예시: base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- deployment.yaml
- service.yaml
commonLabels:
app: my-app
10.5 예시: overlays/prd/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: production
resources:
- ../../base
namePrefix: prd-
replicas:
- name: my-app
count: 5
images:
- name: my-app
newTag: v2.0.0
patches:
- path: replica-patch.yaml
10.6 사용법
# 빌드 결과 미리 확인
kubectl kustomize overlays/prd
# 직접 적용
kubectl apply -k overlays/prd
# Helm과 함께 사용 (Helm 차트를 Kustomize로 패치)
helm template my-release ./mychart | kubectl kustomize -
11. Trivy: 컨테이너 보안 취약점 스캐너
11.1 Trivy란?
Trivy는 Aqua Security에서 개발한 오픈소스 보안 스캐너로, 컨테이너 이미지, 파일시스템, Git 저장소, 쿠버네티스 리소스의 보안 취약점(CVE) 및 설정 오류를 배포 전에 빠르게 스캔합니다.
- 공식 웹사이트: https://trivy.dev
- GitHub: https://github.com/aquasecurity/trivy
11.2 스캔 대상
| 대상 | 스캔 내용 |
|---|---|
| 컨테이너 이미지 | OS 패키지, 언어별 패키지 취약점 |
| 파일시스템 | IaC 설정 오류, 시크릿 노출 |
| Git 저장소 | 커밋 이력 내 민감정보 |
| 쿠버네티스 | 리소스 설정 오류, RBAC 문제 |
11.3 설치 방법
# MacOS
brew install trivy
# Linux (apt)
sudo apt-get install trivy
# Linux (스크립트)
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
# Docker로 실행
docker run --rm aquasec/trivy image nginx:latest
11.4 기본 사용법
# 컨테이너 이미지 스캔
trivy image nginx:1.21
# 심각도 필터링 (HIGH, CRITICAL만)
trivy image --severity HIGH,CRITICAL nginx:1.21
# JSON 형식 출력
trivy image --format json -o result.json nginx:1.21
# 로컬 Dockerfile 및 파일시스템 스캔
trivy fs --security-checks vuln,secret,config .
# 쿠버네티스 클러스터 스캔
trivy k8s --report summary cluster
# 특정 네임스페이스 스캔
trivy k8s --namespace production --report all
11.5 CI/CD 파이프라인 통합 예시
# GitHub Actions
- name: Run Trivy vulnerability scanner
uses: aquasecurity/trivy-action@master
with:
image-ref: 'myregistry/myimage:${{ github.sha }}'
format: 'sarif'
output: 'trivy-results.sarif'
severity: 'CRITICAL,HIGH'
exit-code: '1' # 취약점 발견 시 빌드 실패
11.6 스캔 결과 예시
nginx:1.21 (debian 11.2)
=========================
Total: 52 (UNKNOWN: 0, LOW: 15, MEDIUM: 30, HIGH: 5, CRITICAL: 2)
┌──────────────┬────────────────┬──────────┬───────────────────┬───────────────┬─────────────────────────────────────┐
│ Library │ Vulnerability │ Severity │ Installed Version │ Fixed Version │ Title │
├──────────────┼────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────┤
│ libssl1.1 │ CVE-2022-0778 │ HIGH │ 1.1.1k-1 │ 1.1.1k-1+deb │ openssl: Infinite loop in BN_mod_ │
│ │ │ │ │ 11u3+1 │ sqrt() reachable when parsing... │
├──────────────┼────────────────┼──────────┼───────────────────┼───────────────┼─────────────────────────────────────┤
│ zlib1g │ CVE-2022-37434 │ CRITICAL │ 1:1.2.11.dfsg-2 │ 1:1.2.11.dfsg │ zlib: heap-based buffer over-read │
│ │ │ │ │ -2+deb11u2 │ and overflow in inflate()... │
└──────────────┴────────────────┴──────────┴───────────────────┴───────────────┴─────────────────────────────────────┘
12. 도구 활용 워크플로우 예시
실제 인프라 엔지니어의 일과에서 이 도구들이 어떻게 활용되는지 살펴봅니다.
┌──────────────────────────────────────────────────────────────────────────┐
│ 인프라 엔지니어 일일 워크플로우 │
├──────────────────────────────────────────────────────────────────────────┤
│ │
│ 1. 클러스터 전환 │
│ $ kubectx production-cluster │
│ $ kubens backend │
│ │
│ 2. 클러스터 상태 확인 │
│ $ k9s # TUI로 전체 상태 파악 │
│ 또는 Lens 실행 # GUI로 시각적 확인 │
│ │
│ 3. 로그 모니터링 │
│ $ stern 'api-.*' --since 1h # API 서버 로그 실시간 확인 │
│ │
│ 4. 메트릭 대시보드 │
│ Grafana 접속 → Kubernetes Dashboard 확인 │
│ │
│ 5. 신규 앱 배포 (Helm + Argo CD) │
│ $ helm diff upgrade my-app ./charts/my-app │
│ $ git commit & push # Argo CD가 자동 Sync │
│ │
│ 6. 환경별 설정 관리 (Kustomize) │
│ $ kubectl apply -k overlays/production │
│ │
│ 7. 보안 점검 │
│ $ trivy image myregistry/myapp:latest │
│ $ trivy k8s --namespace production --report summary │
│ │
│ 8. kubectl 확장 (krew) │
│ $ kubectl resource-capacity # 노드별 리소스 확인 │
│ $ kubectl tree deploy my-app # 리소스 관계 트리 확인 │
│ │
└──────────────────────────────────────────────────────────────────────────┘
13. 마무리
이번 글에서 소개한 10가지 도구는 쿠버네티스 환경에서 인프라 엔지니어가 효율적으로 작업하기 위한 필수 도구들입니다.
| 도구 | 한줄 요약 |
|---|---|
| Helm | 복잡한 YAML을 차트로 패키징하여 원클릭 배포 |
| k9s | 터미널에서 클러스터를 직관적으로 관리하는 TUI |
| Argo CD | Git 커밋만으로 자동 배포되는 GitOps CD |
| kubectx/kubens | 멀티 클러스터/네임스페이스 빠른 전환 |
| Lens | 클러스터 상태를 한눈에 보는 데스크톱 GUI |
| krew | kubectl 기능을 무한 확장하는 플러그인 매니저 |
| Prometheus/Grafana | 메트릭 수집과 시각화의 황금 조합 |
| Stern | 여러 Pod 로그를 한 화면에서 실시간 tail |
| Kustomize | 순수 YAML 오버레이로 환경별 설정 관리 |
| Trivy | 배포 전 보안 취약점을 빠르게 스캔 |
이 도구들을 적절히 조합하면 복잡한 쿠버네티스 환경에서도 생산성을 높이고 안정적인 운영이 가능합니다. 각 도구의 공식 문서를 참고하여 팀 환경에 맞게 커스터마이징해 보시기 바랍니다.