Skip to main content
The Vantage 3.0 self-hosted installer is driven by a single Kubernetes custom resource: a Vantage object in the vantage.abbyy.com/v1alpha1 API group. The fields below are the full contract between you and the operator. For a conceptual overview of how the operator consumes this resource, see Architecture. For an installation procedure, choose Azure or Self-Managed Kubernetes.

API group

GroupVersionResource
vantage.abbyy.comv1alpha1Vantage

Vantage

The top-level Vantage resource. The vantage-selfhosted chart contains a Vantage CR instance, created in the namespace where you installed that chart.
FieldTypeRequiredDescription
apiVersionstringYesvantage.abbyy.com/v1alpha1
kindstringYesVantage
metadataobjectYesRefer to the Kubernetes API documentation for the fields of the metadata field.
specobjectYesspec defines the desired state of Vantage. See Vantage.spec.
statusobjectNostatus defines the observed state of Vantage. See Vantage.status.

Vantage.spec

spec defines the desired state of Vantage
FieldTypeRequiredDescription
databaseProviderstringNoDatabase engine used by Vantage services. Accepted values are SqlServer and PostgreSQL; the value is case-sensitive. Default: SqlServer.
dnsRecordstringYesdnsRecord is the DNS record for the vantage installation Format: hostname.
mailFromstringYesmailFrom is the email address used as the sender for outgoing emails Format: email.
platformAdminEmailstringYesplatformAdminEmail is the email address of the platform administrator Format: email.
secretsobjectYessecrets selects and configures the secrets provider. Exactly one provider must be specified. See secrets.
updatePolicyobjectYesupdatePolicy controls how the operator handles Vantage upgrades. Use manual: {}; automatic updates are not yet supported. See updatePolicy.
vantageVersionstringYesvantageVersion is the version of Vantage to install.
workloadsobjectYesworkloads configures the ConfigMap containing data about charts and images. See workloads.
idReadingEnabledbooleanNoidReadingEnabled enables ID reading features Default: false.
kedaobjectNokeda configures KEDA-based autoscaling. See keda.
ociMigrationobjectNoociMigration configures copying artifacts from a source registry to a destintion before install. Omit entirely or set enabled=false to skip migration. When enabled, destination is required. See ociMigration.
reportingEnabledbooleanNoreportingEnabled enables SQL Server reporting features. It must remain false when databaseProvider is PostgreSQL. Default: false.
serviceAccountNamestringNoserviceAccountName is the name of the ServiceAccount to use for Vantage workloads. Omit to use the default ServiceAccount. Default: default. Image pulls for Vantage workloads are configured here: add your registry pull Secret to this ServiceAccount’s imagePullSecrets. See Azure image pull access or self-managed registry access.
smtpobjectNosmtp configures the SMTP mail server. If not specified, SendGrid is used as the mail provider. See smtp.
storageobjectNostorage configures advanced storage options. Defaults to Azure Blob (using the storage*ConnectionString aliases) when omitted. See storage.
techcoreobjectNotechcore contains configuration for the TechCore processing engine. See techcore.
secrets validation: has(self.kubernetes) != has(self.azure): exactly one provider must be specified.
updatePolicy validation: !has(self.auto): automatic updates are not yet supported.
updatePolicy validation: (has(self.auto) ? 1 : 0) + (has(self.manual) ? 1 : 0) == 1: exactly one update policy must be specified.
ociMigration validation: !has(self.enabled) || self.enabled == false || has(self.destination): destination is required when ociMigration is enabled.
Database and reporting validation: PostgreSQL is selected with the exact value PostgreSQL. Reporting is SQL Server-only; the resource is rejected when databaseProvider is PostgreSQL and reportingEnabled is true.
techcore validation: !self.keepPreviousVersion || has(self.previousVersion): previousVersion is required when keepPreviousVersion is true.

Vantage.spec.keda

keda configures KEDA-based autoscaling for supported Vantage workloads. Install KEDA and the required Prometheus service before enabling it.
FieldTypeRequiredDescription
enabledbooleanNoEnables KEDA ScaledObject resources for supported workloads. Default: false.
The current Vantage workload charts require KEDA 2.17.x. Some ScaledObject resources query http://prometheus-operated.observability.svc.cluster.local:9090; see Autoscaling with KEDA.

Vantage.spec.smtp

