본문으로 건너뛰기

4.2. 자주 사용하는 명령어

본 장은 일상 운영 중 가장 자주 사용하는 명령어를 빠르게 찾아볼 수 있도록 카테고리별로 정리한 치트시트입니다. 각 명령어의 상세 설명은 4.1. OPENMARU COP CLI3.1. OPENMARU COP 운영절차를 참고하십시오.


프로젝트 관리

프로젝트 생성

kubectl create namespace <namespace>
kubectl label namespace <namespace> pod-security.kubernetes.io/enforce=restricted

프로젝트 확인

# 전체 네임스페이스 목록
kubectl get namespaces

# 특정 네임스페이스 상세
kubectl describe namespace <namespace>

# 네임스페이스 내 전체 리소스 개요
kubectl get all -n <namespace>

# 네임스페이스별 리소스 쿼터/사용량
kubectl describe resourcequota -n <namespace>

애플리케이션 관리

ℹ️ 참고: 소스 빌드는 S2I(Source-to-Image) CLI로, 빌드 자동화는 Jenkins Job으로 수행합니다. 상세 절차는 3.1. OPENMARU COP 운영절차 > 애플리케이션 빌드/배포COP 빌드/배포 가이드 참고.

S2I 빌드 및 Jenkins Job 실행

# S2I 직접 빌드
s2i build <소스_위치> <빌더_이미지> <결과_이미지>:<태그>
docker push registry.{sub_domain}.{domain}.{TLD}:8443/apps/<이미지명>:<태그>

# Bastion 스크립트로 빌드→Push→배포 일괄 실행
cd /data/workspaces/apps/<namespace>/<app>
./build-app.sh && ./build-push.sh && ./build-deploy.sh

# 이력 조회 및 롤백
./build-history.sh
./build-rollback.sh <revision>

Jenkins Job으로 실행할 경우: <namespace>-<app>-build(S2I 빌드+Harbor Push) → <namespace>-<app>-deploy(배포). Job 전체 목록은 3.1 장 CI/CD 파이프라인 참고.

애플리케이션 배포

# Helm 배포
helm install <release> openmaru/<chart> -n <namespace> -f values.yaml
helm upgrade <release> openmaru/<chart> -n <namespace> -f values.yaml
helm rollback <release> <revision> -n <namespace>
helm list -A
helm status <release> -n <namespace>
helm history <release> -n <namespace>

# 이미지 태그 갱신(수동 배포)
kubectl set image deployment/<name> <container>=<image>:<tag> -n <namespace>
kubectl rollout status deployment/<name> -n <namespace>

# ArgoCD 동기화(GitOps 배포)
argocd app sync <app-name> --grpc-web
argocd app wait <app-name> --grpc-web
argocd app history <app-name> --grpc-web

⚠️ 주의: ArgoCD(GitOps)로 관리되는 애플리케이션에 helm rollback을 직접 실행하면 안 됩니다. ArgoCD의 auto-sync/self-heal이 즉시 원래 상태로 되돌려 롤백이 무효화됩니다. ArgoCD 관리 앱은 반드시 argocd app rollback 또는 Git 저장소의 매니페스트를 되돌린 뒤 동기화하는 방식으로 롤백하십시오.

애플리케이션 Volume 설정

kubectl get pvc -n <namespace>
kubectl patch pvc <pvc-name> -n <namespace> \
-p '{"spec":{"resources":{"requests":{"storage":"20Gi"}}}}'

애플리케이션 Pod 정보

kubectl get pods -n <namespace> -o wide
kubectl describe pod <pod-name> -n <namespace>

애플리케이션 Service 정보

kubectl get svc -n <namespace>
kubectl describe svc <svc-name> -n <namespace>

애플리케이션 Ingress 정보

kubectl get ingress -n <namespace>
kubectl describe ingress <ingress-name> -n <namespace>

Pod(컨테이너) 관리

Pod(컨테이너) 정보

kubectl get pods -n <namespace>
kubectl get pods -A -o wide
kubectl top pod -n <namespace>

Pod(컨테이너) 증가

kubectl scale deployment <name> -n <namespace> --replicas=<개수>

Pod(컨테이너) 감소

kubectl scale deployment <name> -n <namespace> --replicas=<개수>

Pod(컨테이너) 삭제

kubectl delete pod <pod-name> -n <namespace>

# 강제 삭제(최후 수단)
kubectl delete pod <pod-name> -n <namespace> --grace-period=0 --force

Pod(컨테이너) 로그 정보

kubectl logs -n <namespace> <pod-name> -f
kubectl logs -n <namespace> <pod-name> --previous

Pod(컨테이너) 원격 접속

kubectl exec -it <pod-name> -n <namespace> -- bash

Private Registry 관리

Private Registry 서비스 상태

docker login registry.{sub_domain}.{domain}.{TLD}:8443 -u admin -p ${HARBOR_PASSWORD}

Harbor 웹 콘솔(https://registry.{sub_domain}.{domain}.{TLD}:8443)에서 Administration > System Info로 서비스 상태를 확인할 수 있습니다.

Private Registry 이미지 정보

docker tag <local-image>:<tag> registry.{sub_domain}.{domain}.{TLD}:8443/apps/<image>:<tag>
docker push registry.{sub_domain}.{domain}.{TLD}:8443/apps/<image>:<tag>
docker pull registry.{sub_domain}.{domain}.{TLD}:8443/apps/<image>:<tag>

Private Registry 디렉터리(프로젝트) 정보

프로젝트공개 여부용도
libraryPublic공용 베이스 이미지
imagesPublicS2I 빌더 이미지
appsPrivate고객사 애플리케이션 이미지