openmcf

command module
v0.3.60 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 12, 2026 License: Apache-2.0 Imports: 2 Imported by: 0

README

OpenMCF

Deploy anywhere with one workflow. Write declarative YAML once, deploy to AWS, GCP, Azure, or Kubernetes with the same CLI and consistent experience.

openmcf-logo openmcf-text-logo

What is OpenMCF?

An open-source multi-cloud deployment framework that brings Kubernetes-style consistency to infrastructure deployments everywhere. No vendor lock-in, no artificial abstractions—just provider-specific configurations with a unified structure and workflow.

360+ deployment components across 17 cloud providers — AWS, GCP, Azure, Kubernetes, OCI, Alibaba Cloud, Hetzner Cloud, DigitalOcean, Cloudflare, Civo, Scaleway, OpenStack, Confluent, Snowflake, Auth0, MongoDB Atlas, and OpenFGA.

Documentation · Component Catalog · Getting Started


Why OpenMCF?

  • One structure, any cloud — Kubernetes Resource Model (apiVersion/kind/metadata/spec) for all deployments
  • Validate before deploy — Protocol Buffer validations catch errors in seconds, not minutes
  • Zero abstraction — Provider-specific configs preserve cloud capabilities; consistent experience across all
  • Choose your IaC — Built-in Pulumi and Terraform/OpenTofu modules with feature parity
  • Build on top — Auto-generated SDKs in Go, Python, TypeScript, Java from Protocol Buffer definitions

Quick Start

1. Install the CLI
brew install plantonhq/tap/openmcf
2. Create a YAML Manifest

Example: Deploy PostgreSQL to Kubernetes using the KubernetesPostgres deployment component.

apiVersion: kubernetes.openmcf.org/v1
kind: KubernetesPostgres
metadata:
  name: my-first-postgres
  labels:
    openmcf.org/provisioner: pulumi
    pulumi.openmcf.org/organization: organization
    pulumi.openmcf.org/project: getting-started
    pulumi.openmcf.org/stack.name: dev
spec:
  namespace:
    value: my-first-postgres
  createNamespace: true
  container:
    replicas: 1
    resources:
      requests:
        cpu: 50m
        memory: 100Mi
      limits:
        cpu: 500m
        memory: 512Mi
    diskSize: 1Gi

You can create similar manifests for AWS VPC, GKE Cluster, Kafka on Kubernetes, and many more.

3. Deploy
# Unified command (auto-detects provisioner from manifest labels)
openmcf apply -f postgres.yaml

# Or use IaC-specific commands directly
openmcf pulumi up -f postgres.yaml
openmcf tofu apply -f postgres.yaml

CLI Overview

openmcf
├── apply / destroy / plan      Unified commands (provisioner auto-detected)
├── pulumi                      Pulumi-specific commands (init, preview, up, destroy, refresh)
├── tofu                        OpenTofu commands (init, plan, apply, destroy, refresh)
├── terraform                   Terraform commands (init, plan, apply, destroy, refresh)
├── validate                    Validate manifest against protobuf schema
├── pull / checkout             Module management
├── config                      CLI configuration
└── version / upgrade           Version management

See the full CLI Reference for all commands, flags, and options.


Learn More


Contributing

Visit CONTRIBUTING.md for information on building OpenMCF from source or contributing improvements.

Also, refer to the Contributor Guide for detailed information about becoming a contributor to OpenMCF.

License

OpenMCF is released under the Apache 2.0 license. You are free to use, modify, and distribute this software in accordance with the license terms.

Acknowledgments

  • Brian Grant & Kubernetes API team for their foundational work on the Kubernetes Resource Model.
  • The Protobuf Team for laying the foundation for a powerful language neutral contract definition language.
  • The Buf Team for their Protobuf tooling—including BSR Docs, BSR SDKs, and ProtoValidate — which collectively democratized protobuf adoption and made this project possible.
  • The Pulumi team for providing a powerful infrastructure as code platform that enables multi-language support.
  • The spf13/cobra team for making building command line tools a bliss.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
