DUICUO

Kubernetesを強化する22のオープンソースツール

Kubernetesは、コンテナ化されたアプリケーションを大規模にデプロイするための標準的な方法となっています。しかし、Kubernetesが大規模で複雑なコンテナのデプロイメントをうまく管理できるのであれば、Kubernetesそのものをうまく管理できるものは何でしょうか?Kubernetesは複雑で扱いにくく、管理が難しいという問題もあります。

[[264458]]

Kubernetesの開発過程では、いくつかの課題が社内で解決されることもあります。しかし、Kubernetesがよりユーザーフレンドリーな段階に進化するのを待つのではなく、Kubernetesを本番環境で使用する際に発生する多くの一般的な問題に対処するために、独自のソリューションを使用している人もいます。

以下では、コマンドライン操作の簡素化からアプリケーション展開構文の簡素化、AWS との統合、複数のクラスター用のウィンドウの提供など、さまざまな方法で Kubernetes を簡素化する 22 のオープンソース プロジェクトとサードパーティ ツールに焦点を当てます。

Bitnami Cabin: iOS と Android 向けの Kubernetes ダッシュボード

現代のウェブアプリケーションやサービスは、多くの場合何らかのモバイルインターフェースを備えています。Cabinは、Kubernetes管理者向けにiOSまたはAndroidスマートフォンからアクセスできるKubernetesダッシュボードを提供しています。このKubernetesダッシュボードで利用可能な多くの機能は、Cabinからもアクセス可能で、Helmチャート、デプロイメントのスケーリング、Podログの読み取り、Kubernetesでホストされたウェブアプリケーションへのアクセスなどが含まれます。

Goldpinger: Kubernetes クラスターのビジュアルガイド

人間は視覚的な生き物です。グラフィックや図表は、全体像を理解しやすくしてくれます。Kubernetesクラスターの規模と複雑さを考えると、視覚化は非常に役立ちます。

Goldpingerは、ブルームバーグの技術チームが開発したオープンソースツールです。Kubernetesクラスター内で実行すると、ノード間の関係を示すインタラクティブマップが表示されます。正常なノードは緑色で、問題のあるノードは赤色で表示されます。ノードをクリックするだけで詳細情報を取得できます。また、Swaggerを使用したカスタムAPIもサポートしており、レポート、メトリクス、その他の統合機能を提供します。

Gravity: ポータブル Kubernetes クラスター

多くのアプリケーションは、Helmダイアグラムを使用してKubernetesへのデプロイプロセスをガイドおよび自動化します。しかし、Kubernetesクラスターをそのまま使用して別の場所にデプロイしたい場合はどうすればよいでしょうか?

Gravity は、Kubernetes クラスター、コンテナ レジストリ、および実行中のアプリケーションのスナップショット(「アプリケーション バンドル」と呼ばれる)を作成します。これらのバンドルは、Kubernetes が実行中の任意の場所からクラスターにコピーできる .tar ファイルです。

Gravity は、ターゲット インフラストラクチャがソースと同じ動作要件と、その上に構築された Kubernetes ランタイム要件をサポートしていることも保証します。Gravity Enterprise Edition には、ロールベースのアクセス制御や複数のクラスター間でセキュリティ構成を同期する機能などのセキュリティ機能も追加されています。

K9s: フルスクリーン Kubernetes CLI UI

管理者は「シングルウィンドウ」ツールを好みます。K9sはKubernetesクラスター用のフルスクリーンCLI UIです。実行中のポッド、ログ、デプロイメントのステータスを一目で確認し、シェルに素早くアクセスできます。K9sの機能を正しく使用するには、ユーザーレベルと名前空間レベルの両方でKubernetesの読み取り権限を付与する必要があることに注意してください。

Kaniko: Kubernetes クラスターでコンテナを構築する

ほとんどのコンテナイメージは、コンテナスタック外のシステム上で構築されます。しかし、実行中のコンテナ内やKubernetesクラスター内など、コンテナスタック内で構築したい場合もあります。

Kanikoはコンテナ環境内でコンテナを構築しますが、Dockerのようなコンテナ保護プロセスには依存しません。Kanikoは基本イメージを取得し、ファイルシステムを抽出した後、抽出したファイルシステム上のユーザー空間ですべてのビルドコマンドを実行し、各コマンドの完了後にファイルシステムのスナップショットを作成します。

Kaniko は現在 Windows コンテナを構築できないことに注意してください。

Kedge: Kubernetes デプロイメントの簡潔な定義

Kubernetesのマニフェストやアプリケーション定義が複雑で冗長すぎるため、コードの作成と保守が面倒だという声がよく聞かれます。そのため、これらの問題を解決するためにサードパーティ製のツールに頼らざるを得ない状況になっています。

