Overview

The Core API is the main API for Cluster management. The Core API include resources such as Services, Namespaces, Users, Groups, Policies, Devices, ClusterConfig among other resource types.

The Cluster is designed to be managed in a centralized and declarative way that is very similar to Kubernetes via the octeliumctl apply where you can apply all changes in your Core resources and (re)produce the state of your Cluster with a single command.

You can define one or more resources in a single yaml file and then apply all changes as follows:

octeliumctl apply </PATH/TO/RESOURCES.yaml>

However, as your Cluster resources grow, you might need to define your resources in multiple yaml files and even organize them inside further subdirectories. In a fairly complex system with at least tens or hundreds of resources, it's much better to organize your configuration into a multiple files and sub-directories. Here is an example:

1
octelium
2
├── policies
3
├── http.yaml
4
├── devops.yaml
5
├── services
6
├── dbs
7
├── aws.yaml
8
├── azure.yaml
9
├── apis.yaml
10
├── ssh.yaml
11
├── users
12
├── contractors.yaml
13
├── employees
14
├── dev.yaml
15
├── ops.yaml

In such case, you similarly use the octeliumctl apply command as follows:

octeliumctl apply </PATH/TO/RESOURCES_ROOT_DIR>

By default, the octelium apply command only applies changes to create or update already existent resources but it does not delete resources. If you want to completely synchronize the current described state as defined in your file/directory and prune all additional resources in the Cluster that no longer exist in the current configuration, you can add the --prune flag as follows:

octeliumctl apply --prune </PATH/TO/RESOURCES_ROOT_DIR>

By default changes in all Resource types except for Secret resources are applied. You can also choose to apply changes for a certain Resource types instead of applying all types in your path. For example you can apply changes for User and IdentityProvider resources only as follows:

octeliumctl apply --include User --include IdentityProvider </PATH/TO/RESOURCES_ROOT_DIR>

Now only changes in User and IdentityProvider resources are applied.

You can also exclude one or more types as follows:

octeliumctl apply --exclude Service </PATH/TO/RESOURCES_ROOT_DIR>

You can also include Secret resources via the --include-secret flag as follows:

octeliumctl apply --include-secret </PATH/TO/RESOURCES_ROOT_DIR>
© 2025 octelium.comOctelium Labs, LLCAll rights reserved
Octelium and Octelium logo are trademarks of Octelium Labs, LLC.
WireGuard is a registered trademark of Jason A. Donenfeld