Installation
This page covers different methods for installing ORC in your Kubernetes cluster.
Prerequisites
- Kubernetes v1.29 or later (required for CEL validations)
kubectlconfigured to access your cluster
Quick Install
The simplest way to install ORC is using the release manifest:
kubectl apply --server-side -f \
https://github.com/k-orc/openstack-resource-controller/releases/latest/download/install.yaml
This installs:
- Custom Resource Definitions (CRDs) for all ORC resources
- The
orc-systemnamespace - The ORC controller deployment
- Required RBAC roles and bindings
Verify the installation:
kubectl get pods -n orc-system
Expected output:
NAME READY STATUS RESTARTS AGE
orc-controller-manager-5d4b8c9f7-xxxxx 1/1 Running 0 30s
Install a Specific Version
To install a specific version:
export ORC_VERSION="v2.3.0"
kubectl apply --server-side -f \
https://github.com/k-orc/openstack-resource-controller/releases/download/${ORC_VERSION}/install.yaml
See the Releases page for available versions.
Install from Source
To install from the main branch (for development or testing):
git clone https://github.com/k-orc/openstack-resource-controller.git
cd openstack-resource-controller
make deploy IMG=quay.io/orc/openstack-resource-controller:branch-main
Configuration Options
Controller Flags
The controller supports several configuration flags:
| Flag | Description | Default |
|---|---|---|
--namespace | Namespace(s) to watch (repeatable) | All namespaces |
--scope-cache-max-size | Maximum size of the credentials cache | 10 |
--default-ca-certs | Path to CA certificates file | - |
--zap-log-level | Log verbosity (0-5) | 0 |
To customize the deployment, edit the controller manager deployment:
kubectl edit deployment -n orc-system orc-controller-manager
Watching Specific Namespaces
By default, ORC watches all namespaces. To restrict it to specific namespaces, add --namespace flags to the controller args:
kubectl patch deployment -n orc-system orc-controller-manager --type='json' -p='[
{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--namespace=namespace1"},
{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--namespace=namespace2"}
]'
The --namespace flag can be repeated to watch multiple namespaces.
Resource Limits
The default memory limit is 256Mi. For large deployments, you may need to increase this:
kubectl set resources -n orc-system deployment/orc-controller-manager \
--limits=memory=512Mi
Upgrading
To upgrade to a new version:
export NEW_VERSION=<target_version> # For instance v2.4.0
kubectl apply --server-side -f \
https://github.com/k-orc/openstack-resource-controller/releases/download/${NEW_VERSION}/install.yaml
The upgrade process:
- Updates CRDs with any new fields
- Rolls out the new controller version
- Existing resources continue to be managed
Note
Always check the Changelog for breaking changes before upgrading major versions.
Uninstalling
To remove ORC from your cluster:
# 1. Delete all ORC resources first
kubectl delete openstack --all
# 2. Wait for resources to be cleaned up
kubectl get openstack
# 3. Delete credentials secrets
kubectl delete secret openstack-clouds
# 4. Uninstall ORC
kubectl delete -f \
https://github.com/k-orc/openstack-resource-controller/releases/latest/download/install.yaml
# 4. Or, if you installed from source
make undeploy
Warning
Deleting ORC before deleting ORC resources will leave orphaned resources in OpenStack that must be cleaned up manually. Alternatively, ORC can be re-installed to clean up the resources.
Verifying the Installation
After installation, verify ORC is running:
# Check the controller pod
kubectl get pods -n orc-system
# Check CRDs are installed
kubectl get crd | grep openstack.k-orc.cloud
# Check controller logs
kubectl logs -n orc-system deployment/orc-controller-manager
Next Steps
Once ORC is installed, follow the Quick Start guide to create your first resources.