728x90
반응형

리눅스에서 보통 글자를 입력하고 TAB 을 치게 되면 자동으로 입력할 수 있는 문자가 완성된다.
쿠버네티스 명령어인 kubectl 을 사용하면 TAB 을 통해 자동완성이 되지 않는다.
예를 들어, ku 하고  TAB 하면 되지 않는다.
그래서 자동 완성 기능을 설정해보려고 한다.
쿠버네티스 자동 완성 기능과 관련된 글들은 정말 많기 때문에 여러 블로그를 참고하면 된다.
그리고 쿠버네티스에서도 자동완성과 관련된 문서를 제공해주고 있다.

https://kubernetes.io/ko/docs/tasks/tools/included/optional-kubectl-configs-bash-linux/

 

리눅스에서 bash 자동 완성 사용하기

리눅스에서 bash 자동 완성을 위한 몇 가지 선택적 구성에 대해 설명한다.

kubernetes.io


쿠버네티스 자동 완성 기능 설정 요약 정리

1. bash-completion 패키지 설치

yum install bash-completion -y

2. 자동 완성 스크립트 결과 저장

echo 'source <(kubectl completion bash)' >>~/.bashrc

또는

kubectl completion bash >/etc/bash_completion.d/kubectl

3. kubectl 앨리어스 설정 (선택 사항)

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc

4. 재접속


가장 먼저 bash-completion 패키지를 설치한다.

[root@k8s-master ~]# yum install bash-completion -y

bash-completion 패키지는 bash의 내장 명령 중 하나인 complete 를 이용해서
특정 명령에 대해 자동 완성 목록을 표시해준다.

따라서, kubectl 은 kubectl completion bash 명령어를 제공해주는데 실행하게 되면
complete 에 맞게 자동 완성에 필요한 목록들을 생성해준다.

[root@k8s-master ~]# kubectl completion bash

결과를 확인해보면 엄청나게 긴 스크립트를 확인할 수 있다.
그래서 자동 완성 기능을 사용하려면 위에서 나온 결과를 저장하고 가지고 있어야 한다.
그리고 접속할 때 배쉬 쉘 설정에서 불러오게 하면 된다.

kubectl completion bash 자동 완성 스크립트의 결과를 저장하는 방법은 2가지가 있다.

~/.bashrc 파일에 추가하거나

echo 'source <(kubectl completion bash)' >>~/.bashrc

또는 /etc/bash_completion.d 디렉터리에 추가한다.

kubectl completion bash >/etc/bash_completion.d/kubectl

나는 ~/.bashrc 파일에 추가해주었다.
그리고 kubectl 을 alias 에 등록해 'k' 한글자로 사용할 수 있다.

echo 'alias k=kubectl' >>~/.bashrc
echo 'complete -F __start_kubectl k' >>~/.bashrc

이렇게 추가된 ~/.bashrc 파일이다.

[root@k8s-master ~]# cat ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
source <(kubectl completion bash)
alias k=kubectl
complete -F __start_kubectl k

이제 재접속하면 적용이 되는데 껐다 켜도 되지만 잠깐 확인해보려면 su -  명령어를 통해 접속해보자.

[root@k8s-master ~]# k
annotate       autoscale      cp             drain          help           plugin         scale          wait
api-resources  certificate    create         edit           kustomize      port-forward   set
api-versions   cluster-info   debug          exec           label          proxy          taint
apply          completion     delete         explain        logs           replace        top
attach         config         describe       expose         options        rollout        uncordon
auth           cordon         diff           get            patch          run            version

이렇게 k 만 쳐도 kubectl 명령이 실행되고 TAB을 치면 목록들이 쭉 나오게 된다.

자동완성 기능 설정 끝 !

728x90
반응형
복사했습니다!