kube
の概要について解説します。 kube
というツール自体に着目し、Kubernetes やその運用方法については扱いません。kube
に関するルートドキュメントと位置づけます。 したがって説明は概論にとどめて細かい利用方法などは他のドキュメントで保管していくものとします。 現在各所に散らばる kube
に関するドキュメントをこの章に集約している段階です。kube
というツールを初めて使う人kube
をなんとなく使っているが全体像がよくわからない人kube
は wantedly/kube-go (internal) で管理されている Wantedly の Kubernetes クラスタのリソースを操作するためのユーティリティです。Kubernetes を操作するための標準 CLI ツールとして用意されている kubectl の機能に加え、いくつかの便利機能とサブコマンド、および権限に応じたアクセス制御の仕組みを持ちます。kubectl
の各種設定隠蔽kubectl
の拡張kube
は引数を parse して適切に変換して kubectl
に渡している」と考えて問題ありません。kubectl
の単純なラッパー以外の操作を行う場合があります。kubectl
以外の gcloud
, stern
, telepresence
, argo
などの Kubernetes 関連ツールに渡すこともあるPATH
を通した後に kube setup
を実行してプロンプトの指示に従ってください。kube
には大きく分けて 2 種類のコマンドが存在します。prod
, qa
などの環境名を第一引数に指定することになります。kube
の責務のうち主に下の 2 つを担当します。kubectl
の各種設定隠蔽kubectl
の拡張setup
, version
, self-update
などの管理用のコマンドに加えて、 CI で適切な形式の Docker image を build する ci-build
や Kubernetes manifest を生成する generate
などのコマンドがあります。kube
の責務のうち主に「一般的な開発用 utility」を担当します。kube
は kubectl
の wrapper として機能するため、kubectl
で行える任意のオペレーションを実行可能です。 コマンドはすべて kubectl
を kube [env]
に読み替えることでそのまま実行できます。 したがって kubectl get pods
は kube qa get pods
や kube sandbox get pods
などと読み替えることで実行ができます。kube
はカレントディレクトリから操作対象の Namespace を決定します。 したがって、原則操作対象のマイクロサービスのリポジトリがあるディレクトリに移動してからコマンドを実行するのが良いでしょう。kube <env> sh <-c, -d, branch_name> COMMAND
kube sandbox sh -c rails db:migrate
kube qa sh -d rails c
kube <env> deploy <-c, -d, branch_name>
kube <env> dotenv set FOO=bar
kube <env> get po
kube <env> tail
kube <env> fork