LoginSignup
3
2

Kubernetesの踏み台環境構築後に最初にすること

Last updated at Posted at 2023-02-16

Kubernetesクラスタを触る際の踏み台環境を構築した際に、最初にやっておきたいことの備忘録的メモ。
なお、Linuxでの想定でやっているので、非Linux環境の場合はバイナリの取得部分は自環境に併せて修正すること。

インストール後、ダウンロードしたり解凍したファイルが色々散らかった状態になるので、適当にworking directoryを作って作業するのがオススメ。
また、ここにないものでオススメあれば是非コメントいただけるとありがたいです。

Helm CLIのインストール

Helmは何かと使うので入れておく。

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

completionとalias設定

kubectlにタブ補完が効くようにcompletionを入れるのと、kでkubectlが叩けるようにaliasを張る。

echo "source <(kubectl completion bash)" >> ~/.bashrc
echo "alias k=kubectl" >> ~/.bashrc
echo "complete -o default -F __start_kubectl k" >> ~/.bashrc
. ~/.bashrc

krewのインストール

kubectl pluginが使えるようにkrewをインストールしておく。

(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./"${KREW}" install krew
)

echo 'export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"'>> ~/.bashrc
. ~/.bashrc

kubectx, kubensのインストール

kubectxはクラスタの切り替え、kubensはNamespaceの切り替えを1コマンドで実現するコマンドである。
クラスタやNamespaceの切り替えにkubectl configを毎回叩くのは面倒なので、とりあえず入れる。ついでに対話型で切り替えるためのfzfもインストールする。

sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens

wget https://github.com/junegunn/fzf/releases/download/0.38.0/fzf-0.38.0-linux_amd64.tar.gz
tar xvzf ./fzf-*
sudo install ./fzf /usr/local/bin

よく使うのでkx, knで叩けるようにaliasも設定する。

echo "alias kx=kubectx" >> ~/.bashrc
echo "alias kn=kubens" >> ~/.bashrc
. ~/.bashrc

なお、knativeを使う人はknコマンドがバッティングするので注意。

sternのインストール

sternは複数のPodのログを色付けして見やすく出力してくれるツールである。
kubernetesで複数のPodのログを見る時、sternがないとかなり見づらいのでsternを入れておく。

wget https://github.com/stern/stern/releases/download/v1.26.0/stern_1.26.0_linux_amd64.tar.gz
tar xvzf ./stern_*
sudo install stern /usr/local/bin/stern

kubecolorのインストール

kubecolorはkubectlに色をつける。すごく見やすくなるので自分は入れている。

wget https://github.com/kubecolor/kubecolor/releases/download/v0.3.1/kubecolor_0.3.1_linux_amd64.tar.gz
tar xzf kubecolor_*
rm -f kubecolor_0.3.1_linux_amd64.tar.gz
sudo install kubecolor /usr/local/bin

これの注意点として、kubectl neat pluginを挟むと-oyamlしてリダイレクトでファイル出力すると文字化けみたいなのが起きるので、kubectlにaliasは張らないこと。自分は以下のようにしている。

echo "alias k='kubecolor'" >> ~/.bashrc

kubectl neatを使う際は以下のような感じで使う。

k get pod nginx -o yaml | kubectl neat -f - > ./nginx.yaml

PS1にクラスタ名、Namespaceの出力

PS1とは待受プロンプトみたいな奴。↓でいうubuntu@jumphost:~$の部分。

ubuntu@jumphost:~$

クラスタ名やNamespaceを常時プロンプトに表示しないと、思ってるクラスタやNamespaceでないところでdeleteしてしまったりすることがあり得るので、これは必ずやった方がいいと思う。
簡単な方法としては、kubectl config current-contextをPS1に書いておけばよい。
あと、有名どころのツールとしてはkube-ps1なんかもあるが、自分はpowerline-goが好きなので、これを使う。

※'24/4/30追記
最近はStarshipに乗り換えてます。
そのうちこちらのやり方に書き換えます。

wget https://github.com/justjanne/powerline-go/releases/download/v1.24/powerline-go-linux-amd64
sudo install powerline-go-linux-amd64 /usr/local/bin/powerline-go

.bashrcに設定を追記するために以下を実行する。

cat << 'EOF' >> ~/.bashrc
function _update_ps1() {
    PS1="$(/usr/local/bin/powerline-go -newline -cwd-mode plain  -modules "time,kube,venv,user,host,cwd,perms,hg,jobs,exit,root" -colorize-hostname -theme low-contrast -error $?)"
}
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
EOF
. ~/.bashrc

フォントが入っていなくて表示が変になった場合は自PC(not 踏み台)にフォントもあわせてインストールしておく。

git clone https://github.com/powerline/fonts.git --depth=1
cd fonts
./install.sh

フォントのインストール後、ターミナル側でのフォント変更もお忘れなく。

k9sのインストール

k9sはインタラクティブにk8sリソースが触れるツール。initコンテナがコケた時に中を見たい時などに使っているで、こちらもとりあえず入れておく。

wget https://github.com/derailed/k9s/releases/download/v0.32.4/k9s_Linux_amd64.tar.gz
tar xvzf k9s_Linux_amd64.tar.gz
sudo install k9s /usr/local/bin/
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2