IT/Kubernets

kubectl kuberc, 이제 alias 셸에 박지 말자

gfrog 2026. 6. 20. 15:44
SMALL

오늘 알게 된 건데, 1.34부터 kuberc가 beta 승격됐다. 이게 뭐냐면, kubectl 전용 사용자 설정 파일이다. 별칭하고 기본 옵션을 따로 관리할 수 있게 해준다.

솔직히 우리 팀은 ~/.zshrc~/.bashrcalias k=kubectl, alias kgp='kubectl get pods' 같은 걸 한 30줄씩 박아두고 살았는데, 이거 좀 지저분하다. 새 노트북 받을 때마다 dotfiles 복사하고, 팀 신입한테 "이거 깔아라" 시키는 것도 일이다.

kuberc는 그 자리를 대체할 수 있는 공식 방법이다. kubectl 자체가 읽어서 처리한다.

어떻게 생겼나

~/.kube/kuberc 한 파일이다. 위치만 약속하면 끝.

apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
aliases:
  - name: kgp
    command: get pods
    options:
      - name: output
        default: wide
  - name: kdrain
    command: drain
    options:
      - name: ignore-daemonsets
        default: "true"
      - name: delete-emptydir-data
        default: "true"
defaults:
  - command: apply
    options:
      - name: server-side
        default: "true"
  - command: delete
    options:
      - name: interactive
        default: "true"

aliases는 셸 alias 대체용이고, defaults는 기존 명령에 기본 옵션을 박는 용도다. 차이가 좀 미묘하다.

내가 의외로 좋아하는 건 defaults 쪽이다. kubectl apply--server-side 기본으로 깔아두면 SSA(server-side apply) 디폴트가 되고, kubectl delete--interactive 기본으로 깔아두면 prod에서 delete deployment 치자마자 "정말 지울 거냐"고 물어본다. 새벽에 wrong context 박혀서 prod 날려먹는 사고를 한 번이라도 본 적 있으면 이 옵션 가치를 안다.

셸 alias랑 뭐가 다른가

alias k=kubectl은 셸이 처리한다. 그래서 xargs kubectl ... 같은 데서 안 먹힌다. 자동완성도 자기가 알아서 알려줘야 한다.

kuberc는 kubectl 바이너리 자체가 처리한다. 그래서 자동완성도 같이 동작하고, --help에도 alias가 잡힌다. kubectl kgp -n kube-system 치면 그냥 동작한다.

근데 한 가지 함정이 있다. alias가 외부 스크립트나 CI 잡에서 동작하는 건 아니다. kuberc~/.kube/kuberc에 있는 게 default라서 CI runner에는 안 깔려 있다. 환경변수 KUBERC로 경로를 지정해도 되긴 한데, 이게 좀 애매하다. 결국 사람용이지 자동화용은 아니라는 얘기.

굳이 써야 하나

내 결론은 "써라". 이유는 두 가지.

첫째, dotfiles에서 kubectl 관련 alias를 분리할 수 있다. 깔끔하다.

둘째, 팀 표준을 만들기 좋다. 우리 팀은 git 리포에 kuberc.yaml 하나 두고 onboarding 문서에 "이거 ~/.kube/kuberc로 복사하세요"라고만 적어둔다. zsh, bash, fish 셸 다 다른 팀원들한테 따로 안내 안 해도 된다.

셋째 — 좀 약한 이유긴 한데 — --interactive 기본값 같은 안전장치를 강제할 수 있다.

1.34 클러스터가 없어도 클라이언트 1.34 이상이면 동작한다. kubectl만 업그레이드하면 된다. kubeconfig 안 건드리는 것도 좋다.

혹시 이미 잘 쓰고 계신 분들 더 좋은 alias 패턴 있으면 댓글로 알려주세요. defaults에 박아둘만한 옵션 추천도 환영.

BIG