Skip to main content
Version: Next

Custom resources

All OpenEverest state is stored in Kubernetes custom resources. The UI and the API read and write these resources on your behalf; you can also manage them directly with kubectl, Helm or a GitOps tool such as Argo CD or Flux.

When to use custom resources directly​

The UI and the API are the recommended way for most users, because they add authentication, RBAC and validation of what each user may do. Use the custom resources directly when:

  • you manage instances declaratively, in Git, alongside your applications;
  • you automate OpenEverest from a Kubernetes-native tool;
  • you need a field that the provider's UI schema does not expose.

Kubernetes RBAC, not OpenEverest RBAC, controls who can change custom resources with kubectl.

API groups​

GroupResources
core.openeverest.ioProvider, Instance, InstancePreset, ClusterInstancePreset
backup.openeverest.ioBackupStorage, BackupClass, Backup, Restore, BackupImport
monitoring.openeverest.ioMonitoringClass, MonitoringDestination, MonitoringBinding
extensions.openeverest.ioPlugin, InstalledExtension

All resources are at version v1alpha1. During the Developer Preview, their schemas can change between releases.

Resources​

ResourceScopeCreated byDescription
ProviderClusterProvider chartA technology: versions, topologies, components and UI schema.
InstanceNamespaceYouA running deployment of a technology. See Instance.
InstancePresetNamespaceYouA starting configuration for instances in one namespace. See Instance presets.
ClusterInstancePresetClusterProvider chart or youA starting configuration for instances in any namespace.
BackupStorageNamespaceYouAn S3-compatible bucket for backups. See Backups and restores.
BackupClassClusterProvider chartHow backups are taken for one or more providers.
BackupNamespaceYou or a scheduleOne backup of an instance.
RestoreNamespaceYouRestores a backup or a point in time into an instance.
BackupImportNamespaceYouScans a backup storage for backups to import.
MonitoringClassClusterMonitoring extensionA monitoring technology, such as PMM or Prometheus. See Monitoring.
MonitoringDestinationNamespaceYouA monitoring server that instances send to.
MonitoringBindingNamespaceOpenEverestLinks an instance to a destination. Read-only.
PluginClusterPlugin chartA registered generic plugin.

Explore the schemas​

The custom resources reference lists every field of every resource. In a cluster, use kubectl explain to read the documentation of any field:

kubectl explain instance.spec
kubectl explain instance.spec.backup.storages
kubectl explain backupstorage.spec.s3
kubectl explain monitoringdestination.spec

The fields that depend on the technology — topology parameters, component parameters, backup parameters — are described by the Provider and BackupClass resources:

kubectl get provider provider-percona-postgresql -o yaml
kubectl get backupclass pg -o yaml

Check the status​

Every resource reports its state in status.conditions. For example, to see why an instance is not ready:

kubectl get instance orders-db -n demo -o jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.message}{"\n"}{end}'
BackupConfigured True Backup configuration applied to engine
PodsScheduled True
PodsReady False engine: 2 of 2 pods are not ready
Ready False database is initializing

See Diagnostics.