kubectl 자동 완성 (수정 중)

쿠버네티스의 자동 완성 기능은 긴 쿠버네티스 리소스 이름을 자동 완성 시킬때 꽤 유용 하다.

자세한 정보는

k8s 자동완성 설정

먼저

type _init_completion

명령어를 사용하여 이미 설정이 되어 있는지 부터 확인

안되어 있는 경우:

type _init_completion-bash: type: _init_completion: not found

설정 하려면:

source /usr/share/bash-completion/bash_completion[root@main ~]# exec bash

만약에 위 명령어 사용 시 'Not Found' 애러 발생 하면, 먼저 'bash-completion'툴을 설치 하고 다시 진행 해야 한다

RHEL 계열:dnf install bash-completionUbuntu 계열:apt install bash-completion

설정 후

type _init_completion_init_completion is a function_init_completion () {

   local exclude= flag outx errx inx OPTIND=1;    while getopts "n:e:o:i:s" flag "$@"; do        case $flag in

           n)                exclude+=$OPTARG            ;;            e)                errx=$OPTARG            ;;            o)                outx=$OPTARG            ;;            i)                inx=$OPTARG            ;;            s)                split=false;                exclude+==            ;;        esac;    done;    COMPREPLY=();    local redir="@(?([0-9])<|?([0-9&])>?(>)|>&)";    _get_comp_words_by_ref -n "$exclude<>&" cur prev words cword;    _variables && return 1;    if [[ $cur == $redir* || $prev == $redir ]]; then        local xspec;        case $cur in

           2'>'*)                xspec=$errx            ;;            *'>'*)                xspec=$outx            ;;            *'<'*)                xspec=$inx            ;;            *)                case $prev in

                   2'>'*)                        xspec=$errx                    ;;                    *'>'*)                        xspec=$outx                    ;;                    *'<'*)                        xspec=$inx                    ;;                esac            ;;        esac;        cur="${cur##$redir}";        _filedir $xspec;        return 1;    fi;    local i skip;    for ((i=1; i < ${#words[@]}; 1))    do        if [[ ${words[i]} == $redir* ]]; then            [[ ${words[i]} == $redir ]] && skip=2 || skip=1;            words=("${words[@]:0:i}" "${words[@]:i+skip}");            [[ $i -le $cword ]] && cword=$(( cword - skip ));        else            i=$(( ++i ));        fi;    done;    [[ $cword -eq 0 ]] && return 1;    prev=${words[cword-1]};    [[ -n ${split-} ]] && _split_longopt && split=true;    return 0}

그 후 쿠버네티스 상 자동 완성 설정. 이제 kubectl 자동 완성 스크립트가 모든 셸 세션에서 제공되도록 해야 한다. 이를 수행할 수 있는 두 가지 방법이 있다.

현재 사용자에게 만 설정

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

모든 사용자에게 설정

ubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null[root@node1 ~]# exec bash[root@node1 ~]# kubectl get ns default          kube-node-lease  kube-public      kube-system      [root@node1 ~]# kubectl get ns

// 미완성