Skip to content

openstack-resource-controller

Deploy your OpenStack resources in a declarative way, using Kubernetes.

What is ORC?

openstack-resource-controller, or ORC, is a Kubernetes API for declarative management of OpenStack resources. By fully controlling the order of OpenStack operations, it allows consumers to easily create, manage, and reproduce complex deployments. ORC aims to be easily consumed both directly by users, and by higher level controllers. ORC aims to cover all OpenStack APIs which can be expressed declaratively.

ORC is based on Gophercloud, the OpenStack Go SDK.

Get Started Core Concepts

How It Works

flowchart LR
    subgraph Kubernetes
        user[User / GitOps]
        app[Cloud Native App]
        orc[ORC Controller]
        crd[ORC Resources]
    end

    subgraph OpenStack
        nova[Nova]
        neutron[Neutron]
        glance[Glance]
        cinder[Cinder]
        other[...]
    end

    user -->|kubectl apply| crd
    app -->|manages| crd
    crd -->|watches| orc
    orc -->|creates/updates/deletes| nova
    orc -->|creates/updates/deletes| neutron
    orc -->|creates/updates/deletes| glance
    orc -->|creates/updates/deletes| cinder
    orc -->|creates/updates/deletes| other
    orc -->|updates status| crd

You define OpenStack resources as Kubernetes custom resources. ORC watches these resources and reconciles them with OpenStack, handling dependencies, retries, and status updates automatically.

Maturity

ORC is deployed and used in production environments and is notably a dependency of Cluster API's OpenStack provider.

The Kubernetes API is currently v1alpha1. The core API patterns are stable and we do not anticipate major structural changes, but the API is still evolving as we add new controllers and features. We do not have a timeline for graduation to v1beta1.

ORC versioning follows semver: there will be no breaking changes within a major release.

How You Can Contribute

We welcome contributions of all kinds! Whether you're fixing bugs, adding new controllers, reviewing code, or improving documentation, your help is greatly appreciated. See the Contributing guide to get started.

Join us on Kubernetes Slack in #gophercloud. Visit slack.k8s.io for an invitation.