Simplifying Multi-Cloud Infrastructure Deployment with a Standardized, Declarative API

ProjectPlanton’s core API design philosophy centers on providing a standardized and simplified structure for defining infrastructure resources, repurposed for seamless multi-cloud deployment. Inspired by the Kubernetes Resource Model (KRM), the API abstracts the complexities of different cloud providers, allowing developers to define their desired infrastructure in a consistent and declarative manner.

Unified Resource Model (MURM)

  • Consistency Across Clouds: The API offers a Multi-Cloud Unified Resource Model (MURM) that standardizes how resources are defined, regardless of the underlying cloud provider.
  • Abstraction of Cloud-Specific Details: By abstracting provider-specific nuances, developers can focus on the desired state of their infrastructure without worrying about implementation details.

Declarative Configuration

  • Standard Structure: Resources are defined using a simplified, standard structure with familiar fields:

    • apiVersion
    • kind
    • metadata
    • spec
    • status
  • Desired State Focus: Developers declare what they want to achieve, and Project Planton handles how to achieve it.

Configuration as Data

  • Immutable Manifests: Treats configuration files as immutable data, which can be version-controlled, audited, and shared.
  • Best Practices Alignment: Embraces industry best practices by promoting declarative infrastructure and immutable deployments.
  • YAML Manifests: Developers write manifests in YAML, using the standard structure to define infrastructure components like databases, clusters, and services.
  • Unified Definitions: The spec field contains the desired configuration, abstracted from provider-specific implementations.

Example Manifest Structure:

apiVersion: gcp.project.planton/v1
kind: GkeCluster
metadata:
  name: my-cluster
spec:
  projectId: my-gcp-project
  region: us-central1
  nodePools:
    - name: default-pool
      machineType: n1-standard-1
      nodeCount: 3

Protocol Buffer Definitions

  • Strong Typing and Validation: Using Protobuf ensures that resource definitions are strongly typed, enabling robust validation and error checking.
  • Language-Agnostic SDKs: Protobuf allows for the generation of SDKs in multiple programming languages, facilitating broader adoption and integration.
  • Versioning and Documentation: Protobuf schemas are published to the Buf Schema Registry (BSR), aiding in version control and automatic documentation generation.

Simplification & Familiarity

  • Kubernetes-Like Experience: By mirroring the Kubernetes API structure, developers familiar with Kubernetes can easily adopt Project Planton without a steep learning curve.
  • Reduced Complexity: The standardized approach minimizes the need to learn different APIs for each cloud provider.