smtp configures the SMTP mail server. Optional alternative to SendGrid; used only when set.
FieldTypeRequiredDescription
hoststringYeshost is the SMTP server hostname
loginstringNologin for SMTP authentication
passwordstringNopassword for SMTP authentication
portintegerNoport is the SMTP server port Default: 587 · Format: int32.
useSSLbooleanNouseSSL enables TLS for SMTP connections Default: false.

Vantage.spec.workloads

workloads configures the ConfigMap containing data about charts and images
FieldTypeRequiredDescription
configMapstringYesconfigMap is name of the ConfigMap containing the workloads data
metadataTemplateKeystringYesmetadataTemplateKey is the key within the ConfigMap containing the metadata template about installing the charts
secretsKeystringYessecretsKey is the key within the ConfigMap containing the secrets metadata
workloadsKeystringYesworkloadsKey is the key within the ConfigMap containing the list of charts and images

Vantage.spec.secrets

secrets configures the secrets provider used to supply application secrets (database connection strings, API keys, certificates) to Vantage workloads. Exactly one provider must be specified. See Secrets and Key Vault for the conceptual model and the full alias inventory.
FieldTypeRequiredDescription
azureobjectNoazure configures secrets via Azure Key Vault and the Secrets Store CSI driver. See azure.
kubernetesobjectNokubernetes uses pre-existing Kubernetes Secret resources in the install namespace. See kubernetes.

Vantage.spec.secrets.azure

azure configures Azure Key Vault (via the Secrets Store CSI Driver) as the secrets source.
FieldTypeRequiredDescription
keyVaultNamestringYeskeyVaultName is the Azure Key Vault that holds the secrets.
tenantIdstringYestenantId is the Azure AD tenant that owns the Key Vault.
clientIdstringNoclientId is the Azure AD client ID of the user-assigned managed identity that has read access to the Key Vault. Required when identityMode is workloadIdentity (the default).
identityModeenumNoidentityMode selects how the CSI driver authenticates against Azure. Default: workloadIdentity · Enum: workloadIdentity, podIdentity, vmManagedIdentity.
objectsmap[string]objectNoobjects optionally overrides the mapping from a secret alias to a specific Key Vault object. When an alias is not present in this map, the alias itself is used as the Key Vault object name and the object is fetched as type secret. See objects.
userAssignedIdentityIDstringNouserAssignedIdentityID is the client ID of the user-assigned managed identity to use when identityMode is vmManagedIdentity.

Vantage.spec.secrets.azure.objects[alias]

AzureSecretObjectConfig describes a single Key Vault object that backs a secret alias.
FieldTypeRequiredDescription
objectNamestringYesobjectName is the name of the object in Azure Key Vault.
objectTypeenumNoobjectType is the Key Vault object kind. Default: secret · Enum: secret, key, cert.
objectVersionstringNoobjectVersion pins a specific Key Vault object version. Defaults to the latest version.

Vantage.spec.secrets.kubernetes

kubernetes uses pre-existing Kubernetes Secret resources in the install namespace.
FieldTypeRequiredDescription
objectsmap[string]objectNoobjects defines the Kubernetes secrets used, mapping secret aliases to Secret names. If not defined, the default secret names will be used. See objects.

Vantage.spec.secrets.kubernetes.objects[alias]

Each entry maps a secret alias to a Kubernetes Secret name.
FieldTypeRequiredDescription
secretNamestringYessecretName is the Kubernetes Secret name in the install namespace.

Vantage.spec.storage

storage configures advanced storage options. When omitted, Vantage uses the default Azure Blob backend and reads connection strings from the storage*ConnectionString secret aliases. See Secrets and Key Vault.
FieldTypeRequiredDescription
customobjectNocustom configures a custom storage backend. See custom.

Vantage.spec.storage.custom

custom configures a custom storage backend (PVC-backed via a Kubernetes StorageClass).
The referenced Kubernetes StorageClass must already be configured in the cluster before you install Vantage with a custom storage backend.
FieldTypeRequiredDescription
sizeint or stringYessize defines the size of the PVC. Default: 300Gi.
storageClassstringYesstorageClass defines the storage class to use for PVCs to mount custom storage backend volumes.

Vantage.spec.updatePolicy

