開発者ガイド
この開発者ガイドは、新しい開発者がこのプロジェクトに貢献するためにどのように環境をセットアップすればよいかを説明することを目的としています。
開発者の環境設定
オペレーターを開発するためのシステムをセットアップするには、以下の手順に従ってください:
-
環境にGoをインストールします。
go version
-
ダウンロード
operator-sdk
.現在のoperator-sdk
リリースはプロジェクトリポジトリにあります。オペレータSDKのバージョンを確認するには、以下を実行してください、
operator-sdk version
現在のGitLab Operatorリリースにコードを貢献するには、少なくともoperator SDK v1.0.0が必要です。
-
公式のインストール手順に従って
task
をインストールしてください。このプロジェクトではmake
](https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/blob/master/doc/adr/0016-replace-makefile-with-taskfile.md) の代わりに[task
を使用します。 -
gitlab-operator
リポジトリを GOPATH にクローンしてください。git clone git@gitlab.com:gitlab-org/cloud-native/gitlab-operator.git
プロジェクトの構成
GitLab OperatorはOperator SDK v1.0.0を使用してビルドされ、結果としてKubebuilder v2レイアウトフォーマットを使用しています。プロジェクトディレクトリとOperator SDKによって使用されるツールの一部に変更があったため、これは知っておく必要があります。
$ pwd
gitlab-operator
$ tree -dL 2 .
.
├── api
│ └── v1beta1
├── bundle
│ ├── manifests
│ ├── metadata
│ └── tests
├── config
│ ├── certmanager
│ ├── crd
│ ├── default
│ ├── deploy
│ ├── manager
│ ├── manifests
│ ├── prometheus
│ ├── rbac
│ ├── samples
│ ├── scorecard
| ├── test
│ └── webhook
├── controllers
│ ├── backup
│ ├── gitlab
│ ├── helpers
│ ├── runner
│ ├── settings
│ ├── testdata
│ └── utils
├── doc
├── hack
│ └── assets
├── helm
│ └── testdata
└── scripts
└── manifests
-
controllers
ディレクトリには、GitLab と GitLab Backup コントローラのコンテナ実装が含まれています。 -
api
ディレクトリには、オペレーターが所有する GitLab と GLBackup リソースの API リソース定義が含まれています。API 定義は API バージョンごとにグループ化されています。api/<api_version>
内部の*_types.go
ファイルには、OLM によって使用されるカスタムリソース定義とクラスターサービスバージョンファイルを生成するために使用される仕様定義とマーカーが含まれています。 -
config/samples
ディレクトリには、GitLab カスタムリソースのマニフェストの例が含まれています。 -
config/test
ディレクトリには、インテグレーションテストを実行するために使用されるパラメータ化された GitLab 定義が含まれています。以下に例を示します:
// +kubebuilder:rbac:groups=core,resources=configmaps,verbs=get;list;watch;create;update;patch;delete
config/rbac/custom
の内容は手動で作成されたもので、RBACマーカーの影響を受けません。configディレクトリの他のほとんどの内容は自動的に生成されますが、
kustomize
を使って変更することができます。 -
hack/assets
パスには、コンテナイメージのビルド時にオペレータイメージ内部にプッシュする必要のあるリソースが含まれます。リリースファイルはここに置かれます。
追加リソース
タスクファイルは、これらの前提条件のインストールを管理するための便利なコマンドを提供します。リポジトリのルートからtask
を実行すると、利用可能なコマンドが表示されます。
オペレーターのデプロイ
オペレータのデプロイについては、インストールドキュメントを参照してください。
デバッグ
controllers/gitlab/template_test.go
には、機能開発やテスト作成を支援する機能がいくつか追加されています。
dumpTemplate(template)
dumpTemplateToFile(template, filename)
dumpHelmValues(values)
dumpHelmValuesToFile(values, filename)
dumpTemplate()
関数は GitLab アダプターからテンプレートオブジェクトを受け取り、レンダリングされた Helm チャートの YAML を文字列として返します。Go テストフレームワークは標準出力に書き込まれたものをすべて吸収するので、dumpTemplateToFile()
は検査用に YAML をファイルに書き込みます。ファイル名だけを指定した場合、ファイルはテストが開始されたディレクトリではなくテストファイルが存在するサブディレクトリに書き出されることに注意してください。テストを開始したディレクトリにファイルを書き込みたい場合は、絶対パスを指定する必要があります。
同様に、dumpHelmValues()
Helm の値の YAML 表現を文字列で返します dumpHelmValues()
。dumpHelmValues()
これは、テストの開始時に意図した値が設定されているかどうかを確認するために使用します。この dumpHelmValues()
関数は検査のために YAML をファイルに書き出すために使われ、 filename 引数にはdumpTemplateToFile()
と同じ制限があります。