본문 바로가기

CKA

[k8s] kubectl 자동완성(Tab completion) 설정하기 : zsh에서 kubectl completion 켜는 방법

728x90
반응형
더보기

zsh란?

  • zsh(Z shell)는 유닉스 계열(macOS/Linux)에서 많이 쓰는 커맨드 라인 셸(shell) 이다.
  • 사용자가 입력한 명령어를 해석해서 실행해주고, 히스토리/자동완성/환경변수/alias 같은 기능을 제공한다.
  • macOS는 최근 버전에서 기본 셸이 bash에서 zsh로 변경되었고, 그래서 Mac 환경에서 zsh 기반 설정을 많이 한다.

대표적인 셸 종류는 무엇인지?

셸(shell)은 흔히 아래 종류들을 만난다.

  • sh: 전통적인 유닉스 셸(표준의 기반)
  • bash: Linux에서 가장 흔한 셸
  • zsh: macOS 기본 셸로 많이 사용(완성/확장 기능이 풍부)
  • fish: 사용성 중심(설정 쉬움, 자동완성 강함)
  • ksh: Korn shell(전통/기업 환경에서 가끔)
  • PowerShell: Windows 대표 셸(객체 기반 파이프라인)
  • cmd.exe: Windows의 레거시 커맨드 인터프리터

OS마다 기본적으로 제공되는 셸이 다를 뿐이고, 대부분 원하는 셸을 설치해서 변경/사용할 수 있다(Windows에서도 WSL이면 bash/zsh 사용 가능).

쿠버네티스 CLI를 쓰다보면 kubectl get pod <Tab>에서 Pod 이름이 자동완성되거나,

kubectl get <Tab><Tab>에서 리소스 후보 목록이 뜨는 기능이 있으면 작업 속도가 확 올라간다.

이 기능이 바로 completion(자동완성) 이고, zsh에서는 kubectl이 제공하는 completion 스크립트를 로드해서 사용할 수 있다.


completion이 뭔가?

completion은 터미널에서 명령어를 입력할 때 Tab 키로 가능한 후보를 자동으로 채워주거나 목록을 보여주는 기능이다.

 

kubectl completion이 켜지면 아래 같은 것들이 편해진다.

  • kubectl get <Tab><Tab> → pods, svc, deploy 등 후보 목록 표시
  • kubectl get pod <Tab> → Pod 이름 자동완성
  • kubectl -n <Tab> 또는 kubectl get pod -n <Tab> → namespace 후보
  • 다양한 옵션(--context, --namespace, -o 등) 후보 탑색
참고: kubectl get po 에서 po가 pod로 "자동 변환"되는 걸 기대할 수 있는데,
po는 이미 kubectl의 shortname(약어)로 유효한 입력이라 "굳이 풀어서 바꾸지 않는 경우"가 많다.
대신 pod 이름, namespace, 옵션 자동완성이 동작하는지가 핵심이다.

zsh에서 kubectl completion 설정 방법

1) ~/.zshrc에 아래 내용 추가

# --- zsh completion 초기화 ---
autoload -Uz compinit
compinit

# --- kubectl completion ---
source <(kubectl completion zsh)

# (선택) k alias도 completion 적용
alias k=kubectl
compdef k=kubectl

 

2) 적용 (터미널 재시작 대신 바로 적용)

source ~/.zshrc

 

3) 동작 확인

kubectl get <TAB><TAB>     # 리소스 목록이 뜨는지
kubectl get pod <TAB>      # pod 이름이 자동완성 되는지
kubectl -n <TAB>           # namespace 후보가 뜨는지

자주 헷갈리는 포인트

Tab을 눌렀는데 "자동으로 안 채워지고" 아무 반응이 없어요

  • completion이 아예 꺼져있거나(compinit 미실행)
  • 설정이 적용되지 않았거나(source ~/.zshrc 미실행)
  • 플러그인/기존 설정과 충돌 가능성이 있다.

간단 점검

echo $SHELL
type compinit
type kubectl

결론

kubectl completion을 켜두면 리소스/옵션/Pod 이름 탐색이 쉬워져서,

실습(특히 CKA)이나 운영 환경에서도 타이핑 실수를 줄이고 속도를 올릴 수 있다.

728x90
반응형