Kedgeはよりシンプルで簡潔な構文を提供します。KedgeにKubernetes定義ファイルの簡略版を提供すると、Kedgeはそのシンプルな定義を完全なKubernetesバージョンに拡張できます。Koki Short(下記参照)とは異なり、Kedgeの宣言ファイルはモジュール構文を使用しません。代わりに、アプリケーション定義を共通のショートカットに簡略化します。

Kedge は 2018 年 4 月に最後に更新されたことに注意してください。

Koki Short: 管理しやすい Kubernetes マニフェストファイル

Kedgeと同様に、Koki Shortはアプリケーション定義やKubernetesマニフェストファイルを改善するツールです。Kedge定義と同様に、Koki Short定義はKubernetesポッドを記述するために短縮構文を使用し、完全な構文に変換し、また元に戻すことができます。Kedge定義とは異なり、Koki Short定義はモジュール化されているため、1つのShort宣言の詳細を他の宣言で再利用でき、共通要素を持つ複数のポッドを簡潔に定義できます。

Kops: Kubernetes クラスターのコマンドライン操作

Kubernetesチームが開発したKopsツールは、コマンドラインからKubernetesクラスタを管理するのに役立ちます。KopsはAWSとGCEで実行されるクラスタをサポートしており、将来的にはVMware vSphereやその他の環境もサポートする予定です。Kopsは、セットアップとアンインストールのプロセスを自動化するだけでなく、Terraformを使用したクラスタの再デプロイメントを可能にするTerraform構成の生成など、他の種類の自動化も実現できます。

Kubebox: Kubernetes のターミナルコンソール

Kubernetes用の高レベルターミナルコンソールであるKubeboxは、KubernetesとそのAPI用の美しいインターフェースを提供するだけでなく、メモリとCPUの使用率、ポッドリスト、実行ログ、設定エディターをインタラクティブに表示します。最も重要なのは、KubeboxがLinux、Windows、macOSオペレーティングシステム向けのスタンドアロンアプリケーションとして提供されていることです。

Kubecost: Kubernetes を実行するためのコスト指標

ほとんどの Kubernetes 管理ツールは、使いやすさ、監視、ポッドの動作に関する洞察に重点を置いていますが、Kubernetes の実行に関連するコストの監視についてはどうでしょうか?

Kubecost は、リアルタイムの Kubernetes メトリクスと、主要なクラウド プロバイダーで実行されているクラスターの実際のコスト情報を使用して、Kubernetes コンポーネント (コンテナー、ポッド、サービス、デプロイメントなど) ごとに分類されたメモリ、CPU、GPU、ストレージ コストを網羅した、各クラスター デプロイメントの月次コスト ダッシュボードを提供します。

Kubecostは、クラスター外の様々なリソース(S3ストレージなど)のコストも追跡できますが、現在はAWSに限定されています。コストデータはPrometheusと共有することもでき、このデータを使用してクラスターの動作をプログラム的に変更することも可能です。

KubeDB: Kubernetes で本番データベースを実行する

Kubernetesでは、データベースをスムーズに動作させることが常に困難でした。Kubernetesのネイティブ機能セットでは、多くの特定のデータベース問題を直接解決することはできません。

KubeDBを使用すると、管理者はデータベース管理用のKubernetes Operatorを作成できます。これには、バックアップの実行、クローン作成、監視、スナップショット、宣言的なデータベース作成などが含まれます。また、クラスターもサポートしていますが、対象となるデータベースは限られています。例えば、PostgreSQLはサポートされていますが、MySQLはまだサポートされていません。

Kube-monkey: Chaos Monkey の Kubernetes バージョン

システムのストレステストを行う確実な方法の一つは、そのコンテンツをランダムにクラックすることです。これはNetflixのChaos Monkeyの理論に基づいています。これは、本番環境で稼働中の仮想マシンやコンテナをランダムに終了させることで、開発者がより耐障害性の高いシステムを構築することを「促す」カオスエンジニアリングツールです。Kube-monkeyも同じ考え方に基づいてKubernetesクラスターのストレステストを行います。Kube-monkeyは、指定されたクラスターからポッドをランダムに削除することで動作し、特定の時間枠内で実行されるように微調整できます。

Kube-ps1: スマートなKubernetesコマンドプロンプト

いいえ、Kube-ps1はKubernetes用のSony PlayStationエミュレーター(見た目は良いですが)ではなく、Bashのシンプルな補完機能で、現在のKubernetesコンテキストと名前空間をプロンプトに表示します。Kube-shellにはこの機能をはじめ、多くの機能が含まれていますが、よりスマートなプロンプトが欲しいだけなら、Kube-ps1で十分でしょう。

Kube-prompt: インタラクティブなKubernetesクライアント

