2つのContextを同時に操作するkubectlプラグインを作った

これはGMOペパボエンジニアAdventCalendar2022の18日目の記事です。
前日はugoくんの「Notionに拍手ボタンを設置するサイトを作った」でした!

はじめに

最近は業務でも趣味でもKubernetesに触れることが多くなった。特に業務ではでかいクラスタを触れるのでとても楽しい。

今回はそんなKubernetesをオペレーションする上で必ず使うことになるkubectlのプラグインを作った話をする。

作ったもの

今回は2つのContextで同じコマンドを実行するkubectlプラグイン、kuoを作成した。

そもそもkubectlプラグインって?

Kubernetesを操作するkubectlを拡張できる機能

基本的にはkubectlコマンドと同じパスにkubectl-xxxの形式で実行可能ななにかを配置するとkubectl xxxの形式で呼び出しが可能になる。実行可能な形式であれば何でも良いのでシェルスクリプトでも良い。

kuo

kuoはBlue/Greenのクラスタ構成などで片方のクラスタのみで問題が発生していたときの調査などで役立つ。

今までであれば2つのクラスタにおいて同じpodを調査する際、以下のようになると思う。

$ kubectl describe pod ingress-nginx
> Name:         ingress-nginx-controller-77746b8c45-b8pnw
  Namespace:    ingress-nginx
  Priority:     0

$ kubectl ctx node2

$ kubectl describe pod ingress-nginx

これがkuoを使うと一発で取って来れるようになる

# 初回のみ同時操作するcontextを設定する
$ kubectl kuo set cluster1 cluster2

$ kubectl kuo describe pod ingress-nginx-controller
> ======== cluster1 ========
  Name:         ingress-nginx-controller-77746b8c45-b8pnw
  Namespace:    ingress-nginx
  Priority:     0
  ~~~~~~続く~~~~~~~
  ======== cluster2 ========
  Name:         ingress-nginx-controller-1234567890-hogef
  Namespace:    ingress-nginx
  Priority:     0
  ~~~~~~続く~~~~~~~

kubectl kuo以降は、set以外そのままkubectlと同じ構文を使えるはずなのでkubectl kuoからkubectl get podやそのまま別のpluginを呼び出すことも可能である。

インストール方法はとりあえずのところGithubのリポジトリのREADME.mdに書いてある感じでやってもらえると。

終わりに

インストール用のmakeファイルとかテストとかもうちょいブラッシュアップできるところはあると思うが、いかんせんアドベントカレンダーの登録した日付を1日勘違いしていたのもあって、突貫工事になってしまった。そこらへんは少しづつメンテしていきたい。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA