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.
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
While we currently cover a limited subset of OpenStack resources, we focus on making existing controllers as correct and predictable as possible.
ORC is deployed and used in production environments and is notably a dependency of Cluster API's OpenStack provider.
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 features, or improving documentation, your help is greatly appreciated. To get started:
- Fork the repository.
- Create a new branch for your changes.
- Setup a local development environment.
- Read the developers guide.
- Make your changes and test thoroughly.
- Submit a pull request with a clear description of your changes.
If you're unsure where to start, check out the open issues and feel free to ask questions or propose ideas!
Join us on kubernetes slack, on #gophercloud. Visit slack.k8s.io for an invitation.