これは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日勘違いしていたのもあって、突貫工事になってしまった。そこらへんは少しづつメンテしていきたい。