1年前にKubernetesの「コンソールアシスタント」について既に書いており、以前にも他の便利なユーティリティの概要を説明しました 。 ただし、K8とそのコミュニティの開発に伴い、関連するエコシステムも変化します。 そのため、コンソールのファンにもう一度伝えるべきことがあります。 行こう!
キューブボックス
- GitHub (400個以上の星)
- 言語:JavaScript(Node.js)
- ライセンス:MIT
このプロジェクトがレビューを書く理由でした。 一方で、彼はソフトウェアカテゴリ「オタクはオタクのためにやる」の代表的な存在ですが、彼は目を喜ばせるだけでなく、実用的なメリットをもたらすまでに成長しました...
そのため、kubeboxの目的は、疑似グラフィックのスタイルで表示される便利なコンソールインターフェイスの一部としてKubernetesと完全に連携することです。
作業とは、名前空間を介したポッドのナビゲーション、重要なリソース(CPU、メモリ、ネットワーク)の消費のログやグラフの表示、コンテナ内のコマンドのリモート実行などの機能を意味します。 クラスターに接続するための設定は、環境変数
KUBECONFIG
または
$HOME/.kube
構成から取得できます。
開発者のさらなる計画には、構成の編集とCRUD操作の実行のサポート、新しいタイプのプリミティブ(サービス、デプロイメントなど)をサポートするためのインターフェイスの大幅な再設計、および追加情報(特に
kubectl describe pod
)の出力によるそれらの便利なナビゲーションが含まれます。
重要な機能は、 オンラインバージョンの可用性です(Kubernetes APIサーバーに接続するには、許可された
cors-allowed-origins
が必要です)。 さらに、kubeboxは個別の実行可能ファイルとして、 クラスター内クライアントとして(kubectlを介して)、KubernetesまたはOpenShiftクラスター( Xterm.jsを使用して端末をエミュレートする)にデプロイされたサービスから起動できます。
ほぼ2年間、フランスのRed Hatの従業員がkubeboxを開発しています(正確には、コミットの10%未満が同僚によって行われました)。 このプロジェクトは、先月だけ( Redditおよび他の多くのリソースで)十分に広く宣伝されたため、これが開発の新たな推進力となることが期待できます。
kube-shellおよびkube-prompt
キューブシェル
- GitHub (950個以上の星)
- 言語:Python
- ライセンス:Apache 2.0
(注意、これ〜2 Mb GIF!)
キューブプロンプト
- GitHub (700個以上の星)
- 言語:行く
- ライセンス:MIT
これらのプロジェクトについては1年前にすでに書いていますが、当時はKubernetesと連携するための本格的なコンソールシェルの中で無条件のお気に入りでした。 どちらも、改良された(使いやすい)kubectlへのインターフェースとして位置付けられています。 kube-shellでは、Pythonのprompt-toolkitライブラリを使用し、kube-promptの場合、Goで同様のライブラリ( go-prompt )を取得して開発しました。
それらをkubeboxと比較すると、インターフェースは擬似グラフィックに基づいているのではなく、コマンドを入力するための通常のコンソール(上のスクリーンショットを参照)に基づいていますが、非常に興味深い「特殊効果」:コマンドを使用したツールチップ、便利な自動補完、など
サポートされている幅広い機能(既に説明したヒントと自動補完のシステム、コマンドの履歴の検索、viのような編集モードを含む)にもかかわらず、kube-shellのコミットの履歴はプロジェクトの明らかな減速を示しています。 今年は7件のコミットのみが記録され、そのうち2件は
README
修正です。 たとえば、
KUBECONFIG
変数の待望の サポートなど、いくつかの便利なものがありました。 何らかの方法で、ユーザーに関連するクエリ( 問題を参照)に対する開発者からの反応が継続的に不足していることは、適切な見通しを刺激しません。
kube-promptの開発の状況は、少し良くなっています。 このプロジェクトはGitHubでより少ない星を獲得しましたが(1年前にPythonの競合他社よりもわずかに先行していましたが、現在では顕著に遅れています)、コミットはほぼ定期的に表示され、最新リリース( 1.0.5 )は10月18日です ただし、過去1年間にそれほど大きな変更はありません。Kubernetesバージョン1.11のサポートと、名前空間の自動補完の可能性に注意してください。 主なことは、著者自身がkube-promptの開発に十分な時間を割くことは不可能であることを認め、ヘルパーを探していることです。
これら2つのプロジェクトの結果をまとめると、サポートされている機能の面でkube-shellはリーダーシップを維持し、人気が上がったと言えますが、両方のシェルの見通しでは、すべてが明確ではありません。 ただし、現在の動作方法に満足している場合は、次のようにサービスに使用しない理由はありません。 同様のデザインの他の選択肢は表示されませんでした。
クリックして
- GitHub (750個以上の星)
- 言語:錆
- ライセンス:Apache 2.0
Clickはかなり若いプロジェクトです。3月末にベータ形式で発表されましたが、それ自体が非常に興味深いものです。 その概念は、 REPLループでkubectlを使用することにあります。これにより、一定の環境を維持することで作業が楽になります。 後者は、Clickが現在のコンテキスト、名前空間などを「記憶」し、この「パス」全体を再指定することなく、指定されたリソースに必要なコマンドを実行するようにユーザーに促します。
このプロジェクトのアイデアはDatabricks社で始まり、Kubernetesを積極的に使用しており、以前のデータを絶えず導入する必要があるkubectlを使用する同じシナリオを観察することにうんざりしています。 同時に、一般的なコンソールと同様に、kubectlユーティリティ自体もエンジニアの間で非常に人気があります。 そのため、このアドインが登場しましたが、kubectlを置き換えることを主張するのではなく、動作するのを助けるだけです。 Clickの使用例は次のとおりです。
pods //
2 //
describe //
events //
logs -c foo > /tmp/podfoo.log //
delete // ( )
興味のある方は、テキストコメントでのClickの動作を示す小さなスクリーンキャストもご覧ください。
ログを操作する
ボーナスとして、シェルではなく、Kubernetesでログを操作するためのコンソールツール。 1年前、 k8stailのみについて言及しましたが、過去の時間は問題が関連していることを示しており、それを解決するために注目に値する他のソリューションがあります。
船尾
- GitHub (〜1300スター)
- 言語:行く
- ライセンス:Apache 2.0
SternはKubernetesのハーステールカテゴリの議論の余地のないお気に入りです。 わかりやすくするために、ログを表示するときに、さまざまなカラーコードが使用されます。
もう1つの重要な機能は、特定のIDを知らなくても炉床を簡単にフィルタリングするための正規表現の使用です(たとえば、
web-\w+
という名前のすべてを選択します)。 同様に(つまり、regexpams)、要求されたポッドの特定のコンテナーをフィルターできます。 船尾の他の機能の中で:
- 出力ログのカスタムGoテンプレートのサポート(デフォルトで事前定義されたものがいくつかあります)。
- ラベルセレクターのサポート。
- 指定された時間値-および/または指定された行数へのログ出力の制限;
- bashとzshのオートコンプリートのサポート、および名前空間とコンテキストの値の動的置換のサポート。
クベテイル
- GitHub (〜950スター)
- 言語:シェル
- ライセンス:Apache 2.0
通常のBashで書かれた同様のソリューションで、昨年はもう少し積極的に開発されました。 船尾のように、囲炉裏の名前(またはカスタマイズ可能な行全体)の強調表示をサポートします。
また、フルネームと正規表現の両方でポッドとコンテナをフィルタリングし、セレクターを使用して、出力を時間と行数に制限し、Bash、zsh、および魚の自動補完をサポートすることもできます。 他の機能の中で:
- 無効モード
--follow
からリアルタイムでデータを更新するための--follow
(tail -f
); -
--dry-run
、他のアクションを実行せずに適切なポッドとコンテナーのリストを表示します。 - JSONでの解析出力のjqセレクターのサポート。
ケイル
- GitHub (〜500スター)
- 言語:行く
- ライセンス:MIT
過去1年間でコードベースのアクティビティが最も少なかった別の実装。 ただし、競合他社とは異なる興味深い機能的特徴、すなわち:
- Service、ReplicationController、ReplicaSet、Deployment、Node、Ingress (または、指定されたIngressが導くサービスに属するポッド)の名前によるポッドの要求の制限;
- セレクターで選択するだけでなく、セレクターを除外する機能。
- ロギングのレベルの定義(
--log-level
)。
ただし、デメリットもあります。kailはポッドを色で強調表示せず、フィルターの正規表現をサポートしません。
PS
ご関心をお寄せいただきありがとうございます。もちろん、コメントであなたの発見について聞いてうれしいです!
ブログもご覧ください。