This page covers different methods for installing ORC in your Kubernetes cluster.
- Kubernetes v1.29 or later (required for CEL validations)
kubectlconfigured to access your cluster
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.yamlThis 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-systemExpected output:
NAME READY STATUS RESTARTS AGE
orc-controller-manager-5d4b8c9f7-xxxxx 1/1 Running 0 30s
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.yamlSee the Releases page for available versions.
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-mainThe 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-managerBy 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.
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=512MiTo 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.yamlThe 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](changelog.md) for breaking changes before upgrading major versions.
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.
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-managerOnce ORC is installed, follow the Quick Start guide to create your first resources.