반응형

들어가는 말

Kubernetes 명령 도구인 'kubectl'을 사용하다보면, 수많은 타이핑 때문에 손가락이 아프고, 전체 명령어를 다 외울 수 없어서 명령을 입력하다가 주저하는 경우가 있다.

이럴 때, kubectl bash auto-completion 기능을 활용하면 명령어 입력하는 것이 한결 쉬워진다.

kubectl의 auto-completion 기능에 대해서 설명한 Web docs는 많은데, 대부분 Ubuntu, CentOS 환경에서 사용하는 것을 가정하고 설명하다보니, Mac에서 Web docs의 설명과 같이 따라해보면 안 된다.

 

Bash 버전부터 업그레이드

2021년 현재 macOS에 기본 설치된 Bash는 v3.2이다. 이 Bash를 v4.1+으로 Upgrade해야 한다.

주의: Bash v3.2로는 kubectl auto-completion을 사용할 수 없다

MacOS에서 Bash를 upgrade하는 절차는 아래 Web docs에 잘 설명되어 있으므로, 이 순서를 따른다.

Upgrading Bash on macOS

 

위 Web docs를 명령만 요약해보면 이렇다.

##
## brew 명령으로 bash를 설치한다.
##
$  brew install bash
...
...

$  which -a bash
/usr/local/bin/bash
/bin/bash

$  /usr/local/bin/bash --version
GNU bash, version 5.1.8(1)-release (x86_64-apple-darwin20.3.0)
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

##
## /etc/shells에 '/usr/local/bin/bash'를 추가한다.
##
$  sudo vim /etc/shells
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/bash       ## 이 라인을 추가한다.

##
## Set default shell
##
$  chsh -s /usr/local/bin/bash

## TODO: 위 chsh 명령을 수행한 후에
##       반드시 기존 iTerm2 터미널을 종료하고, 새로운 iTerm2 터미널을 열어야 
##       새로운 버전의 bash 명령을 사용할 수 있다.

$  echo $BASH_VERSION
5.1.8(1)-release

 

Bash auto-completion

MacOS에 설치된 Bash가 v4.1+ 인 것을 확인했다면, 아래 Web docs를 따라서 설정해주면 모든 것이 끝!

bash auto-completion on macOS

위 Web Site의 Docs를 읽으면서, 아래 내가 작성한 문서를 비교하면서 작업해야 한다. 

위 Web Docs만 따라하면 bash 패키지 설치 디렉토리가 설치 대상 장비마다 달라서, 잘못된 설정을 하게 된다.

##
## 아래 문서를 따라서 설정할 때, 주의할 점이 있다.
## https://kubernetes.io/docs/tasks/tools/included/optional-kubectl-configs-bash-mac/
## 위 문서의 설명을 따라하다보면, bash-completion@2를 설치하고 나서, 
## .bash_profile에 바로 bash_completion.sh 정보를 작성하라고 되어 있는데
## 이때, Web Docs에 있는 것을 Copy & Paste하면 안 된다.
## 왜냐고?
## bash-completion@2가 minor 버전이 릴리즈될 때마다 설치 디렉토리가
##   - /usr/local/etc/... 인 경우가 있고,
##   - /opt/homebrew/...  인 경우가 있기 때문에
## Web Docs만 따라하면 제대로 설정할 수 없다.
## 따라서 아래 설치 명령의 제일 밑에 출력되는 내용을 copy해서 .bash_profile에 붙여 넣어야 한다.
## 즉, 결론적으로
## Kubernetes의 Web Docs는 전체 절차만 이해하는 수준으로 읽고,
## 아래 명령의 출력 결과에 나오는 안내 글을 읽고 따라서 설정 작업을 해야 잘 동작한다.
##

$  brew install bash-completion@2
... 중간 생략 ...

## 주의: 바로 이 안내 글을 꼭 주의깊게 읽고, .bash_profile 설정 작업을 해야 한다.

Add the following line to your ~/.bash_profile:
  [[ -r "/opt/homebrew/etc/profile.d/bash_completion.sh" ]] && . "/opt/homebrew/etc/profile.d/bash_completion.sh"
==> Summary
🍺  /opt/homebrew/Cellar/bash-completion@2/2.11: 753 files, 1MB
$

 

 

 

블로그 작성자: sejong.jeonjo@gmail.com

+ Recent posts