◦ (Go) 複数のCRDで同じ型を使い回す → 別々の型を定義する ◦ (生成) CRD Markerつけわすれ → Kubernetes API Linter(KAL)で予防 ◦ (生成) GitOps(SSA)フレンドリじゃないAPI → SSA Marker(+listType,+listMapKey)つける ◦ (Yaml) 汎用的すぎるフィールド名 → 具体的な名前 (❌ready, ⭕provisioned) ◦ (Yaml) Camelケース繋げすぎのフィールド名 → 階層化する (❌nodeDrainTimeout ⭕nodeDrain.timeout) 🙆 ベストプラクティス ◦ APIは上から読んでいって意味がわかるように設計する ◦ プロジェクト内の用語(Glossary)を定義して一貫性を持って使う ◦ Kubernetes API Linter(KAL)を使ってミスを予防 ◦ 非互換/非推奨リリース時のルールを守る ◦ ピアレビューを活用したり他のプロジェクトを参考にする c.f. Christian Schlotter and Fabrizio Pandini “Kubernetes CRD Design for the Long Haul: Tips, Tricks, and Lessons Learned,” KubeCon+CloudNativeCon Europe 2025