11.8. 付録

11.8.1. Operator プロジェクトのスキャフォールディングレイアウト

operator-sdk CLI は、それぞれの Operator プロジェクトに多数のパッケージを生成します。以下のセクションには、生成される各ファイルおよびディレクトリーの基本的な要約が含まれます。

11.8.1.1. Go ベースプロジェクト

operator-sdk new コマンドを使用して生成される Go ベースの Operator プロジェクト (デフォルトタイプ) には、以下のディレクトリーおよびファイルが含まれます。

ファイル/フォルダー目的

cmd/

Operator のメインプログラムである manager/main.go ファイルが含まれます。これは Operator の主なプログラムです。 これは、すべてのカスタムリソース定義を pkg/apis/ の下に定義し、すべてのコントローラーを pkg/controllers/ の下で起動する新規マネージャーをインスタンス化します。

pkg/apis/

カスタムリソース定義 (CRD) の API を定義するディレクトリーツリーが含まれます。ユーザーは pkg/apis/<group>/<version>/<kind>_types.go ファイルを編集し、各リソースタイプの API を定義し、それらのパッケージをコントローラーにインポートしてリソースタイプの有無について監視することが想定されます。

pkg/controller

この pkg には、コントローラーの実装が含まれます。ユーザーは pkg/controller/<kind>/<kind>_controller.go ファイルを編集し、指定された kind のリソースタイプを処理するためのコントローラーの調整 (reconciliation) ロジックを定義することが想定されます。

build/

Operator をビルドするために使用される Dockerfile およびビルドスクリプトが含まれます。

deploy/

CRD を登録し、RBAC をセットアップし、Deployment として Operator をデプロイするための各種 YAML マニフェストが含まれます。

Gopkg.toml
Gopkg.lock

この Operator の外部の依存関係を記述する Go Dep マニフェスト。

vendor/

このプロジェクトのインポートの条件を満たす外部の依存関係のローカルコピーが含まれる golang vendor フォルダー。Go Dep はベンダーを直接管理します。

11.8.1.2. Helm ベースのプロジェクト

operator-sdk new --type helm コマンドを使用して生成される Helm ベース Operator プロジェクトには、以下のディレクトリーおよびファイルが含まれます。

ファイル/フォルダー目的

deploy/

CRD を登録し、RBAC をセットアップし、Deployment として Operator をデプロイするための各種 YAML マニフェストが含まれます。

helm-charts/<kind>

helm create と同等のコマンドを使用して初期化された Helm チャートが含まれます。

build/

Operator をビルドするために使用される Dockerfile およびビルドスクリプトが含まれます。

watches.yaml

GroupVersionKind、および Helm チャートの場所が含まれます。