KRO (Kube Resource Orchestrator)

Overview

KRO extends native Kubernetes to create simplified custom building blocks from complex resource compositions.

Install KRO

# Add Helm repo
helm repo add kro https://aws.github.io/eks-charts
helm repo update
 
# Install KRO
helm install kro aws-eks/kro \
  --namespace kro \
  --create-namespace

Create ResourceDefinition

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: webservers.kro.aws.amazon.com
spec:
  group: kro.aws.amazon.com
  names:
    kind: WebServer
    plural: webservers
  scope: Namespaced
  versions:
  - name: v1alpha1
    served: true
    storage: true
    schema:
      openAPIV3Schema:
        type: object
        properties:
          spec:
            type: object
            properties:
              replicas:
                type: integer
                default: 2
              image:
                type: string
              port:
                type: integer
                default: 80

Create WebServer Resource

apiVersion: kro.aws.amazon.com/v1alpha1
kind: WebServer
metadata:
  name: my-webserver
spec:
  replicas: 3
  image: nginx:latest
  port: 8080

References