ORC is a set of Kubernetes controllers that manage your OpenStack tenant infrastructure.
You declare your OpenStack resource as a YAML file, you kubectl apply
it and ORC provisions it on your OpenStack cloud.
ORC defines each OpenStack resource type as a CRD (see ./api/v1alpha1/). Each resource type has its own controller (see ./internal/controller/). Controllers are responsible for creating and deleting resources in OpenStack when a CRD is created or deleted in their Kubernetes namespace.
This project is currently in a prototype phase. Do NOT use in production.
You’ll need a Kubernetes cluster to run against. You can use KIND to get a local cluster for testing, or run against a remote cluster.
Note: Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster kubectl cluster-info
shows).
- Deploy the controller to the cluster with the image specified by
IMG
:
make deploy IMG=quay.io/orc/openstack-resource-controller
- Install Instances of Custom Resources:
kubectl apply -k config/samples/
UnDeploy the controller from the cluster:
make undeploy
The OpenStack API offers several options for attaching a port to a device, for
example a server instance or a logical router. However in ORC, you can only
define a port attachment on the receiving device. The OpenStackPort
resource
consequently doesn't expose the device_id
field.
See CONTRIBUTING.md.
This project aims to follow the Kubernetes Operator pattern.
It uses Controllers, which provide a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster.
Copyright 2023.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.