apis
org/openmcf/provider/aws/awsalb/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for AWS ALB deployment.
Package main provides the Pulumi program entrypoint for AWS ALB deployment.
org/openmcf/provider/aws/awsclientvpn/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for AWS Client VPN deployment.
Package main provides the Pulumi program entrypoint for AWS Client VPN deployment.
org/openmcf/provider/aws/awscloudfront/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for AWS CloudFront deployment.
Package main provides the Pulumi program entrypoint for AWS CloudFront deployment.
org/openmcf/provider/aws/awsecsservice/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for AWS ECS Service deployment.
Package main provides the Pulumi program entrypoint for AWS ECS Service deployment.
org/openmcf/provider/aws/awseksnodegroup/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for AWS EKS Node Group deployment.
Package main provides the Pulumi program entrypoint for AWS EKS Node Group deployment.
org/openmcf/provider/aws/awsglobalaccelerator/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for AWS Global Accelerator deployment.
Package main provides the Pulumi program entrypoint for AWS Global Accelerator deployment.
org/openmcf/provider/aws/awsnetworkloadbalancer/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for AWS Network Load Balancer deployment.
Package main provides the Pulumi program entrypoint for AWS Network Load Balancer deployment.
org/openmcf/provider/aws/awstransitgateway/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for AWS Transit Gateway deployment.
Package main provides the Pulumi program entrypoint for AWS Transit Gateway deployment.
org/openmcf/provider/azure/azureakscluster/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for Azure AKS Cluster deployment.
Package main provides the Pulumi program entrypoint for Azure AKS Cluster deployment.
org/openmcf/provider/azure/azurecontainerregistry/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for Azure Container Registry deployment.
Package main provides the Pulumi program entrypoint for Azure Container Registry deployment.
org/openmcf/provider/cloudflare/cloudflarednszone/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for Cloudflare DNS Zone deployment.
Package main provides the Pulumi program entrypoint for Cloudflare DNS Zone deployment.
org/openmcf/provider/gcp/gcpartifactregistryrepo/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for GCP Artifact Registry deployment.
Package main provides the Pulumi program entrypoint for GCP Artifact Registry deployment.
org/openmcf/provider/gcp/gcpcloudcdn/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for GCP Cloud CDN deployment.
Package main provides the Pulumi program entrypoint for GCP Cloud CDN deployment.
org/openmcf/provider/kubernetes/aa_e2e
Package aa_e2e implements the E2E provider harness for Kubernetes, using kind (Kubernetes IN Docker) as the test cluster substrate.
Package aa_e2e implements the E2E provider harness for Kubernetes, using kind (Kubernetes IN Docker) as the test cluster substrate.
org/openmcf/provider/kubernetes/aa_e2e/verify
Package verify provides manifest-driven resource verification for Kubernetes E2E tests.
Package verify provides manifest-driven resource verification for Kubernetes E2E tests.
org/openmcf/provider/kubernetes/kubernetesargocd/v1/iac/pulumi command
Package main provides the Pulumi program entrypoint for Kubernetes ArgoCD deployment.
Package main provides the Pulumi program entrypoint for Kubernetes ArgoCD deployment.
ingress.go
File: variables.go
cmd
openmcf
Package openmcf provides the root command for the OpenMCF CLI.
Package openmcf provides the root command for the OpenMCF CLI.
e2e
framework/discovery
Package discovery scans the openmcf repository to find testable components and their associated IaC modules and hack manifests.
Package discovery scans the openmcf repository to find testable components and their associated IaC modules and hack manifests.
framework/provider
Package provider defines the harness interface for E2E test providers.
Package provider defines the harness interface for E2E test providers.
framework/reporter
Package reporter generates JSON and Markdown reports from E2E test results.
Package reporter generates JSON and Markdown reports from E2E test results.
framework/runner
Package runner implements the E2E test lifecycle engine.
Package runner implements the E2E test lifecycle engine.
internal
pkg
crkreflect
Code generated by pkg/crkreflect/codegen; DO NOT EDIT.
Code generated by pkg/crkreflect/codegen; DO NOT EDIT.
crkreflect/codegen command
pkg/crkreflect/cmd/genkindmap/main.go Generates pkg/crkreflect/kind_map_gen.go.
pkg/crkreflect/cmd/genkindmap/main.go Generates pkg/crkreflect/kind_map_gen.go.
e2e/profile
Package profile loads and validates E2E profile YAML files from the openmcf repository's well-known filesystem locations.
Package profile loads and validates E2E profile YAML files from the openmcf repository's well-known filesystem locations.
iac/tofu/generators
Package generators provides proto-aware Terraform artifact generation for OpenMCF cloud components.
Package generators provides proto-aware Terraform artifact generation for OpenMCF cloud components.
kubernetes/kubernetestypes/altinityoperator/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/certmanager/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/elasticsearch/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/externalsecrets/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/gatewayapis/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/istio/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/keycloak/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/nack/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/perconamongodb/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/perconamysql/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/perconapostgres/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/solroperator/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/strimzioperator/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.
kubernetes/kubernetestypes/zalandooperator/kubernetes
A Pulumi package for creating and managing Kubernetes resources.
A Pulumi package for creating and managing Kubernetes resources.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL