/openstack-resource-controller

A set of Kubernetes controllers to manage your OpenStack infrastructure

Primary LanguageGoApache License 2.0Apache-2.0

openstack-resource-controller

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.

Description

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.

State of the project

This project is currently in a prototype phase. Do NOT use in production.

Getting Started

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).

Running on the cluster

  1. Deploy the controller to the cluster with the image specified by IMG:
make deploy IMG=quay.io/orc/openstack-resource-controller
  1. Install Instances of Custom Resources:
kubectl apply -k config/samples/

Undeploy controller

UnDeploy the controller from the cluster:

make undeploy

How to attach a port

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.

Contributing

See CONTRIBUTING.md.

How it works

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.

License

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.