このプロジェクトについて

Kubebuilderは、Custom Resource Definitions(CRD)を使用してKubernetes APIを構築するためのフレームワークです。Ruby on RailsやSpringBootなどのWeb開発フレームワークと同様に、GoでKubernetes APIを迅速に構築および公開するための開発者の速度を向上させ、管理する複雑さを軽減します。これは、コアKubernetes APIを構築するために使用される標準的な技術の上に構築され、ボイラープレートと労力を削減するシンプルな抽象化を提供します。 Kubebuilderはコピー&ペーストの例として存在するのではなく、Kubernetes APIをゼロから構築および公開することを簡素化するための強力なライブラリとツールを提供します。ユーザーがオプションのヘルパーと機能を利用できるようにするプラグインアーキテクチャを提供します。 Kubebuilderは、controller-runtimeおよびcontroller-toolsライブラリの上に開発されています。また、拡張可能であり、他のプロジェクトでライブラリとして使用できます。Operator-SDKは、Kubebuilderをライブラリとして使用し、プラグイン機能を使用してAnsibleやHelmベースの言語Operatorなどの非Go Operatorを含めるプロジェクトの良い例です。 このフレームワークは、APIを構築するための開発者ワークフローを促進します:新しいプロジェクトディレクトリの作成、CRDとして1つ以上のリソースAPIの作成、コントローラでのレコンサイルループの実装、クラスタに対して実行することによるテスト、ブートストラップされた統合テストの更新、提供されたDockerfileからのコンテナのビルドと公開。 Kubebuilderの範囲は、CRD、Controllers、およびAdmission Webhooksを使用したAPIの構築をカバーします。その哲学は、明確でよく例示されたGoドキュメントを備えたクリーンなライブラリ抽象化を提供すること、コード生成よりもインターフェースとライブラリを好むこと、スタブのワンタイムinitよりもコード生成を好むこと、フォークおよび変更されたボイラープレートよりもワンタイムinitを好むことを強調しています。 Kubebuilderは、低レベルのクライアントライブラリの上に高レベルのライブラリを提供して開発者を破壊的変更から保護し、最小限から始めて機能の段階的な発見を提供し、存在する場合にユーザーがオーバーライドできる適切なデフォルトを提供します。また、// +コメントに基づいて駆動されるコードジェネレータを提供して一般的なボイラープレートを維持し、新しいパッケージを初期化するためのブートストラップコマンドを提供します。 Kubebuilderによって作成されたプロジェクトには、プロジェクト作成時に定義されたバージョンでツールをインストールするMakefileが含まれています。これには、kustomize、controller-gen、およびsetup-envtestが含まれます。必要な最小Goバージョンは、その依存関係によって要求される最高の最小Goバージョンによって決定されます。 Kubebuilderは公式にmacOSおよびLinuxプラットフォームをサポートしています。これはKubernetes SIGsコミュニティによって開発され、貢献には典型的なGitHubプルリクエストモデルに従います。