4.9.6. add

operator-sdk add コマンドは、コントローラーまたはリソースをプロジェクトに追加します。コマンドは、Operator プロジェクトのルートディレクトリーから実行される必要があります。

表4.27 add サブコマンド

サブコマンド説明

api

新規カスタムリソース (CR) の新規 API 定義を pkg/apis の下に追加し、カスタムリソース定義 (CRD) および CR ファイルを deploy/crds/ の下に生成します。API が pkg/apis/<group>/<version> にすでにある場合には、コマンドは上書きせず、エラーを返します。

controller

新規コントローラーを pkg/controller/<kind>/ の下に追加します。コントローラーは operator-sdk add api --kind=<kind> --api-version=<group/version> コマンドで pkg/apis/<group>/<version> の下にすでに定義されている必要のある CR タイプを使用することを予想します。該当する kind のコントローラーパッケージが pkg/controller/<kind> にすでに存在する場合、コマンドは上書きせず、エラーが返されます。

crd

CRD および CR ファイルを追加します。<project_name>/deploy パスがすでに存在している必要があります。--api-version および --kind フラグが、新規 Operator アプリケーションを生成するために必要です。

  • 生成される CRD ファイル名: <project_name>/deploy/crds/<group>_<version>_<kind>_crd.yaml
  • 生成される CR ファイル名: <project_name>/deploy/crds/<group>_<version>_<kind>_cr.yaml

表4.28 add api フラグ

フラグ説明

--api-version (文字列)

<group_name>/<version> 形式の CRD API バージョン (例: app.example.com/v1alpha1)。.

--image (文字列)

CRD Kind (例: AppService)。

以下は例になります。

$ operator-sdk add api \
    --api-version app.example.com/v1alpha1 \
    --kind AppService

出力例

Create pkg/apis/app/v1alpha1/appservice_types.go
Create pkg/apis/addtoscheme_app_v1alpha1.go
Create pkg/apis/app/v1alpha1/register.go
Create pkg/apis/app/v1alpha1/doc.go
Create deploy/crds/app_v1alpha1_appservice_cr.yaml
Create deploy/crds/app_v1alpha1_appservice_crd.yaml
Running code-generation for Custom Resource (CR) group versions: [app:v1alpha1]
Generating deepcopy funcs

$ tree pkg/apis

出力例

pkg/apis/
├── addtoscheme_app_appservice.go
├── apis.go
└── app
    └── v1alpha1
        ├── doc.go
        ├── register.go
        └── types.go

$ operator-sdk add controller \
    --api-version app.example.com/v1alpha1 \
    --kind AppService

出力例

Create pkg/controller/appservice/appservice_controller.go
Create pkg/controller/add_appservice.go

$ tree pkg/controller

出力例

pkg/controller/
├── add_appservice.go
├── appservice
│   └── appservice_controller.go
└── controller.go

$ operator-sdk add crd \
    --api-version app.example.com/v1alpha1 \
    --kind AppService

出力例

Generating Custom Resource Definition (CRD) files
Create deploy/crds/app_v1alpha1_appservice_crd.yaml
Create deploy/crds/app_v1alpha1_appservice_cr.yaml