updatePolicy controls how the operator handles Vantage upgrades.
FieldTypeRequiredDescription
autoobjectNoauto enables automatic version upgrades. Not yet implemented. See auto.
manualobjectNomanual disables automatic upgrades. Upgrades are performed by installing a new version of the operator Helm chart.

Vantage.spec.updatePolicy.auto

auto enables automatic version upgrades. Not yet implemented.
FieldTypeRequiredDescription
releaseURLstringYesreleaseURL is the URL to fetch the Vantage release bundle from. Format: uri.

Vantage.spec.ociMigration

ociMigration configures copying artifacts from a source registry to a destintion before install. Omit entirely or set enabled=false to skip migration. When enabled, destination is required.
FieldTypeRequiredDescription
concurrencyintegerYesconcurrency is the number of artifacts to copy in parallel. Default: 5 · Minimum: 1.
destinationobjectNodestination is where artifacts are copied to. See destination.
enabledbooleanNoenabled enables OCI migration. Default: true.
imagePullSecrets[]objectNoimagePullSecrets is an optional list of references to secrets in the same namespace to use for pulling the operator image which is used to run the OCI migration job in this namespace. See imagePullSecrets.
labelsmap[string]JSONNolabels is the set of of labels that should be applied to the OCI migration job and pod template. Non-string values will be converted to strings with [fmt.Sprint]
serviceAccountNamestringNoserviceAccountName is the name of the ServiceAccount to use to run the OCI migration job. Add your registry pull secret to this ServiceAccount’s imagePullSecrets to give the job image pull access.
sources[]objectNosources are credentials for accessing registries that artifacts are copied from (the ABBYY-distributed source registry). Max length 20. See sources.
destination validation: !self.host.contains(’/’): host must not contain a path; use the repository field for the registry path
destination validation: !self.host.contains(’://’): host must not include a scheme (e.g., https://)
Image pull access for the migration job: run the job under a ServiceAccount that carries your registry pull secret (serviceAccountName), or reference the secret on the source entry (sources[].credentialsRef.name). On Azure, granting AcrPull to the AKS managed identity is the simpler alternative to pull secrets. ArgoCD’s access to your registry is configured separately, as an ArgoCD repository connection. See Image pull access and Connect ArgoCD to your OCI registry.

Vantage.spec.ociMigration.destination

destination is where artifacts are copied to.
FieldTypeRequiredDescription
hoststringYeshost is the registry hostname and optional port (e.g., registry.example.com, registry.example.com:5000)
credentialsRefobjectNocredentialsRef references a Secret containing username and password keys or a kubernetes.io/dockerconfigjson-type Secret. Takes precedence over username/password if specified. See credentialsRef.
passwordstringNopassword for registry authentication (plaintext, use credentialsRef for production)
repositorystringNorepository is the registry path/namespace for artifacts (e.g., my-registry-namespace, vantage/images).
usernamestringNousername for registry authentication (plaintext, use credentialsRef for production)
workloadIdentityobjectNoworkloadIdentity defines settings for using the identity of the workload (Kubernetes service account) to access the registry. See workloadIdentity.

Vantage.spec.ociMigration.destination.credentialsRef

credentialsRef references a Secret containing username and password keys or a kubernetes.io/dockerconfigjson-type Secret. Takes precedence over username/password if specified.
FieldTypeRequiredDescription
namestringYesname is the name of the Secret

Vantage.spec.ociMigration.destination.workloadIdentity

workloadIdentity defines settings for using the identity of the workload (Kubernetes service account) to access the registry.
FieldTypeRequiredDescription
audiencestringNoaudience is the endpoint that should be used to exchange the service acccount token for an OAuth access token.
clientIdstringNoclientId is the client ID that should be used to exchange the service acccount token for an OAuth access token.
tokenEndpointstringNotokenEndpoint is the endpoint that should be used to exchange the service acccount token for an OAuth access token.

Vantage.spec.ociMigration.imagePullSecrets[index]

LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.
FieldTypeRequiredDescription
namestringNoName of the referent. This field is effectively required, but due to backwards compatibility is allowed to be empty. Instances of this type with an empty value here are almost certainly wrong. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

Vantage.spec.ociMigration.sources[index]

ContainerRegistryConfig defines container registry connection settings.
FieldTypeRequiredDescription
hoststringYeshost is the registry hostname and optional port (e.g., registry.example.com, registry.example.com:5000)
credentialsRefobjectNocredentialsRef references a Secret containing username and password keys or a kubernetes.io/dockerconfigjson-type Secret. Takes precedence over username/password if specified. Referencing a pull secret here is the alternative to running the migration job under a ServiceAccount that carries the secret. See credentialsRef.
passwordstringNopassword for registry authentication (plaintext, use credentialsRef for production)
repositorystringNorepository is the registry path/namespace for artifacts (e.g., my-registry-namespace, vantage/images).
usernamestringNousername for registry authentication (plaintext, use credentialsRef for production)
workloadIdentityobjectNoworkloadIdentity defines settings for using the identity of the workload (Kubernetes service account) to access the registry. See workloadIdentity.

Vantage.spec.ociMigration.sources[index].credentialsRef

credentialsRef references a Secret containing username and password keys or a kubernetes.io/dockerconfigjson-type Secret. Takes precedence over username/password if specified.
FieldTypeRequiredDescription
namestringYesname is the name of the Secret

Vantage.spec.ociMigration.sources[index].workloadIdentity

workloadIdentity defines settings for using the identity of the workload (Kubernetes service account) to access the registry.
FieldTypeRequiredDescription
audiencestringNoaudience is the endpoint that should be used to exchange the service acccount token for an OAuth access token.
clientIdstringNoclientId is the client ID that should be used to exchange the service acccount token for an OAuth access token.
tokenEndpointstringNotokenEndpoint is the endpoint that should be used to exchange the service acccount token for an OAuth access token.

Vantage.spec.techcore

techcore contains configuration for the TechCore processing engine
FieldTypeRequiredDescription
versionintegerYesversion is the TechCore version to deploy (e.g. 4). Minimum: 1.
keepPreviousVersionbooleanNokeepPreviousVersion retains the previous version during upgrades Default: false.
nnTrainingWorkersobjectNonnTrainingWorkers configures neural network training workers. See nnTrainingWorkers.
previousVersionintegerNopreviousVersion is the version being upgraded from. Required when keepPreviousVersion is true. Minimum: 1.

Vantage.spec.techcore.nnTrainingWorkers

nnTrainingWorkers configures neural network training workers
FieldTypeRequiredDescription
enabledbooleanNoenabled enables neural network training workers Default: false.
gpubooleanNogpu enables GPU acceleration for training workers Default: false.

Vantage.status

status defines the observed state of Vantage
FieldTypeRequiredDescription
availableVersions[]stringNoavailableVersions is the list of versions available from the release URL.
conditions[]objectNoconditions represent the current state of the Vantage resource. Each condition has a unique type and reflects the status of a specific aspect of the resource. Standard condition types include: - “Available”: the resource is fully functional - “Progressing”: the resource is being created or updated - “Degraded”: the resource failed to reach or maintain its desired state The status of each condition is one of True, False, or Unknown. See conditions.
degradationReasons[]objectNodegradationReasons represent the reasons for the installation’s degraded state. See degradationReasons.
installedVantageVersionstringNoinstalledVantageVersion is the version currently running.
observedGenerationintegerNoobservedGeneration is the generation of the spec that has been “processed” by the controller Format: int64.
Skill installation runs as a separate Kubernetes job that is not reflected in status.conditions[] and is not surfaced via ArgoCD. Vantage is usable while the job runs. See Lifecycle for the monitoring commands.

Vantage.status.conditions[index]

Condition contains details for one aspect of the current state of this API Resource.
FieldTypeRequiredDescription
lastTransitionTimestringYeslastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable. Format: date-time.
messagestringYesmessage is a human readable message indicating details about the transition. This may be an empty string.
reasonstringYesreason contains a programmatic identifier indicating the reason for the condition’s last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
statusenumYesstatus of the condition, one of True, False, Unknown. Enum: True, False, Unknown.
typestringYestype of condition in CamelCase or in foo.example.com/CamelCase.
observedGenerationintegerNoobservedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance. Format: int64 · Minimum: 0.

Vantage.status.degradationReasons[index]

DegradationReason represents a reason why a single component of the installation is degraded.
FieldTypeRequiredDescription
componentstringYescomponent is the part of the installation that is degraded.
messagestringYesmessage is human readable description for the component’s degradation.
reasonstringYesreason contains a programmatic identifier indicating the reason for the component’s degradation. The value should be a CamelCase string.