The Core API is the main API for Cluster management. The Core API includes resources such as Services, Namespaces, Users, Groups, Policies, Devices, ClusterConfig among other resource types.
Applying Changes
The Cluster is designed to be managed, using the octeliumctl
CLI, in a centralized and declarative way that is very similar to Kubernetes via the octeliumctl apply
command, through which you can apply all changes of your 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>
As your Cluster's resources grow, you might want to define your resources in multiple yaml
files and even organize them into further subdirectories. In a fairly complex system with at least tens or hundreds of resources, it's much better to organize your configuration into multiple files and subdirectories. Here is an example:
1octelium2├── policies3├── http.yaml4├── devops.yaml5├── services6├── dbs7├── aws.yaml8├── azure.yaml9├── apis.yaml10├── ssh.yaml11├── users12├── contractors.yaml13├── employees14├── dev.yaml15├── ops.yaml
In such case, you similarly use the octeliumctl apply
command as follows:
octeliumctl apply </PATH/TO/RESOURCES_ROOT_DIR>
You can also apply changes to only a certain subdirectory or even a certain file. Here are some examples:
# Only apply changes in /policies directoryocteliumctl apply </PATH/TO/RESOURCES_ROOT_DIR>/policies# Only apply changes in /services/dbs directoryocteliumctl apply </PATH/TO/RESOURCES_ROOT_DIR>/services/dbs# Only apply changes in /users/employees/ops.yaml fileocteliumctl apply </PATH/TO/RESOURCES_ROOT_DIR>/users/employees/ops.yaml
By default, the octelium apply
command only applies changes to create or update exiting resources but does not delete nonexistent resources. If you want to completely synchronize the state described 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 to all Resource types, except for Secret resources which are meant to be mainly managed in an imperative way (read more here), are applied. You can also choose to apply changes for certain Resource types instead of applying changes to all types. 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 to 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>
Listing Resources
You can list the different Cluster resources via the octeliumctl get
command. For example, you can list the Cluster's Services as follows:
octeliumctl get service# Or simplyocteliumctl get svc# Or list by a certain Namespaceocteliumctl get svc --namespace default# Or simplyocteliumctl get svc -n production# Show a certain Serviceocteliumctl get svc nginx.production
You can also set the page and number of items per page for the list as follows:
octeliumctl get svc --items-per-page 10 --page 2
By default, the list is ordered by the creation date. You can, however, set order the list by name as follows:
octeliumctl get svc --order-by-name
You can also reverse the order of the list as follows:
octeliumctl get svc --order-reverse
By default, the output of a octeliumctl get
command is formatted as a table. You can force the output to be formatted as YAML as follows:
octeliumctl get svc -o yaml# ORocteliumctl get svc -o yml
You can also force the output to be formatted as JSON as follows:
octeliumctl get svc -o json# You can also use jqocteliumctl get svc -o json | jqocteliumctl get sess -o json | jq -r .items[0].metadata.uid