オリジナルのKubectlを作る2021/06/25
View Slide
Kubectlとは• Kuberentesの制御のCUIツール• DeploymentやServiceなどのリソース情報を制御できる• ~/.kube/configに書かれた情報(kubeconfig)をもとにKubernetesネットワークにアクセスする
Kubectl get pod –Akubectl –n namespace describepodkubectl get service –Akubectl –n namespace describeservice
PodとServiceを調べたりすることをワンラインでできないのか?
Client-goというgo言語のライブラリがある
Client-goとは• KubernetesのAPIをたたくGo言語のライブラリ• これを使用すれば、Kubernetesの制御をプログラミングできる
使用するには• Go言語 v1.16以上のインストール• Kubernetes環境• Kubeconfig(ローカルテスト用)• VS Code(開発環境)
Go言語の使い方• Go言語をv1.14からv1.16にアップデートで苦労したので• modファイルを作らないとbuildができない• go init mod 適当な名前• 使用するpackageはmodに書かれていないとエラー• go get パッケージ• 「./フォルダ」で呼び出していたローカルライブラリの書き方は、「モジュール名/フォルダ」で呼び出すことが可能
• 300行ぐらいで、以下のようなアプリができた。
まとめなど• Client-goを使用して、pod名とネームスペース、それに紐づいたserviceやポートを取得するアプリができた。• コンテナ化して、podの情報監視も可能
Client-goを使用してKubernetesクラスタを制御するアプリを作ろう