Kube-promptは、Kubernetes CLIに小さいながらも非常に便利な変更を加えるツールです。Kubernetesクライアントとの対話型コマンドセッションの数を入力できるようになります。kubectlと入力して各コマンドにプレフィックスを追加する代わりに、Kube-promptは各コマンドにコンテキスト情報を自動的に追加します。

Kube-shell: Kubernetes CLI 用のシェル

Kubernetes コマンドラインは強力ですが、他のコマンドラインアプリケーションと同様に、多数のオプションから選択するのは面倒な場合があります。Kube-shell は、標準の Kubernetes コマンドラインを統合シェルにパッケージ化しており、よく使用されるコマンドの自動補完と自動提案(Kubernetes サーバーからの提案(サービス名など)を含む)に加え、より強力なコマンド履歴機能、vi スタイルの編集モード、ユーザー、名前空間、クラスター、その他の特定のインストール詳細に関するコンテキスト情報も提供します。

Kubespy: Kubernetes リソースのリアルタイム監視

PulumiのKubespyは、Kubernetesリソースへの変更をリアルタイムで追跡できる診断ツールで、テキストベースのダッシュボードを提供します。例えば、起動時のポッドステータスの変化を確認できます。ポッド定義がEtcdに書き込まれ、ポッドがノード上で実行するようにスケジュールされ、そのノード上のKubeletによってポッドが作成され、ポッドが実行中としてマークされます。Kubespyは、スタンドアロンバイナリまたはKubectlプラグインとして実行できます。

AWS 向け Kubernetes Ingress コントローラー

Kubernetesは、Ingressサービスを通じてクラスターに外部ロードバランシングおよびネットワークサービスを提供します。AWSはロードバランシング機能を提供しますが、これらのサービスをKubernetesに自動的に接続しません。AWS向けKubernetes Ingress Controllerがこの問題を解決します。Ingress Controllerは、クラスター内の各IngressオブジェクトのAWSリソースを自動的に管理し、新しいIngressリソース用のロードバランサーを作成し、削除されたリソース用のロードバランサーを削除します。これにより、AWS CloudFormationを利用してクラスターの一貫した状態が確保されます。さらに、SSL証明書やEC2 Auto Scalingグループなど、クラスターで使用されるその他の要素も自動的に管理できます。

Kube-ops-view: 複数の Kubernetes クラスターのダッシュボード

Kubernetesには便利な汎用監視ダッシュボードが備わっていますが、KubernetesコミュニティはKubernetes管理者にデータを提供するための他の方法を模索しており、Kube-ops-viewはその一つです。Kube-ops-viewは複数のKubernetesクラスターをグラフィカルに俯瞰的に表示し、CPUとメモリの使用状況、ポッドのステータスを一目で確認できます。Kube-ops-viewは可視化のみを目的としており、コマンドの実行はできません。しかし、Kube-ops-viewが提供する可視化機能は優れており、オペレーションセンターの監視ツールとして最適です。

Skaffold: Kubernetes のイテレーション

Skaffold は、Kubernetes アプリケーションの継続的デプロイを可能にする Google 独自の Kubernetes ツールの 1 つです。Skaffold はソースコードの変更を自動的に検出し、ビルドとデプロイのプロセスをトリガーし、エラー発生時にはアラートを発します。Skaffold は完全にクライアント側で実行されます。既存の CI/CD パイプラインで使用できるほか、他の外部ビルドツール(主に Google 独自の Bazel)と統合することも可能です。

SternとKubetail: Kubernetesのログ追跡

Stern を使用すると、Kubernetes のポッドとコンテナから色分けされた出力を生成できます(tail コマンドを使用)。この高速な方法は、複数のリソースからのすべての出力を単一の読みやすいデータストリームにまとめ、色分けによって明確に区別できるようにします。

Kubetailは複数のポッドからのログを単一のストリームに集約し、異なるポッドやコンテナを色分けして表示します。ただし、KubetailはBashスクリプトなので、シェルのみで動作します。

Teresa: Kubernetes 上のシンプルな PaaS

Teresaは、Kubernetes上でシンプルなPaaSとして動作するアプリケーションデプロイメントシステムです。ユーザーはチームに属するアプリケーションをデプロイおよび管理できるため、特定のアプリケーションを信頼することへの懸念を軽減し、Kubernetesと直接やり取りする必要がなくなります。

Tilt: コンテナの更新を Kubernetes クラスターにプッシュする

Windmill Engineeringが開発したTiltは、Dockerfileへの変更をリアルタイムで監視し、Kubernetesクラスター内の対応するコンテナに段階的にデプロイします。Tiltを使用すると、開発者はDockerfileを更新するだけでクラスターをリアルタイムに更新できます。Tiltはクラスター内に作成され、ソースコードへの変更のみをプッシュします。