Skip to content

Conversation

@athavr
Copy link
Contributor

@athavr athavr commented Oct 16, 2025

What this PR does / why we need it:

Adds a new lab module demonstrating kro, an open-source Kubernetes operator for creating custom APIs that orchestrate groups of related resources.

Which issue(s) this PR fixes:

Fixes #1440

Quality checks

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@netlify
Copy link

netlify bot commented Oct 16, 2025

Deploy Preview for eks-workshop ready!

Name Link
🔨 Latest commit 1ae183e
🔍 Latest deploy log https://app.netlify.com/projects/eks-workshop/deploys/68f1396a16b0ad00087a8864
😎 Deploy Preview https://deploy-preview-1691--eks-workshop.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@athavr athavr marked this pull request as ready for review October 16, 2025 18:49
Copy link
Contributor

@niallthomson niallthomson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great overall, some small things I picked up.


kro works with any Kubernetes resources and CRDs, making it particularly powerful when you need to provision AWS services using ACK controllers while simultaneously creating the necessary Kubernetes resources like secrets, configmaps, and service accounts - all from a single ResourceGraphDefinition that provides a complete, ready-to-use solution.

kro differs from ACK and Crossplane in its approach to resource management:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Although this is useful I think we might want to remove it for now

- **Crossplane** offers comprehensive multi-cloud infrastructure orchestration with composition capabilities
- **kro** focuses on creating reusable templates that combine multiple resources into cohesive patterns

In this lab, we'll explore kro's capabilities by first deploying the complete **Carts** application with an in-memory database using a WebApplication ResourceGraphDefinition. We'll then enhance this by composing a WebApplicationDynamoDB ResourceGraphDefinition that builds on the base WebApplication template to add Amazon DynamoDB storage. No newline at end of file
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Carts application = Carts component

Theres a few places throughout the pages to make this same change.


kro simplifies complex resource management by allowing platform teams to define ResourceGraphDefinitions that encapsulate multiple related resources. Developers interact with simple custom APIs defined by the RGD schema, while kro handles the complexity of creating and managing the underlying resources.

## ResourceGraphDefinition Workflow
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems a little out of place being before the install instructions. I'd say move it to the bottom of the page.


When you create a ResourceGraphDefinition, kro:

1. **Registers a new Custom API** - Based on the schema defined in the RGD, kro automatically creates a new Kubernetes API that developers can use
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would perhaps say "creates a new Kubernetes CRD"

resourcegraphdefinition.kro.run/web-application created
```

This registers the WebApplication API. Verify the Custom Resource Definition (CRD):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would expand this just a little bit to explicitly mention that kro created the CRD automatically based on the RGD schema.

replicaset.apps/carts-7d58cfb7c9 1 1 1 30s
```

Perfect! kro has successfully orchestrated the deployment of all Kubernetes resources required by the carts application as a single unit.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Probably remove "Perfect!"


Perfect! kro has successfully orchestrated the deployment of all Kubernetes resources required by the carts application as a single unit.

:::info
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this needs to be an info block, just plain text.

3. Creates IAM roles and policies for DynamoDB access
4. Configures EKS Pod Identity for secure AWS access

To learn more about EKS Pod Identity, refer to [official documentation](https://docs.aws.amazon.com/eks/latest/userguide/pod-identities.html).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"refer to the official documentation"


This ResourceGraphDefinition:
1. Creates a custom `WebApplicationDynamoDB` API that composes the WebApplication RGD
2. Adds DynamoDB table provisioning with ACK
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Provisions a DynamoDB table with ACK"

1. Creates a custom `WebApplicationDynamoDB` API that composes the WebApplication RGD
2. Adds DynamoDB table provisioning with ACK
3. Creates IAM roles and policies for DynamoDB access
4. Configures EKS Pod Identity for secure AWS access
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"for secure access from application pods"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add kro lab

2 participants