Container Linux で kubectl completion を有効にする方法
Written by @ryysud Feb 25, 2019 22:01 · 419 words · 1 minute read
TL;DR
$ toolbox dnf -y install bash-completion
$ mkdir -p /etc/bash/bashrc.d
$ cat << EOT > /etc/bash/bashrc.d/kubectl-completion
source /var/lib/toolbox/-fedora-latest/usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
EOT
動作確認で使う実行環境
Vagrant を使ってローカルに起動した Container Linux Stable v1967.3.0 の VM を使用します。
$ wget https://raw.githubusercontent.com/coreos/coreos-vagrant/master/Vagrantfile
$ vi Vagrantfile
$ vagrant up
$ vagrant ssh core-01
Vagrantfile で update_channel のみ変更しています。
- $update_channel = "alpha"
+ $update_channel = "stable"
予め kubectl のバイナリをダウンロードしておきます。
core@core-01 ~ $ sudo mkdir -p /opt/bin
core@core-01 ~ $ sudo wget -P /opt/bin https://storage.googleapis.com/kubernetes-release/release/v1.13.3/bin/linux/amd64/kubectl
core@core-01 ~ $ sudo chmod a+x /opt/bin/kubectl
kubectl completion を利用するのに必要なもの
kubectl completion bash –help の実行結果から、以下2つの処理を行う必要があることがわかります。
bash-completion
パッケージのインストールkubectl completion bash
の実行結果をシェルが起動したタイミングで読み込む
Container Linux での bash-completion パッケージのインストール方法
toolbox というものを使って bash-completion
パッケージをインストールする。
toolbox dnf -y install bash-completion
kubectl completion bash の実行結果をシェルが起動したタイミングで読み込む
全ユーザーに適用させるために /etc/bash/bashrc.d 直下に配置して作業完了です。
#!/usr/bin/env bash
set -e
BASHRC_DIR=/etc/bash/bashrc.d
toolbox dnf -y install bash-completion
mkdir -p ${BASHRC_DIR}
cat << EOT > ${BASHRC_DIR}/kubectl-completion
source /var/lib/toolbox/-fedora-latest/usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
EOT
以上で設定が完了となります。手元で試してもらうと kubectl completion が有効になっていることがわかると思います。おしまい。