はじめに
kro はクラスター内で2つの主要コンポーネントを使用して動作します:
- kro コントローラー(コアのオーケストレーション機能を提供)
- ResourceGraphDefinitions(RGDs)(関連リソースのグループを作成するためのテンプレートを定義)
kro コントローラーは ResourceGraphDefinition カスタムリソースを監視し、テンプレートで定義された基盤となる Kubernetes リソースの作成と管理をオーケストレーションします。
kro は、プラットフォームチームが複数の関連リソースをカプセル化する ResourceGraphDefinitions を定義できるようにすることで、複雑なリソース管理を簡素化します。開発者は RGD スキーマに よって定義されたシンプルなカスタム API を操作し、kro が基礎となるリソースの作成と管理の複雑さを処理します。このアーキテクチャにより、ResourceGraphDefinitions を定義するプラットフォームチームと、複雑なリソースグループを作成するためのシンプルなカスタム API を消費するアプリケーション開発者との間に明確な分離が提供されます。
このラボでは、kro はフルマネージドの Amazon EKS 機能(Capability) として提供され、環境の準備時に有効化されています。Amazon EKS は kro コントローラーを AWS マネージドインフラストラクチャで実行し、kro のカスタムリソース定義をクラスターにインストールするため、コントローラーを自分でインストール、パッチ適用、スケーリングする必要はありません。
kro のカスタムリソース定義が機能によってインストールされていることを確認します:
graphrevisions.internal.kro.run 2025-10-15T22:34:13Z
resourcegraphdefinitions.kro.run 2025-10-15T22:34:13Z
kro はマネージド機能として実行されるため、クラスター内に kro コントローラーのデプロイメントは存在しません:
No resources found in kro-system namespace.
ResourceGraphDefinition を作成すると、kro は以下を実行します:
- 新しいカスタム API の登録 - RGD で定義されたスキーマに基づいて、kro は開発者が使用できる新しい Kubernetes CRD を自動的に作成します
- リソースインスタンスの処理 - 開発者がカスタム API のインスタンスを作成すると、kro は定義されたテンプレートを使用してリクエストを処理します
- CEL 式の評価 - kro は Common Expression Language(CEL)を使用して条件を評価し、リソース間で値を受け渡し、作成順序を決定します
- インテリジェントな依存関係の処理 - kro はリソースがお互いをどのように参照するかを自動的に分析し、手動設定なしに最適なデプロイ順序を決定します
- 管理リソースの作成 - テンプレートと依存関係分析に基づいて、kro は指定された Kubernetes リソースを正しい順序で作成します
- 関係の維持 - kro はリソース間の依存関係を追跡し、適切なライフサイクル管理を確実にします