# kubernetes-sigs/kro

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/kubernetes-sigs-kro).**

2,928 stars · 359 forks · Go · Apache-2.0

## Links

- GitHub: https://github.com/kubernetes-sigs/kro
- Homepage: https://kro.run/
- awesome-repositories: https://awesome-repositories.com/repository/kubernetes-sigs-kro.md

## Topics

`k8s-sig-cloud-provider`

## Description

kro is a Kubernetes resource orchestrator and API abstraction layer that enables the definition of simplified custom API surfaces. It allows users to map high-level inputs to complex templates of underlying Kubernetes objects, effectively grouping interdependent resources into single, manageable units.

The project differentiates itself by automating the generation of custom resource definitions and dedicated controllers from resource graph specifications without requiring manual Go code. It employs a dependency manager that uses directed acyclic graphs to coordinate the creation, readiness, and deletion order of resources based on data flow.

The system includes a configuration engine for dynamic value computation and conditional resource deployment, along with a validation framework for static type checking and API stability protection. It further provides capabilities for state-based reconciliation, topological status propagation, and multi-tenant environment provisioning.

The framework also provides an extensive suite of data utilities for network validation, cryptographic hashing, and complex collection transformations.

## Tags

### DevOps & Infrastructure

- [Dependency Graph Orchestrators](https://awesome-repositories.com/f/devops-infrastructure/dependency-graph-orchestrators.md) — Uses a dependency graph orchestrator to determine the optimal creation and deletion order of resources based on data flow.
- [Interdependent Resource Management](https://awesome-repositories.com/f/devops-infrastructure/interdependent-resource-management.md) — Creates a set of interdependent resources as a single unit based on a resource graph. ([source](https://kro.run/docs/concepts/instances))
- [Kubernetes API Generators](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-api-generators.md) — Provides a framework for generating simplified API surfaces that include both resource schemas and controller logic.
- [API Definition Validation](https://awesome-repositories.com/f/devops-infrastructure/api-definition-validation.md) — Performs static analysis on resource definitions to catch type errors and circular dependencies. ([source](https://kro.run/docs/concepts/rgd/overview))
- [Infrastructure API Definitions](https://awesome-repositories.com/f/devops-infrastructure/api-infrastructure-orchestration/infrastructure-api-definitions.md) — Provides a framework for defining custom infrastructure APIs that bundle multiple interdependent Kubernetes resources into abstract models. ([source](https://kro.run/docs/concepts/rgd/overview))
- [Resource Grouping](https://awesome-repositories.com/f/devops-infrastructure/cloud-resource-orchestrators/cross-resource-orchestrators/resource-grouping.md) — Groups interdependent Kubernetes resources into reusable components to simplify the deployment of complex applications. ([source](https://kro.run/examples/))
- [Cluster State Reconciliation](https://awesome-repositories.com/f/devops-infrastructure/cluster-state-reconciliation.md) — Continuously monitors managed resources for drift and automatically updates them to match the desired configuration.
- [Conditional Resource Provisioning](https://awesome-repositories.com/f/devops-infrastructure/conditional-resource-provisioning.md) — Implements boolean expressions to conditionally include or exclude resources during the reconciliation process. ([source](https://kro.run/docs/concepts/rgd/resource-definitions/conditional-creation))
- [Custom API Surfaces](https://awesome-repositories.com/f/devops-infrastructure/custom-api-surfaces.md) — Implements custom API surfaces that map user inputs to resource templates for automated creation of complex objects. ([source](https://kro.run/docs/overview))
- [Custom Resource Definitions](https://awesome-repositories.com/f/devops-infrastructure/custom-resource-definitions.md) — Defines the identity, scope, and validation rules for custom resources using the Kubernetes API. ([source](https://kro.run/docs/concepts/rgd/schema))
- [CRD Generators](https://awesome-repositories.com/f/devops-infrastructure/custom-resource-definitions/crd-generators.md) — Automatically generates custom resource definitions and controllers from resource graph specifications without manual Go code.
- [Custom Resource Controllers](https://awesome-repositories.com/f/devops-infrastructure/custom-resource-definitions/custom-resource-controllers.md) — Automatically generates Kubernetes controllers and CRDs from specifications to eliminate manual Go code.
- [Dependency Orchestrators](https://awesome-repositories.com/f/devops-infrastructure/dependency-orchestrators.md) — Coordinates the creation and deletion of resources using a directed acyclic graph based on data flow.
- [Dynamic Configuration Expressions](https://awesome-repositories.com/f/devops-infrastructure/dynamic-configuration-expressions.md) — Provides a common language for evaluating dynamic expressions to reference data and define runtime conditions. ([source](https://kro.run/docs/concepts/rgd/cel-expressions))
- [Configuration Engines](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-configurations/configuration-engines.md) — Provides an expression-based engine for dynamic value computation and conditional resource deployment.
- [List-Based Resource Expansion](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-resource-generators/openshift-resource-generators/list-based-resource-expansion.md) — Creates a set of resources based on an array of values and syncs as the list changes. ([source](https://kro.run/docs/concepts/rgd/resource-definitions/collections))
- [Resource Data Mapping](https://awesome-repositories.com/f/devops-infrastructure/resource-data-mapping.md) — Wires values between resources using expressions to pass outputs from one component as inputs to another. ([source](https://kro.run/docs/concepts/rgd/overview))
- [Composite Resource Interfaces](https://awesome-repositories.com/f/devops-infrastructure/resource-definitions/composite-resource-interfaces.md) — Aggregates multiple interdependent Kubernetes resources into a single manageable composite model. ([source](https://kro.run/docs/building-abstractions/rgd-chaining))
- [Resource Orchestrators](https://awesome-repositories.com/f/devops-infrastructure/resource-orchestrators.md) — Simplifies the deployment of complex applications by grouping interdependent Kubernetes resources into single manageable units.
- [Topological Resource Lifecycle](https://awesome-repositories.com/f/devops-infrastructure/storage-provisioning/on-demand-resource-provisioning/automated-resource-provisioning/topological-resource-lifecycle.md) — Coordinates the creation and deletion of dependent resources based on the topological order of data flow. ([source](https://kro.run/docs/concepts/rgd/overview))
- [Automated Resource Naming](https://awesome-repositories.com/f/devops-infrastructure/automated-resource-naming.md) — Automatically derives resource names from namespaces and labels to ensure consistent naming conventions across the cluster. ([source](https://kro.run/docs/building-abstractions/single-resource-rgd))
- [Collection Readiness Verifications](https://awesome-repositories.com/f/devops-infrastructure/collection-readiness-verifications.md) — Blocks dependent resources until every item in a generated set satisfies status conditions. ([source](https://kro.run/docs/concepts/rgd/resource-definitions/collections))
- [Conditional Resource Deployment](https://awesome-repositories.com/f/devops-infrastructure/conditional-resource-deployment.md) — Includes or excludes specific resources based on the evaluation of logical expressions during the deployment process. ([source](https://kro.run/docs/overview))
- [Dynamic Resource Watching](https://awesome-repositories.com/f/devops-infrastructure/dynamic-resource-watching.md) — Registers new resource watches dynamically to track external dependencies without requiring a controller restart.
- [External Resource Referencing](https://awesome-repositories.com/f/devops-infrastructure/external-resource-referencing.md) — Reads data from existing resources without managing their lifecycle to use as input. ([source](https://kro.run/docs/concepts/rgd/resource-definitions/external-references))
- [Dynamic Resource Watching](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-cluster-management/resource-controllers/dynamic-resource-watching.md) — Registers new resource watches at runtime to track external dependencies without requiring a controller restart. ([source](https://kro.run/docs/advanced/controller-tuning))
- [Cartesian Product Generation](https://awesome-repositories.com/f/devops-infrastructure/kubernetes-resource-generators/cartesian-product-generation.md) — Generates resources for every possible combination of multiple input lists to cover all permutations. ([source](https://kro.run/docs/concepts/rgd/resource-definitions/collections))
- [Conditional Provisioning](https://awesome-repositories.com/f/devops-infrastructure/manifest-based-deployments/resource-manifest-provisioning/conditional-provisioning.md) — Includes supporting resources within a group only when specific capabilities are enabled via expressions. ([source](https://kro.run/docs/building-abstractions/multi-resource-rgd))
- [Manifest Field Manipulation](https://awesome-repositories.com/f/devops-infrastructure/manifest-field-manipulation.md) — Enables the removal of specific fields from rendered objects to distinguish between absent and null values. ([source](https://kro.run/docs/advanced/feature-gates))
- [Readiness Condition Validation](https://awesome-repositories.com/f/devops-infrastructure/readiness-condition-validation.md) — Ensures that expressions controlling resource readiness are type-safe and return boolean values. ([source](https://kro.run/docs/concepts/rgd/static-type-checking))
- [Resource Abstraction Layers](https://awesome-repositories.com/f/devops-infrastructure/resource-abstraction-layers.md) — Creates simplified interfaces over native Kubernetes resources to hide complexity and enforce stable contracts. ([source](https://kro.run/docs/building-abstractions/single-resource-rgd))
- [Tenant Provisioning](https://awesome-repositories.com/f/devops-infrastructure/virtual-machine-managers/automated-provisioning-tools/tenant-provisioning.md) — Deploys isolated environments using hierarchical resource definitions to manage multi-tenancy at scale. ([source](https://kro.run/examples/))

### Part of an Awesome List

- [Resource](https://awesome-repositories.com/f/awesome-lists/devtools/dependency-analysis/resource.md) — Builds a directed acyclic graph of resource dependencies to determine creation order and detect circular references. ([source](https://kro.run/docs/concepts/rgd/static-type-checking))

### Development Tools & Productivity

- [DAG-Based Orchestration](https://awesome-repositories.com/f/development-tools-productivity/parallel-execution/custom-parallel-task-execution/dag-based-orchestration.md) — Deploys resources as a directed acyclic graph to ensure all dependencies are met in the correct order. ([source](https://kro.run/docs/getting-started/deploy-a-resource-graph-definition))
- [Dependency Mapping](https://awesome-repositories.com/f/development-tools-productivity/project-configuration/dependency-mapping.md) — Creates automatic ordering dependencies by referencing resource identifiers within expressions for task orchestration. ([source](https://kro.run/docs/concepts/rgd/cel-expressions))
- [Resource Manifest Templating](https://awesome-repositories.com/f/development-tools-productivity/project-scaffolding-config-code-generation/project-scaffolding-configuration/templating-engines/dynamic-templates/resource-manifest-templating.md) — Creates manifests using expressions to dynamically inject configuration while maintaining YAML structure. ([source](https://kro.run/docs/concepts/rgd/resource-definitions/resource-basics))
- [Dynamic Configuration Resolution](https://awesome-repositories.com/f/development-tools-productivity/dynamic-configuration-resolution.md) — Substitutes values from configuration or status into templates and requeues until values are available. ([source](https://kro.run/docs/concepts/rgd/resource-definitions/resource-basics))
- [Resource Dependency Inference](https://awesome-repositories.com/f/development-tools-productivity/resource-dependency-inference.md) — Infers execution order by analyzing references to ensure dependencies are resolved before dependent resources deploy. ([source](https://kro.run/docs/building-abstractions/rgd-chaining))
- [Specification Snapshoting](https://awesome-repositories.com/f/development-tools-productivity/revision-histories/deployment-revisions/specification-snapshoting.md) — Creates numbered snapshots of specifications to provide a history of changes and their compilation results. ([source](https://kro.run/docs/advanced/graph-revisions))

### Programming Languages & Runtimes

- [Type Validation](https://awesome-repositories.com/f/programming-languages-runtimes/expression-evaluators/type-validation.md) — Checks configuration expressions against schemas to ensure field paths exist and output types are correct. ([source](https://kro.run/docs/concepts/rgd/cel-expressions))

### Software Engineering & Architecture

- [Infrastructure Composition](https://awesome-repositories.com/f/software-engineering-architecture/resource-based-architectures/infrastructure-composition.md) — Bundles multiple Kubernetes resources into reusable templates to ensure consistent delivery across environments.
- [Resource Lifecycle Management](https://awesome-repositories.com/f/software-engineering-architecture/resource-lifecycle-management.md) — Translates resource instances and parameters into underlying components to automate deployment and maintain operational state. ([source](https://cdn.jsdelivr.net/gh/kubernetes-sigs/kro@main/README.md))
- [Infrastructure State Synchronization](https://awesome-repositories.com/f/software-engineering-architecture/software-architecture/architectural-patterns/layering-presentation/application-layer-architectures/state-management-architectures/external-store-synchronization/infrastructure-state-synchronization.md) — Watches managed resources for drift and automatically restores them to the defined configuration. ([source](https://kro.run/docs/concepts/instances))
- [Static Type Checking](https://awesome-repositories.com/f/software-engineering-architecture/typescript-type-definitions/static-type-checking.md) — Verifies that expressions are type-safe by comparing inferred output types against expected schemas. ([source](https://kro.run/docs/concepts/rgd/static-type-checking))
- [Collection Transformations](https://awesome-repositories.com/f/software-engineering-architecture/architectural-design-patterns/design-patterns/functional-design-patterns/functional-data-pipelines/collection-transformations.md) — Uses comprehensions and macros to flatten, sort, or deduplicate lists and maps during configuration expansion. ([source](https://kro.run/docs/concepts/rgd/cel-libraries))
- [Conditional Field Omissions](https://awesome-repositories.com/f/software-engineering-architecture/conditional-branching/conditional-expression-returns/conditional-field-omissions.md) — Returns a sentinel value that excludes a specific field from the rendered resource output based on a condition. ([source](https://kro.run/docs/concepts/rgd/cel-libraries))
- [Immutable Version Snapshots](https://awesome-repositories.com/f/software-engineering-architecture/configuration-versioning/deployment-versioners/immutable-version-snapshots.md) — Maintains immutable snapshots of specifications to separate the validation phase from the compilation phase. ([source](https://kro.run/docs/concepts/rgd/overview))
- [Schema-Driven Validations](https://awesome-repositories.com/f/software-engineering-architecture/data-validation-schemas/schema-driven-validations.md) — Performs static analysis and type checking of expressions against OpenAPI schemas to ensure API stability.
- [Reverse-Order Teardown Protocols](https://awesome-repositories.com/f/software-engineering-architecture/dependency-graph-resolution/concurrent-dependency-resolution/plugin-execution-ordering/reverse-order-teardown-protocols.md) — Removes dependent resources in reverse topological order to ensure clean teardown. ([source](https://kro.run/docs/concepts/instances))
- [Template Integrity Validators](https://awesome-repositories.com/f/software-engineering-architecture/template-integrity-validators.md) — Validates resource templates against OpenAPI schemas to ensure field names and structures are valid. ([source](https://kro.run/docs/concepts/rgd/static-type-checking))
- [Status Type Inference](https://awesome-repositories.com/f/software-engineering-architecture/typescript-type-definitions/schema-driven-type-inference/status-type-inference.md) — Determines the OpenAPI schema for status fields by analyzing the output types of the associated expressions. ([source](https://kro.run/docs/concepts/rgd/static-type-checking))

### User Interface & Experience

- [Infrastructure Manifest Expansion](https://awesome-repositories.com/f/user-interface-experience/layout-utilities/presentation-engines/template-engines/control-flow-directives/expression-evaluators/infrastructure-manifest-expansion.md) — Evaluates dynamic expressions and logic to transform high-level schemas into multiple concrete resource manifests.

### Content Management & Publishing

- [API Stability Frameworks](https://awesome-repositories.com/f/content-management-publishing/content-management-systems/versioning-change-tracking/api-stability-frameworks.md) — Detects and blocks breaking schema changes to ensure existing resource instances remain valid. ([source](https://kro.run/docs/concepts/rgd/overview))

### Data & Databases

- [Complex Data Structure Transformation](https://awesome-repositories.com/f/data-databases/complex-data-structure-transformation.md) — Reshapes lists and maps using comprehension macros to filter entries or rebuild pairs. ([source](https://kro.run/docs/concepts/rgd/cel-expressions))
- [Map Data Structure Manipulation](https://awesome-repositories.com/f/data-databases/map-data-structure-manipulation.md) — Merges maps and performs index-based mutations on lists to manage complex resource configurations. ([source](https://kro.run/docs/concepts/rgd/cel-libraries))

### System Administration & Monitoring

- [Instance Health Monitors](https://awesome-repositories.com/f/system-administration-monitoring/health-monitoring/instance-health-monitors.md) — Tracks the operational state of a resource group using a hierarchical status system. ([source](https://kro.run/docs/concepts/instances))
- [Service Readiness Coordination](https://awesome-repositories.com/f/system-administration-monitoring/resource-lifecycle-management/readiness-tracking/service-readiness-coordination.md) — Defines boolean conditions that a resource must satisfy before dependent resources can be created. ([source](https://kro.run/docs/concepts/rgd/resource-definitions/readiness))
- [Resource Ownership Monitoring](https://awesome-repositories.com/f/system-administration-monitoring/resource-monitoring/resource-change-monitors/resource-ownership-monitoring.md) — Applies labels to managed resources to identify their parent and maintain an ownership graph. ([source](https://kro.run/docs/concepts/instances))
- [Status Propagation](https://awesome-repositories.com/f/system-administration-monitoring/status-monitors/status-propagation.md) — Exposes status fields from child resources to a parent to surface aggregated health details. ([source](https://kro.run/docs/building-abstractions/rgd-chaining))
- [Topological Status Propagation](https://awesome-repositories.com/f/system-administration-monitoring/topological-status-propagation.md) — Aggregates and surfaces operational health data from child resources up to a parent resource status.

### Web Development

- [Schema Validation](https://awesome-repositories.com/f/web-development/schema-validation.md) — Checks syntax and type-checks expressions against OpenAPI schemas during definition. ([source](https://kro.run/docs/concepts/rgd/resource-definitions/resource-basics))
