概要
お仕事でGCPを複数プロジェクト扱うことになった
操作は基本 gcloudコマンドから行っているので、shellを良い感じにしたいのがモチベーション。 // あとGAEのデプロイ先GCPプロジェクトを間違えたのもモチベーション...
それと、GKEも使うのでそっちも良い感じにする
shellはmacOSデフォルトのbash。
zshやfishは試したけど基本emacs上に居るしそんなにカスタマイズしなくて良いなーと思い結局bashに戻ってきた
GCP
プロジェクトを変更する
プロジェクト一覧を確認する
$ gcloud projects list
プロジェクトの変更
$ gcloud config set project <PROJECT_ID>
プロンプトに現在のプロジェクトを表示させる
.bash_profile
へ以下を追記
PS1="[\W (\[\e[0;34m\$(cat ~/.config/gcloud/configurations/config_default | grep project | sed -E 's/^\project = (.*)$/\1/'))\[\e[0m\])]\$ "
こうなる
GKE
jonmosco/kube-ps1 を用いる。
導入
インストール
$ brew install kube-ps1
公式の .bash_profile
コンフィグだと動かなかったので適当に追記
source "/usr/local/opt/kube-ps1/share/kube-ps1.sh" PS1='[\W $(kube_ps1)]\$ '
適用
$ source ~/.bash_profile
contextが長いのでリネームする
GKEデフォルトのcontext名はプロジェクト名・クラスタ名・リージョン名の3つで構成されるため、やたら長いので短くする。
現在のcontext名を確認。NAMEカラムがcontext名にあたる
$ kubectl config get-contexts
リネーム
$ kubectl config rename-context <YOUR CURRENT CONTEXT NAME> <NEW CONTEXT NAME>
kubectl呼び出し時にkube-ps1を呼び出す
何時もkubernetsを使うわけではないので、kubernetesを使う時にkube-ps1を呼び出したい。
「kubernetesを使うときはkubectlを呼び出す」はずなので、kubectl初回呼び出し時にkube-ps1も同時に呼び出す(ついでに kubectl
だと長いし、 kubectx
と被り補完がめんどうなので、 k
をaliasにする)
export IS_KUBE_PS1_ENABLED=false kps1() { source "/usr/local/opt/kube-ps1/share/kube-ps1.sh" PS1='[\W $(kube_ps1)]\$ ' } k() { [[ "${IS_KUBE_PS1_ENABLED}" == false ]] && IS_KUBE_PS1_ENABLED=true && kps1 kubectl $@ }
GitHub
雑記
Kubernetesだけいじりたいけど現実は非なり...