0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kubebuilder initで個人的にいつも指定するやつ

Last updated at Posted at 2025-05-01

Kubebuilderは、Kubernetes Custom Resource Definition(CRD)を作成するためのフレームワークです。プロジェクトを始めるときのkubebuilder initコマンドにはいくつかのオプションがありますが、私はいつもこんなかんじで指定してます。

kubebuilder init \
    --domain <ドメイン名> \
    --repo github.com/<ユーザー名>/<レポジトリ名> \
    --project-name <プロジェクト名> \
    --owner "<オーナー名>"

# 例
kubebuilder init \
    --domain dns.suin.jp \
    --repo github.com/suin/kubernetes-dns \
    --project-name suin-dns \
    --owner "Suin"

各オプションの意味と私の使い方

--domain

自分の所有しているドメイン名を指定します。これはCRDのグループとして使われます。ドメインは会社やプロジェクトなどの組織で所有していることが普通ですが、ひとつの組織でひとつしかCRDグループを作らないことは長い目で見たらないと思うので、組織のトップレベルドメインじゃなく、サブドメインを指定するようにしています。

例: --domain dns.suin.jp

--repo

GitHubのリポジトリ名を指定します。これはGoのモジュール名となります。

例: --repo github.com/suin/kubernetes-dns

--project-name

プロジェクト名を指定します。Kustomize マニフェストの namePrefix / namespace に使用されます。指定しないとディレクトリ名が採用されますが、開発マシン上のディレクトリ名とプロジェクト名はいつも一致するわけじゃないので、明示的に指定するようにしています。「DNS」のような一般名詞の場合は、それでnamespaceが作られては良くないと思うので、組織名などを先頭につけてsuin-dnsのようにします。

例: --project-name suin-dns

--owner

プロジェクトのオーナー名を指定します。著作権情報に使用されます。指定しないと空欄になっちゃうので必ず指定するようにしています。

例: --owner "Suin"

まとめ

どれもやろうと思えば後で変更できますが、できるだけ後々の手間をかけないように最初から正しく設定しておくのがおすすめです。特に--domainはCRDのグループ名に影響するため、後から変更すると既存のCRDとの互換性に影響する可能性があります。

最後までお読みくださりありがとうございました。Kubebuilderを使ったKubernetes オペレータ開発で少しでもお役に立てば嬉しいです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?