Infrastructure as Kubernetes APIs (OPN312)

Evolving Kubernetes Platforms with Balanced Organizational Changes

Key Takeaways

  1. Unbalanced organizational changes often lead to problems, such as a proliferation of different platforms (e.g., cloud, on-premises, serverless, ML) and a complex, fragmented developer experience.
  2. Pipelines are not the ideal solution for managing infrastructure, as they are not composable, self-healing, or provide a single source of truth.
  3. AWS has created the AWS Controller for Kubernetes (AK) to provide a set of controllers for common AWS services, and the Cro project to provide a higher-level abstraction for managing Kubernetes resources.
  4. Cro allows you to define a "Resource Group" that can group and manage multiple Kubernetes resources, handle dependencies, and provide a simplified developer experience.
  5. AK and Cro can be used together to build a platform that abstracts the complexity of infrastructure from developers, while still allowing platform engineers to manage the underlying resources.
  6. Cro is still in active development, so it's important to proceed with caution and engage with the community when using it in production.

Unbalanced Organizational Changes

  • Pulling all three levers (culture, technology, processes) to the highest can lead to problems, such as when migrating to the cloud or containers.
  • Organizations often end up with a proliferation of different platforms (cloud, on-premises, serverless, ML) and a complex, fragmented developer experience.

The Limitations of Pipelines

  • Pipelines are not composable, self-healing, or provide a single source of truth for the state of resources.
  • Deploying and managing infrastructure using pipelines can be a time-consuming and error-prone process, especially as the platform grows in complexity.

AK and Cro

  1. AK (AWS Controller for Kubernetes): AWS-provided controllers for common AWS services, allowing you to manage these resources using Kubernetes APIs.
  2. Cro: A Kubernetes-native abstraction layer that allows you to define "Resource Groups" to manage complex Kubernetes resources.

Cro in Action

  • Cro allows you to define a custom resource definition (CRD) for a "web app" that includes a deployment, service, and ingress.
  • Cro can then handle the creation and management of these resources, including handling dependencies and providing a simplified developer experience.
  • Cro can also be used in conjunction with AK to manage AWS resources, such as S3 buckets and IAM roles.
  • Cro provides a CLI tool for managing Resource Groups, including generating RBAC permissions and emulating Resource Group instances.

Deploying with AK and Cro

  • Cro and AK can be used together to build a platform that abstracts the complexity of infrastructure from developers, while still allowing platform engineers to manage the underlying resources.
  • This approach can be applied to both cluster-per-team and centralized cluster models, depending on the organization's structure.

Cautions and Next Steps

  • Cro is still in active development, with the Resource Group API currently in alpha. Proceed with caution when using it in production.
  • Engage with the Cro and AK communities to provide feedback and contribute to the projects.
  • Start by using AK to build a platform foundation, and then explore Cro as a way to simplify the developer experience.
  • Collaborate with developers to ensure the platform interface meets their needs.

Your Digital Journey deserves a great story.

Build one with us.

Cookies Icon

These cookies are used to collect information about how you interact with this website and allow us to remember you. We use this information to improve and customize your browsing experience, as well as for analytics.

If you decline, your information won’t be tracked when you visit this website. A single cookie will be used in your browser to remember your preference.

Talk to us