docs

API Reference

Packages

deployments.plural.sh/v1alpha1

Package v1alpha1 contains API Schema definitions for the deployments v1alpha1 API group

Resource Types

AIProviderSettings

Appears in:

FieldDescriptionDefaultValidation
proxy HttpProxyConfigurationProxy configures an HTTP proxy for this provider's API calls.Optional: {}
model stringModel is the LLM model name to use.Optional: {}
toolModel stringToolModel to use for tool calling, which is less frequent and often requires more advanced reasoningOptional: {}
embeddingModel stringEmbeddingModel to use for generating embeddingsOptional: {}
proxyModels string arrayProxyModels are additional models to support within our integrated ai proxy.Optional: {}
baseUrl stringBaseUrl is a custom base url to use, for reimplementations
of the same API scheme (for instance Together.ai uses the OpenAI API spec)
Optional: {}
tokenSecretRef SecretKeySelectorTokenSecretRef is a reference to the local secret holding the token to access
the configured AI provider.
Required: {}

AISettings

AISettings holds the configuration for LLM provider clients.

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled defines whether to enable the AI integration or not.falseOptional: {}
analysisRates AnalysisRatesConfigure the pace at which AI insight analysis should run. Useful if you want to minimize impacts on inference costs.Optional: {}
tools ToolsTools holds the configuration for the tools that can be used with the AI integration.Optional: {}
provider AiProviderProvider defines which of the supported LLM providers should be used.OPENAIEnum: [OPENAI OPENAI_COMPATIBLE XAI ANTHROPIC OLLAMA AZURE BEDROCK VERTEX]
Optional: {}
toolProvider AiProviderToolProvider to use for tool calling, in case you want to use a different LLM more optimized to those tasksEnum: [OPENAI OPENAI_COMPATIBLE XAI ANTHROPIC OLLAMA AZURE BEDROCK VERTEX]
Optional: {}
streaming booleanStreaming defines whether to stream responses from LLM providers.trueOptional: {}
embeddingProvider AiProviderEmbeddingProvider to use for generating embeddings. Oftentimes foundational
model providers do not have embeddings models, and it's better to simply use OpenAI.
Enum: [OPENAI OPENAI_COMPATIBLE ANTHROPIC OLLAMA AZURE BEDROCK VERTEX]
Optional: {}
logAnalysis booleanLogAnalysis defines whether to enable log analysis in AI insights (turn off to save on log query costs)Optional: {}
openAI OpenAISettingsOpenAI holds the OpenAI provider configuration.Optional: {}
openAICompatible OpenAISettingsOpenAICompatible holds the OpenAI-compatible provider configuration.Optional: {}
xai OpenAISettingsXAI holds the xAI provider configuration. This is OpenAI compatible, so uses an equivalent typing.Optional: {}
anthropic AIProviderSettingsAnthropic holds the Anthropic provider configuration.Optional: {}
ollama OllamaSettingsOllama holds configuration for a self-hosted Ollama deployment,
more details available at https://github.com/ollama/ollama
Optional: {}
azure AzureOpenAISettingsAzure holds configuration for using AzureOpenAI to generate LLM insightsOptional: {}
bedrock BedrockSettingsBedrock holds configuration for using AWS Bedrock to generate LLM insightsOptional: {}
vertex VertexSettingsVertex holds configuration for using GCP VertexAI to generate LLM insightsOptional: {}
nexus NexusSettingsNexus holds configuration for using the Nexus embeddings proxyOptional: {}
vectorStore VectorStoreVectorStore holds configuration for using a vector store to store embeddings.Optional: {}
graph GraphStoreConfiguration for the cloud graph store, which uses similar datastores to the vector store.Optional: {}

AWSCloudConnection

AWSCloudConnection contains AWS-specific authentication configuration. Enables cloud resource discovery and analysis across AWS resources and infrastructure.

Appears in:

FieldDescriptionDefaultValidation
accessKeyId string
secretAccessKey ObjectKeyReference
region stringThe region this connection applies toOptional: {}
regions string arrayA list of regions this connection can queryOptional: {}

AddonCallout

AddonCallout a callout for a specific addon in the upgrade plan

Appears in:

FieldDescriptionDefaultValidation
addon stringAddon the addon this callout applies to
template stringTemplate the template to use for this callout

AgentRuntimePolicy

AgentRuntimePolicy centrally defines who can create agent runs on an AgentRuntime. Bindings must be managed from the management cluster: if a target cluster could set its own bindings, cluster operators could grant themselves clone/PR access against any repository reachable by the runtime's SCM credentials.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringAgentRuntimePolicy
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec AgentRuntimePolicySpec

AgentRuntimePolicyBindings

AgentRuntimePolicyBindings defines create permissions for an AgentRuntime.

Appears in:

FieldDescriptionDefaultValidation
create Binding arrayCreate bindings control who can create agent runs on this runtime.Optional: {}

AgentRuntimePolicySpec

AgentRuntimePolicySpec defines the desired access policy for an AgentRuntime.

Appears in:

FieldDescriptionDefaultValidation
runtime stringRuntime is the name of the AgentRuntime this policy applies to.
Defaults to metadata.name if not specified.
Optional: {}
bindings AgentRuntimePolicyBindingsBindings define who can create agent runs on the targeted runtime.Optional: {}
clusterRef ObjectReferenceClusterRef references the target Cluster where this service will be deployed. Leave it as an empty struct to use the cluster field instead.Optional: {}
cluster stringCluster is the handle of the target Cluster where this service will be deployed. Leave it empty to use the clusterRef field instead.Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

AgentRuntimeRef

AgentRuntimeRef identifies an agent runtime by cluster handle and runtime name. Resolution is done similarly to Observer agent actions: cluster handle is resolved to a cluster ID, then the runtime is looked up by name and cluster ID.

Appears in:

FieldDescriptionDefaultValidation
cluster stringCluster is the handle of the cluster that owns the agent runtime.Required: {}
runtime stringRuntime is the name of the agent runtime within that cluster.Required: {}

AiApprovalConfiguration

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled indicates if AI approval is enabled for this stack.Required: {}
git GitRefGit references the Git repository containing the rules file.Required: {}
file stringFile is the name of the rules file within the Git repository.Required: {}
ignoreCancel booleanIgnoreCancel indicates if the cancellation of a stack run should be ignored by AI.Optional: {}

AiCriteria

AiCriteria defines the configuration for AI pull request based service promotion. This can be a simpler path to construct the GitOps modifications needed to modify your services.

Appears in:

FieldDescriptionDefaultValidation
enabled booleanWhether AI based service promotion is enabled for this promotion.Optional: {}
prompt stringThe prompt to use to generate the pull request used in this promotion (liquid templating is supported).Required: {}
title stringThe title of the pull request used in this promotion (liquid templating is supported). If not provided, the AI will generate a title.Optional: {}
message stringThe message of the pull request used in this promotion (liquid templating is supported). If not provided, the AI will generate a message.Optional: {}

AnalysisRates

Appears in:

FieldDescriptionDefaultValidation
fast stringFast is the rate in seconds for fast analysis, eg when the prompt used has seen a material change. Example 1hOptional: {}
slow stringSlow is the rate in seconds for slow analysis, eg when the prompt used has not seen a material change. Example 2hOptional: {}

AnsibleConfiguration

Appears in:

FieldDescriptionDefaultValidation
playbook stringPlaybook is the ansible playbook to run.Optional: {}
inventory stringInventory is the ansible inventory file to use. We recommend checking this into git alongside your playbook files, and referencing it with a relative path.Optional: {}
additionalArgs string arrayAdditional args for the ansible playbook command.Optional: {}
privateKeyFile stringPrivateKeyFile is the path to the private key file for SSH authentication.Optional: {}
configFile stringConfigFile is the path to the ansible config file to use.Optional: {}
supportsCheck booleanSupportsCheck indicates whether the ansible playbook supports the check flag.Optional: {}
deletePlaybook stringDeletePlaybook is the playbook to run when deleting the stack.Optional: {}

AzureCloudConnection

AzureCloudConnection contains Microsoft Azure authentication configuration. Provides credentials for discovering and querying Azure resources.

Appears in:

FieldDescriptionDefaultValidation
subscriptionId string
tenantId string
clientId string
clientSecret ObjectKeyReference

AzureDevopsSettings

Appears in:

FieldDescriptionDefaultValidation
username stringThe username to use for azure devops, it should be associated with the PAT you are supplying as the tokenSecretRef
organization stringThe organization to use for azure devops
project stringThe project to use for azure devops

AzureOpenAISettings

Appears in:

FieldDescriptionDefaultValidation
proxy HttpProxyConfigurationProxy configures an HTTP proxy for this provider's API calls.Optional: {}
endpoint stringEndpoint is your Azure OpenAI endpoint,
should be formatted like: https://{endpoint}/openai/deployments/{deployment-id}"
Required: {}
apiVersion stringThe azure openai Data plane - inference api version to use,
defaults to 2024-10-01-preview or the latest available
Optional: {}
model stringModel - the OpenAi model you wish to use. If not specified, Plural will provide a default.Optional: {}
toolModel stringToolModel to use for tool calling, which is less frequent and often requires more advanced reasoning.Optional: {}
embeddingModel stringEmbeddingModel to use for generating embeddings.Optional: {}
deployments object (keys:string, values:string)Deployments is a mapping from model id to azure OpenAI deployment if those require additional configurationOptional: {}
proxyModels string arrayProxyModels are additional models to support within the integrated ai proxy.Optional: {}
tokenSecretRef SecretKeySelectorTokenSecretRef is a reference to the local secret holding the token to access
the configured AI provider.
Required: {}

BedrockModelSettings

Appears in:

FieldDescriptionDefaultValidation
modelId stringModelID is the foundation model served by the application inference profile.Required: {}
inferenceProfileArn stringInferenceProfileARN is the full ARN of the Bedrock application inference profile.Required: {}

BedrockSettings

Appears in:

FieldDescriptionDefaultValidation
proxy HttpProxyConfigurationProxy configures an HTTP proxy for this provider's API calls.Optional: {}
modelId stringModelID is the primary AWS Bedrock model or inference profile identifier.
Use a egional inference profile ID with three dot-separated segments (e.g. us.anthropic.claude-3-5-sonnet-20241022-v2:0,
global.anthropic.claude-haiku-4-5-20251001-v1:0).
Optional: {}
toolModelId stringToolModelId is the Bedrock model or inference profile for tool calling. Same ID formats as modelId.Optional: {}
embeddingModel stringEmbeddingModel is the Bedrock model or inference profile for embeddings. Same ID formats as modelId.Optional: {}
endpoint BedrockEndpointEndpoint selects the AWS Bedrock API surface. RUNTIME (the default) uses InvokeModel or
Converse on bedrock-runtime; MANTLE uses the Bedrock Mantle Anthropic/OpenAI-compatible APIs.
RUNTIMEEnum: [RUNTIME MANTLE]
Optional: {}
proxyModels string arrayProxyModels lists additional Bedrock model or inference profile IDs exposed through the Nexus
OpenAI-compatible proxy beyond modelId, toolModelId, and embeddingModel. Same ID formats as modelId.
Optional: {}
region stringRegion is the AWS region the model is hosted inRequired: {}
tokenSecretRef SecretKeySelectorTokenSecretRef is a reference to the local secret holding the token to access
the configured AI provider.
Optional: {}
awsAccessKeyId stringAWS Access Key ID to use for authenticationOptional: {}
awsSecretAccessKeyRef SecretKeySelectorAWS Secret Access Key to use for authenticationOptional: {}
deployments object (keys:string, values:string)Deployments is deprecated for most configurations: prefer regional-prefixed inference profile IDs in
modelId, toolModelId, embeddingModel, or proxyModels (Nexus infers Bifrost aliases automatically).
Still needed when clients use a logical model name that must resolve to a different Bedrock identifier,
for application inference profile resource IDs (use the profile resource suffix, not the full ARN),
or other explicit alias overrides. Maps client-facing model ID to inference profile ID. Example:
{"anthropic.claude-3-5-sonnet-20241022-v2:0": "us.anthropic.claude-3-5-sonnet-20241022-v2:0"}
Optional: {}
modelSettings BedrockModelSettings arrayModelSettings configures per-model Bedrock options, including application inference profiles.Optional: {}

Binding

Binding used to assign permissions to a resource for a user or a group in the system.

Appears in:

FieldDescriptionDefaultValidation
id stringID of a binding.
Deprecated.
Do not use.
Optional: {}
UserID stringOptional: {}
userEmail stringOptional: {}
groupID stringOptional: {}
groupName stringOptional: {}

BindingPolicy

BindingPolicy automatically attaches a Policy to all resources that match the configured criteria. It references two Policy CRDs: policyRef (the policy to enforce) and bindPolicyRef (the selector policy that determines which resources are targeted). The controller polls at the configured interval and applies the policy to any newly matching targets.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringBindingPolicy
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec BindingPolicySpecSpec reflects a Console API binding policy spec.Required: {}

BindingPolicyMatches

BindingPolicyMatches defines the criteria used to select targets for a BindingPolicy.

Appears in:

FieldDescriptionDefaultValidation
workbench WorkbenchBindingPolicyMatchesWorkbench defines match criteria for workbench-type binding policies.Optional: {}
stack StackBindingPolicyMatchesStack defines match criteria for stack-type binding policies, including the evaluation stage.Optional: {}

BindingPolicySpec

BindingPolicySpec defines the desired state of a BindingPolicy.

Appears in:

FieldDescriptionDefaultValidation
type BindingPolicyTypeType specifies the resource type this binding policy applies to.
Valid values: WORKBENCH, STACK.
Required: {}
interval stringInterval controls how often this binding policy is evaluated.
Defaults to 1h; cannot be shorter than 30m. Format: duration string e.g. "1h", "30m".
Optional: {}
policyRef ObjectReferencePolicyRef references the Policy CRD whose policy will be enforced on matching targets.Required: {}
bindPolicyRef ObjectReferenceBindPolicyRef references the Policy CRD whose policy determines which targets to bind.Required: {}
matches BindingPolicyMatchesMatches defines criteria that determine when this binding policy applies.Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

Bindings

Bindings used to assign read and write permissions to a resource for users and groups in the system.

Appears in:

FieldDescriptionDefaultValidation
read Binding arrayRead bindings.Optional: {}
write Binding arrayWrite bindings.Optional: {}

BindingsTemplate

Appears in:

FieldDescriptionDefaultValidation
read stringRead bindings.Optional: {}
write stringWrite bindings.Optional: {}

BitbucketDatacenterSettings

BitbucketDatacenterSettings holds configuration for Bitbucket Data Center / Server authentication.

Appears in:

FieldDescriptionDefaultValidation
userSlug stringThe user slug for Bitbucket Data Center / Server

BootstrapToken

BootstrapToken is a restricted authentication token for secure cluster registration. It enables edge devices and new clusters to self-register with the Plural Console without exposing full user credentials. The token is scope-limited to cluster registration operations only and automatically assigns registered clusters to a specified project.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringBootstrapToken
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec BootstrapTokenSpec

BootstrapTokenSpec

BootstrapTokenSpec defines the desired state of BootstrapToken

Appears in:

FieldDescriptionDefaultValidation
user stringUser is an optional email to attribute bootstrap token operations in audit logs.Optional: {}
projectRef ObjectReferenceProjectRef is the project that all clusters registered with this token will belong to.Required: {}
tokenSecretRef SecretReferenceTokenSecretRef points to a secret where the generated bootstrap token will be stored.
The secret is created automatically and must not already exist when the BootstrapToken is created.
Required: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

Cascade

Cascade defines the deletion behavior for resources owned by a GlobalService. It provides fine-grained control over whether resources should be deleted from the Plural Console, the target Kubernetes clusters, or both during cleanup operations.

Appears in:

FieldDescriptionDefaultValidation
detach booleanDetach specifies whether to delete owned resources in Plural Console but leave
the corresponding Kubernetes objects in-place in the target clusters.
This allows for graceful handoff of resource management without disrupting running workloads.
Optional: {}
delete booleanDelete specifies whether to delete owned resources both in Plural Console
and in the targeted Kubernetes clusters. When true, this performs a complete
cleanup of all associated resources across the entire service deployment.
Optional: {}

Catalog

Catalog is an organized collection of PR Automations. It enables teams to group related automation workflows by category (like "data", "security", "devops") and provides a browsable interface for self-service capabilities. Catalogs support hierarchical permissions through RBAC bindings and can be scoped to specific projects for multi-tenant environments.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringCatalog
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec CatalogSpec

CatalogBindings

CatalogBindings defines the RBAC permissions for a catalog, controlling access to PR automations. These bindings determine who can view, modify, and create PR automations within the catalog, providing fine-grained access control for self-service automation capabilities.

Appears in:

FieldDescriptionDefaultValidation
create Binding arrayCreate bindings control who can generate new PR automations using this catalog.
Users with create permissions can trigger self-service workflows but cannot modify the catalog itself.
Optional: {}
read Binding arrayRead bindings control who can view and browse this catalog and its PR automations.
Users with read permissions can see available automations but cannot execute or modify them.
Optional: {}
write Binding arrayWrite bindings control who can modify the catalog and its PR automations.
Users with write permissions can add, update, or remove PR automations within this catalog.
Optional: {}

CatalogSpec

CatalogSpec defines the desired state of Catalog

Appears in:

FieldDescriptionDefaultValidation
name stringName is the display name for this catalog if different from metadata.name.
Defaults to metadata.name if not specified.
Optional: {}
author stringAuthor is the name of the catalog creator used for attribution and contact purposes.
This field helps users identify who maintains and supports the catalog contents.
Required: {}
icon stringIcon is a URL to an icon image for visual identification in the catalog browser.
Should be a publicly accessible image URL that displays well at small sizes.
Optional: {}
darkIcon stringDarkIcon is a URL to a dark mode variant of the catalog icon.
Used when the UI is in dark mode to ensure proper contrast and visibility.
Optional: {}
description stringDescription provides a detailed explanation of the catalog's purpose and contents.
This helps users understand what types of automations they can find within.
Optional: {}
Type: string
category stringCategory is a short classification label for organizing catalogs in the browser.
Examples include "infrastructure", "security", "monitoring", or "development".
Optional: {}
projectRef ObjectReferenceProjectRef links this catalog to a specific project for permission inheritance.
When set, the catalog inherits the project's RBAC policies and is scoped to that project.
ProjectRef owning project of the catalog, permissions will propagate down
Optional: {}
tags object (keys:string, values:string)Tags provide key-value metadata for filtering and organizing catalogs.
Useful for adding custom labels like environment, team, or technology stack.
Optional: {}
bindings CatalogBindingsBindings define the read, write, and create permissions for this catalog.
Controls who can view, modify, and use the PR automations within this catalog.
Bindings contain read and write policies of this Catalog.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

CloudConnection

CloudConnection is a credential for querying a cloud provider. It will be used in agentic chats to perform generic sql-like queries against cloud configuration data.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringCloudConnection
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec CloudConnectionSpec

CloudConnectionConfiguration

CloudConnectionConfiguration contains provider-specific credential configurations. Only one provider configuration should be specified per CloudConnection instance.

Appears in:

FieldDescriptionDefaultValidation
aws AWSCloudConnection
gcp GCPCloudConnection
azure AzureCloudConnection
vsphere VsphereCloudConnection

CloudConnectionSpec

CloudConnectionSpec defines the desired state of CloudConnection

Appears in:

FieldDescriptionDefaultValidation
name stringName of this CloudConnection. If not provided CloudConnection's own name
from CloudConnection.ObjectMeta will be used.
Optional: {}
provider CloudProviderProvider is the name of the cloud service for the Provider.
One of (CloudProvider): [gcp, aws, azure, vsphere]
Enum: [gcp aws azure vsphere]
Required: {}
Type: string
configuration CloudConnectionConfigurationConfiguration contains the cloud connection configuration.Required: {}
readBindings Binding arrayReadBindings is a list of bindings that defines
who can use this CloudConnection.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

CloudProvider

Underlying type: string

CloudProvider represents the supported cloud service providers.

Appears in:

FieldDescription
awsAWS represents Amazon Web Services as a cloud provider
azureAzure represents Microsoft Azure as a cloud provider
gcpGCP represents Google Cloud Platform as a cloud provider
vsphereVsphere represents VMware vSphere as a cloud provider

Cluster

Cluster represents a Kubernetes cluster managed by the Plural Console for continuous deployment. Clusters serve as deployment targets for services and can be either management clusters (hosting the Plural Console and operators) or workload clusters (running application workloads). The Console tracks cluster health, versions, and coordinates service deployments across the fleet.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringCluster
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ClusterSpec

ClusterAWSCloudSettings

ClusterAWSCloudSettings contains AWS-specific configuration for cluster deployment.

Appears in:

FieldDescriptionDefaultValidation
region stringRegion in AWS to deploy this cluster to.
Determines data residency, latency characteristics, and available AWS services.
Required: {}
Type: string

ClusterAzureCloudSettings

ClusterAzureCloudSettings contains Azure-specific configuration for cluster deployment.

Appears in:

FieldDescriptionDefaultValidation
resourceGroup stringResourceGroup specifies the Azure resource group name for organizing cluster resources.Required: {}
Type: string
network stringNetwork specifies the Azure virtual network name for cluster networking.Required: {}
Type: string
subscriptionId stringSubscriptionId is the GUID of the Azure subscription that will contain this cluster.Required: {}
Type: string
location stringLocation specifies the Azure region where this cluster will be deployed.Required: {}
Type: string

ClusterCloudSettings

ClusterCloudSettings contains cloud provider-specific configuration for cluster infrastructure. Allows customization of networking, regions, and other cloud-specific cluster properties.

Appears in:

FieldDescriptionDefaultValidation
aws ClusterAWSCloudSettingsAWS contains Amazon Web Services specific cluster configuration.Optional: {}
azure ClusterAzureCloudSettingsAzure contains Microsoft Azure specific cluster configuration.Optional: {}
gcp ClusterGCPCloudSettingsGCP contains Google Cloud Platform specific cluster configuration.Optional: {}

ClusterGCPCloudSettings

ClusterGCPCloudSettings contains Google Cloud Platform specific configuration for cluster deployment.

Appears in:

FieldDescriptionDefaultValidation
project stringProject specifies the GCP project ID where this cluster will be deployed.Required: {}
Type: string
network stringNetwork specifies the GCP VPC network name for cluster networking.Required: {}
Type: string
region stringRegion specifies the GCP region where this cluster will be deployed.Required: {}
Type: string

ClusterNodePool

ClusterNodePool defines the configuration for a group of worker nodes in the cluster.

Appears in:

FieldDescriptionDefaultValidation
name stringName is the unique identifier for this node pool within the cluster.Required: {}
Type: string
instanceType stringInstanceType specifies the cloud provider instance type for nodes in this pool.Required: {}
Type: string
minSize integerMinSize is the minimum number of nodes that must be running in this pool.Minimum: 1
Required: {}
maxSize integerMaxSize is the maximum number of nodes that can be running in this pool.Minimum: 1
Required: {}
labels object (keys:string, values:string)Labels are key-value pairs applied to nodes for workload scheduling and organization.Optional: {}
taints Taint arrayTaints are restrictions applied to nodes to control which pods can be scheduled.Optional: {}
cloudSettings ClusterNodePoolCloudSettingsCloudSettings contains cloud provider-specific configuration for this node pool.Optional: {}

ClusterNodePoolAWSCloudSettings

ClusterNodePoolAWSCloudSettings contains AWS-specific configuration for node pool deployment.

Appears in:

FieldDescriptionDefaultValidation
launchTemplateId stringLaunchTemplateId specifies a custom EC2 launch template ID for node provisioning.Optional: {}
Type: string

ClusterNodePoolCloudSettings

ClusterNodePoolCloudSettings contains cloud provider-specific settings for node pools.

Appears in:

FieldDescriptionDefaultValidation
aws ClusterNodePoolAWSCloudSettingsAWS contains Amazon Web Services specific node pool configuration.Optional: {}

ClusterRestore

ClusterRestore manages the restoration of cluster data from backup snapshots. Orchestrates the recovery process for Kubernetes resources.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringClusterRestore
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ClusterRestoreSpec

ClusterRestoreSpec

ClusterRestoreSpec defines the desired state of ClusterRestore. It specifies the backup to restore from, including the backup ID, name, namespace, and cluster reference.

Appears in:

FieldDescriptionDefaultValidation
backupID stringBackupID is an ID of the backup to restore.
If BackupID is specified, then BackupName, BackupNamespace, and BackupClusterRef are not needed.
Optional: {}
Type: string
backupName stringBackupName is a name of the backup to restore.
BackupNamespace and BackupClusterRef have to be specified as well with it.
If BackupName, BackupNamespace, and BackupCluster are specified, then BackupID is not needed.
Optional: {}
Type: string
backupNamespace stringBackupNamespace is a namespace of the backup to restore.
BackupName and BackupClusterRef have to be specified as well with it.
If BackupName, BackupNamespace, and BackupCluster are specified, then BackupID is not needed.
Optional: {}
Type: string
backupClusterRef ObjectReferenceBackupClusterID is an ID of a cluster where the backup to restore is located.
BackupName and BackupNamespace have to be specified as well with it.
If BackupName, BackupNamespace, and BackupClusterRef are specified, then BackupID is not needed.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ClusterRestoreTrigger

ClusterRestoreTrigger triggers cluster restore operations. It provides a declarative way to initiate cluster restore processes from existing backups.

The ClusterRestoreTrigger works in conjunction with ClusterRestore resource to manage the complete backup and restore lifecycle for Kubernetes clusters in the Plural platform.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringClusterRestoreTrigger
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ClusterRestoreTriggerSpecSpec defines the desired state and configuration for the cluster restore trigger.

ClusterRestoreTriggerSpec

ClusterRestoreTriggerSpec defines the desired state and configuration for a ClusterRestoreTrigger. It specifies which backup should be restored and provides the necessary references to locate and access the backup data for the restore operation.

Appears in:

FieldDescriptionDefaultValidation
clusterRestoreRef ObjectReferenceClusterRestoreRef is a reference to the ClusterRestore resource that contains
the backup data and configuration for the restore operation.
This reference should point to a valid ClusterRestore resource that has been
successfully created and contains the backup data needed for restoration.
Optional: {}

ClusterSpec

ClusterSpec defines the desired state of a Cluster. Configures cluster properties including cloud provider settings, node pools, and access controls for continuous deployment workflows across the Plural fleet management architecture.

Appears in:

FieldDescriptionDefaultValidation
handle stringHandle is a short, unique human-readable name used to identify this cluster.
Does not necessarily map to the cloud resource name.
This has to be specified to adopt the existing cluster.
Optional: {}
Type: string
version stringVersion specifies the Kubernetes version to use for this cluster.
Can be skipped only for BYOK (Bring Your Own Kubernetes) clusters where a version is externally managed.
Deprecated.
Do not use.
Optional: {}
Type: string
providerRef ObjectReferenceProviderRef references the cloud provider to use for this cluster.
Can be skipped only for BYOK clusters where infrastructure is externally provisioned.
Deprecated.
Do not use.
Optional: {}
projectRef ObjectReferenceProjectRef references the project this cluster belongs to for multi-tenancy and access control.
If not provided, the cluster will be assigned to the default project.
Deprecated.
Do not use.
Optional: {}
cloud stringCloud specifies the cloud provider to use for this cluster.
Determines the infrastructure platform where the cluster will be provisioned and managed.
For BYOK clusters, this field is set to "byok" and no cloud provider is required.
Deprecated.
Do not use.
Enum: [aws azure gcp byok]
Optional: {}
Type: string
protect booleanProtect prevents accidental deletion of this cluster.
When enabled, the cluster cannot be deleted through the Console UI or API.
Deprecated.
Do not use.
Optional: {}
tags object (keys:string, values:string)Tags are key-value pairs used to categorize and filter clusters in fleet management.
Used for organizing clusters by environment, team, or other operational criteria.
Optional: {}
mergeTags booleanMergeTags, when true, merges tags specified on this resource with the existing
tags on the tracked Console cluster instead of replacing them. Spec tags overlay
existing tags (the CR wins on key conflicts). Tags previously applied by this
CR and later removed from spec are dropped; tags that were never managed by
this CR are left intact. Only applies when this Cluster is tracking an existing
Console cluster (read-only mode). Defaults to false.
Optional: {}
metadata RawExtensionRefer to Kubernetes API documentation for fields of metadata.Optional: {}
bindings BindingsBindings contain read and write access policies for this cluster.
Controls which users and groups can view or manage this cluster through RBAC.
Optional: {}
cloudSettings ClusterCloudSettingsCloudSettings contains cloud provider-specific configuration for this cluster.
Deprecated.
Do not use.
Optional: {}
nodePools ClusterNodePool arrayNodePools defines the worker node configurations managed by this cluster.
Deprecated.
Do not use.
Optional: {}
disableAI booleanDisableAI indicates whether to disable ai insights for this cluster.Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ClusterSpecTemplate

Appears in:

FieldDescriptionDefaultValidation
metadata MetadataTemplateRefer to Kubernetes API documentation for fields of metadata.Required: {}
spec SpecTemplateSpec for the cluster.Required: {}

ClusterSync

ClusterSync enables automatic synchronization of clusters from the Plural Console into Kubernetes cluster CRDs. It polls the Console clusters API endpoint and creates or updates cluster resources based on the discovered infrastructure, making it ideal for scenarios where clusters are provisioned externally (e.g., via Terraform) without direct CRD creation capability.

The resource supports optional filtering by project and tags, and uses templatable specifications that are populated with data from the discovered clusters.

Example usage:

```yaml apiVersion: deployments.plural.sh/v1alpha1 kind: ClusterSync metadata: name: my-cluster-sync namespace: default spec: projectRef: name: my-project # optional: only sync clusters from this project tags: environment: production # optional: filter clusters by tags clusterSpec: metadata: name: "{{ .cluster.name }}" # templated from discovered cluster namespace: clusters spec: handle: "{{ .cluster.handle }}" version: "{{ .cluster.version }}" cloud: "{{ .cluster.cloud }}" ````

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringClusterSync
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ClusterSyncSpec

ClusterSyncSpec

ClusterSyncSpec defines the desired state of ClusterSync

Appears in:

FieldDescriptionDefaultValidation
projectRef ObjectReferenceProjectRef references project to sync clusters from.Optional: {}
tags object (keys:string, values:string)Tags used to filter clusters.Optional: {}
clusterSpec ClusterSpecTemplateClusterSpec contains specifications of the cluster.Required: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ClusterTarget

ClusterTarget defines the criteria for selecting target clusters where managed namespaces should be created. It provides flexible targeting mechanisms based on cluster metadata and properties, enabling fine-grained control over namespace distribution across a fleet of clusters.

Appears in:

FieldDescriptionDefaultValidation
tags object (keys:string, values:string)Tags specify a set of key-value pairs used to select target clusters.
Only clusters that match all specified tags will receive the managed namespace.
This provides a flexible mechanism for targeting specific cluster groups,
environments, or organizational boundaries.
Optional: {}
distro ClusterDistroDistro specifies the Kubernetes distribution type for target cluster selection.
This allows targeting namespaces to specific cluster types that may have
distribution-specific requirements, networking configurations, or security policies.
Optional: {}

CommandAttributes

Appears in:

FieldDescriptionDefaultValidation
cmd stringCmd is the command to executeRequired: {}
args string arrayArgs are the arguments to pass to the command.Optional: {}
dir stringDir is the working directory for the command.Optional: {}
approve booleanApprove determines whether this command should run in the approval-gated stage.Optional: {}

CompatibilityMatrixSummary

Appears in:

FieldDescriptionDefaultValidation
helmChanges string arrayHelmChanges the helm changes for this versionOptional: {}
breakingChanges string arrayBreakingChanges the breaking changes for this versionOptional: {}

CompatibilityMatrixVersion

Appears in:

FieldDescriptionDefaultValidation
version stringVersion the version of the matrix
chartVersion stringChartVersion the chart version of the matrixOptional: {}
kube string arrayKube the kube version of the matrixOptional: {}
summary CompatibilityMatrixSummarySummary the summary for this versionOptional: {}

ComplianceReportGenerator

ComplianceReportGenerator represents a resource that generates compliance reports.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringComplianceReportGenerator
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ComplianceReportGeneratorSpec

ComplianceReportGeneratorSpec

ComplianceReportGeneratorSpec defines the desired state of the resource.

Appears in:

FieldDescriptionDefaultValidation
name stringName, if not provided name from object meta will be used.Optional: {}
format ComplianceReportFormatFormat of the report to be generated.Enum: [CSV JSON]
Required: {}
readBindings Binding arrayReadBindings represent the download policy for this report.Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ComponentState

Underlying type: string

Appears in:

FieldDescription
RUNNING

Condition

Condition defines a conditional expression.

Appears in:

FieldDescriptionDefaultValidation
field stringRequired: {}
operation OperationEnum: [NOT GT LT EQ GTE LTE PREFIX SUFFIX]
Required: {}
value stringOptional: {}

ConfigMapReference

ConfigMapReference identifies a ConfigMap source for a ServiceContext configuration.

Appears in:

FieldDescriptionDefaultValidation
name stringName is the name of the referenced ConfigMap.MinLength: 1
namespace stringNamespace is the namespace of the referenced ConfigMap. If omitted, the ServiceContext namespace is used.Optional: {}
scope stringScope places this ConfigMap's data beneath this top-level configuration key. If omitted, data is merged flat.Optional: {}

Container

Appears in:

FieldDescriptionDefaultValidation
name stringName of the container.Optional: {}
Type: string
image stringRequired: {}
Type: string
args string arrayOptional: {}
env Env arrayOptional: {}
envFrom EnvFrom arrayOptional: {}
resources ContainerResourcesOptional: {}

ContainerResources

Underlying type: struct{Requests *ContainerResourceRequests "json:"requests,omitempty""; Limits *ContainerResourceRequests "json:"limits,omitempty""}

Appears in:

CostSettings

Appears in:

FieldDescriptionDefaultValidation
recommendationCushion integerRecommendationCushion is a percentage amount of cushion
to give over the average discovered utilization to generate
a scaling recommendation, should be between 1-99.
Optional: {}
recommendationThreshold integerRecommendationThreshold is the minimal monthly cost for
a recommendation to be covered by a controller.
Optional: {}

CreatePr

Appears in:

FieldDescriptionDefaultValidation
scmConnectionRef ObjectReferenceScmConnectionRef the SCM connection to use for pr automationsOptional: {}

CustomCompatibilityMatrix

CustomCompatibilityMatrix is the Schema for the customcompatibilitymatrices API

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringCustomCompatibilityMatrix
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec CustomCompatibilityMatrixSpec

CustomCompatibilityMatrixSpec

CustomCompatibilityMatrixSpec defines the desired state of CustomCompatibilityMatrix

Appears in:

FieldDescriptionDefaultValidation
name stringName of this CustomCompatibilityMatrixSpec. If not provided CustomCompatibilityMatrixSpec's own name from CustomCompatibilityMatrixSpec.ObjectMeta will be used.Optional: {}
icon stringIcon the icon to use for this matrixOptional: {}
gitUrl stringGitURL the git url to use for this matrixOptional: {}
releaseUrl stringReleaseURL the release url to use for this matrixOptional: {}
readmeUrl stringReadmeURL the readme url to use for this matrixOptional: {}
versions CompatibilityMatrixVersion arrayVersions the versions for this matrixOptional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

CustomRunStep

CustomRunStep defines a custom execution step within a StackDefinition template. Each step represents a discrete action that will be performed during stack execution, with control over when it runs and whether it requires manual approval.

Appears in:

FieldDescriptionDefaultValidation
args string arrayArgs provides additional command-line arguments that should be passed
to the command specified in Cmd during execution.
Required: {}
cmd stringCmd specifies the executable command that should be run as part of this
custom step. This can be any command available in the execution environment.
Required: {}
requireApproval booleanRequireApproval determines whether this step requires manual approval
before it can proceed. When true, the stack run will pause at this step
until an authorized user approves its execution.
Optional: {}
stage StepStageStage controls at which phase of the stack lifecycle this step should be executed.
Valid stages include PLAN, VERIFY, APPLY, INIT, and DESTROY, allowing fine-grained
control over when custom logic runs in relation to the main IaC operations.
Enum: [PLAN VERIFY APPLY INIT DESTROY]
Required: {}

CustomStackRun

CustomStackRun represents a custom stack run resource. It allows users to define custom commands that can be executed as part of a stack run.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringCustomStackRun
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec CustomStackRunSpec

CustomStackRunSpec

CustomStackRunSpec defines the desired state of CustomStackRun.

Appears in:

FieldDescriptionDefaultValidation
name stringName of this CustomStackRun. If not provided CustomStackRun's own name from CustomStackRun.ObjectMeta will be used.Optional: {}
stackRef LocalObjectReferenceStackRef is a reference to the stack this custom run belongs to.Optional: {}
documentation stringDocumentation to explain what this custom run does.Optional: {}
commands CommandAttributes arrayCommands to execute as part of this custom run.Optional: {}
configuration PrAutomationConfiguration arrayConfiguration self-service configuration which will be presented in UI before triggeringOptional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

Dashboard

Dashboard represents an observability dashboard owned by a Workbench. It consists of graphs arranged on a grid, each backed by an observability tool datasource, and optional user-configurable inputs.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringDashboard
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec DashboardSpecSpec defines the desired state of the Dashboard.Required: {}

DashboardDatasource

DashboardDatasource defines an observability tool call used to fetch dashboard data.

Appears in:

FieldDescriptionDefaultValidation
type DashboardDatasourceTypeType is the kind of data returned by the datasource.Enum: [LOGS METRICS TRACES LABELS]
Required: {}
tool stringTool is the name of the observability tool used to fetch the data.MinLength: 1
Required: {}
Type: string
input RawExtensionInput is passed to the observability tool.Required: {}

DashboardGraph

DashboardGraph is a single graph placed on the dashboard grid.

Appears in:

FieldDescriptionDefaultValidation
identifier stringIdentifier is a stable identifier unique within the dashboard.MaxLength: 128
MinLength: 1
Required: {}
Type: string
title stringTitle is the graph title.Optional: {}
Type: string
description stringDescription is an optional graph description.Optional: {}
Type: string
type DashboardGraphTypeType is the graph visualization type.Enum: [TIMESERIES GAUGE LOGS MARKDOWN TABLE STAT BAR PIE HEATMAP TRACES SECTION]
MaxLength: 16
Required: {}
Type: string
unit DashboardGraphUnitUnit of the plotted values, used to format axes and tooltips. TIME is in seconds,
CPU is in cores, and PERCENT is on a 0-100 scale.
Enum: [NONE BYTES TIME CPU PERCENT]
Optional: {}
Type: string
sectionId stringSectionID is the identifier of the SECTION graph containing this graph. Sections cannot be nested.MaxLength: 128
Optional: {}
Type: string
markdown stringMarkdown is the content for MARKDOWN graphs.Optional: {}
Type: string
options RawExtensionOptions are visualization-specific display options. Sections may set collapsed.Optional: {}
layout DashboardGraphLayoutLayout is the grid position and size of the graph.Required: {}
datasource DashboardDatasourceDatasource is the tool call used to fetch external data.Optional: {}

DashboardGraphLayout

DashboardGraphLayout defines the grid position and size of a graph.

Appears in:

FieldDescriptionDefaultValidation
x integerX is the zero-based horizontal grid coordinate.Minimum: 0
Required: {}
y integerY is the zero-based vertical grid coordinate.Minimum: 0
Required: {}
w integerW is the width in grid columns.Minimum: 1
Required: {}
h integerH is the height in grid rows.Minimum: 1
Required: {}

DashboardInput

DashboardInput is a user-configurable dashboard variable.

Appears in:

FieldDescriptionDefaultValidation
name stringName is the variable name referenced by graph datasource inputs.MinLength: 1
Required: {}
Type: string
label stringLabel is a human-readable input label.Optional: {}
Type: string
description stringDescription is an optional input description.Optional: {}
Type: string
type DashboardInputTypeType is the input control type.Enum: [TEXT NUMBER BOOLEAN SELECT TIME_RANGE]
Required: {}
default stringDefault is the default input value.Optional: {}
Type: string
options string arrayOptions are the allowed values for select inputs.Optional: {}
required booleanRequired defines whether a value is required when rendering.Optional: {}
datasource DashboardDatasourceDatasource is the tool query used to populate input options, such as metric label search.Optional: {}

DashboardSpec

DashboardSpec defines the desired state of a Dashboard.

Appears in:

FieldDescriptionDefaultValidation
workbenchRef LocalObjectReferenceWorkbenchRef references the Workbench that owns this dashboard.
The Workbench must be in the same namespace as the dashboard.
It is immutable, a dashboard cannot be moved to a different workbench.
Required: {}
name stringName is the dashboard name, unique within its workbench.
If not set, metadata.name is used.
Optional: {}
Type: string
description stringDescription is an optional dashboard description.Optional: {}
Type: string
graphs DashboardGraph arrayGraphs arranged on the dashboard grid. Graph identifiers must be unique within the dashboard.
Graphs can be grouped by setting sectionId to the identifier of a SECTION graph.
Note that overlapping graph layouts are only validated by the Console API.
MaxItems: 200
Optional: {}
inputs DashboardInput arrayInputs are user-configurable dashboard variables.Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.Optional: {}

DeploymentSettings

DeploymentSettings provides global configuration settings for Continuous Deployment (CD) operations. This resource defines cluster-wide settings that control how the Plural deployment system operates, including access policies, repository configuration, monitoring integrations, and AI-powered features.

Example usage:

yaml apiVersion: deployments.plural.sh/v1alpha1 kind: DeploymentSettings metadata: name: global-deployment-settings namespace: plrl-deploy-operator spec: agentHelmValues: annotations: company.com/team: "platform" managementRepo: "https://github.com/company/infrastructure" bindings: read: - user: email: "dev-team@company.com" write: - group: name: "platform-engineers" deploymentRepositoryRef: name: "main-deployment-repo" namespace: "plrl-deploy-operator" prometheusConnection: host: "https://prometheus.company.com" user: "monitoring" passwordSecretRef: name: "prometheus-creds" key: "password" ai: enabled: true provider: OPENAI openAI: model: "gpt-4" tokenSecretRef: name: "openai-secret" key: "token" tokenExchange: enabled: true tokenUrl: "https://idp.example.com/oauth/token" clientId: "console-ai" clientSecretSecretRef: name: "openai-oauth-client" key: "clientSecret" cost: recommendationCushion: 20 recommendationThreshold: 100

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringDeploymentSettings
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec DeploymentSettingsSpec

DeploymentSettingsBindings

Appears in:

FieldDescriptionDefaultValidation
read Binding arrayRead bindings.Optional: {}
write Binding arrayWrite bindings.Optional: {}
create Binding arrayCreate bindings.Optional: {}
git Binding arrayGit bindings.Optional: {}

DeploymentSettingsSpec

DeploymentSettingsSpec defines the desired state of DeploymentSettings

Appears in:

FieldDescriptionDefaultValidation
agentHelmValues RawExtensionAgentHelmValues custom helm values to apply
to all agents (useful for things like adding
customary annotations/labels)
Optional: {}
agentHelmValuesTemplateable booleanAgentHelmValuesTemplateable indicates whether to render
agent helm values as a template.
Optional: {}
agentHelmValuesTemplate stringAgentHelmValuesTemplate is a raw string template of custom helm values to
apply to all agents. Unlike AgentHelmValues it is not parsed as YAML by the
operator, so it may contain template expressions that would not be valid YAML
on their own (for example, unquoted Liquid tags).
When set to a non-empty string, it takes precedence over AgentHelmValues,
which is ignored, and AgentHelmValuesTemplateable is always treated as true.
Optional: {}
managementRepo stringManagementRepo is the root repo for setting up
your infrastructure with Plural. Usually this
will be your plural up repo
Optional: {}
stacks StackSettingsStacks global configuration for stack execution.Optional: {}
bindings DeploymentSettingsBindingsBindings global configuration for access control.Optional: {}
prometheusConnection HTTPConnectionPrometheusConnection connection details for a prometheus instance to useOptional: {}
lokiConnection HTTPConnectionLokiConnection connection details for a loki instance to useOptional: {}
ai AISettingsAI settings specifies a configuration for LLM provider clientsOptional: {}
logging LoggingSettingsLogging settings for connections to log aggregation datastoresOptional: {}
cost CostSettingsCost settings for managing Plural's cost management featuresOptional: {}
metrics MetricsSettingsMetrics settings for OpenTelemetry metrics exportOptional: {}
deploymentRepositoryRef NamespacedNameDeploymentRepositoryRef is a pointer to the deployment GIT repository to useOptional: {}
scaffoldsRepositoryRef NamespacedNameScaffoldsRepositoryRef is a pointer to the Scaffolds GIT repository to useOptional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

DiffNormalizers

Appears in:

FieldDescriptionDefaultValidation
name string
kind string
namespace stringOptional: {}
backfill booleanBackfill indicates whether to backfill the given pointers with the current live value
or otherwise ignore it entirely.
Optional: {}
jsonPointers string arrayJSONPointers contains a list of JSON patches to apply to the service, which controls how drift detection works.

ElasticsearchConnection

Appears in:

FieldDescriptionDefaultValidation
host stringHost is the elasticsearch host to connect to.Required: {}
index stringIndex to query in elasticsearch.Optional: {}
user stringUser to connect with basic auth.Optional: {}
passwordSecretRef SecretKeySelectorPasswordSecretRef is a reference to a secret containing the password to connect with basic auth.Optional: {}

ElasticsearchConnectionSettings

Appears in:

FieldDescriptionDefaultValidation
host stringHost is the host of the elasticsearch cluster.Required: {}
index stringIndex is the index of the elasticsearch cluster.Required: {}
user stringUser is the user to authenticate with.Optional: {}
passwordSecretRef SecretKeySelectorPasswordSecretRef is a reference to the local secret holding the password to authenticate with.Optional: {}

FederatedCredential

FederatedCredential is a way to authenticate users from an external identity provider.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringFederatedCredential
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec FederatedCredentialSpec

FederatedCredentialSpec

FederatedCredentialSpec defines the desired state of FederatedCredential.

Appears in:

FieldDescriptionDefaultValidation
issuer stringIssuer is the URL of the identity provider that issues the tokens.Required: {}
aud stringAudience is the expected aud of tokens exchanged with this credential. When unset, any audience is accepted. When set, the token aud must equal this value, or include it when aud is a list.Optional: {}
scopes string arrayScopes are the scopes that the credential will request from the identity provider.Optional: {}
claimsLike RawExtensionClaimsLike is a JSON expression that matches the claims in the token.
All the value strings should be a valid regular expression, which must match the entire claim value.
Example:
...
claimsLike:
sub: "repo:myaccount/myrepo:ref:refs/heads/.*"
Optional: {}
user stringUser is the user email address that will be authenticated by this credential.Required: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

Flow

Flow provides an abstraction layer over complex Kubernetes deployments to simplify application management for developers. It groups related services, pipelines, and infrastructure components into a single logical unit, making it easier to understand and manage application state.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringFlow
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec FlowSpec

FlowServerAssociation

Appears in:

FieldDescriptionDefaultValidation
mcpServerRef ObjectReferenceMCPServerRef is a required reference to an MCP server resource.
This establishes the connection between the flow and the server.
Required: {}

FlowSpec

FlowSpec defines the desired state of Flow

Appears in:

FieldDescriptionDefaultValidation
name stringName of this Flow. If not provided Flow's own name from Flow.ObjectMeta will be used.Optional: {}
description stringDescription provides a longform description of the service managed by this flow.
This field is used for documentation and UI display purposes.
Optional: {}
icon stringIcon specifies an optional image icon for the flow to apply branding or improve identification.Optional: {}
projectRef ObjectReferenceProjectRef allows a global service to be scoped to a specific project only.Optional: {}
bindings BindingsBindings contain read and write policies of this Flow.Optional: {}
repositories string arrayRepositories contains a list of git https urls of the application code repositories used in this flow.Optional: {}
serverAssociations FlowServerAssociation arrayServerAssociations contains a list of MCP services you wish to associate with this flow.
Can also be managed within the Plural Console UI securely.
Optional: {}
workbenchAssociations FlowWorkbenchAssociation arrayWorkbenchAssociations contains a list of workbenches you wish to associate with this flow.Optional: {}
metadata RawExtensionRefer to Kubernetes API documentation for fields of metadata.Optional: {}
agentRuntime AgentRuntimeRefAgentRuntime references the agent runtime to use for this flow by cluster handle and runtime name.
The controller resolves this to an agent runtime ID when syncing to the Console API.
Optional: {}
maxPreviews integerMaxPreviews is the maximum number of preview environments allowed for this flow.
Must be between 1 and 25. Defaults to 10 if omitted.
Maximum: 25
Minimum: 1
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

FlowWorkbenchAssociation

Appears in:

FieldDescriptionDefaultValidation
workbenchRef ObjectReferenceWorkbenchRef is a required reference to a Workbench resource.
This establishes the connection between the flow and the workbench.
Required: {}

GCPCloudConnection

GCPCloudConnection contains Google Cloud Platform authentication configuration. Enables cloud resource discovery and analysis across GCP projects.

Appears in:

FieldDescriptionDefaultValidation
serviceAccountKey ObjectKeyReference
projectId string

GateSpec

GateSpec provides detailed configuration for complex gate types, particularly JOB gates.

Appears in:

FieldDescriptionDefaultValidation
job JobSpecJob configuration for JOB gate types, enabling custom validation jobs
such as integration tests, security scans, or other promotion checks.
Optional: {}

GeneratedSecret

GeneratedSecret handles templated secret creation and distribution. It allows you to define secret templates with variable substitution and automatically distribute the rendered secrets to multiple namespaces and destinations. This is particularly useful for sharing configuration, credentials, or certificates across multiple applications or environments while maintaining consistency and reducing manual secret management overhead.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringGeneratedSecret
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec GeneratedSecretSpec

GeneratedSecretDestination

GeneratedSecretDestination defines a target location where the generated secret should be created.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name of the secret to create at the destination.Required: {}
namespace stringNamespace specifies the namespace where the secret should be created.
If omitted, defaults to the same namespace as the GeneratedSecret resource.
Optional: {}

GeneratedSecretSpec

GeneratedSecretSpec defines the desired state of GeneratedSecret.

Appears in:

FieldDescriptionDefaultValidation
template object (keys:string, values:string)Template defines the secret data as key-value pairs in string form.Optional: {}
destinations GeneratedSecretDestination arrayDestinations describe the target name and namespace for the generated secrets.Optional: {}
configurationRef SecretReferenceConfigurationRef references a Secret containing configuration data used to populate template variables.Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

GitHealth

Underlying type: string

Appears in:

FieldDescription
PULLABLE
FAILED

GitRef

GitRef represents a reference to a Git repository.

Appears in:

FieldDescriptionDefaultValidation
folder stringFolder is the folder in the Git repository where the manifests are located.Required: {}
ref stringRef is the Git reference (branch, tag, or commit) to use.Required: {}
files string arrayOptional files to add to the manifests for this serviceOptional: {}
url stringURL of the Git repository.

GitRepository

GitRepository provides Git-based source control integration for Plural's GitOps workflows. It represents a Git repository available for deployments, enabling automated fetching of manifests, IaC code, and configuration from version-controlled sources. Supports both HTTPS and SSH authentication methods with health monitoring and credential management through ScmConnections or direct secret references.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringGitRepository
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec GitRepositorySpec

GitRepositorySpec

GitRepositorySpec defines the desired state of the GitRepository resource.

Appears in:

FieldDescriptionDefaultValidation
url stringUrl of the GitRepository, supporting both HTTPS and SSH protocols.
This field is immutable once set.
connectionRef ObjectReferenceConnectionRef references an ScmConnection to reuse existing credentials and configuration
for authenticating with GitRepository.
Optional: {}
credentialsRef SecretReferenceCredentialsRef references a Secret containing authentication credentials for this repository.
The secret should contain keys for privateKey, passphrase, username, and password as needed
for the repository's authentication method.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

GlobalService

GlobalService handles the deployment and management of services across multiple clusters. It provides a centralized way to define service deployments that should be replicated across a fleet of Kubernetes clusters, with flexible targeting based on cluster properties, tags, and organizational boundaries.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringGlobalService
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec GlobalServiceSpec

GlobalServiceSpec

GlobalServiceSpec defines the desired state of a GlobalService. It enables the deployment and management of services across multiple Kubernetes clusters with flexible targeting, templating, and lifecycle management capabilities.

Appears in:

FieldDescriptionDefaultValidation
name stringName of this service.
If not provided, the name from GlobalService.ObjectMeta will be used.
Optional: {}
tags object (keys:string, values:string)Tags specify a set of key-value pairs used to select target clusters for this global service.
Only clusters that match all specified tags will be included in the deployment scope.
This provides a flexible mechanism for targeting specific cluster groups or environments.
Optional: {}
reparent booleanReparent indicates whether this global service should take ownership of existing
Plural services that match the targeting criteria. When true, existing services
will be brought under the management of this GlobalService resource.
Optional: {}
interval stringInterval specifies the reconciliation interval for the global service.
This controls how frequently the controller checks and updates the service deployments
across target clusters. Defaults to 10 minutes if not specified.
Optional: {}
cascade CascadeCascade defines the deletion behavior for resources owned by this global service.
This controls whether resources are removed from Plural Console only, target clusters only,
or both during service deletion operations.
Optional: {}
context TemplateContextContext provides data for dynamic template overrides of service deployment properties
such as Helm chart versions, values files, or other configuration parameters.
This enables environment-specific customization while maintaining a single service definition.
Optional: {}
distro ClusterDistroDistro specifies the Kubernetes distribution type for target cluster selection.
This allows targeting services to specific cluster types that may have
distribution-specific requirements or optimizations.
Enum: [GENERIC EKS AKS GKE RKE K3S OPENSHIFT]
Optional: {}
mgmt booleanMgmt indicates whether to include management clusters in the target cluster set.
Management clusters typically host the Plural Console and operators, and may
require special consideration for service deployments.
Optional: {}
serviceRef ObjectReferenceServiceRef references an existing ServiceDeployment to replicate across target clusters.
This allows leveraging an existing service definition as a template for global deployment.
Optional: {}
providerRef ObjectReferenceProviderRef restricts deployment to clusters associated with a specific cloud provider.
This enables provider-specific service deployments that may require particular
cloud integrations or provider-native services.
Deprecated.
Do not use.
Optional: {}
projectRef ObjectReferenceProjectRef constrains the global service scope to clusters within a specific project.
This provides project-level isolation and ensures services are only deployed
to clusters belonging to the designated project.
Optional: {}
template ServiceTemplateTemplate defines the service deployment specification to be applied across target clusters.
This contains the core service definition including Helm charts, configurations,
and deployment parameters that will be instantiated on each matching cluster.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}
ignoreClusters string arrayIgnoreClusters specifies a list of cluster handles to exclude from the target cluster set.Optional: {}

GraphStore

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled controls whether the graph store is enabled or not.falseOptional: {}
store VectorStoreStore is the type of the graph store to use.Enum: [ELASTIC]
Optional: {}
elastic ElasticsearchConnectionSettingsElastic configuration for the graph store.Optional: {}

Group

Group represents a group of users within the system, managed via the Console API. It includes specifications for the group's name and description.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringGroup
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec GroupSpecSpec defines the desired state of the Group.

GroupSpec

GroupSpec defines the desired state of Group.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for this Group.
If not provided, the name from the resource metadata will be used.
Optional: {}
description stringDescription provides a detailed explanation of this Group's purpose.Optional: {}
global booleanGlobal indicates whether all users in the system are automatically added to this group.falseOptional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

HTTPConnection

Appears in:

FieldDescriptionDefaultValidation
host stringHost is the host to connect to.Required: {}
user stringUser to connect with basic auth.Optional: {}
password stringPassword to connect w/ for basic auth.Optional: {}
passwordSecretRef SecretKeySelectorPasswordSecretRef is a reference to a secret containing the password to connect with basic auth.Optional: {}

HTTPHeader

Appears in:

FieldDescriptionDefaultValidation
name stringName is the HTTP header name.Required: {}
value stringValue is the HTTP header value.Required: {}

HelmMinimal

Appears in:

FieldDescriptionDefaultValidation
values stringValues a Helm values file to use when rendering this Helm chart.Optional: {}
valuesFiles string arrayValuesFiles a list of relative paths to values files to use for Helm chart templating.Optional: {}
release stringRelease is a Helm release name to use when rendering this Helm chart.Optional: {}
ignoreHooks booleanIgnoreHooks indicates whether to ignore Helm hooks when rendering this Helm chart.Optional: {}

HelmRepository

HelmRepository is a Kubernetes custom resource that represents a Helm chart repository for use with the Plural Console deployment system. It enables integration with various Helm repository providers including public repositories, private cloud-hosted repositories, and on-premises solutions with comprehensive authentication support.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringHelmRepository
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec HelmRepositorySpecSpec defines the desired state of the HelmRepository, including the repository URL
and authentication configuration. The URL is immutable once set to ensure consistency
across deployments and prevent accidental repository changes.
Required: {}

HelmRepositoryAuth

HelmRepositoryAuth defines the authentication configuration for a Helm repository. It supports multiple authentication methods, but only one should be specified per repository. The authentication method used should match the Provider specified in the HelmRepositorySpec.

Appears in:

FieldDescriptionDefaultValidation
proxy HttpProxyConfigurationProxy configures an HTTP proxy for requests to this Helm repository or OCI registry.Optional: {}
basic HelmRepositoryAuthBasicBasic specifies username/password authentication for repositories that support HTTP Basic Auth.
Commonly used with private Helm repositories, Harbor registries, and other traditional
repository managers that implement standard HTTP authentication.
Optional: {}
bearer HelmRepositoryAuthBearerBearer specifies token-based authentication for repositories that support Bearer tokens.
Used with modern container registries and repositories that implement OAuth2 or similar
token-based authentication schemes.
Optional: {}
aws HelmRepositoryAuthAWSAws specifies AWS-specific authentication for Amazon ECR and other AWS-hosted repositories.
Supports both static credentials and IAM role-based authentication for secure access
to private repositories hosted in Amazon Web Services.
Optional: {}
azure HelmRepositoryAuthAzureAzure specifies Azure-specific authentication for Azure Container Registry (ACR).
Supports service principal authentication and managed identity for secure access
to private repositories hosted in Microsoft Azure.
Optional: {}
gcp HelmRepositoryAuthGCPGcp specifies Google Cloud-specific authentication for Google Artifact Registry.
Supports service account key authentication for secure access to private
repositories hosted in Google Cloud Platform.
Optional: {}

HelmRepositoryAuthAWS

HelmRepositoryAuthAWS defines AWS-specific authentication for Amazon ECR and other AWS-hosted repositories. It supports both static credentials and IAM role assumption for flexible authentication in various AWS deployment scenarios.

Appears in:

FieldDescriptionDefaultValidation
accessKey stringAccessKey specifies the AWS access key ID for authentication.
When using static credentials, this should be set along with the secret access key.
For enhanced security, consider using IAM roles instead of static credentials.
Optional: {}
secretAccessKeySecretRef SecretReferenceSecretAccessKeySecretRef references a Kubernetes Secret containing the AWS secret access key.
The entire secret content will be used as the secret access key.
This approach is deprecated in favor of SecretAccessKeySecretKeyRef for better secret management.
Optional: {}
secretAccessKeySecretKeyRef SecretKeySelectorSecretAccessKeySecretKeyRef references a specific key within a Kubernetes Secret containing the secret access key.
This is the preferred method for storing AWS credentials as it allows multiple
credential sets to be organized within a single secret.
Optional: {}
assumeRoleArn stringAssumeRoleArn specifies an AWS IAM role ARN to assume for repository access.
This enables cross-account access and role-based authentication, providing
enhanced security and flexibility in AWS environments.
Optional: {}

HelmRepositoryAuthAzure

HelmRepositoryAuthAzure defines Azure-specific authentication for Azure Container Registry (ACR). It supports service principal authentication which is the recommended approach for automated access to private Azure repositories.

Appears in:

FieldDescriptionDefaultValidation
clientId stringClientID specifies the Azure service principal client ID.
This is used in conjunction with the client secret to authenticate with Azure services.
Optional: {}
clientSecretSecretRef SecretReferenceClientSecretSecretRef references a Kubernetes Secret containing the Azure service principal client secret.
The entire secret content will be used as the client secret.
This approach is deprecated in favor of ClientSecretSecretKeyRef for better secret management.
Optional: {}
clientSecretSecretKeyRef SecretKeySelectorClientSecretSecretKeyRef references a specific key within a Kubernetes Secret containing the client secret.
This is the preferred method for storing Azure credentials as it allows proper
secret organization and key-based access control.
Optional: {}
tenantId stringTenantID specifies the Azure Active Directory tenant ID.
This identifies the Azure AD instance that contains the service principal
and is required for proper authentication scope.
Optional: {}
subscriptionId stringSubscriptionID specifies the Azure subscription ID.
This identifies the Azure subscription containing the resources
and may be required for certain repository access scenarios.
Optional: {}

HelmRepositoryAuthBasic

HelmRepositoryAuthBasic defines username/password authentication for Helm repositories. This authentication method is widely supported by traditional repository managers and provides a simple way to secure access to private Helm charts.

Appears in:

FieldDescriptionDefaultValidation
username stringUsername specifies the username for HTTP Basic authentication.
This is typically a user account or service account name configured
in the target repository system.
Required: {}
passwordSecretRef SecretReferencePasswordSecretRef references a Kubernetes Secret containing the password for Basic authentication.
The entire secret content will be used as the password.
This approach is deprecated in favor of PasswordSecretKeyRef for better secret management.
Optional: {}
passwordSecretKeyRef SecretKeySelectorPasswordSecretKeyRef references a specific key within a Kubernetes Secret that contains the password.
This is the preferred method for password storage as it allows multiple credentials
to be stored in a single secret with proper key-based access.
Optional: {}

HelmRepositoryAuthBearer

HelmRepositoryAuthBearer defines token-based authentication for Helm repositories. This authentication method is commonly used with modern container registries and repositories that implement OAuth2 or similar token-based authentication.

Appears in:

FieldDescriptionDefaultValidation
tokenSecretRef SecretReferenceTokenSecretRef references a Kubernetes Secret containing the bearer token.
The entire secret content will be used as the authentication token.
This approach is deprecated in favor of TokenSecretKeyRef for better secret management.
Optional: {}
tokenSecretKeyRef SecretKeySelectorTokenSecretKeyRef references a specific key within a Kubernetes Secret that contains the bearer token.
This is the preferred method for token storage as it allows multiple tokens
to be stored in a single secret with proper key-based access.
Optional: {}

HelmRepositoryAuthGCP

HelmRepositoryAuthGCP defines Google Cloud-specific authentication for Google Artifact Registry. It uses service account key-based authentication which is the standard approach for accessing private Google Cloud repositories from external systems.

Appears in:

FieldDescriptionDefaultValidation
applicationCredentialsSecretRef SecretReferenceApplicationCredentialsSecretRef references a Kubernetes Secret containing the GCP service account key JSON.
The entire secret content will be used as the service account credentials.
This approach is deprecated in favor of ApplicationCredentialsSecretKeyRef for better secret management.
Optional: {}
applicationCredentialsSecretKeyRef SecretKeySelectorApplicationCredentialsSecretKeyRef references a specific key within a Kubernetes Secret containing the service account JSON.
This is the preferred method for storing GCP credentials as it allows multiple
service account keys to be organized within a single secret with proper access control.
Optional: {}

HelmRepositorySpec

HelmRepositorySpec defines the desired state of a HelmRepository.

Appears in:

FieldDescriptionDefaultValidation
url stringURL specifies the HTTP/HTTPS URL of the Helm repository.
This field is immutable once set to prevent accidental changes that could break
existing service deployments that depend on this repository.
Supported formats include standard Helm repository URLs and OCI registry URLs.
Required: {}
provider HelmAuthProviderProvider specifies the authentication provider type for this Helm repository.
This determines which authentication method will be used when accessing the repository.
Different providers support different authentication mechanisms optimized for their platforms.
Enum: [BASIC BEARER GCP AZURE AWS]
Type: string
auth HelmRepositoryAuthAuth contains the authentication configuration for accessing the Helm repository.
The specific authentication method used depends on the Provider field.
Only one authentication method should be configured per repository.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

HttpProxyConfiguration

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled controls whether this proxy is used. It defaults to true.trueOptional: {}
url stringThe url of your HTTP proxy.Required: {}
noproxy stringThe comma-separated list of hosts that should not be proxied, will behave equivalently to a NOPROXY env var.Optional: {}

InfrastructureStack

InfrastructureStack provides a scalable framework to manage infrastructure as code with a K8s-friendly, API-driven approach. It declaratively defines a stack with a type, Git repository location, and target cluster for execution. On each commit to the tracked repository, a run is created which the Plural deployment operator detects and executes on the targeted cluster, enabling fine-grained permissions and network location control for IaC runs.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringInfrastructureStack
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec InfrastructureStackSpec

InfrastructureStackSpec

InfrastructureStackSpec defines the desired state of the InfrastructureStack.

Appears in:

FieldDescriptionDefaultValidation
name stringName of this stack.
If not provided, the name from InfrastructureStack.ObjectMeta will be used.
Optional: {}
type StackTypeType specifies the IaC tool to use for executing the stack.
One of TERRAFORM, TERRAGRUNT, PULUMI, ANSIBLE, CUSTOM.
Enum: [TERRAFORM TERRAGRUNT PULUMI ANSIBLE CUSTOM]
Required: {}
interval stringInterval specifies the interval at which the stack will be reconciled, default is 5mOptional: {}
repositoryRef ObjectReferenceRepositoryRef references the GitRepository containing the IaC source code. Leave empty to use git:url instead.Optional: {}
clusterRef ObjectReferenceClusterRef references the target Cluster where this stack will be executed.Optional: {}
cluster stringCluster is the handle of the target Cluster where this service will be deployed. Leave it empty to use the clusterRef field instead.Optional: {}
projectRef ObjectReferenceProjectRef references a project this stack belongs to.
If not provided, it will use the default project.
Optional: {}
git GitRefGit contains reference within the repository where the IaC manifests are located.
manageState booleanManageState indicates whether Plural should manage the Terraform state of this stack.Optional: {}
workdir stringWorkdir specifies the working directory within the Git repository to execute commands in.
It is useful for projects with external modules or nested folder structures.
Optional: {}
jobSpec JobSpecJobSpec contains an optional configuration for the job that will apply this stack.Optional: {}
configuration StackConfigurationConfiguration specifies version/image config for the IaC tool being used.Optional: {}
cron StackCronCron configuration for automated, scheduled generation of stack runs.Optional: {}
approval booleanApproval when set to true, requires human approval before Terraform apply triggers,
ensuring verification of the plan to reduce misconfiguration risk.
Optional: {}
bindings BindingsBindings contain read and write policies of this stack.Optional: {}
environment StackEnvironment arrayEnvironment variables to inject into the stack execution environment.Optional: {}
files StackFile arrayFiles to mount from Secrets into the stack execution environment,
commonly used for cloud credentials (though IRSA/Workload Identity is preferred).
Optional: {}
detach booleanDetach indicates whether to detach the stack on deletion instead of destroying it.
This leaves all cloud resources in place.
Optional: {}
actor stringActor is a user email to use for default Plural authentication in this stack.Optional: {}
scmConnectionRef ObjectReferenceOptional: {}
stackDefinitionRef ObjectReferenceOptional: {}
observableMetrics ObservableMetric arrayObservableMetrics is a list of metrics to poll to determine if a stack run should be canceled.Optional: {}
tags object (keys:string, values:string)Tags represent a set of key-value pairs that can be used to filter stacks.Optional: {}
variables RawExtensionVariables represent a file with variables in the stack run environment.
It will be automatically passed to the specific tool depending on the
stack Type (except [console.StackTypeCustom]).
Optional: {}
policyEngine PolicyEnginePolicyEngine is a configuration for applying policy enforcement to a stack.Optional: {}
agentId stringAgentId represents agent session ID that created this stack.
It is used for UI linking and otherwise ignored.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

JobSpec

JobSpec defines a Kubernetes Job to execute as part of a JOB gate, allowing inline job definition with containers, resources, and Kubernetes-native configurations.

Appears in:

FieldDescriptionDefaultValidation
namespace stringNamespace where the job will be executed.Required: {}
Type: string
containers Container arrayContainers to run as part of the job, such as test runners or validation scripts.Optional: {}
labels object (keys:string, values:string)Labels to apply to the job for organization and selection.Optional: {}
annotations object (keys:string, values:string)Annotations to apply to the job for additional metadata.Optional: {}
nodeSelector object (keys:string, values:string)NodeSelector to apply to the job for scheduling.Optional: {}
tolerations Toleration arrayTolerations to apply to the job for scheduling.Optional: {}
serviceAccount stringServiceAccount to use for the job execution.Optional: {}
Type: string
raw JobSpecRaw allows defining the job using a full Kubernetes JobSpec manifest
instead of the simplified container-based approach.
Optional: {}
resources ContainerResourcesResources specification that overrides implicit container resources
when containers are not directly configured.
Optional: {}

LoggingSettings

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled defines whether to enable the logging integration or not.Optional: {}
driver LogDriverDriver is the type of log aggregation solution you wish to use.VICTORIAEnum: [VICTORIA ELASTIC OPENSEARCH LOKI]
Optional: {}
victoria HTTPConnectionVictoria configures a connection to VictoriaMetricsOptional: {}
elastic ElasticsearchConnectionElastic configures a connection to elasticsearchOptional: {}
opensearch OpensearchConnectionOpensearch configures a connection to opensearchOptional: {}
loki LokiConnectionLoki configures a connection to grafana lokiOptional: {}

LokiConnection

Appears in:

FieldDescriptionDefaultValidation
host stringHost is the host to connect to.Required: {}
user stringUser to connect with basic auth.Optional: {}
password stringPassword to connect w/ for basic auth.Optional: {}
passwordSecretRef SecretKeySelectorPasswordSecretRef is a reference to a secret containing the password to connect with basic auth.Optional: {}
clusterLabel stringClusterLabel is the stream label identifying the cluster a log came from. Defaults to "cluster".Optional: {}
Pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$
namespaceLabel stringNamespaceLabel is the stream label identifying the namespace a log came from. Defaults to "namespace".Optional: {}
Pattern: ^[a-zA-Z_][a-zA-Z0-9_]*$

MCPServer

MCPServer represents a Model Context Protocol server for AI tool integration within the Plural Console environment. MCP servers enable large language models to execute functions, access external APIs, and interact with various systems.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringMCPServer
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec MCPServerSpec

MCPServerAuthentication

MCPServerAuthentication defines the authentication configuration for an MCP server. It supports multiple authentication methods to integrate with various systems and security requirements, from simple JWT tokens to custom header-based authentication.

Appears in:

FieldDescriptionDefaultValidation
plural booleanPlural enables built-in Plural JWT authentication for this MCP server.
When true, the server will receive a valid Plural JWT token in requests,
allowing it to authenticate and authorize operations within the Plural ecosystem.
Optional: {}
oauth OAuth2TokenExchangeOAuth configures client credentials token exchange for requests to this server.Optional: {}
headers object (keys:string, values:string)Headers specify custom HTTP headers required for authentication with this MCP server.
This allows integration with servers that use API keys, bearer tokens, or other
header-based authentication schemes. Common examples include "Authorization",
"X-API-Key", or custom authentication headers.
Optional: {}

MCPServerSpec

MCPServerSpec defines the desired state of an MCP (Model Context Protocol) server.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for this MCP server.
If not provided, the name from the resource metadata will be used.
This name is used for identification and referencing in AI workflows.
Optional: {}
protocol McpServerProtocolProtocol specifies the MCP transport protocol. Only STREAMABLE_HTTP is supported and it is the default
when omitted. SSE is no longer supported and will fail to synchronize.
STREAMABLE_HTTPEnum: [SSE STREAMABLE_HTTP]
Optional: {}
url stringURL is the HTTP endpoint where the MCP server is hosted.
This must be a valid HTTP or HTTPS URL that the AI system can reach
to execute tool calls and interact with the server's capabilities.
Required: {}
bindings BindingsBindings define the read and write access policies for this MCP server.
These control which users and groups can view, modify, or execute tools
provided by this server, enabling fine-grained access control.
Optional: {}
authentication MCPServerAuthenticationAuthentication specifies the authentication configuration for accessing this MCP server.
Different authentication methods are supported including built-in Plural JWT
and custom HTTP headers for integration with various authentication systems.
Optional: {}
confirm booleanConfirm determines whether tool calls against this server require explicit user confirmation.
When true, users must approve each tool execution before it proceeds, providing
an additional safety mechanism for sensitive operations. Defaults to false.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ManagedNamespace

ManagedNamespace handles the creation and management of Kubernetes namespaces across multiple clusters. It provides a centralized way to define namespace specifications that should be replicated across a fleet of Kubernetes clusters.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringManagedNamespace
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ManagedNamespaceSpec

ManagedNamespaceSpec

ManagedNamespaceSpec defines the desired state of a ManagedNamespace. It specifies how Kubernetes namespaces should be created and managed across multiple clusters, including their metadata, targeting criteria, and associated service deployments.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name of the namespace once it's placed on a cluster.
If not provided, the ManagedNamespace's own name from metadata will be used.
Optional: {}
description stringDescription provides a short description of the purpose of this namespace.
This is useful for documentation and helping teams understand the namespace's role
within the broader application architecture.
Optional: {}
cascade CascadeCascade specifies the deletion behavior for resources owned by this managed namespace.
This controls whether namespace deletion removes associated resources from
Plural Console only, target clusters only, or both.
Optional: {}
labels object (keys:string, values:string)Labels define key-value pairs to be applied to the created namespaces.
These labels are applied to the actual Kubernetes namespace resources
and can be used for organization, monitoring, and policy enforcement.
Optional: {}
annotations object (keys:string, values:string)Annotations define key-value pairs to be applied to the created namespaces.
These annotations are applied to the actual Kubernetes namespace resources
and are commonly used for configuration, tooling integration, and metadata.
Optional: {}
pullSecrets string arrayPullSecrets specifies a list of image pull secrets to attach to this namespace.
These secrets will be available for pulling container images within the namespace,
enabling access to private container registries across all pods in the namespace.
Optional: {}
service ServiceTemplateService defines the service deployment specification to be created within this namespace.
This allows for automatic deployment of applications or infrastructure components
as part of the namespace provisioning process.
Optional: {}
target ClusterTargetTarget specifies the targeting criteria for selecting which clusters should receive this namespace.
This enables flexible namespace distribution based on tags and Kubernetes distributions.
Optional: {}
projectRef ObjectReferenceProjectRef constrains the managed namespace scope to clusters within a specific project.
This provides project-level isolation and ensures namespaces are only created
on clusters belonging to the designated project.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

MetadataTemplate

Appears in:

FieldDescriptionDefaultValidation
name stringName is a short, unique human-readable name used to identify this cluster.Required: {}
namespace stringNamespace specifies an optional namespace for categorizing or scoping related resources.
If empty then the ClusterSync's namespace will be used.
Optional: {}

MetricsSettings

MetricsSettings holds configuration for OpenTelemetry metrics export.

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled defines whether to enable the metrics export or not.falseOptional: {}
endpoint stringEndpoint is the OpenTelemetry collector endpoint to send metrics to.Optional: {}
crontab stringCrontab is the cron expression for how often to export metrics.
Example: "*/5 * * * *" for every 5 minutes.
Optional: {}

Monitor

Monitor represents an observability monitor attached to a service deployment. It periodically evaluates a log or metrics query against a threshold and fires alerts when it is crossed. Optionally, it can be attached to a workbench to start an investigation when it fires.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringMonitor
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec MonitorSpecSpec defines the desired state of the Monitor.Required: {}

MonitorFacet

MonitorFacet is a key/value facet used to further filter log queries.

Appears in:

FieldDescriptionDefaultValidation
key stringKey is the facet key (e.g. kubernetes namespace or pod label name).Required: {}
Type: string
value stringValue is the facet value to match for the given key.Required: {}
Type: string

MonitorLogAzureOptions

MonitorLogAzureOptions are Azure-specific log query options.

Appears in:

FieldDescriptionDefaultValidation
resourceId stringResourceID is the Azure resource ID to query logs for.Optional: {}
Type: string

MonitorLogOptions

MonitorLogOptions are provider-specific log query options.

Appears in:

FieldDescriptionDefaultValidation
azure MonitorLogAzureOptionsAzure log query options.Optional: {}

MonitorLogQuery

MonitorLogQuery is the log query configuration for a monitor.

Appears in:

FieldDescriptionDefaultValidation
tool stringTool is the named workbench logs tool. When omitted, the native Plural logs provider is used.Optional: {}
Type: string
query stringQuery is the log query string passed through to the underlying log provider.MinLength: 1
Required: {}
Type: string
bucketSize stringBucketSize is the time bucket size (e.g. 5m) used when aggregating log results.Pattern: ^[0-9]+[dmhs]$
Required: {}
Type: string
duration stringDuration is the lookback duration for the log query (e.g. 1h, 10m, 30s).Optional: {}
Pattern: ^[0-9]+[dmhs]$
Type: string
operator MonitorOperatorOperator to use when combining multiple log queries.
Defaults to OR, which is also the Console API default.
OREnum: [OR AND]
Optional: {}
facets MonitorFacet arrayFacets are optional key/value facets applied as additional filters on the log query.Optional: {}
options MonitorLogOptionsOptions are provider-specific log query options.Optional: {}

MonitorMetricsAzureOptions

MonitorMetricsAzureOptions are Azure-specific metrics query options.

Appears in:

FieldDescriptionDefaultValidation
resourceId stringResourceID is the Azure resource ID to query metrics for.Optional: {}
Type: string
metricsNamespace stringMetricsNamespace is the Azure metrics namespace.Optional: {}
Type: string
aggregation stringAggregation is the Azure metrics aggregation type.Optional: {}
Type: string
filter stringFilter is the Azure metrics filter expression.Optional: {}
Type: string
orderBy stringOrderBy is the Azure metrics ordering expression.Optional: {}
Type: string
rollUpBy stringRollUpBy is the Azure metrics dimension to roll up by.Optional: {}
Type: string
metricsEndpoint stringMetricsEndpoint is the Azure metrics endpoint override.Optional: {}
Type: string

MonitorMetricsOptions

MonitorMetricsOptions are provider-specific metrics query options.

Appears in:

FieldDescriptionDefaultValidation
azure MonitorMetricsAzureOptionsAzure metrics query options.Optional: {}

MonitorMetricsQuery

MonitorMetricsQuery is the metrics query configuration for a monitor.

Appears in:

FieldDescriptionDefaultValidation
tool stringTool is the named workbench metrics tool. When omitted, the native Plural metrics provider is used.Optional: {}
Type: string
query stringQuery is the metrics query string passed through to the underlying metrics provider.MinLength: 1
Required: {}
Type: string
step stringStep is the metrics query step (e.g. 5m).Optional: {}
Pattern: ^[0-9]+[dmhs]$
Type: string
duration stringDuration is the lookback duration for the metrics query (e.g. 1h).Optional: {}
Pattern: ^[0-9]+[dmhs]$
Type: string
options MonitorMetricsOptionsOptions are provider-specific metrics query options.Optional: {}

MonitorQuery

MonitorQuery is a wrapper for the underlying query definition for a monitor. Exactly one of log or metrics should be set, matching the monitor type.

Appears in:

FieldDescriptionDefaultValidation
log MonitorLogQueryLog query used when the monitor type is LOG.Optional: {}
metrics MonitorMetricsQueryMetrics query used when the monitor type is METRICS.Optional: {}

MonitorSpec

MonitorSpec defines the desired state of a Monitor.

Appears in:

FieldDescriptionDefaultValidation
name stringName is the short name used to identify this monitor in the Console API.
If not set, metadata.name is used.
Optional: {}
Type: string
serviceRef LocalObjectReferenceServiceRef references the ServiceDeployment resource this monitor is attached to.
The ServiceDeployment must be in the same namespace as the monitor.
Either ServiceRef or Service must be set.
Optional: {}
service stringService references an existing service in the Console API this monitor is attached to,
in the format "cluster-handle/service-name" (e.g. mgmt/console). Use it to attach
a monitor to a service that is not managed by a ServiceDeployment resource.
Either ServiceRef or Service must be set.
Optional: {}
Pattern: ^[^/]+/[^/]+$
Type: string
workbenchRef LocalObjectReferenceWorkbenchRef references the Workbench this monitor is attached to.
When set, the monitor can start a workbench investigation when it fires.
It is required if the query uses a named workbench tool.
The Workbench must be in the same namespace as the monitor.
Optional: {}
prompt stringPrompt is used when the monitor starts a workbench investigation.MaxLength: 2048
Optional: {}
Type: string
modes WorkbenchJobModesModes defines mode-specific options for monitor-triggered workbench jobs.Optional: {}
description stringDescription is an optional free-form description of what this monitor is checking.Optional: {}
Type: string
alertTemplate stringAlertTemplate is an optional template used when rendering alert messages for this monitor.Optional: {}
Type: string
severity AlertSeveritySeverity is the severity level applied to alerts generated by this monitor.Enum: [LOW MEDIUM HIGH CRITICAL UNDEFINED]
Required: {}
type MonitorTypeType is the monitor data type.Enum: [LOG METRICS]
Required: {}
evaluationCron stringEvaluationCron is the cron schedule defining when the monitor is evaluated (e.g. */5 * * * *).
It must be a cron expression with 5 fields (or 6 with an optional year), separated by single spaces,
or one of the @yearly, @annually, @monthly, @weekly, @daily, @midnight, @hourly, @minutely,
@secondly or @reboot shortcuts. Field values are validated by the Console API.
MinLength: 1
Pattern: ^(@(?i:yearly|annually|monthly|weekly|daily|midnight|hourly|minutely|secondly|reboot)|[^ ]+( [^ ]+)\{4,5\})$
Required: {}
Type: string
query MonitorQueryQuery is the underlying query configuration used to fetch data for this monitor.Required: {}
threshold MonitorThresholdThreshold is the configuration that determines when the monitor should fire.Required: {}
reconciliation ReconciliationReconciliation settings for this resource.Optional: {}

MonitorThreshold

MonitorThreshold is the threshold configuration used to decide when a monitor should fire.

Appears in:

FieldDescriptionDefaultValidation
aggregate MonitorAggregateAggregate is the aggregation function applied over the result set.Enum: [MAX MIN AVG]
Required: {}
value stringValue is the numeric value the aggregated metric must cross to trigger the alert.
It is a string to allow decimal values (e.g. "0.95").
Pattern: ^-?[0-9]+(\.[0-9]+)?$
Required: {}
Type: string

NamespaceCredentials

NamespaceCredentials enables secure multi-tenancy by overriding operator credentials at the namespace level. It connects specific namespaces with credentials from a secret reference, allowing fine-grained control over resource reconciliation permissions. This prevents GitOps from becoming implicit God-mode by ensuring operators use bounded credentials for specific namespaces, supporting the principle of least privilege in enterprise fleet management scenarios.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringNamespaceCredentials
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec NamespaceCredentialsSpecRequired: {}

NamespaceCredentialsSpec

NamespaceCredentialsSpec defines the desired state of the NamespaceCredentials resource.

Appears in:

FieldDescriptionDefaultValidation
namespaces string arrayNamespaces specifies the list of Kubernetes namespaces that will use the credentials
from SecretRef during resource reconciliation, enabling namespace-level credential isolation.
Required: {}
secretRef SecretReferenceSecretRef references a Secret containing the credentials that operators will use
when reconciling resources within the specified namespaces, overriding default operator credentials.
Required: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

NamespacedName

NamespacedName is the same as types.NamespacedName with the addition of kubebuilder/json annotations for better schema support.

Appears in:

FieldDescriptionDefaultValidation
name stringName is a resource name.Required: {}
namespace stringNamespace is a resource namespace.Required: {}

NexusSettings

NexusSettings holds configuration for using the Nexus proxy

Appears in:

FieldDescriptionDefaultValidation
url stringURL is the URL of the Nexus proxyRequired: {}
model stringModel to use for completionsOptional: {}
toolModel stringToolModel to use for tool callingOptional: {}
embeddingModel stringEmbeddingModel to use for generating embeddingsOptional: {}
tokenSecretRef SecretKeySelectorTokenSecretRef is a reference to the local secret holding the access token
for the Nexus proxy
Optional: {}

NotificationRouter

NotificationRouter routes events from Plural Console to notification destinations. It filters events based on type, resource associations, and regex patterns, then forwards matching events to configured sinks like Slack, Teams, or in-app notifications. Common use cases include routing service deployment events, pipeline failures, cluster alerts, and security events to appropriate teams or channels.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringNotificationRouter
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec NotificationRouterSpecSpec defines the desired state of the NotificationRouter, including event subscriptions,
filtering criteria, and destination sink configurations.

NotificationRouterSpec

NotificationRouterSpec defines the desired state of NotificationRouter. It specifies which events to subscribe to, how to filter them, and where to route the resulting notifications.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for this notification router.
If not provided, the name from the resource metadata will be used.
Optional: {}
events string arrayEvents define the list of event types this router should subscribe to.
Use "*" to subscribe to all events, or specify specific event names to filter
for particular types of notifications.
Event names are: alert.fired, alert.resolved, service.update, stack.run, stack.pending, pipeline.update, pr.close, service.insight, cluster.insight, stack.insight, cluster.insight, service.insight, stack.insight, alert.insight
Optional: {}
filters RouterFilters arrayFilters define criteria for selectively routing events.
These filters control which events trigger notifications, allowing teams
to focus on relevant events. Multiple filters can be combined.
Optional: {}
sinks ObjectReference arraySinks specify the notification destinations where filtered events should be delivered.
Each sink represents a configured notification channel such as Slack webhooks,
Microsoft Teams channels, or in-app notification systems. Events matching the
router's criteria will be formatted and sent to all configured sinks.
It is a reference to the NotificationSink resource.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

NotificationSink

NotificationSink defines notification delivery destinations for events routed by NotificationRouter. It represents the actual channels where notifications are sent, such as Slack webhooks, Microsoft Teams channels, or in-app notifications. NotificationSinks are referenced by NotificationRouter resources to determine where filtered events should be delivered.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringNotificationSink
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec NotificationSinkSpecSpec defines the desired state of the NotificationSink, including the sink type,
destination configuration, and delivery settings.

NotificationSinkSpec

NotificationSinkSpec defines the desired state of NotificationSink. It specifies the type of notification channel, destination configuration, and delivery preferences for events routed to this sink.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for this notification sink.
If not provided, the name from the resource metadata will be used. // +kubebuilder:validation:Optional
type SinkTypeType specifies the channel type of this sink.
Determines which configuration section will be used and how notifications are delivered.
SLACK and TEAMS require webhook URLs, while PLURAL delivers in-app notifications.
Enum: [SLACK TEAMS PLURAL]
Required: {}
configuration SinkConfigurationConfiguration contains the type-specific settings for this notification sink.
Only one configuration section should be populated based on the Type field.
Each type has different requirements for delivery setup and authentication.
Optional: {}
bindings Binding arrayBindings define the users and groups who can receive notifications through this sink.
This is only applicable for PLURAL type sinks that deliver in-app notifications.
For external sinks like Slack or Teams, notifications are sent to the configured webhook.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

OAuth2TokenExchange

OAuth2TokenExchange configures OAuth2 client credentials token endpoint exchange.

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled turns token exchange on for obtaining access tokens via the configured token endpoint.Optional: {}
type OauthTokenExchangeTypeType selects client secret or signed JWT client assertion authentication.CLIENT_SECRETEnum: [CLIENT_SECRET CLIENT_ASSERTION]
Optional: {}
tokenUrl stringTokenURL is the OAuth2 token endpoint URL.Optional: {}
clientId stringClientID is the OAuth2 client identifier.Optional: {}
clientSecretSecretRef SecretKeySelectorClientSecretSecretRef is a reference to a Kubernetes secret key holding the OAuth2 client secret.Optional: {}
privateKeySecretRef SecretKeySelectorPrivateKeySecretRef references a PEM-encoded RSA private key used to sign client assertions.Optional: {}
keyId stringKeyID is added to the signed JWT header as kid when configured.Optional: {}
audience stringAudience overrides the JWT aud claim. It defaults to tokenUrl.Optional: {}
resource stringResource is the OAuth resource parameter requested from the token endpoint.Optional: {}
scopes string arrayScopes are sent as a space-separated OAuth scope parameter.Optional: {}

OIDCProvider

OIDCProvider configures OpenID Connect (OIDC) authentication for external applications and services. It enables third-party applications to authenticate users through the Plural Console using the standard OIDC protocol. This is useful for integrating external tools, dashboards, or custom applications with Plural's authentication system while maintaining centralized user management and access control. Common use cases include connecting monitoring dashboards, CI/CD tools, or custom applications that need to authenticate users against the Plural Console's user directory.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringOIDCProvider
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec OIDCProviderSpecSpec defines the desired state of the OIDCProvider, including authentication settings,
redirect URIs, and credential management for OIDC client configuration.

OIDCProviderSpec

OIDCProviderSpec defines the desired state of OIDCProvider. It specifies the OIDC client configuration including redirect URIs, authentication methods, and credential storage for enabling third-party applications to authenticate with Plural Console.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for this OIDC provider.
If not provided, the name from the resource metadata will be used.
Optional: {}
description stringDescription provides a human-readable description of this OIDC provider.
This helps administrators understand the purpose and intended use of this OIDC client,
such as which application or service it's configured for.
Optional: {}
redirectUris string arrayRedirectUris specifies the list of allowed redirect URIs for this OIDC client.
These URIs define where the authorization server can redirect users after authentication.
Each URI must be an exact match to be considered valid during the OIDC flow.
Common patterns include application callback URLs or localhost URLs for development.
Optional: {}
credentialsSecretRef LocalObjectReferenceCredentialsSecretRef references a Kubernetes Secret that will contain the generated OIDC client credentials.
Once the OIDCProvider is successfully created in the Console API, this secret will be populated
with the client ID and client secret needed for OIDC authentication flows.
The secret will contain two keys: 'clientId' and 'clientSecret'.
Required: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ObjectKeyReference

ObjectKeyReference is a reference to an object in a specific namespace. It is used to reference objects like secrets, configmaps, etc.

Appears in:

FieldDescriptionDefaultValidation
name stringName is unique within a namespace to reference a resource.Required: {}
namespace stringNamespace defines the space within which the resource name must be unique.Required: {}
key stringKey is the key of the object to use.Required: {}

ObjectReferenceTemplate

Appears in:

FieldDescriptionDefaultValidation
name stringName is a short, unique human-readable name used to identify this cluster.Required: {}
namespace stringNamespace specifies an optional namespace for categorizing or scoping related resources.
If empty then the ClusterSync's namespace will be used.
Optional: {}

ObservabilityProvider

ObservabilityProvider configures external monitoring and observability platforms for use with Plural Console. It enables integration with services like Datadog and New Relic to provide enhanced monitoring capabilities for infrastructure stacks and service deployments. The provider can be used by InfrastructureStack resources to monitor metrics and determine if operations should be cancelled based on system health indicators. Common use cases include monitoring deployment health or tracking infrastructure performance metrics.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringObservabilityProvider
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ObservabilityProviderSpecSpec defines the desired state of the ObservabilityProvider, including the provider type
and authentication credentials needed to connect to the external monitoring service.
Required: {}

ObservabilityProviderCredentials

ObservabilityProviderCredentials defines the authentication credentials for different observability providers. Only one provider's credentials should be specified, matching the Type field in the ObservabilityProviderSpec. Each provider has different authentication requirements and API key formats.

Appears in:

FieldDescriptionDefaultValidation
datadog SecretReferenceDatadog specifies a reference to a Kubernetes Secret containing Datadog API credentials.
The referenced secret must contain two keys:
- 'apiKey': Your Datadog API key for authentication
- 'appKey': Your Datadog application key for extended API access
These keys are obtained from your Datadog account's API settings.
Optional: {}
newrelic SecretReferenceNewrelic specifies a reference to a Kubernetes Secret containing New Relic API credentials.
The referenced secret must contain one key:
- 'apiKey': Your New Relic API key for authentication and data access
This key is obtained from your New Relic account's API settings.
Optional: {}

ObservabilityProviderSpec

ObservabilityProviderSpec defines the desired state of ObservabilityProvider. It specifies the type of monitoring service and the credentials needed to authenticate and establish connections with external observability platforms.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for this observability provider.
If not provided, the name from the resource metadata will be used.
Optional: {}
type ObservabilityProviderTypeType specifies the observability platform this provider connects to.
Currently supported providers include Datadog for comprehensive monitoring and alerting,
and New Relic for application performance monitoring and infrastructure insights.
Enum: [DATADOG NEWRELIC]
Required: {}
credentials ObservabilityProviderCredentialsCredentials contains the authentication information needed to connect to the observability provider.
The specific credential format depends on the provider type. Each provider requires different
API keys and authentication methods as specified in their respective credential specifications.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ObservableMetric

Appears in:

FieldDescriptionDefaultValidation
identifier stringRequired: {}
observabilityProviderRef ObjectReferenceRequired: {}

Observer

Observer monitors external data sources and triggers automated actions when changes are detected. It polls various targets like Helm repositories, OCI registries, Git repositories, or Kubernetes add-ons on a scheduled basis and executes predefined actions when new versions or updates are discovered. Common use cases include automatically creating pull requests when new chart versions are available or triggering pipeline deployments when container images are updated.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringObserver
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ObserverSpecSpec defines the desired state of the Observer, including the polling schedule,
target configuration, and actions to execute when changes are detected.

ObserverAction

ObserverAction defines an automated response to execute when the observer detects changes. Actions can create pull requests or trigger pipelines.

Appears in:

FieldDescriptionDefaultValidation
type ObserverActionTypeType specifies the kind of action to perform when changes are detected.
PIPELINE actions trigger pipeline context updates, while PR actions create pull requests
using PR automation templates with the discovered values.
Enum: [PIPELINE PR AGENT]
Required: {}
Type: string
configuration ObserverConfigurationConfiguration contains the specific settings for this action type.
The structure depends on the Type field - PR actions use PR configuration,
while PIPELINE actions use pipeline configuration.
Required: {}

ObserverAddOn

ObserverAddOn defines configuration for monitoring Kubernetes add-on versions. This allows observing when new versions of Kubernetes add-ons are available, enabling automated updates while ensuring compatibility with specific Kubernetes versions.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the add-on to monitor for new versions.
This should match the add-on name as known to the monitoring system.
Required: {}
kubernetesVersion stringKubernetesVersion specifies the Kubernetes version for compatibility checking.
The observer will only consider add-on versions that are compatible with this Kubernetes version.
This helps ensure that suggested updates will work with your cluster.
Optional: {}
kubernetesVersions string arrayKubernetesVersions specifies multiple Kubernetes versions for compatibility checking.
Useful when managing clusters with different Kubernetes versions or during upgrade periods.
The observer will only suggest add-on versions compatible with all specified versions.
Optional: {}

ObserverAgentAction

Appears in:

FieldDescriptionDefaultValidation
runtime stringRuntime specifies the runtime to use for the agent run.Required: {}
prompt stringPrompt specifies the prompt to give the agent to explain how to handle the observed value.Required: {}
repository stringRepository specifies the repository to use for the agent run.Required: {}
cluster stringCluster references the cluster handle associated with the agent runtime, used to uniquely identify the runtime if needed.

ObserverConfiguration

ObserverConfiguration contains type-specific configuration for observer actions. Only one configuration section should be populated based on the action type. This allows for different action types to have their own specialized settings.

Appears in:

FieldDescriptionDefaultValidation
pr ObserverPrActionPr contains configuration for pull request actions.
Used when the action type is PR to automatically create pull requests
when new versions are detected by the observer.
Optional: {}
pipeline ObserverPipelineActionPipeline contains configuration for pipeline actions.
Used when the action type is PIPELINE to trigger pipeline context updates
when new versions are detected by the observer.
Optional: {}
agent ObserverAgentActionAgent contains configuration for agent actions.
Used when the action type is AGENT to execute coding agent runs when new versions are detected by the observer.
Optional: {}

ObserverGit

ObserverGit defines configuration for monitoring Git repository tags. This allows observing when new tags are created in a Git repository, typically used for monitoring application releases or infrastructure updates.

Appears in:

FieldDescriptionDefaultValidation
gitRepositoryRef ObjectReferenceGitRepositoryRef references the Git repository resource to monitor.
The repository must be configured in Plural Console with appropriate access credentials.
Required: {}
type ObserverGitTargetTypeType specifies what Git resources to monitor within the repository.
Currently only TAGS is supported, which monitors for new Git tags.
Enum: [TAGS]
Required: {}
Type: string
filter ObserverGitFilterFilter specifies a regex to filter the git repository tags for the observed value.Optional: {}

ObserverGitFilter

Appears in:

FieldDescriptionDefaultValidation
regex stringRegex specifies a regex to filter the git repository tags for the observed value.
Useful if you want to filter out tags within a larger monorepo or across multiple channels, eg: prod-1.2.3 vs. dev-1.2.3
Optional: {}

ObserverHelm

ObserverHelm defines configuration for monitoring Helm chart repositories. This allows observing when new chart versions are published to Helm repositories, enabling automated updates when application or infrastructure charts are updated.

Appears in:

FieldDescriptionDefaultValidation
url stringURL specifies the Helm repository URL to monitor.
This should be a valid Helm repository URL that contains the chart index.
The URL is immutable once set to ensure consistent monitoring.
Required: {}
chart stringChart specifies the name of the chart within the repository to monitor.
The observer will check for new versions of this specific chart.
Required: {}
provider HelmAuthProviderProvider specifies the authentication provider type for the Helm repository.
Different providers support different authentication mechanisms optimized for their platforms.
Enum: [BASIC BEARER GCP AZURE AWS]
Optional: {}
Type: string
auth HelmRepositoryAuthAuth contains authentication credentials for accessing the Helm repository.
Required for private repositories, the format depends on the Provider type.
Optional: {}

ObserverOci

ObserverOci defines configuration for monitoring OCI (container) registries. This allows observing when new container images or OCI artifacts are published, enabling automated updates when application images or infrastructure artifacts are updated.

Appears in:

FieldDescriptionDefaultValidation
url stringURL specifies the OCI registry URL to monitor.
This should include the full path to the specific repository or artifact.
The URL is immutable once set to ensure consistent monitoring.
Required: {}
provider HelmAuthProviderProvider specifies the authentication provider type for the OCI registry.
Different providers support different authentication mechanisms optimized for their platforms.
Enum: [BASIC BEARER GCP AZURE AWS]
Optional: {}
Type: string
auth HelmRepositoryAuthAuth contains authentication credentials for accessing the OCI registry.
Required for private registries, the format depends on the Provider type.
Optional: {}

ObserverPipelineAction

ObserverPipelineAction defines configuration for triggering pipeline context updates. When the observer detects new versions, it can update pipeline contexts to trigger deployments or other pipeline-driven workflows with the new values.

Appears in:

FieldDescriptionDefaultValidation
pipelineRef ObjectReferencePipelineRef references the pipeline to update when changes are detected.
The pipeline will receive a new context with the observed value,
potentially triggering deployment workflows or other pipeline stages.
Required: {}
context RawExtensionContext is a templated context that becomes the pipeline context.
Use $value to interpolate the observed value into the context data.
This context is applied to the pipeline to trigger appropriate actions.
Optional: {}

ObserverPrAction

ObserverPrAction defines configuration for automatically creating pull requests. When the observer detects new versions, it can generate pull requests using PR automation templates with the discovered values interpolated into the context.

Appears in:

FieldDescriptionDefaultValidation
prAutomationRef ObjectReferencePrAutomationRef references the PR automation template to use for generating pull requests.
The automation template defines the repository, branch pattern, and file modifications
to apply when creating the pull request.
Optional: {}
ai ObserverPrAiActionAi contains configuration for AI assistance in this PR automation.Optional: {}
repository stringRepository overrides the repository slug for the referenced PR automation.
Use this when you want to target a different repository than the one
configured in the PR automation template.
Optional: {}
branchTemplate stringBranchTemplate provides a template for generating branch names.
Use $value to inject the observed value into the branch name.
Example: "update-chart-to-$value" becomes "update-chart-to-1.2.3".
Optional: {}
context RawExtensionContext is a templated context that becomes the input for the PR automation.
Use $value to interpolate the observed value into the context data.
This context is passed to the PR automation for template rendering and file modifications.
Optional: {}
actor stringActor specifies the actor to use for the created branch. Should be a user email in Plural.Optional: {}

ObserverPrAiAction

Appears in:

FieldDescriptionDefaultValidation
enabled booleanWhether AI assistance is enabled for this automation.Optional: {}
prompt stringThe prompt to use to guide the AI code change for this PR.Required: {}

ObserverRenovate

ObserverRenovate defines Renovate regex versioning options for observer target ordering.

Appears in:

FieldDescriptionDefaultValidation
ignoreUnstable booleanIgnoreUnstable skips prerelease values captured by the target format regex.Optional: {}

ObserverSpec

ObserverSpec defines the desired state of Observer. It specifies what external source to monitor, when to poll it, and what actions to take when changes are detected, enabling automated workflows based on external updates.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for this observer.
If not provided, the name from the resource metadata will be used.
This name is used for identification and logging purposes.
Optional: {}
crontab stringCrontab defines the polling schedule using standard cron syntax.
This determines how frequently the observer checks the target for updates.
Examples: "0 */6 * * " (every 6 hours), "/15 * * * *" (every 15 minutes).
Required: {}
initial stringInitial sets the baseline value for this observer to prevent duplicate actions on startup.
When specified, the observer will only trigger actions for values that are newer than this initial value.
This prevents unnecessary actions when the observer is first created or restarted.
Optional: {}
target ObserverTargetTarget specifies the external source to monitor for changes.
This defines what type of resource to poll (Helm chart, OCI image, Git tags, etc.)
and the specific configuration needed to access that resource.
Required: {}
actions ObserverAction arrayActions define the automated responses to execute when new values are detected.
Each action specifies what should happen when the observer discovers an update,
such as creating pull requests or triggering pipeline deployments.
Optional: {}
projectRef ObjectReferenceProjectRef references the project this observer belongs to.
If not provided, the observer will use the default project.
This helps organize observers and control access permissions.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ObserverTarget

ObserverTarget defines the external source to monitor for changes. It specifies what type of resource to poll and how to interpret the results, supporting various sources like Helm repositories, OCI registries, and Git repositories.

Appears in:

FieldDescriptionDefaultValidation
type ObserverTargetTypeType specifies the kind of external source to monitor.
Each type has different configuration requirements and polling mechanisms.
Supported types include Helm charts, OCI images, Git tags, and Kubernetes add-ons.
Enum: [OCI HELM GIT ADDON EKS_ADDON]
Required: {}
Type: string
format stringFormat is a regex pattern with a capture group for extracting version information.
Useful when version strings are embedded in larger release names or tags.
The first capture group is used as the version value.
Example: "app-v([0-9]+.[0-9]+.[0-9]+)" extracts "1.2.3" from "app-v1.2.3".
Optional: {}
order ObserverTargetOrderOrder determines how discovered versions are sorted and which one is selected.
SEMVER sorts by semantic version rules, LATEST uses chronological ordering,
and RENOVATE uses regex capture groups with Renovate-style version comparison.
Enum: [SEMVER LATEST RENOVATE]
Required: {}
Type: string
renovate ObserverRenovateRenovate contains options for RENOVATE target ordering.
Used when Order is RENOVATE to control prerelease filtering and related behavior.
Optional: {}
helm ObserverHelmHelm contains configuration for monitoring Helm chart repositories.
Used when Type is HELM to specify the repository URL, chart name, and authentication.
Optional: {}
oci ObserverOciOCI contains configuration for monitoring OCI (container) registries.
Used when Type is OCI to specify the registry URL and authentication credentials.
Optional: {}
git ObserverGitGit contains configuration for monitoring Git repository tags.
Used when Type is GIT to specify which Git repository to monitor for new tags.
Optional: {}
addon ObserverAddOnAddOn contains configuration for monitoring Plural add-on versions.
Used when Type is ADDON to specify which Kubernetes add-on to monitor for updates.
Optional: {}
eksAddon ObserverAddOnEksAddOn contains configuration for monitoring AWS EKS add-on versions.
Used when Type is EKS_ADDON to specify which EKS add-on to monitor for updates.
Optional: {}

OllamaSettings

OllamaSettings for configuring a self-hosted Ollama LLM, more details at https://github.com/ollama/ollama

Appears in:

FieldDescriptionDefaultValidation
proxy HttpProxyConfigurationProxy configures an HTTP proxy for this provider's API calls.Optional: {}
url stringURL is the url this model is queryable onRequired: {}
model stringModel is the Ollama model to use when querying the /chat apiRequired: {}
toolModel stringToolModel to use for tool calling, which is less frequent and often requires more advanced reasoningOptional: {}
tokenSecretRef SecretKeySelectorAuthorizationSecretRef is a reference to the local secret holding the contents of a HTTP Authorization header
to send to your ollama api in case authorization is required (eg for an instance hosted on a public network)
Optional: {}

OpenAISettings

Appears in:

FieldDescriptionDefaultValidation
proxy HttpProxyConfigurationProxy configures an HTTP proxy for this provider's API calls.Optional: {}
model stringModel is the LLM model name to use.Optional: {}
toolModel stringToolModel to use for tool calling, which is less frequent and often requires more advanced reasoningOptional: {}
embeddingModel stringEmbeddingModel to use for generating embeddingsOptional: {}
proxyModels string arrayProxyModels are additional models to support within our integrated ai proxy.Optional: {}
baseUrl stringBaseUrl is a custom base url to use, for reimplementations of the same API scheme (for instance Together.ai uses the OpenAI API spec). Should be similar to https://api.openai.com/v1Optional: {}
tokenExchange OAuth2TokenExchangeTokenExchange configures OAuth2 client credentials against a token endpoint to obtain access tokens for OpenAI-compatible APIs.Optional: {}
headers HTTPHeader arrayHeaders are custom HTTP headers to include in OpenAI-compatible API requests.Optional: {}
method OpenAiMethodMethod to use for openai api calls (defaults to auto, but can be used to restrict to only responses or chart completions apis, useful for configuring against common AI proxies)Enum: [CHAT RESPONSES AUTO]
Optional: {}
tokenSecretRef SecretKeySelectorTokenSecretRef is a reference to the local secret holding the token to access
the configured AI provider.
Required: {}

OpensearchConnection

Appears in:

FieldDescriptionDefaultValidation
host stringHost is the opensearch host to connect to.Required: {}
index stringIndex to query in opensearch.Optional: {}
awsAccessKeyId stringAWS Access Key ID to use, can also use IRSA to acquire credentials.Optional: {}
awsSecretAccessKeySecretRef SecretKeySelectorAWS Secret Access Key to use, can also use IRSA to acquire credentials.Optional: {}
awsRegion stringAWS Region to use.Optional: {}
usePodIdentity booleanUsePodIdentity enables Workload Identity for AWS authentication instead of static credentials.
When enabled, the controller will use the default AWS credential chain which supports EKS Pod Identity or instance metadata credentials.
Optional: {}

OpensearchConnectionSettings

Appears in:

FieldDescriptionDefaultValidation
host stringHost is the host of the opensearch cluster.Required: {}
index stringIndex is the index of the opensearch cluster.Required: {}
awsAccessKeyId stringAWSAccessKeyID is the AWS Access Key ID to use, can also use IRSA to acquire credentials.Optional: {}
awsSecretAccessKeyRef SecretKeySelectorAWSSecretAccessKeyRef is a reference to the local secret holding the AWS Secret Access Key to use,
can also use IRSA to acquire credentials.
Optional: {}
awsRegion stringAwsRegion is the AWS region to use, defaults to us-east-1Optional: {}

Persona

Persona defines role-based UI configurations for different types of users in Plural Console. It allows customizing the user interface based on user roles such as platform engineers, developers, security teams, or management. Each persona controls which features and sections of the Console are visible and accessible to users assigned to it. This enables organizations to provide tailored experiences that match different user responsibilities and reduce interface complexity for specific roles. Common use cases include hiding infrastructure details from developers or providing simplified dashboards for management oversight.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringPersona
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PersonaSpecSpec defines the desired state of the Persona, including role configuration,
UI customizations, and group bindings for role-based access control.

PersonaAI

PersonaAI defines access controls for AI-powered features within the Console. These settings determine which AI capabilities are available to users assigned to this persona.

Appears in:

FieldDescriptionDefaultValidation
pr booleanPR enables AI-powered pull request generation and management features.
When enabled, users can use AI assistance to create pull requests, generate code changes,
and automate various development workflows through AI-powered tools.
Optional: {}

PersonaConfiguration

PersonaConfiguration defines the complete UI customization settings for a persona. These settings control which features, sections, and capabilities are visible and accessible to users assigned to this persona, enabling role-specific experiences.

Appears in:

FieldDescriptionDefaultValidation
all booleanAll enables the complete UI interface for this persona when set to true.
This overrides individual feature settings and provides full access to all Console features.
Useful for administrative personas that need unrestricted access to all functionality.
Optional: {}
home PersonaHomeHome configures the homepage layout and content for this persona.
Different personas can have customized homepages that highlight the most relevant
information and workflows for their specific role and responsibilities.
Optional: {}
deployments PersonaDeploymentDeployments controls access to deployment-related features and sections.
This includes clusters, services, pipelines, and other deployment management tools.
Useful for controlling which teams can view or manage different aspects of deployments.
Optional: {}
flows PersonaFlowsFlows controls access to flow-related features and sections.
This includes workbenches, pipelines, and preview environments grouped under flows.
Optional: {}
sidebar PersonaSidebarSidebar configures which navigation items and sections are visible in the main sidebar.
This allows personas to have streamlined navigation focused on their primary workflows
while hiding irrelevant or restricted functionality.
Optional: {}
services PersonaServicesServices controls access to service-specific features and configuration options.
This includes service configuration, secrets management, and other service-level operations.
Optional: {}
settings PersonaSettingsSettings controls which tabs are visible within the Console settings page.
Tabs are visible by default and can be hidden by explicitly setting them to false.
Optional: {}
ai PersonaAIAI configures access to AI-powered features and capabilities within the Console.
This includes AI-assisted operations, automated suggestions, and other intelligent features.
Optional: {}

PersonaDeployment

PersonaDeployment defines access controls for deployment-related features and views. These settings determine which deployment management capabilities are visible and accessible to users assigned to this persona.

Appears in:

FieldDescriptionDefaultValidation
clusters booleanClusters enables access to cluster management features when set to true.
This includes viewing cluster status, managing cluster resources, and performing
cluster-level operations. Typically enabled for platform and infrastructure teams.
Optional: {}
deployments booleanDeployments enables access to deployment management features when set to true.
This includes viewing and managing application deployments, deployment history,
and deployment-related operations across the platform.
Optional: {}
repositories booleanRepositories enables access to Git repository management features when set to true.
This includes configuring source repositories, managing Git credentials,
and other repository-related operations for deployments.
Optional: {}
services booleanServices enables access to service management features when set to true.
This includes viewing service status, managing service configurations,
and performing service-level operations and troubleshooting.
Optional: {}
pipelines booleanPipelines enables access to CI/CD pipeline features when set to true.
This includes viewing pipeline status, managing pipeline configurations,
and triggering pipeline executions for automated deployments.
Optional: {}
providers booleanProviders enables access to cloud provider management features when set to true.
This includes managing cloud provider credentials, configuring provider settings,
and other provider-related operations for infrastructure management.
Optional: {}
addOns booleanAddOns enables access to Kubernetes add-on management features when set to true.
This includes installing, configuring, and managing cluster add-ons.
Optional: {}

PersonaFlows

PersonaFlows defines access controls for flow-related features and views. These settings determine which flow management capabilities are visible and accessible to users assigned to this persona.

Appears in:

FieldDescriptionDefaultValidation
permissions booleanPermissions enables the permissions action in the flow header when set to true.
This allows personas to manage flow permissions from the flow detail page.
Optional: {}
startWorkbenchJob booleanStartWorkbenchJob enables the "Start workbench job" action in the flow header when set to true.
This allows personas to launch workbench jobs directly from the flow detail page.
Optional: {}
workbenches booleanWorkbenches enables access to flow workbench features when set to true.
This includes viewing and using workbenches associated with flows.
Optional: {}
pipelines booleanPipelines enables access to flow pipeline features when set to true.
This includes viewing and managing pipelines associated with flows.
Optional: {}
previews booleanPreviews enables access to flow preview environment features when set to true.
This includes viewing and managing preview environments associated with flows.
Optional: {}

PersonaHome

PersonaHome defines homepage customization settings for different persona roles. The homepage can be configured to emphasize different aspects of the system based on the user's primary responsibilities and information needs.

Appears in:

FieldDescriptionDefaultValidation
manager booleanManager enables management-focused homepage content when set to true.
This typically includes high-level dashboards, cost summaries, compliance status,
and other information relevant to engineering managers and leadership roles.
Optional: {}
security booleanSecurity enables security-focused homepage content when set to true.
This includes security alerts, compliance reports, vulnerability summaries,
and other security-related metrics and dashboards.
Optional: {}

PersonaServices

PersonaServices defines access controls for service-related features and operations. These settings control which service management capabilities are available to users assigned to this persona, enabling role-based access to sensitive operations.

Appears in:

FieldDescriptionDefaultValidation
secrets booleanSecrets enables access to service secrets management when set to true.
This includes viewing, creating, and modifying secrets associated with services.
Typically restricted to platform engineers and senior developers who need
to manage service authentication and configuration secrets.
Optional: {}
configuration booleanConfiguration enables access to service configuration management when set to true.
This includes modifying service deployment settings, environment variables,
and other configuration parameters that affect service behavior.
Optional: {}

PersonaSettings

PersonaSettings defines the visibility of tabs on the Console settings page.

Appears in:

FieldDescriptionDefaultValidation
userManagement booleanOptional: {}
global booleanOptional: {}
ai booleanOptional: {}
webhooks booleanOptional: {}
chatbots booleanOptional: {}
cloudConnections booleanOptional: {}
projects booleanOptional: {}
notifications booleanOptional: {}
audits booleanOptional: {}
accessTokens booleanOptional: {}

PersonaSidebar

PersonaSidebar defines which navigation items and sections are visible in the main Console sidebar. These settings allow personas to have customized navigation focused on their primary workflows while hiding irrelevant or restricted functionality from the user interface.

Appears in:

FieldDescriptionDefaultValidation
cd booleanCD enables access to the Plural Continuous Deployment tab when set to true.
This is the entry point for clusters, services, pipelines, and other deployment
management views. Use the Deployments configuration to control the individual
views within it.
Optional: {}
audits booleanAudits enables access to audit logs and compliance reporting features when set to true.
This includes viewing system audit trails, user activity logs, and compliance reports.
Typically enabled for security teams and compliance officers.
Optional: {}
kubernetes booleanKubernetes enables access to direct Kubernetes management features when set to true.
This includes raw Kubernetes resource management, kubectl-like operations,
and low-level cluster administration tasks.
Optional: {}
pullRequests booleanPullRequests enables access to pull request management features when set to true.
This includes viewing and managing pull requests and Git-based deployment automation features.
Optional: {}
flows booleanFlows enables access to the flows navigation item when set to true.
This includes viewing and managing flow resources from the main sidebar.
Optional: {}
workbenches booleanWorkbenches enables access to the workbenches navigation item when set to true.
This includes viewing and managing workbenches from the main sidebar.
Optional: {}
settings booleanSettings enables access to system configuration and administrative settings when set to true.
This includes user management, system configuration, integration settings,
and other administrative functions. Typically restricted to administrators.
Optional: {}
backups booleanBackups enables access to backup and restore management features when set to true.
This includes configuring backup policies, managing backup storage,
and performing restore operations for disaster recovery.
Optional: {}
stacks booleanStacks enables access to Infrastructure as Code (IaC) stack management when set to true.
This includes managing Terraform stacks and other IaC
automation tools for infrastructure provisioning and management.
Optional: {}
security booleanSecurity enables access to security management features when set to true.
This includes security scanning results, vulnerability management,
policy enforcement, and other security-related tools and dashboards.
Optional: {}
cost booleanCost enables access to cost management and optimization features when set to true.
This includes cost tracking or resource optimization recommendations.
Optional: {}
ai booleanAI enables access to the Plural AI tab when set to true.
This includes AI insights, chat threads, and other AI-driven investigation tools.
Use the AI configuration to control individual AI capabilities within it.
Optional: {}

PersonaSpec

PersonaSpec defines the desired state of Persona. It specifies the role-based configuration, UI customizations, and access controls that define how the Console interface appears and behaves for users assigned to this persona.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for this persona.
If not provided, the name from the resource metadata will be used.
Optional: {}
description stringDescription provides a detailed explanation of this persona's purpose and intended users.
This helps administrators understand which teams or roles should be assigned to this persona
and what kind of experience it provides. Examples might describe responsibilities like
"Platform engineers managing infrastructure" or "Developers deploying applications".
Optional: {}
role PersonaRoleRole defines the primary responsibility area for users assigned to this persona.
This controls the default homepage layout and highlights relevant features.
Different roles provide different perspectives on the same underlying data,
optimized for specific workflows and responsibilities.
Optional: {}
configuration PersonaConfigurationConfiguration contains detailed UI customization settings for this persona.
These settings are additive across multiple personas assigned to a user,
allowing for flexible permission combinations while maintaining role-based defaults.
Optional: {}
bindings Binding arrayBindings define which users and groups are assigned to this persona.
Users can be assigned to multiple personas, with permissions being additive.
This enables flexible role combinations while maintaining clear base configurations.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

Pipeline

Pipeline automates Service Deployments across environments by promoting git-based changes through defined stages. It models multi-stage deployment pipelines with support for approval and job gates, offering safe, customizable delivery flows. Integrates with continuous deployment systems by enabling declarative configuration of deployment flows, including gating, promotions, and service progression.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringPipeline
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PipelineSpec

PipelineContext

PipelineContext provides a variable context mechanism for pipelines. It stores a context map that gets passed to the pipeline to enable advanced automation workflows.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringPipelineContext
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PipelineContextSpec

PipelineContextSpec

PipelineContextSpec defines the desired state of the PipelineContext.

Appears in:

FieldDescriptionDefaultValidation
pipelineRef ObjectReferencePipelineRef references the Pipeline this context will be applied to.Optional: {}
context RawExtensionContext is a templated context map that will be passed to the pipeline.
This context can contain variables, configuration data, and other information needed.
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

PipelineEdge

PipelineEdge defines the flow of execution between stages, controlling promotion paths and enabling attachment of gates for additional validation and approval.

Appears in:

FieldDescriptionDefaultValidation
fromId stringFromID is stage ID the edge is from, can also be specified by name.Optional: {}
Type: string
toId stringToID is stage ID the edge is to, can also be specified by name.Optional: {}
Type: string
from stringFrom is the name of the pipeline stage this edge emits from.Optional: {}
Type: string
to stringTo is the name of the pipeline stage this edge points to.Optional: {}
Type: string
gates PipelineGate arrayGates are any optional promotion gates you wish to configure.Optional: {}

PipelineGate

PipelineGate serves as a checkpoint between pipeline stages, enforcing promotion policies. Three gate types are supported: APPROVAL (human sign-off), WINDOW (time-based constraints), and JOB (custom validation jobs like tests or security scans).

Appears in:

FieldDescriptionDefaultValidation
name stringName of this gate.Required: {}
Type: string
type GateTypeType of gate.
One of:
- APPROVAL (requires human approval)
- WINDOW (time-based constraints),
- JOB (runs custom validation before allowing promotion).
- SENTINEL (runs a Plural Sentinel before allowing promotion).
Enum: [APPROVAL WINDOW JOB SENTINEL]
Required: {}
clusterRef ObjectReferenceClusterRef specifies the target cluster where this gate will execute.Optional: {}
cluster stringCluster is the handle of the target Cluster where this service will be deployed. Leave it empty to use the clusterRef field instead.Optional: {}
sentinelRef ObjectReferenceSentinelRef specifies the sentinel to execute for the SENTINEL gate.Optional: {}
spec GateSpecSpec contains detailed configuration for complex gate types like JOB gates.Optional: {}

PipelineSpec

PipelineSpec defines the desired state of the Pipeline.

Appears in:

FieldDescriptionDefaultValidation
stages PipelineStage arrayStages represent discrete steps in the deployment pipeline, such as environments (dev, staging, prod)
or specific deployment phases that services progress through.
edges PipelineEdge arrayEdges define the dependencies and flow between stages, controlling the execution order
and promotion path through the pipeline.
flowRef ObjectReferenceFlowRef provides contextual linkage to a broader application Flow this pipeline belongs within.Optional: {}
projectRef ObjectReferenceProjectRef references the project this pipeline belongs to.
If not provided, it will use the default project.
Optional: {}
bindings BindingsBindings contain read and write policies controlling access to this pipeline.Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

PipelineStage

PipelineStage represents a logical unit within the pipeline, typically corresponding to environments (e.g., dev, staging, prod) or specific deployment phases.

Appears in:

FieldDescriptionDefaultValidation
name stringName of this stage.Required: {}
Type: string
services PipelineStageService arrayServices deployed in this stage, including optional promotion criteria
that dictate when and how services advance to subsequent stages.

PipelineStageService

PipelineStageService defines a service within a pipeline stage and its promotion rules. This enables conditional promotions, a critical part of automating production deployments safely.

Appears in:

FieldDescriptionDefaultValidation
serviceRef ObjectReferenceServiceRef references the ServiceDeployment being deployed at this stage.
criteria PipelineStageServicePromotionCriteriaCriteria defines optional promotion rules that control when and how
this service is allowed to advance to the next stage.
Optional: {}

PipelineStageServicePromotionCriteria

PipelineStageServicePromotionCriteria defines actions to perform when promoting this service to the next stage, including source references and secrets to copy.

Appears in:

FieldDescriptionDefaultValidation
serviceRef ObjectReferenceServiceRef pointing to a source ServiceDeployment to promote from.Optional: {}
prAutomationRef ObjectReferencePrAutomationRef pointing to a source PrAutomation to promote from.Optional: {}
repository stringThe repository slug the PrAutomation will use.
E.g., pluralsh/console if PR is done against https://github.com/pluralsh/console.
Optional: {}
ai AiCriteriaAI configuration for this promotion.Optional: {}
connectionRef ObjectReferenceSCM connection to use for ai pr based service promotion.Optional: {}
secrets string arraySecrets to copy over in a promotion.Optional: {}

PluralSinkConfiguration

PluralSinkConfiguration defines settings for in-app notifications within Plural Console. These notifications appear in the Console interface and can be configured for priority and immediate email delivery based on urgency requirements.

Appears in:

FieldDescriptionDefaultValidation
priority NotificationPriorityPriority determines the importance level of notifications delivered through this sink.
Higher priority notifications may be displayed more prominently in the Console UI
and can influence notification filtering and display behavior.
Enum: [LOW MEDIUM HIGH]
Optional: {}
urgent booleanUrgent controls whether notifications should be immediately delivered via email.
When true, notifications sent to this sink will trigger immediate SMTP delivery
in addition to appearing in the Console UI, useful for critical alerts.
Optional: {}

Policy

Policy defines a reusable OPA policy that can be attached to resources via BindingPolicy. Policies contain the actual policy source text (Rego) along with metadata describing what type of resources they apply to (workbench, stack, or binding).

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringPolicy
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PolicySpecSpec reflects a Console API policy spec.Required: {}

PolicyEngine

PolicyEngine defines configuration for applying policy enforcement to a stack.

Appears in:

FieldDescriptionDefaultValidation
type PolicyEngineTypeType of the policy engine to use with this stack.
At the moment only TRIVY is supported.
Enum: [TRIVY]
Required: {}
customPolicies booleanCustomPolicies enables loading custom policies from the configured repository.Optional: {}
maxSeverity VulnSeverityMaxSeverity is the maximum allowed severity without failing the stack run.
One of UNKNOWN, LOW, MEDIUM, HIGH, CRITICAL, NONE.
Enum: [UNKNOWN LOW MEDIUM HIGH CRITICAL NONE]
Optional: {}
repositoryRef ObjectReferenceRepositoryRef references a GitRepository for policy configuration.
Leave unset when policies live in the stack repository, or use git.url instead of this ref.
Optional: {}
git GitRefGit is the ref and folder (within the policy repository or stack repository) for policy files.
If git.url is set, it resolves the repository in Console (same as the stack-level git field); ref and folder are still used for the API.
Optional: {}

PolicySpec

PolicySpec defines the desired state of a Policy.

Appears in:

FieldDescriptionDefaultValidation
name stringName is the unique policy name in the Console API.
Defaults to metadata.name if not specified.
Optional: {}
description stringDescription provides a human-readable explanation of this policy's purpose.Optional: {}
type PolicyTypeType specifies what kind of resource this policy applies to.
Valid values: WORKBENCH, STACK, BINDING.
Optional: {}
policy stringPolicy contains the actual policy source text (e.g. Rego for OPA policies).Optional: {}
projectRef ObjectReferenceProjectRef links this policy to a specific project.
When set, the policy is scoped to that project.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

PrAutomation

PrAutomation provides a self-service mechanism for generating pull requests against IaC repositories. It enables teams to create standardized, templated PRs for common operations like cluster upgrades, service deployments, and configuration changes. Each automation defines the files to modify, the changes to make (via regex replacement, YAML overlays, or file creation), and provides a UI wizard for users to configure parameters before generating the PR.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringPrAutomation
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PrAutomationSpecSpec defines the desired state of the PrAutomation, including the operations
to perform, target repository, and user interface configuration.
Required: {}

PrAutomationAIConfiguration

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled controls whether AI assistance is enabled for this PR automation.Optional: {}
prompt stringPrompt is a custom prompt to guide AI-generated updates for this automation. Templating is supported.Required: {}

PrAutomationBindings

PrAutomationBindings defines access control for PR automation resources.

Appears in:

FieldDescriptionDefaultValidation
create Binding arrayCreate bindings.Optional: {}
write Binding arrayWrite bindings.Optional: {}

PrAutomationConfiguration

PrAutomationConfiguration defines a single input field in the self-service UI form.

Appears in:

FieldDescriptionDefaultValidation
name stringName is the identifier for this configuration field, used as a template variable
and as the form field name in the UI.
Required: {}
type ConfigurationTypeType specifies the input type for this field, determining how it's rendered
in the UI and what validation is applied.
Enum: [STRING INT BOOL JSON PASSWORD ENUM CLUSTER PROJECT GROUP USER FLOW]
Required: {}
condition ConditionCondition defines when this field should be displayed based on the values
of other fields, enabling dynamic forms that adapt to user input.
Optional: {}
default stringDefault provides a default value for this field.Optional: {}
documentation stringDocumentation provides help text or description for this field to guide users in providing the correct input.Optional: {}
longform stringLongform provides extended documentation or detailed explanation for complex configuration fields.Optional: {}
displayName stringDisplayName provides a human-readable label for this field in the UI.
If not provided, the Name field is used as the display label.
Optional: {}
optional booleanOptional indicates whether this field is required (false) or optional (true) for PR generation.
Required fields must be filled by the user.
Optional: {}
page integerPage specifies the page to use for the pr configuration in the Plural web configuration wizardOptional: {}
placeholder stringPlaceholder text to show in the input field to guide users on the expected format or content.Optional: {}
validation PrAutomationConfigurationValidationValidation defines additional validation rules to apply to user input before allowing PR generation.Optional: {}
values string arrayValues provides the list of allowed values for ENUM type fields, creating a dropdown selection in the UI.Optional: {}

PrAutomationConfigurationValidation

PrAutomationConfigurationValidation defines validation rules for configuration field inputs.

Appears in:

FieldDescriptionDefaultValidation
regex stringA regex to match string-valued configuration itemsOptional: {}
json booleanWhether the string value is supposed to be json-encodedOptional: {}
uniqBy PrAutomationUniqByHow to determine uniquenss for this fieldOptional: {}

PrAutomationConfirmation

PrAutomationConfirmation defines additional verification steps before PR generation.

Appears in:

FieldDescriptionDefaultValidation
text stringText in Markdown to explain this PR.Optional: {}
checklist PrConfirmationChecklist arrayChecklist to present to confirm each prerequisite is satisfied.Optional: {}

PrAutomationCreateConfiguration

PrAutomationCreateConfiguration defines how to generate new files from templates during PR creation.

Appears in:

FieldDescriptionDefaultValidation
git GitRefGit location to source external files from.Optional: {}
templates PrAutomationTemplate arrayTemplate files to use to generate file contentOptional: {}

PrAutomationDeleteConfiguration

PrAutomationDeleteConfiguration specifies files and folders to delete as part of the PR operation.

Appears in:

FieldDescriptionDefaultValidation
files string arrayIndividual files to delete.Optional: {}
folders string arrayEntire folders to delete.Optional: {}

PrAutomationHelmVendorConfiguration

Appears in:

FieldDescriptionDefaultValidation
url stringThe url of the helm repository to useRequired: {}
chart stringThe name of the chart to useRequired: {}
version stringThe version of the chart to useRequired: {}
destination stringThe directory destination to place the chart inRequired: {}

PrAutomationLuaConfiguration

Appears in:

FieldDescriptionDefaultValidation
external booleanWhether the lua script is sourced from an external git repo bound to this automationOptional: {}
script stringFile of a flat script to useOptional: {}
folder stringFolder with lua library code and scripts to useOptional: {}

PrAutomationSecretConfiguration

Appears in:

FieldDescriptionDefaultValidation
cluster stringThe cluster handle that will hold this secret
namespace stringThe k8s namespace to place the secret in
name stringThe name of the secret
entries PrAutomationSecretEntry arrayThe entries of the secret

PrAutomationSecretEntry

Appears in:

FieldDescriptionDefaultValidation
name stringThe name of the secret entry
documentation stringThe documentation of the secret entry
autogenerate booleanWhether to autogenerate the secret entryOptional: {}

PrAutomationSpec

PrAutomationSpec defines the desired state of the PrAutomation.

Appears in:

FieldDescriptionDefaultValidation
role PrRoleEnum: [CLUSTER SERVICE PIPELINE UPDATE UPGRADE COST]
Optional: {}
addon stringAddon links this automation to a specific add-on name.Optional: {}
branch stringBranch specifies the base branch this PR will be created from. If not provided,
defaults to the repository's main branch (usually 'main' or 'master').
Optional: {}
icon stringIcon provides a URL to an icon image to visually represent this automation
in the user interface and catalogs.
Optional: {}
darkIcon stringDarkIcon provides a URL to a dark-mode variant of the icon for improved
visibility in dark-themed user interfaces.
Optional: {}
documentation stringDocumentation provides detailed explanation of what this automation does,
when to use it, and any prerequisites or considerations.
Optional: {}
identifier stringIdentifier specifies the target repository in the format "organization/repository-name"
for GitHub, or equivalent formats for other SCM providers.
Optional: {}
message stringMessage defines the commit message template that will be used in the generated PR.
Can include templated variables from user input. If you're using an AI pr automation, the ai can provide this for you.
Optional: {}
name stringName specifies the display name for this automation in the Console API.
If not provided, defaults to the Kubernetes resource name.
Optional: {}
title stringTitle defines the template for the pull request title. Can include variables
that will be replaced with user-provided configuration values. If you're using an AI pr automation, the ai can provide this for you.
Optional: {}
patch booleanPatch determines whether to generate a patch for this PR instead of
creating a full pull request.
Optional: {}
branchPrefix stringBranchPrefix specifies a prefix to use for the branch name, will be appended with a random string for deduplication.Optional: {}
clusterRef ObjectReferenceClusterRef references a specific cluster that this PR operates on.Optional: {}
cluster stringCluster is the handle of the target Cluster where this service will be deployed. Leave it empty to use the clusterRef field instead.Optional: {}
scmConnectionRef ObjectReferenceScmConnectionRef references the SCM connection to use for authentication when creating pull requests.Required: {}
repositoryRef ObjectReferenceRepositoryRef references a Git repository resource this automation uses.Optional: {}
git GitRefGit location to source external files from. If creates.git is also specified, the results will be merged.Optional: {}
serviceRef ObjectReferenceServiceRef references a specific service that this PR automation acts upon.Optional: {}
projectRef ObjectReferenceProjectRef references the project this automation belongs to, enabling
project-scoped organization and access control.
Optional: {}
catalogRef ObjectReferenceCatalogRef references the catalog this automation belongs to for
organizational purposes and discoverability in the service catalog.
Optional: {}
bindings PrAutomationBindingsBindings containing read and write policies of PR automation.Optional: {}
configuration PrAutomationConfiguration arrayConfiguration defines the self-service UI form fields that users fill out
to customize the generated PR. Each field can be templated into the PR content.
Optional: {}
secrets PrAutomationSecretConfigurationConfiguration for setting a secret as part of this pr. This will usually be used by k8s manifests defined and is
securely handled by our api with RBAC validation.
Optional: {}
confirmation PrAutomationConfirmationConfirmation specifies additional verification steps or information to present
to users before they can generate the PR, ensuring prerequisites are met.
Optional: {}
creates PrAutomationCreateConfigurationCreates defines specifications for generating new files from templates,
allowing the automation to add new configuration files to the repository.
Optional: {}
updates PrAutomationUpdateConfigurationUpdates specifies how to modify existing files using regex replacements
or YAML overlays, enabling precise changes to infrastructure code.
Optional: {}
deletes PrAutomationDeleteConfigurationDeletes specifies files and folders to remove from the repository as part
of the PR, useful for cleanup or migration scenarios.
Optional: {}
ai PrAutomationAIConfigurationAI configuration controls whether AI assistance is enabled for this automation
and allows specifying a custom prompt to guide AI-generated updates.
Optional: {}
lua PrAutomationLuaConfigurationLua specification to source lua scripts to preprocess the PR automation.Optional: {}
vendor PrAutomationVendorConfigurationSoftware vendoring logic to perform in this PROptional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}
proxy HttpProxyConfigurationConfigures usage of an HTTP proxy for all requests involving this PR automation, usually needed for the vendoring to external repositories.Optional: {}
labels string arrayLabels to apply to all created PRs from this pr automationOptional: {}

PrAutomationTemplate

PrAutomationTemplate defines a single file template for creating new files in the target repository.

Appears in:

FieldDescriptionDefaultValidation
destination stringThe destination to write the file toRequired: {}
external booleanWhether it is being sourced from an external git repositoryRequired: {}
source stringThe source file to use for templatingOptional: {}
context RawExtensionAdditional context overrides to apply to this template, will be merged into the user-provided configuration optionsOptional: {}
condition stringCondition string that will be evaluated to determine if source files should be copied or not.Optional: {}

PrAutomationTrigger

PrAutomationTrigger initiates the execution of a PR automation with specific parameters. This resource enables automated, event-driven, or scheduled generation of pull requests by providing configuration context and branch information to an existing PrAutomation.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringPrAutomationTrigger
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PrAutomationTriggerSpecSpec defines the desired state of the PrAutomationTrigger, including
the target automation, branch name, and configuration context.

PrAutomationTriggerSpec

PrAutomationTriggerSpec defines the desired state of PrAutomationTrigger. A trigger executes a specific PR automation with custom configuration and branch settings, enabling programmatic and event-driven generation of pull requests for infrastructure changes.

Appears in:

FieldDescriptionDefaultValidation
prAutomationRef ObjectReferencePrAutomationRef points to the source PrAutomation resource that defines
the templates, operations, and target repository for the generated PR.
Optional: {}
branch stringBranch specifies the name of the branch that should be created for this PR
against the PrAutomation's configured base branch. This allows multiple
triggers to operate on the same automation without conflicts.
Required: {}
context RawExtensionContext provides the configuration values that will be used to template
the PR content, file modifications, and metadata. This should match the
configuration schema defined in the referenced PrAutomation.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

PrAutomationUniqBy

Appears in:

FieldDescriptionDefaultValidation
scope ValidationUniqScopeEnum: [PROJECT CLUSTER]
Required: {}

PrAutomationUpdateConfiguration

PrAutomationUpdateConfiguration defines how to modify existing files in the target repository.

Appears in:

FieldDescriptionDefaultValidation
files string arrayFiles to update.Optional: {}
matchStrategy MatchStrategyMatchStrategy, see enum for behavior.Optional: {}
regexReplacements RegexReplacement arrayFull regex + replacement structs in case there is different behavior per regexOptional: {}
yamlOverlays YamlOverlay arrayReplacement via overlaying a yaml structure on an existing yaml fileOptional: {}
regexes string arrayRegexes to apply on each file.Optional: {}
replaceTemplate stringReplaceTemplate is a template to use when replacing a regex.Optional: {}
yq stringYq (unused so far)Optional: {}

PrAutomationVendorConfiguration

Appears in:

FieldDescriptionDefaultValidation
helm PrAutomationHelmVendorConfigurationSpecification for vendoring a helm chartOptional: {}

PrConfirmationChecklist

PrConfirmationChecklist represents a checkbox to render to confirm a PR prerequisite is satisfied.

Appears in:

FieldDescriptionDefaultValidation
label stringThe label of this checkbox

PrGovernance

PrGovernance defines governance rules and policies for pull request management within Plural Console. It enforces organizational policies, approval workflows, and compliance requirements for pull requests created through PR automations.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringPrGovernance
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PrGovernanceSpecSpec defines the desired state of the PrGovernance, including governance rules,
webhook configurations, and SCM integration settings for pull request management.

PrGovernanceConfiguration

PrGovernanceConfiguration defines the configuration settings for PR governance enforcement. It specifies the mechanisms and integrations used to implement governance policies for pull requests managed through Plural Console automations.

Appears in:

FieldDescriptionDefaultValidation
webhook PrGovernanceWebhookWebhook defines webhook integration settings for governance enforcement.
This enables the governance controller to receive notifications about pull request
events and respond with appropriate policy enforcement actions such as requiring
additional approvals, running compliance checks, or blocking merges.
Optional: {}
serviceNow PrGovernanceServiceNowServiceNow defines ServiceNow change request integration for PR governance.
When set, PRs will require a ServiceNow change request to be opened and approved
before merge. The password is read from the referenced Secret.
Optional: {}

PrGovernanceServiceNow

PrGovernanceServiceNow defines ServiceNow integration for PR governance. PRs governed by this configuration will create and manage ServiceNow change requests.

Appears in:

FieldDescriptionDefaultValidation
url stringUrl is the ServiceNow instance URL (e.g. https://instance.service-now.com).Required: {}
changeModel stringChangeModel is the change request model/type (e.g. "Standard"). If empty, "Standard" is used.
We currently support the built-in ILI4 models, such as Standard, Normal, and Emergency.
Optional: {}
username stringUsername is the ServiceNow API username for authentication.Required: {}
passwordSecretKeyRef SecretKeySelectorPasswordSecretKeyRef references a key in a Secret containing the ServiceNow API password.
For namespaced PrGovernance the secret is read from the same namespace; for cluster-scoped
PrGovernance set SecretNamespace to the namespace where the secret lives.
Required: {}
secretNamespace stringSecretNamespace is the namespace of the secret referenced by PasswordSecretKeyRef.Optional: {}
attributes RawExtensionAttributes is optional JSON passed as additional attributes when creating change requests.
Not all change attributes need to be provided, we will auto-fill basics like description, implementation plan, backout plan, test plan, etc using AI if not provided.
Optional: {}

PrGovernanceSpec

PrGovernanceSpec defines the desired state of PrGovernance. It specifies governance rules, approval workflows, and integration settings for managing pull requests created through Plural Console automations.

Appears in:

FieldDescriptionDefaultValidation
type PrGovernanceTypeType specifies the type of PR governance controller to use.Enum: [WEBHOOK SERVICE_NOW]
Required: {}
name stringName specifies the name for this PR governance controller.
If not provided, the name from the resource metadata will be used.
Optional: {}
connectionRef ObjectReferenceConnectionRef references an ScmConnection to reuse its credentials for this governance controller's authentication.Required: {}
configuration PrGovernanceConfigurationConfiguration contains the specific governance settings and rules to enforce on pull requests.
This includes webhook configurations, approval requirements, and other policy enforcement
mechanisms that control how pull requests are managed and processed.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

PrGovernanceWebhook

PrGovernanceWebhook defines webhook configuration for external governance system integration. This enables the PR governance controller to integrate with external approval systems, compliance platforms, or custom governance workflows that need to be notified about or control pull request lifecycle events.

Appears in:

FieldDescriptionDefaultValidation
url stringUrl specifies the HTTP endpoint where governance webhook notifications should be sent.
This URL will receive webhook payloads containing pull request information and governance
context, allowing external systems to implement custom approval workflows, compliance
checks, or other governance processes. The endpoint should be accessible and configured
to handle the webhook payload format expected by the governance system.
Required: {}

PreviewEnvironmentTemplate

PreviewEnvironmentTemplate automates the creation of temporary preview environments for pull requests. It defines how to clone and customize existing services when pull requests are opened, enabling developers to test changes in isolated environments before merging. This is particularly useful for feature branches, bug fixes, or any changes that need validation in a running environment. Common use cases include creating preview environments for web applications, API services, or microservices where visual or functional testing is needed before code review approval.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringPreviewEnvironmentTemplate
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec PreviewEnvironmentTemplateSpecSpec defines the desired state of the PreviewEnvironmentTemplate, including the reference service
to clone, customization template, and integration settings for pull request workflows.

PreviewEnvironmentTemplateSpec

PreviewEnvironmentTemplateSpec defines the desired state of PreviewEnvironmentTemplate. It specifies how to create preview environments by cloning an existing service with customizations, enabling automated testing environments for pull requests and feature development.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for this preview environment template.
If not provided, the name from the resource metadata will be used.
Optional: {}
commentTemplate stringCommentTemplate provides a liquid template for generating custom PR comments.
This template can include dynamic information about the preview environment such as
URLs, deployment status, or custom instructions for reviewers. Variables from the
service template and environment can be interpolated into the comment.
Optional: {}
previewTtl stringPreviewTTL specifies how long preview environments created from this template should live,
as a Kubernetes duration (e.g. 1d, 12h, 30m). If omitted, the Console default is used.
Optional: {}
scmConnectionRef ObjectReferenceScmConnectionRef references the source control management connection to use for PR operations.
This connection is used to post comments on pull requests with preview environment information
and to trigger environment creation based on PR events.
Optional: {}
referenceServiceRef ObjectReferenceReferenceServiceRef specifies the existing service deployment to use as a template.
This service will be cloned and customized according to the Template configuration
to create preview environments. The referenced service should be a stable, working
deployment that represents the base configuration for preview environments.
Required: {}
flowRef ObjectReferenceFlowRef references the flow that owns and manages this preview environment template.
The flow defines the overall workflow and permissions for creating and managing
preview environments based on this template.
Required: {}
template ServiceTemplateTemplate defines the service configuration overrides and customizations to apply
when cloning the reference service for preview environments. This includes
namespace changes, configuration overrides, and any other modifications needed
to create isolated preview environments.
Required: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

Project

Project provides organizational segmentation and multi-tenancy capabilities within Plural Console. It serves as a unit of an organization to control permissions for sets of resources, enabling enterprise-grade fleet management while maintaining security boundaries. Projects allow resource owners to manage their domain without accessing resources outside their scope, supporting principles of least privilege and preventing credential sprawl across the entire fleet.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringProject
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ProjectSpecSpec reflects a Console API project spec.Required: {}

ProjectSpec

ProjectSpec defines the desired state of a Project.

Appears in:

FieldDescriptionDefaultValidation
name stringName of the project.Required: {}
Type: string
description stringDescription provides a human-readable explanation of this project's purpose
and the resources it manages within the organizational hierarchy.
Optional: {}
Type: string
disableInsights booleanDisableInsights indicates whether to disable AI insights and vector storage for this project.Optional: {}
bindings BindingsBindings contain read and write policies that control access to all resources
within this project, enabling fine-grained permission management and multi-tenancy.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

PulumiConfiguration

Appears in:

FieldDescriptionDefaultValidation
parallel integerParallel is the number of resource operations to run concurrently,
equivalent to the --parallel flag in pulumi preview, up, and destroy.
Optional: {}
refresh booleanRefresh is whether to refresh the state of the stack,
equivalent to the --refresh flag in pulumi preview, up, and destroy.
Optional: {}
approveEmpty booleanApproveEmpty is whether to auto-approve a plan if there are no changes, preventing a stack from being blocked.Optional: {}
stack stringStack is the pulumi stack name to operate on,
equivalent to the --stack flag in pulumi preview, up, and destroy.
Optional: {}
backendUrl stringBackendUrl is an opaque URL passed to pulumi login for the state backend. When omitted, Pulumi Cloud is used.
It supports self-hosted Pulumi Cloud, S3, GCS, Azure Blob, and other Pulumi-supported login URLs.
Optional: {}

Reconciliation

Reconciliation parameters for a specific resource.

Appears in:

FieldDescriptionDefaultValidation
driftDetection booleanDriftDetection enables drift detection for this resource.
It is destined to detect changes made to the related
resources that are not referenced with owner ref.
Use with Interval to set how often drift detection runs.
trueOptional: {}
interval stringInterval for the drift detection mechanism.
It is subject to jitter to avoid the thundering herd problem,
it is calculated as a random value between 50% and 150% of the given duration.
30mOptional: {}
Type: string

RegexReplacement

RegexReplacement defines a specific find-and-replace operation using regular expressions.

Appears in:

FieldDescriptionDefaultValidation
regex stringRegex to match a substring on.Required: {}
file stringFile this replacement will work on.Required: {}
replacement stringReplacement to be substituted for the match in the regex.Required: {}
templated booleanTemplated indicates whether you want to apply templating to the regex before compiling.Optional: {}

Renderer

Appears in:

FieldDescriptionDefaultValidation
path stringPath is the path to the renderer works under.Required: {}
type RendererTypeType is the type of renderer to use.Enum: [AUTO RAW HELM KUSTOMIZE]
Required: {}
helm HelmMinimalHelm is the Helm configuration to use for this renderer, use if path points to a helm chart and you want to override the default helm configuration.Optional: {}

RouterFilters

RouterFilters defines filtering criteria for routing events to notification destinations. Filters can be based on regex patterns, resource associations, or combinations thereof.

Appears in:

FieldDescriptionDefaultValidation
regex stringRegex specifies a regular expression pattern for filtering events based on content.
This can be used to filter events by URLs, resource names, error messages, or any
other textual content within the event data. Use standard regex syntax.
Optional: {}
serviceRef ObjectReferenceServiceRef filters events to only those associated with a specific service deployment.Optional: {}
clusterRef ObjectReferenceClusterRef filters events to only those associated with a specific cluster.Optional: {}
cluster stringCluster is the handle of the target Cluster where this service will be deployed. Leave it empty to use the clusterRef field instead.Optional: {}
pipelineRef ObjectReferencePipelineRef filters events to only those associated with a specific pipeline.Optional: {}

ScmConnection

ScmConnection is a container for credentials to a scm provider. You can also reference a SCM connection created in the Plural UI via the provider + name, leaving all other fields blank.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringScmConnection
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ScmConnectionSpecRequired: {}

ScmConnectionSpec

Appears in:

FieldDescriptionDefaultValidation
name stringName is a human-readable name of the ScmConnection.Required: {}
type ScmTypeType is the name of the scm service for the ScmConnection.
One of (ScmType): [GITHUB, GITLAB, AZURE_DEVOPS, BITBUCKET, BITBUCKET_DATACENTER]
Enum: [GITHUB GITLAB BITBUCKET AZURE_DEVOPS BITBUCKET_DATACENTER]
Required: {}
Type: string
tokenSecretRef SecretReferenceA secret containing this access token you will use, stored in the token data field.Optional: {}
username stringUsername ...Optional: {}
baseUrl stringBaseUrl is a base URL for Git clones for self-hosted versions.Optional: {}
apiUrl stringAPIUrl is a base URL for HTTP apis for shel-hosted versions if different from BaseUrl.Optional: {}
github ScmGithubConnectionSettings for configuring Github App authenticationOptional: {}
azure AzureDevopsSettingsSettings for configuring Azure DevOps authenticationOptional: {}
bitbucketDatacenter BitbucketDatacenterSettingsSettings for configuring Bitbucket Data Center / Server authenticationOptional: {}
proxy HttpProxyConfigurationConfigures usage of an HTTP proxy for all requests involving this SCM connection.Optional: {}
default booleanOptional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ScmGithubConnection

Appears in:

FieldDescriptionDefaultValidation
appId stringThe Github App ID to use for authentication (can be found on the Github Apps settings page)
installationId stringThe installation ID of your install of the Github App (found on the Github Apps section of your github repo/organization, located in the url path)
privateKeyRef SecretKeySelectorOptional: {}

Sentinel

Sentinel is the Schema for the sentinels API

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringSentinel
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec SentinelSpec

SentinelCheck

Appears in:

FieldDescriptionDefaultValidation
type SentinelCheckTypeType the type of check to run.Enum: [LOG KUBERNETES INTEGRATION_TEST]
name stringName the name of the check.
ruleFile stringRuleFile the rule file to use for this check.
configuration SentinelCheckConfigurationConfiguration the configuration to use for this check.

SentinelCheckConfiguration

Appears in:

FieldDescriptionDefaultValidation
log SentinelCheckLogConfigurationthe log configuration to use for this check
kubernetes SentinelCheckKubernetesConfigurationthe kubernetes configuration to use for this check
integrationTest SentinelCheckIntegrationTestConfigurationthe integration test configuration to use for this check

SentinelCheckGotestsumConfiguration

Appears in:

FieldDescriptionDefaultValidation
p stringthe value of the p flag for gotestsumOptional: {}
parallel stringthe value of the parallel flag for gotestsumOptional: {}

SentinelCheckIntegrationTestCase

Appears in:

FieldDescriptionDefaultValidation
type SentinelIntegrationTestCaseTypeType the type of test case to runEnum: [COREDNS LOADBALANCER RAW PVC]
name stringName the name of the test case
coredns SentinelCheckIntegrationTestCaseCorednsCoredns the coredns configuration to use for this test caseOptional: {}
loadbalancer SentinelCheckIntegrationTestCaseLoadbalancerLoadbalancer the load balancer configuration to use for this test caseOptional: {}
pvc SentinelCheckIntegrationTestCasePVCPVC the pvc configuration to use for this test caseOptional: {}
raw SentinelCheckIntegrationTestCaseRawRaw the raw configuration to use for this test caseOptional: {}

SentinelCheckIntegrationTestCaseCoredns

Underlying type: struct{DialFqdns []string "json:"dialFqdns,omitempty""; Delay *string "json:"delay,omitempty""; Retries *int64 "json:"retries,omitempty""}

Appears in:

SentinelCheckIntegrationTestCaseLoadbalancer

Underlying type: struct{Namespace string "json:"namespace""; NamePrefix string "json:"namePrefix""; Annotations map[string]string "json:"annotations,omitempty""; Labels map[string]string "json:"labels,omitempty""; DNSProbe *SentinelCheckIntegrationTestCaseDNSProbe "json:"dnsProbe,omitempty""}

Appears in:

SentinelCheckIntegrationTestCasePVC

Underlying type: struct{NamePrefix string "json:"namePrefix""; Size string "json:"size""; StorageClass string "json:"storageClass""}

Appears in:

SentinelCheckIntegrationTestCaseRaw

Underlying type: struct{Yaml k8s.io/apimachinery/pkg/runtime.RawExtension "json:"yaml""; ExpectedResult *github.com/pluralsh/console/go/client.SentinelRawResult "json:"expectedResult,omitempty""}

Appears in:

SentinelCheckIntegrationTestConfiguration

Appears in:

FieldDescriptionDefaultValidation
format SentinelRunJobFormatthe test output format of the jobEnum: [PLAINTEXT JUNIT]
Required: {}
jobSpec JobSpecThe job to run for this check. We expect there to at least be one container named default that includes the sentinel go test code. It's also recommended to not allow retries on the job.Optional: {}
gotestsum SentinelCheckGotestsumConfigurationthe configuration for the gotestsum test runner for this checkOptional: {}
distro ClusterDistrothe distro to run the check onEnum: [GENERIC EKS AKS GKE RKE K3S OPENSHIFT]
Optional: {}
tags object (keys:string, values:string)the cluster tags to select where to run this jobOptional: {}
rerunFailures booleanRerunFailures when true, failed tests will be rerun (e.g. to reduce flakiness). Defaults to false.Optional: {}
rerunFailuresCount integerRerunFailuresCount is the number of times to rerun failed tests when RerunFailures is true. Defaults to 2.Optional: {}
postrunScript stringPostrunScript is a script to run after the integration test job completes.Optional: {}
repositoryRef ObjectReferenceRepositoryRef references a Git repository to use for this integration test.Optional: {}
git GitRefThe git location to use for this integration test.Optional: {}
default SentinelCheckIntegrationTestDefaultDefault configures default test cases and global behavior (e.g. namespace labels and annotations for created resources).Optional: {}
cases SentinelCheckIntegrationTestCase arrayA list of custom test cases to run for this check. These can provide yaml-configurable targeted cases of things like coredns, load balancers, pvcs, etc.Optional: {}

SentinelCheckIntegrationTestDefault

SentinelCheckIntegrationTestDefault configures default integration test behavior: built-in test cases and labels/annotations applied to created namespaces and deployments.

Appears in:

FieldDescriptionDefaultValidation
ignore booleanIgnore disables default integration test cases, useful if you'd prefer to just use custom test cases exclusively.Optional: {}
namespaceLabels object (keys:string, values:string)NamespaceLabels labels to apply to created namespaces (test cases run in temporary namespaces to ensure cleanup is seamless).Optional: {}
namespaceAnnotations object (keys:string, values:string)NamespaceAnnotations annotations to apply to created namespaces (test cases run in temporary namespaces to ensure cleanup is seamless).Optional: {}
registry stringRegistry container image registry for test deployments. Image names an tags will still be preservedOptional: {}
resourceAnnotations object (keys:string, values:string)ResourceAnnotations annotations to apply to test resources within a namespace (this is useful if you need to sidestep policy enforcement for test resources).Optional: {}
resourceLabels object (keys:string, values:string)ResourceLabels labels to apply to test resources within a namespace (this is useful if you need to sidestep policy enforcement for test resources).Optional: {}

SentinelCheckKubernetesConfiguration

Appears in:

FieldDescriptionDefaultValidation
group stringGroup to use when fetching this resource.
version stringVersion the api version to use when fetching this resource.
kind stringKind the kind to use when fetching this resource.
name stringName to use when fetching this resource.
namespace stringNamespace to use when fetching this resource
clusterRef ObjectReferenceClusterRef the cluster to run the query againstRequired: {}

SentinelCheckLogConfiguration

Appears in:

FieldDescriptionDefaultValidation
namespaces string arrayNamespaces the namespaces to run the query against.
query stringQuery a search query this will run against the logs.
clusterRef ObjectReferenceClusterRef the cluster to run the query against.
duration stringDuration of the log analysis run.
facets object (keys:string, values:string)Facets the log facets to run the query against.

SentinelRunOverrides

SentinelRunOverrides defines ad-hoc overrides applied when triggering a sentinel run.

Appears in:

FieldDescriptionDefaultValidation
tags object (keys:string, values:string)Tags are merged into integration test checks for this run.Optional: {}

SentinelSpec

SentinelSpec defines the desired state of Sentinel

Appears in:

FieldDescriptionDefaultValidation
name stringName of this Sentinel.
If not provided, the name from Sentinel.ObjectMeta will be used.
Optional: {}
description stringDescription provides a human-readable explanation of what this Sentinel.
crontab stringCrontab defines a schedule at which sentinels will automatically run. Can be left empty to run manually or via the API.
Examples: "0 */6 * * " (every 6 hours), "/15 * * * *" (every 15 minutes).
Optional: {}
repositoryRef ObjectReferenceRepositoryRef references a Git repository.Optional: {}
projectRef ObjectReferenceProjectRef references the project this object belongs to, enabling
project-scoped organization and access control.
Optional: {}
git GitRefThe git location to use for this sentinel.
checks SentinelCheck array
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

SentinelTrigger

SentinelTrigger is the Schema for the sentinel triggers API

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringSentinelTrigger
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec SentinelTriggerSpec

SentinelTriggerSpec

SentinelTriggerSpec defines the desired state of SentinelTrigger

Appears in:

FieldDescriptionDefaultValidation
sentinelRef ObjectReferenceSentinelRef is a reference to the Sentinel resource.Required: {}
overrides SentinelRunOverridesOverrides are applied when triggering the sentinel run.Optional: {}

ServiceAccount

ServiceAccount provides a programmatic identity for automated processes and tools to interact with the Plural Console API. Unlike user accounts, service accounts are designed for non-human authentication and can be scoped to specific APIs and resources for secure, limited access. This enables to authenticate and perform operations within defined permissions boundaries.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringServiceAccount
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ServiceAccountSpecSpec defines the desired state of the ServiceAccount, including email identity
and scope restrictions for API access control.
Required: {}

ServiceAccountScope

ServiceAccountScope defines access restrictions for a service account, allowing fine-grained control over which Console APIs and resources can be accessed. This enables implementing least-privilege principles for automated systems.

Appears in:

FieldDescriptionDefaultValidation
api stringAPI specifies a single Console API endpoint name that this service account
should be scoped to, such as 'service.write' or 'cluster.read'.
Optional: {}
apis string arrayApis is a list of Console API endpoint names that this service account
should be scoped to.
Optional: {}
identifier stringIdentifier specifies a resource ID in the Console API that this service
account should be scoped to. Leave blank or use '*' to scope to all resources
within the specified API endpoints.
Optional: {}
ids string arrayIds is a list of Console API resource IDs that this service account should
be scoped to.
Optional: {}

ServiceAccountSpec

ServiceAccountSpec defines the desired state of the ServiceAccount.

Appears in:

FieldDescriptionDefaultValidation
email stringEmail address that will be bound to this service account for identification
and authentication purposes. This email serves as the unique identifier
for the service account within the Console API.
Required: {}
Type: string
allowedScopes string arrayAllowedScopes define the Console API endpoints that can be granted to access
tokens created for this service account. An empty list imposes no restriction.
Optional: {}
scopes ServiceAccountScope arrayScopes define the access boundaries for this service account, controlling
which Console APIs and resources it can interact with. Each scope can restrict
access to specific API endpoints and resource identifiers, enabling fine-grained
permission control for automated processes.
Optional: {}
tokenExpiry stringTokenExpiry is the TTL of the access token, e.g. 1h, 1d, 1wOptional: {}
tokenSecretRef SecretReferenceTokenSecretRef references a Kubernetes secret that should contain the
authentication token for this service account. This enables secure storage
and management of credentials within the cluster.
Optional: {}
assumeBindings Binding arrayAssumeBindings define which users and groups can assume this service account.Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ServiceComponent

Appears in:

FieldDescriptionDefaultValidation
id string
name stringName is the name of the Kubernetes resource, e.g. "test-deployment" or "test-job".
group stringGroup is a Kubernetes resource group, e.g. "apps" or "batch".Optional: {}
version stringVersion is the Kubernetes resource version, e.g. "v1" or "v1beta1".Optional: {}
kind stringKind is the Kubernetes resource kind, e.g. "Deployment" or "Job".
namespace stringNamespace is the Kubernetes namespace where this component is deployed.Optional: {}
state ComponentStateState specifies the component state.
One of RUNNING, PENDING, FAILED.
Enum: [RUNNING PENDING FAILED]
Optional: {}
synced booleanSynced indicates whether this component is in sync with the desired state.

ServiceContext

ServiceContext provides a reusable bundle of configuration. It enables sharing configuration data across multiple services. This is particularly useful for passing outputs from infrastructure-as-code tools to Kubernetes services.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringServiceContext
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ServiceContextSpec

ServiceContextSpec

ServiceContextSpec defines the desired state of the ServiceContext.

Appears in:

FieldDescriptionDefaultValidation
name stringName of this service context.
If not provided, the name from ServiceContext.ObjectMeta will be used.
Optional: {}
configuration RawExtensionConfiguration is a reusable configuration context that can include any JSON-compatible configuration data
that needs to be shared across multiple services.
configMapRef ObjectReferenceConfigMapRef references a ConfigMap containing configuration data to merge into the Configuration.
The keys and values from the ConfigMap will be merged into the Configuration JSON.
ConfigMapRef and ConfigMapRefs are mutually exclusive.
Optional: {}
configMapRefs ConfigMapReference arrayConfigMapRefs references ConfigMaps containing configuration data to merge into the Configuration.
Sources are processed in order and later sources overwrite earlier values at the same top-level key.
A scoped source is placed under its scope key while an unscoped source merges its keys at the top level.
Optional: {}
secretRef SecretReferenceSecretRef references a Secret containing configuration data to merge into the Configuration.
The keys and values from the Secret will be merged into the Configuration JSON.
Optional: {}
projectRef ObjectReferenceProjectRef references the project this service context belongs to.
If not provided, it will use the default project.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ServiceDependency

Appears in:

FieldDescriptionDefaultValidation
name stringThe name of a service on the same cluster this service depends on

ServiceDeployment

ServiceDeployment provides a GitOps-driven approach to deploy and manage Kubernetes applications from Git repositories. It represents a reference to a service deployed from a Git repo into a Cluster, enabling complete GitOps workflows with full auditability and automated synchronization. The operator manages the deployment lifecycle by fetching manifests from Git repositories and applying them to target clusters with support for Helm, Kustomize, and raw YAML.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringServiceDeployment
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec ServiceSpecRequired: {}

ServiceError

Appears in:

FieldDescriptionDefaultValidation
source string
message string

ServiceHelm

Appears in:

FieldDescriptionDefaultValidation
url stringOptional: {}
valuesFrom SecretReferenceValuesFrom is a reference to a Kubernetes Secret containing Helm values.
It will consider any key with YAML data as a values file and merge them iteratively.
This allows you to store Helm values in a secret and reference them here.
Optional: {}
valuesConfigMapRef ConfigMapKeySelectorOptional: {}
release stringRelease contains the name of the Helm release to use when applying this service.Optional: {}
repositoryRef ObjectReferenceRepositoryRef contains a reference to a GitRepository to source the Helm chart from.
This is useful for using a multi-source configuration for values files.
Optional: {}
values RawExtensionValues contains arbitrary YAML values to overlay.Optional: {}
valuesFiles string arrayValuesFiles contains individual values files to overlay.Optional: {}
chart stringChart is the name of the Helm chart to use.Optional: {}
version stringVersion of the Helm chart to use.Optional: {}
repository NamespacedNameRepository is a pointer to the FluxCD Helm repository to use.Optional: {}
git GitRefGit contains a reference to a Git folder and ref where the Helm chart is located.Optional: {}
ignoreHooks booleanIgnoreHooks indicates whether to completely ignore Helm hooks when actualizing this service.Optional: {}
ignoreCrds booleanIgnoreCrds indicates whether to not include the CRDs in the /crds folder of the chart.
It is useful if you want to avoid installing CRDs that are already present in the cluster.
Optional: {}
luaScript stringLuaScript to use to generate Helm configuration.
This can ultimately return a lua table with keys "values" and "valuesFiles"
to supply overlays for either dynamically based on git state or other metadata.
The script can call warn(message) to report non-fatal service warnings, which mark the service as stale.
Optional: {}
luaFile stringLuaFile to use to generate Helm configuration.
This can ultimately return a Lua table with keys "values" and "valuesFiles"
to supply overlays for either dynamically based on Git state or other metadata.
The script can call warn(message) to report non-fatal service warnings, which mark the service as stale.
Optional: {}
luaFolder stringa folder of lua files to include in the final script usedOptional: {}
pythonScript stringPythonScript to use to generate Helm configuration.
This can ultimately return a dict with keys "values" and "valuesFiles"
to supply overlays for either dynamically based on git state or other metadata.
The script can call warn(message) to report non-fatal service warnings, which mark the service as stale.
Optional: {}
pythonFile stringPythonFile to use to generate Helm configuration.
This can ultimately return a dict with keys "values" and "valuesFiles"
to supply overlays for either dynamically based on Git state or other metadata.
The script can call warn(message) to report non-fatal service warnings, which mark the service as stale.
Optional: {}
pythonFolder stringa folder of python files to include in the final script usedOptional: {}
kustomizePostrender stringKustomizePostrender is a folder containing a kustomization to apply to the result of rendering this service's manifests.Optional: {}

ServiceImport

Appears in:

FieldDescriptionDefaultValidation
stackRef ObjectReferenceStackRef is a reference to an InfrastructureStack resource that provides outputs to import.Required: {}

ServiceKustomize

Appears in:

FieldDescriptionDefaultValidation
path stringThe folder your base kustomization file lives within relative to your main git folder path. It can be a subdirectory.
enableHelm booleanEnableHelm indicates whether to enable Helm for this Kustomize deployment.
Used for inflating Helm charts.
Optional: {}
envsubst booleanEnvsubst indicates whether to apply envsubst replacements to the manifests, using the services attached configuration as the variables.Optional: {}

ServiceSpec

ServiceSpec defines the desired state of a ServiceDeployment.

Appears in:

FieldDescriptionDefaultValidation
name stringName of this service.
If not provided, the name from ServiceDeployment.ObjectMeta will be used.
Optional: {}
namespace stringNamespace where this service will be deployed.
If not provided, deploys to the ServiceDeployment namespace.
Optional: {}
docsPath stringDocsPath specifies the path to documentation within the Git repository.Optional: {}
version stringVersion specifies the semantic version of this ServiceDeployment.Optional: {}
protect booleanProtect when true, prevents deletion of this service to avoid accidental removal.Optional: {}
kustomize ServiceKustomizeKustomize configuration for applying Kustomize transformations to manifests.Optional: {}
git GitRefGit reference within the repository where the service manifests are located.Optional: {}
helm ServiceHelmHelm configuration for deploying Helm charts, including values and repository settings.Optional: {}
syncConfig SyncConfigAttributesSyncConfig contains advanced configuration for how manifests are synchronized to the cluster.Optional: {}
repositoryRef ObjectReferenceRepositoryRef references the GitRepository CRD containing the service source code.Optional: {}
clusterRef ObjectReferenceClusterRef references the target Cluster where this service will be deployed. Leave it as an empty struct to use the cluster field instead.Optional: {}
cluster stringCluster is the handle of the target Cluster where this service will be deployed. Leave it empty to use the clusterRef field instead.Optional: {}
configurationRef SecretReferenceConfigurationRef is a secret reference containing service configuration for templating.Optional: {}
flowRef ObjectReferenceFlowRef provides contextual linkage to a broader application Flow this service belongs within.Optional: {}
configuration object (keys:string, values:string)Configuration contains non-secret key-value pairs for lightweight templating of manifests.Optional: {}
bindings BindingsBindings contain read and write policies controlling access to this service.Optional: {}
dependencies ServiceDependency arrayDependencies specify services that must be healthy before this service can be deployed.Optional: {}
contexts string arrayContexts reference ServiceContext names to inject additional configuration.Optional: {}
templated booleanTemplated enables Liquid templating for raw YAML files, defaults to true.Optional: {}
imports ServiceImport arrayImports enable importing outputs from InfrastructureStack resources for use in templating.Optional: {}
detach booleanDetach when true, detaches the service on deletion instead of destroying it.Optional: {}
sources Source arraySources specify additional Git repositories to source manifests from for multi-source deployments.Optional: {}
renderers Renderer arrayRenderers define how to process and render manifests using different engines (Helm, Kustomize, etc.).Optional: {}
agentId stringAgentId represents agent session ID that created this service.
It is used for UI linking and otherwise ignored.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

ServiceTemplate

ServiceTemplate defines the configuration for a service to be deployed within a managed namespace. This enables automatic application deployment as part of the namespace provisioning process.

Appears in:

FieldDescriptionDefaultValidation
name stringName specifies the name for the service deployment.
For managed namespaces, this is optional and can be auto-generated
if not explicitly provided.
Optional: {}
namespace stringNamespace specifies the namespace for the service deployment.
For managed namespaces, this is typically auto-populated with
the managed namespace name if not explicitly provided.
Optional: {}
templated booleanTemplated indicates whether to apply liquid templating to raw YAML files.
When enabled, allows for dynamic configuration injection and
environment-specific customization of service manifests.
Optional: {}
repositoryRef ObjectReferenceRepositoryRef references a GitRepository resource containing the service manifests.
This provides the source location for Kubernetes YAML files, Helm charts,
or other deployment artifacts needed for the service.
Optional: {}
protect booleanProtect indicates whether to protect this service from deletion.
Protected services are not automatically deleted during namespace cleanup
or cluster deletion operations, providing safety for critical workloads.
Optional: {}
contexts string arrayContexts specifies a list of context names to add to this service.
Contexts provide reusable configuration bundles that can be shared
across multiple services for consistent environment setup.
Optional: {}
git GitRefGit defines Git-specific settings for sourcing service manifests.
This includes repository references, branch/tag specifications,
and subdirectory paths within the Git repository.
Optional: {}
helm ServiceHelmHelm defines Helm-specific settings for deploying Helm charts as part of this service.
This includes chart specifications, values files, repository references,
and Helm-specific deployment options.
Optional: {}
kustomize ServiceKustomizeKustomize defines Kustomize-specific settings for manifest customization.
This enables sophisticated YAML manipulation and configuration overlay
capabilities for complex deployment scenarios.
Optional: {}
syncConfig SyncConfigAttributesSyncConfig defines advanced synchronization settings for the service deployment.
This includes options for namespace management, drift detection configuration,
and deployment behavior customization.
Optional: {}
dependencies ServiceDependency arrayDependencies specify services that must be healthy before this service can be deployed.Optional: {}
configurationRef SecretReferenceConfigurationRef references a Kubernetes Secret containing service-specific configuration.
This secret should contain key-value pairs that will be made available
to the service for runtime configuration and secrets management.
Optional: {}
configuration object (keys:string, values:string)Configuration provides a set of non-secret service-specific configuration values.
These key-value pairs are useful for templating and can be referenced
in manifest templates for environment-specific customization.
Optional: {}
sources Source arraySources specify additional Git repositories or locations to source manifests from.
This enables multi-repository deployments and complex source composition
for sophisticated application architectures.
Optional: {}
renderers Renderer arrayRenderers specify how manifests should be processed and rendered.
This includes options for Helm chart rendering, Kustomize processing,
and other manifest transformation workflows.
Optional: {}

SinkConfiguration

SinkConfiguration contains type-specific configuration for different notification channels. Only one configuration section should be populated based on the sink type. Each configuration type has different requirements and delivery mechanisms.

Appears in:

FieldDescriptionDefaultValidation
slack SinkURLSlack configuration for delivering notifications to Slack channels via webhook URLs.
Requires a valid Slack incoming webhook URL configured in your Slack workspace.
Optional: {}
teams SinkURLTeams configuration for delivering notifications to Microsoft Teams channels.
Requires a valid Teams incoming webhook URL configured in your Teams workspace.
Optional: {}
plural PluralSinkConfigurationPlural configuration for delivering in-app notifications within the Plural Console.
These notifications appear in the Console UI and can optionally trigger email delivery.
Optional: {}

SinkURL

SinkURL defines the webhook URL configuration for external notification services. Used by both Slack and Teams sink types to specify the destination webhook endpoint.

Appears in:

FieldDescriptionDefaultValidation
url stringURL is the webhook endpoint where notifications will be delivered.
This should be a valid HTTP/HTTPS URL provided by your Slack or Teams workspace
when configuring incoming webhooks for the target channel.
Required: {}

Source

Appears in:

FieldDescriptionDefaultValidation
path stringPath the subdirectory this source will live in the final tarballOptional: {}
repositoryRef ObjectReferenceRepositoryRef the reference of the Git repository to source from.Optional: {}
git GitRefGit contains a location in a Git repository to use.Optional: {}

SpecTemplate

Appears in:

FieldDescriptionDefaultValidation
handle stringHandle is a short, unique human-readable name used to identify this cluster.
Does not necessarily map to the cloud resource name.
This has to be specified in order to adopt existing cluster.
Optional: {}
Type: string
version stringVersion of Kubernetes to use for this cluster. Can be skipped only for BYOK.Optional: {}
Type: string
providerRef ObjectReferenceTemplateProviderRef references provider to use for this cluster. Can be skipped only for BYOK.Optional: {}
projectRef ObjectReferenceTemplateProjectRef references project this cluster belongs to.
If not provided, it will use the default project.
Optional: {}
cloud stringCloud provider to use for this cluster.Optional: {}
Type: string
protect stringProtect cluster from being deleted.Optional: {}
tags stringTags used to filter clusters.Optional: {}
metadata stringRefer to Kubernetes API documentation for fields of metadata.Optional: {}
bindings BindingsTemplateBindings contain read and write policies of this clusterOptional: {}
nodePools stringNodePools contains specs of node pools managed by this cluster.Optional: {}

StackBindingPolicyMatches

StackBindingPolicyMatches defines the stack policy evaluation stage attached by a BindingPolicy.

Appears in:

FieldDescriptionDefaultValidation
type StackPolicyTypeType is the stack policy evaluation stage. Valid values: APPROVAL, RUN.
APPROVAL evaluates after the plan. RUN evaluates before a run is created.
Optional: {}

StackConfiguration

Appears in:

FieldDescriptionDefaultValidation
image stringImage contains the optional Docker image to use for the IaC tool.
If not provided, the default image for the tool will be used.
Optional: {}
version stringVersion of the IaC tool to use.Optional: {}
tag stringTag of the IaC tool Docker image to use.Optional: {}
hooks StackHook arrayHooks to run at various stages of the stack run.Optional: {}
terraform TerraformConfigurationTerraform configuration for this stack.Optional: {}
terragrunt TerragruntConfigurationTerragrunt configuration for this stack.Optional: {}
pulumi PulumiConfigurationPulumi configuration for this stack.Optional: {}
ansible AnsibleConfigurationAnsible configuration for this stack.Optional: {}
aiApproval AiApprovalConfigurationAiApproval configuration for this stack to be auto-approved by AI according to rules sourced from Git.Optional: {}

StackCron

Appears in:

FieldDescriptionDefaultValidation
crontab stringThe crontab on which to spawn stack runs.
autoApprove booleanWhether to automatically approve cron-spawned runs.Optional: {}
overrides StackOverridesOverrides for the cron triggered stack run configuration.Optional: {}
trackRef booleanWhether to track the stack's ref exactly on cron runs versus the last detected commit. This can theoretically cause drift between code if referenced via symlinks.Optional: {}

StackDefinition

StackDefinition provides reusable templates for Infrastructure Stack configurations and execution steps. It allows you to define standardized stack configurations, custom execution steps, and runtime environments that can be referenced by multiple Infrastructure Stacks. This enables consistent deployment patterns and reduces duplication when managing similar infrastructure components across different environments.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringStackDefinition
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec StackDefinitionSpec

StackDefinitionSpec

StackDefinitionSpec defines the desired state of the StackDefinition.

Appears in:

FieldDescriptionDefaultValidation
name stringName of this StackDefinition.
If not provided, the name from StackDefinition.ObjectMeta will be used.
Optional: {}
description stringDescription provides a human-readable explanation of what this StackDefinition
template is intended for and how it should be used.
Optional: {}
steps CustomRunStep arraySteps defines a list of custom run steps that will be executed as part of
any stack run using this definition. Each step specifies a command, arguments,
execution stage, and approval requirements.
Optional: {}
deleteSteps CustomRunStep arrayDeleteSteps defines a list of custom run steps that will be executed when
deleting/destroying a stack using this definition. Each step specifies a command,
arguments, execution stage, and approval requirements.
Optional: {}
configuration StackConfigurationConfiguration allows customization of the stack execution environment,
including Docker image settings, version specifications, and execution hooks.
Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

StackEnvironment

Appears in:

FieldDescriptionDefaultValidation
name stringName of the environment variable to set.Required: {}
value stringValue of the environment variable to set.Optional: {}
secretKeyRef SecretKeySelectorSecretKeyRef references a key in a Secret to set the environment variable value.Optional: {}
configMapRef ConfigMapKeySelectorConfigMapRef references a key in a ConfigMap to set the environment variable value.Optional: {}

StackFile

StackFile represents a file to mount from secrets into the stack execution environment.

Appears in:

FieldDescriptionDefaultValidation
mountPath stringMountPath is the path where the file will be mounted in the stack execution environment.
secretRef LocalObjectReferenceSecretRef is a reference to the secret containing the file.

StackHook

Appears in:

FieldDescriptionDefaultValidation
cmd stringCmd is the command to execute.Required: {}
args string arrayArgs contain optional arguments to pass to the command.Optional: {}
afterStage StepStageEnum: [INIT PLAN VERIFY APPLY DESTROY]
Required: {}

StackOverrides

Appears in:

FieldDescriptionDefaultValidation
terraform TerraformConfigurationTerraform is the terraform configuration for this stackOptional: {}
terragrunt TerragruntConfigurationTerragrunt is the terragrunt configuration for this stackOptional: {}
pulumi PulumiConfigurationPulumi is the pulumi configuration for this stackOptional: {}

StackSettings

Appears in:

FieldDescriptionDefaultValidation
jobSpec JobSpecJobSpec optional k8s job configuration for the job that will apply this stack.Optional: {}
connectionRef ObjectReferenceConnectionRef reference to ScmConnection.Optional: {}

Status

Appears in:

FieldDescriptionDefaultValidation
id stringID of the resource in the Console API.Optional: {}
Type: string
sha stringSHA of last applied configuration.Optional: {}
Type: string
readonly booleanReadOnly indicates whether the resource is read-only.false
conditions Condition arrayRepresents the observations of a PrAutomation's current state.

SyncConfigAttributes

Appears in:

FieldDescriptionDefaultValidation
createNamespace booleanWhether to auto-create the namespace for this service (specifying labels and annotations will also add those to the created namespace)Optional: {}
deleteNamespace booleanWhether to delete the namespace for this service upon deletionOptional: {}
enforceNamespace booleanWhether to enforce all created resources are placed in the service namespaceOptional: {}
requireOwnership booleanWhether to require all resources are owned by this service and fail if they are owned by another. Default is true.Optional: {}
labels object (keys:string, values:string)Optional: {}
annotations object (keys:string, values:string)Optional: {}
diffNormalizers DiffNormalizers arrayDiffNormalizers a list of diff normalizers to apply to the service which controls how drift detection works.Optional: {}

Taint

Taint represents a Kubernetes taint.

Appears in:

FieldDescriptionDefaultValidation
effect TaintEffectEffect specifies the effect for the taint.Enum: [NoSchedule NoExecute PreferNoSchedule]
key stringKey is the key of the taint.
value stringValue is the value of the taint.

TaintEffect

Underlying type: string

TaintEffect is the effect for a Kubernetes taint.

Appears in:

TemplateContext

TemplateContext provides metadata and configuration data for templating service deployments. It enables dynamic customization of service properties based on cluster-specific or environment-specific requirements during the deployment process.

Appears in:

FieldDescriptionDefaultValidation
raw RawExtensionRaw contains arbitrary YAML data that can be used as context for templating
service deployment properties. This data is made available to template engines
for dynamic substitution of values, configurations, or other deployment parameters.
Optional: {}

TerraformConfiguration

Appears in:

FieldDescriptionDefaultValidation
parallelism integerParallelism is the number of concurrent operations to run,
equivalent to the -parallelism flag in Terraform.
Optional: {}
refresh booleanRefresh is whether to refresh the state of the stack,
equivalent to the -refresh flag in Terraform.
Optional: {}
approveEmpty booleanApproveEmpty is whether to auto-approve a plan if there are no changes, preventing a stack from being blocked.Optional: {}
tofu booleanTofu is whether to use OpenTofu instead of Terraform for this stack.Optional: {}
tofuRegistry booleanTofuRegistry is whether to use the OpenTofu registry for provider and module sources.Optional: {}

TerragruntConfiguration

Appears in:

FieldDescriptionDefaultValidation
parallelism integerParallelism is the number of concurrent operations to run,
equivalent to the -parallelism flag passed through to the underlying Terraform/OpenTofu invocation.
Optional: {}
refresh booleanRefresh is whether to refresh the state of the stack,
equivalent to the -refresh flag passed through to the underlying Terraform/OpenTofu invocation.
Optional: {}
approveEmpty booleanApproveEmpty is whether to auto-approve a plan if there are no changes, preventing a stack from being blocked.Optional: {}

Tools

Appears in:

FieldDescriptionDefaultValidation
createPr CreatePrCreatePr holds the configuration for the pr automation tool.Optional: {}

UpgradePlanCallout

UpgradePlanCallout is the Schema for the upgradeplancallouts API

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringUpgradePlanCallout
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec UpgradePlanCalloutSpec

UpgradePlanCalloutSpec

UpgradePlanCalloutSpec defines the desired state of UpgradePlanCallout

Appears in:

FieldDescriptionDefaultValidation
name stringName of this UpgradePlanCallout. If not provided UpgradePlanCallout's own name from UpgradePlanCallout.ObjectMeta will be used.Optional: {}
callouts AddonCallout arrayCallouts the callouts for this instance
context RawExtensionContext is an untyped object containing the context for this calloutOptional: {}
reconciliation ReconciliationReconciliation settings for this resource.
Controls drift detection and reconciliation intervals.
Optional: {}

VectorStore

Appears in:

FieldDescriptionDefaultValidation
enabled booleanEnabled controls whether the vector store is enabled or not..falseOptional: {}
vectorStore VectorStoreVectorStore is the type of the vector store to use.Enum: [ELASTIC OPENSEARCH POSTGRES]
Optional: {}
elastic ElasticsearchConnectionSettingsElastic configuration for the vector store.Optional: {}
opensearch OpensearchConnectionSettingsOpensearch configuration for the vector store.Optional: {}

VertexSettings

Appears in:

FieldDescriptionDefaultValidation
proxy HttpProxyConfigurationProxy configures an HTTP proxy for this provider's API calls.Optional: {}
model stringModel is the Vertex AI model to use. This should be a model listed currently on models.dev, for instance here: https://models.dev/?search=google-vertexOptional: {}
toolModel stringToolModel to use for tool calling, which is less frequent and often requires more advanced reasoning. This should be a model listed currently on models.dev, for instance here: https://models.dev/?search=google-vertexOptional: {}
embeddingModel stringEmbeddingModel to use for generating embeddings.
This should be a model listed currently on models.dev, for instance here: https://models.dev/?search=google-vertex.
Default is gemini-embedding-001.
Optional: {}
proxyModels string arrayProxyModels are additional models to support within the integrated ai proxy.Optional: {}
project stringProject is the GCP project you'll be usingRequired: {}
location stringLocation is the GCP region Vertex is queried fromRequired: {}
endpoint stringEndpoint is a custom endpoint for self-deployed modelsOptional: {}
serviceAccountJsonSecretRef SecretKeySelectorServiceAccountJsonSecretRef is a Service Account json file stored w/in a kubernetes secret to use for authentication to GCPOptional: {}

VsphereCloudConnection

VsphereCloudConnection contains VMware vSphere authentication configuration. Provides credentials for discovering and querying vSphere resources.

Appears in:

FieldDescriptionDefaultValidation
server stringThe vCenter SDK endpoint, for example https://vcenter.example.com/sdk
user stringThe vCenter user
password ObjectKeyReferenceThe vCenter password
allowUnverifiedSsl booleanWhether to allow unverified vCenter TLS certificatesOptional: {}

Workbench

Workbench represents an AI workbench in Plural Console. It defines the system prompt, configuration, skills, and tools available for agent runs, and can reference a project, Git repository, and agent runtime.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringWorkbench
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec WorkbenchSpecSpec defines the desired state of the Workbench.Required: {}

WorkbenchBindingPolicyMatches

WorkbenchBindingPolicyMatches defines regex-based selection criteria for workbench targets.

Appears in:

FieldDescriptionDefaultValidation
regexes string arrayRegexes is a list of regular expressions that select workbench inputs for this policy.Optional: {}

WorkbenchCodingConfig

WorkbenchCodingConfig defines coding agent settings.

Appears in:

FieldDescriptionDefaultValidation
mode AgentRunModeMode is the agent run mode (e.g. analyze, write).Enum: [ANALYZE WRITE]
Optional: {}
repositories string arrayRepositories are allowed repository identifiers.Optional: {}

WorkbenchConfiguration

WorkbenchConfiguration defines workbench capabilities.

Appears in:

FieldDescriptionDefaultValidation
coding WorkbenchCodingConfigCoding configures coding agent capabilities (mode, repositories).Optional: {}
infrastructure WorkbenchInfrastructureConfigInfrastructure configures infrastructure capabilities (services, stacks, Kubernetes).Optional: {}
observability WorkbenchObservabilityConfigObservability configures observability capabilities (logs, metrics).Optional: {}

WorkbenchCron

WorkbenchCron represents a scheduled cron trigger for a Workbench. It runs a prompt on the associated workbench at the configured cron schedule.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringWorkbenchCron
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec WorkbenchCronSpecSpec defines the desired state of the WorkbenchCron.Required: {}

WorkbenchCronSpec

WorkbenchCronSpec defines the desired state of a WorkbenchCron.

Appears in:

FieldDescriptionDefaultValidation
workbenchRef ObjectReferenceWorkbenchRef references the Workbench this cron belongs to.Required: {}
crontab stringCrontab is the cron expression defining the schedule (e.g. */5 * * * *).MinLength: 1
Required: {}
Type: string
prompt stringPrompt is the prompt to run when the cron triggers.Optional: {}
Type: string
reconciliation ReconciliationReconciliation settings for this resource.Optional: {}

WorkbenchInfrastructureConfig

WorkbenchInfrastructureConfig defines infrastructure capabilities.

Appears in:

FieldDescriptionDefaultValidation
selfService booleanSelfService enables the self-service subagent for catalog and PR automation workflows.Optional: {}
services booleanServices enables the services capability.Optional: {}
stacks booleanStacks enables the stacks capability.Optional: {}
kubernetes booleanKubernetes enables the Kubernetes capability.Optional: {}

WorkbenchJobBudget

WorkbenchJobBudget defines budget limits for a workbench job.

Appears in:

FieldDescriptionDefaultValidation
cost stringCost is the maximum cost budget for the job.
It is a string to allow decimal values (e.g. "12.5").
Optional: {}
Pattern: ^[0-9]+(\.[0-9]+)?$
Type: string
tokens integerTokens is the maximum token budget for the job.Minimum: 0
Optional: {}

WorkbenchJobCodingModes

WorkbenchJobCodingModes defines coding mode options for a workbench job.

Appears in:

FieldDescriptionDefaultValidation
babysit booleanBabysit enables babysit mode for coding agent runs.Optional: {}
approval booleanApproval requires approval before coding agent runs continue.Optional: {}
review booleanReview enables pull request review mode for coding agent runs.Optional: {}

WorkbenchJobKubernetesModes

WorkbenchJobKubernetesModes defines kubernetes action options for a workbench job.

Appears in:

FieldDescriptionDefaultValidation
update booleanUpdate enables kubernetes update actions.Optional: {}
delete booleanDelete enables kubernetes delete actions.Optional: {}
exec booleanExec enables kubernetes exec actions.Optional: {}
drain booleanDrain enables kubernetes node drain actions.Optional: {}
excludeNamespaces string arrayExcludeNamespaces are namespaces the agent can never act in.Optional: {}
requireNamespaces string arrayRequireNamespaces, if set, are the only namespaces the agent is allowed to act in.Optional: {}

WorkbenchJobModel

WorkbenchJobModel defines the AI model override for a workbench job.

Appears in:

FieldDescriptionDefaultValidation
provider AiProviderProvider is the AI provider for the job.Enum: [OPENAI ANTHROPIC OLLAMA AZURE BEDROCK VERTEX OPENAI_COMPATIBLE XAI]
Required: {}
model stringModel is the model name for the job.MinLength: 1
Required: {}
Type: string

WorkbenchJobModes

WorkbenchJobModes defines mode-specific options for workbench jobs.

Appears in:

FieldDescriptionDefaultValidation
plan booleanPlan enables planning mode for the job.Optional: {}
verification booleanVerification enables verification mode for the job.Optional: {}
model WorkbenchJobModelModel overrides the AI model used for the job.Optional: {}
coding WorkbenchJobCodingModesCoding defines coding mode options for the job.Optional: {}
budget WorkbenchJobBudgetBudget defines budget limits for the job.Optional: {}
kubernetes WorkbenchJobKubernetesModesKubernetes defines kubernetes action options for the job.Optional: {}

WorkbenchObservabilityConfig

WorkbenchObservabilityConfig configures observability capabilities.

Appears in:

FieldDescriptionDefaultValidation
logs booleanLogs enables the logs capability.Optional: {}
metrics booleanMetrics enables the metrics capability.Optional: {}

WorkbenchPrompt

WorkbenchPrompt represents a saved prompt for a Workbench.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringWorkbenchPrompt
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec WorkbenchPromptSpecSpec defines the desired state of the WorkbenchPrompt.Required: {}

WorkbenchPromptSpec

WorkbenchPromptSpec defines the desired state of a WorkbenchPrompt.

Appears in:

FieldDescriptionDefaultValidation
workbenchRef ObjectReferenceWorkbenchRef references the Workbench this prompt belongs to.Required: {}
title stringTitle is the display title for the saved prompt.Optional: {}
Type: string
category stringCategory is the grouping category for the saved prompt.Optional: {}
Type: string
prompt stringPrompt is the saved prompt text.MinLength: 1
Required: {}
Type: string
reconciliation ReconciliationReconciliation settings for this resource.Optional: {}

WorkbenchSkills

WorkbenchSkills defines skills configuration for a workbench.

Appears in:

FieldDescriptionDefaultValidation
ref WorkbenchSkillsRefRef is the git reference for skills (ref, folder, files).Optional: {}
files string arrayFiles to include.Optional: {}

WorkbenchSkillsRef

WorkbenchSkillsRef is a git reference for skills.

Appears in:

FieldDescriptionDefaultValidation
ref stringRef is the Git reference (branch, tag, or commit)
understandable by git checkout <ref>.
MinLength: 1
Required: {}
Type: string
folder stringFolder in the repository.MinLength: 1
Required: {}
Type: string
files string arrayFiles to include.Optional: {}

WorkbenchSpec

WorkbenchSpec defines the desired state of a Workbench.

Appears in:

FieldDescriptionDefaultValidation
name stringName of the workbench. If not set, metadata.name is used.Optional: {}
Type: string
description stringDescription provides a human-readable explanation of the workbench's purpose.Optional: {}
Type: string
systemPrompt stringSystemPrompt is the system prompt used for agent runs in this workbench.Optional: {}
Type: string
projectRef ObjectReferenceProjectRef references the project this workbench belongs to.Optional: {}
repositoryRef ObjectReferenceRepositoryRef references the Git repository used for this workbench.Optional: {}
agentRuntime stringAgentRuntime reference in the "<cluster-handle>/<runtime-name>" format.Optional: {}
Type: string
configuration WorkbenchConfigurationConfiguration defines workbench capabilities (coding and infrastructure).Optional: {}
skills WorkbenchSkillsSkills define skills configuration (git ref and/or files) for the workbench.Optional: {}
bindings BindingsBindings define read and write access policies for this workbench.Optional: {}
toolRefs ObjectReference arrayToolRefs references WorkbenchTool resources to associate with this workbench.Optional: {}
reconciliation ReconciliationReconciliation settings for this resource.Optional: {}

WorkbenchTool

WorkbenchTool is the Schema for the workbenchtools API.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringWorkbenchTool
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec WorkbenchToolSpecRequired: {}

WorkbenchToolAtlassianConfig

WorkbenchToolAtlassianConfig defines an atlassian/jira connection.

Appears in:

FieldDescriptionDefaultValidation
serviceAccountSecretRef SecretKeySelectorReference to a secret key containing the encrypted service account JSON (alternative to api_token + email).Optional: {}
apiTokenSecretRef SecretKeySelectorReference to a secret key containing the atlassian API token (required if not using service_account).Optional: {}
email stringAtlassian account email (required if not using service_account).Optional: {}

WorkbenchToolAzureConfig

WorkbenchToolAzureConfig defines an azure monitor connection.

Appears in:

FieldDescriptionDefaultValidation
subscriptionId stringAzure subscription id.Required: {}
tenantId stringAzure tenant id.Required: {}
clientId stringAzure client id.Required: {}
clientSecretSecretRef SecretKeySelectorReference to a secret key containing the azure client secret.Required: {}
prometheusUrl stringOptional azure managed prometheus url if you wish to use it for metrics.Optional: {}

WorkbenchToolAzureDevopsConfig

WorkbenchToolAzureDevopsConfig defines an azure devops connection.

Appears in:

FieldDescriptionDefaultValidation
url stringOptional REST API root (defaults to https://dev.azure.com).Optional: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the Azure DevOps personal access token.Optional: {}

WorkbenchToolAzureFunctionConfig

WorkbenchToolAzureFunctionConfig defines an Azure Function / Cloud Function configuration.

Appears in:

FieldDescriptionDefaultValidation
identifier stringCloud Function identifier.Required: {}
description stringDescription of the function exposed to the agent.Required: {}
inputSchema RawExtensionJSON schema for the tool input.Optional: {}

WorkbenchToolBitbucketConfig

WorkbenchToolBitbucketConfig defines a bitbucket cloud connection.

Appears in:

FieldDescriptionDefaultValidation
url stringOptional Bitbucket Cloud API base URL.Optional: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the Bitbucket app password or access token.Optional: {}

WorkbenchToolBitbucketDatacenterConfig

WorkbenchToolBitbucketDatacenterConfig defines a bitbucket data center connection.

Appears in:

FieldDescriptionDefaultValidation
url stringBitbucket Data Center REST API base URL.Required: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the HTTP access token or personal access token.Optional: {}

WorkbenchToolCloudRunConfig

WorkbenchToolCloudRunConfig defines a Google Cloud Run service configuration.

Appears in:

FieldDescriptionDefaultValidation
identifier stringCloud Run service identifier.Required: {}
description stringDescription of the function exposed to the agent.Required: {}
inputSchema RawExtensionJSON schema for the tool input.Optional: {}

WorkbenchToolCloudwatchConfig

WorkbenchToolCloudwatchConfig defines a cloudwatch connection.

Appears in:

FieldDescriptionDefaultValidation
region stringAWS region (e.g. us-east-1).Required: {}
logGroupNames string arrayOptional default log groups for CloudWatch Logs Insights.Optional: {}
accessKeyIdSecretRef SecretKeySelectorReference to a secret key containing the optional static AWS access key id.Optional: {}
secretAccessKeySecretRef SecretKeySelectorReference to a secret key containing the optional static AWS secret access key.Optional: {}
roleArn stringOptional IAM role ARN to assume.Optional: {}
externalId stringOptional external id for assume role.Optional: {}
roleSessionName stringOptional role session name for assume role.Optional: {}

WorkbenchToolConfiguration

WorkbenchToolConfiguration defines tool-specific connection configuration.

Appears in:

FieldDescriptionDefaultValidation
http WorkbenchToolHTTPConfigHttp tool configuration.Optional: {}
elastic WorkbenchToolElasticConfigElasticsearch connection (logs).Optional: {}
opensearch WorkbenchToolOpensearchConfigAWS OpenSearch connection (logs).Optional: {}
prometheus WorkbenchToolPrometheusConfigPrometheus connection (metrics).Optional: {}
loki WorkbenchToolLokiConfigLoki connection (logs).Optional: {}
victoriaLogs WorkbenchToolVictoriaLogsConfigVictoriaLogs connection (logs).Optional: {}
tempo WorkbenchToolTempoConfigTempo connection (traces).Optional: {}
jaeger WorkbenchToolJaegerConfigJaeger connection (traces).Optional: {}
splunk WorkbenchToolSplunkConfigSplunk connection (logs).Optional: {}
datadog WorkbenchToolDatadogConfigDatadog connection (metrics, logs).Optional: {}
dynatrace WorkbenchToolDynatraceConfigDynatrace connection (metrics, logs, traces).Optional: {}
cloudwatch WorkbenchToolCloudwatchConfigCloudwatch connection (metrics, logs).Optional: {}
azure WorkbenchToolAzureConfigAzure monitor connection (metrics).Optional: {}
sentry WorkbenchToolSentryConfigSentry connection (error tracking).Optional: {}
linear WorkbenchToolLinearConfigLinear connection (ticketing).Optional: {}
slack WorkbenchToolSlackConfigSlack connection (integration).Optional: {}
pagerduty WorkbenchToolPagerdutyConfigPagerDuty connection (integration).Optional: {}
teams WorkbenchToolTeamsConfigMicrosoft Teams / Graph connection (integration).Optional: {}
atlassian WorkbenchToolAtlassianConfigAtlassian/jira connection (ticketing).Optional: {}
jiraDatacenter WorkbenchToolJiraDatacenterConfigJira Data Center connection (ticketing).Optional: {}
serviceNow WorkbenchToolServiceNowConfigServiceNow connection (ticketing).Optional: {}
exa WorkbenchToolExaConfigExa connection (search).Optional: {}
github WorkbenchToolGithubConfigGitHub connection (integration).Optional: {}
gitlab WorkbenchToolGitlabConfigGitLab connection (scm).Optional: {}
bitbucket WorkbenchToolBitbucketConfigBitbucket Cloud connection (scm).Optional: {}
bitbucketDatacenter WorkbenchToolBitbucketDatacenterConfigBitbucket Data Center connection (scm).Optional: {}
azureDevops WorkbenchToolAzureDevopsConfigAzure DevOps connection (scm).Optional: {}
lambda WorkbenchToolLambdaConfigAWS Lambda function configuration.Optional: {}
cloudRun WorkbenchToolCloudRunConfigGoogle Cloud Run service configuration.Optional: {}
azureFunction WorkbenchToolAzureFunctionConfigAzure Function / Cloud Function configuration.Optional: {}
docker WorkbenchToolDockerConfigDocker/OCI registry connection.Optional: {}

WorkbenchToolDatadogConfig

WorkbenchToolDatadogConfig defines a datadog connection.

Appears in:

FieldDescriptionDefaultValidation
site stringDatadog site (e.g. datadoghq.com).Optional: {}
apiKeySecretRef SecretKeySelectorReference to a secret key containing the datadog API key.Optional: {}
appKeySecretRef SecretKeySelectorReference to a secret key containing the datadog application key.Optional: {}

WorkbenchToolDockerConfig

WorkbenchToolDockerConfig defines a docker/OCI registry connection. Auth secrets are resolved by the reconciler via HelmRepositoryAuth helpers.

Appears in:

FieldDescriptionDefaultValidation
url stringRegistry host or base URL (defaults to registry-1.docker.io).Optional: {}
provider HelmAuthProviderRegistry authentication provider: BASIC, BEARER, AWS, AZURE, or GCP.Enum: [BASIC BEARER GCP AZURE AWS]
Optional: {}
auth HelmRepositoryAuthRegistry authentication credentials and optional proxy.Optional: {}

WorkbenchToolDynatraceConfig

WorkbenchToolDynatraceConfig defines a dynatrace connection.

Appears in:

FieldDescriptionDefaultValidation
url stringDynatrace base URL.Required: {}
platformTokenSecretRef SecretKeySelectorReference to a secret key containing the dynatrace platform token.Required: {}

WorkbenchToolElasticConfig

WorkbenchToolElasticConfig defines an elasticsearch connection.

Appears in:

FieldDescriptionDefaultValidation
url stringElasticsearch base URL.Required: {}
username stringBasic auth username.Required: {}
passwordSecretRef SecretKeySelectorReference to a secret key containing the basic auth password.Optional: {}
index stringElasticsearch index.Required: {}

WorkbenchToolExaConfig

WorkbenchToolExaConfig defines an exa connection.

Appears in:

FieldDescriptionDefaultValidation
apiKeySecretRef SecretKeySelectorReference to a secret key containing the exa API key.Optional: {}

WorkbenchToolGithubConfig

WorkbenchToolGithubConfig defines a github connection.

Appears in:

FieldDescriptionDefaultValidation
url stringOptional GitHub REST API base URL (defaults to https://api.github.com/; set for GitHub Enterprise Server).Optional: {}
accessTokenSecretRef SecretKeySelectorReference to a secret key containing an optional GitHub personal access token or fine-grained token.Optional: {}
toolset stringOptional native tool subset: issues, pull_requests, repos, security, default/all, or omit for all tools.Optional: {}
appId stringGitHub App ID (use with installationId and privateKey instead of accessToken).Optional: {}
installationId stringGitHub App installation ID for this organization or account.Optional: {}
privateKeySecretRef SecretKeySelectorReference to a secret key containing the PEM private key for the GitHub App.Optional: {}

WorkbenchToolGitlabConfig

WorkbenchToolGitlabConfig defines a gitlab connection.

Appears in:

FieldDescriptionDefaultValidation
url stringOptional GitLab API base URL (defaults to https://gitlab.com when omitted).Optional: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the GitLab personal access token or project/group token.Optional: {}

WorkbenchToolHTTPConfig

WorkbenchToolHTTPConfig defines the HTTP tool configuration.

Appears in:

FieldDescriptionDefaultValidation
url stringThe request URL.Format: uri
Required: {}
Type: string
method WorkbenchToolHTTPMethodThe HTTP method.Enum: [GET POST PUT DELETE PATCH]
Required: {}
function booleanWhen true, exposes this HTTP tool as a workbench action; execution may require approval when tool approval is enabled.Optional: {}
headers WorkbenchToolHTTPHeader arrayRequest headers.Optional: {}
body stringRequest body.Optional: {}
Type: string
inputSchema RawExtensionJSON schema for the tool input.Required: {}

WorkbenchToolHTTPHeader

WorkbenchToolHTTPHeader represents a single HTTP header.

Appears in:

FieldDescriptionDefaultValidation
name stringOptional: {}
Type: string
value stringOptional: {}
Type: string

WorkbenchToolJaegerConfig

WorkbenchToolJaegerConfig defines a jaeger connection.

Appears in:

FieldDescriptionDefaultValidation
url stringJaeger base URL.Required: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the bearer token.Optional: {}
username stringBasic auth username.Optional: {}
passwordSecretRef SecretKeySelectorReference to a secret key containing the basic auth password.Optional: {}

WorkbenchToolJiraDatacenterConfig

WorkbenchToolJiraDatacenterConfig defines a Jira Data Center connection.

Appears in:

FieldDescriptionDefaultValidation
url stringJira Data Center base URL.Required: {}
apiTokenSecretRef SecretKeySelectorAPITokenSecretRef references a personal access token when OAuth is not used.Optional: {}

WorkbenchToolLambdaConfig

WorkbenchToolLambdaConfig defines an AWS Lambda function configuration.

Appears in:

FieldDescriptionDefaultValidation
lambdaArn stringAWS Lambda function ARN.Required: {}
description stringDescription of the function exposed to the agent.Required: {}
inputSchema RawExtensionJSON schema for the tool input.Optional: {}

WorkbenchToolLinearConfig

WorkbenchToolLinearConfig defines a linear connection.

Appears in:

FieldDescriptionDefaultValidation
accessTokenSecretRef SecretKeySelectorReference to a secret key containing the linear API access token.Optional: {}

WorkbenchToolLokiConfig

WorkbenchToolLokiConfig defines a loki connection.

Appears in:

FieldDescriptionDefaultValidation
url stringLoki base URL.Required: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the bearer token or api key.Optional: {}
username stringBasic auth username.Optional: {}
passwordSecretRef SecretKeySelectorReference to a secret key containing the basic auth password.Optional: {}
tenantId stringOptional tenant id.Optional: {}

WorkbenchToolOpensearchConfig

WorkbenchToolOpensearchConfig defines an AWS OpenSearch connection.

Appears in:

FieldDescriptionDefaultValidation
host stringAWS OpenSearch endpoint.Required: {}
index stringOpenSearch index.Required: {}
awsAccessKeyIdSecretRef SecretKeySelectorReference to a secret key containing the AWS access key id for SigV4 authentication.Optional: {}
awsSecretAccessKeySecretRef SecretKeySelectorReference to a secret key containing the AWS secret access key for SigV4 authentication.Optional: {}
awsRegion stringAWS region for SigV4 authentication.Optional: {}
assumeRoleArn stringOptional IAM role ARN to assume before signing OpenSearch requests.Optional: {}
usePodIdentity booleanWhether to use pod identity (IRSA/Workload Identity) for AWS authentication instead of static credentials.Optional: {}

WorkbenchToolPagerdutyConfig

WorkbenchToolPagerdutyConfig defines a pagerduty connection.

Appears in:

FieldDescriptionDefaultValidation
apiTokenSecretRef SecretKeySelectorReference to a secret key containing the pagerduty REST API key.Optional: {}

WorkbenchToolPrometheusConfig

WorkbenchToolPrometheusConfig defines a prometheus connection.

Appears in:

FieldDescriptionDefaultValidation
url stringPrometheus base URL.Required: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the bearer token or api key.Optional: {}
username stringBasic auth username.Optional: {}
passwordSecretRef SecretKeySelectorReference to a secret key containing the basic auth password.Optional: {}
tenantId stringOptional tenant id (e.g. for Mimir).Optional: {}
awsSigv4 booleanWhether to sign requests with AWS SigV4.Optional: {}
awsAccessKeyIdSecretRef SecretKeySelectorReference to a secret key containing the AWS access key id for SigV4 authentication.Optional: {}
awsSecretAccessKeySecretRef SecretKeySelectorReference to a secret key containing the AWS secret access key for SigV4 authentication.Optional: {}
awsRegion stringAWS region for SigV4 authentication.Optional: {}

WorkbenchToolSentryConfig

WorkbenchToolSentryConfig defines a sentry connection.

Appears in:

FieldDescriptionDefaultValidation
url stringOptional Sentry API host (defaults to https://sentry.io; set for self-hosted).Optional: {}
accessTokenSecretRef SecretKeySelectorReference to a secret key containing the Sentry user auth token or internal integration token.Optional: {}

WorkbenchToolServiceNowConfig

WorkbenchToolServiceNowConfig defines a ServiceNow connection.

Appears in:

FieldDescriptionDefaultValidation
url stringServiceNow instance URL, for example https://example.service-now.com.Required: {}
username stringUsername for basic auth when OAuth is not used.Optional: {}
passwordSecretRef SecretKeySelectorPasswordSecretRef references the basic auth password when OAuth is not used.Optional: {}

WorkbenchToolSlackConfig

WorkbenchToolSlackConfig defines a slack connection.

Appears in:

FieldDescriptionDefaultValidation
botTokenSecretRef SecretKeySelectorReference to a secret key containing the slack bot user OAuth token (xoxb-...).Optional: {}

WorkbenchToolSpec

WorkbenchToolSpec defines the desired state of a WorkbenchTool.

Appears in:

FieldDescriptionDefaultValidation
name stringThe name of the tool (a-z, 0-9, underscores). If not set, metadata.name is used.Optional: {}
Pattern: ^[a-z0-9_]+$
Type: string
tool WorkbenchToolTypeThe type of tool.Enum: [HTTP ELASTIC DATADOG PROMETHEUS LOKI TEMPO SENTRY MCP LINEAR ATLASSIAN SPLUNK DYNATRACE CLOUDWATCH AZURE CLOUD JAEGER EXA GITHUB SLACK TEAMS GITLAB BITBUCKET BITBUCKET_DATACENTER AZURE_DEVOPS PAGERDUTY OPENSEARCH LAMBDA CLOUD_RUN AZURE_FUNCTION DOCKER VICTORIA_LOGS JIRA JIRA_DATACENTER SERVICE_NOW]
Required: {}
categories WorkbenchToolCategory arrayCategories for the tool.Optional: {}
approval booleanWhether this tool requires approval before execution.Optional: {}
projectRef ObjectReferenceThe project for this tool.Optional: {}
mcpServerRef ObjectReferenceThe mcp server for this tool.Optional: {}
cloudConnectionRef ObjectReferenceThe cloud connection for this tool (e.g. infrastructure cloud tools).Optional: {}
scmConnectionRef ObjectReferenceThe SCM connection for this tool (e.g. shared Git provider credentials).Optional: {}
bindings BindingsBindings define the read and write access policies for this tool.Optional: {}
configuration WorkbenchToolConfigurationTool configuration (e.g. HTTP).Optional: {}
oauth OAuth2TokenExchangeOAuth configures client credentials token exchange for this tool.Optional: {}
reconciliation ReconciliationOptional: {}

WorkbenchToolSplunkConfig

WorkbenchToolSplunkConfig defines a splunk connection.

Appears in:

FieldDescriptionDefaultValidation
url stringSplunk base URL.Required: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the authentication token.Optional: {}
tokenType SplunkTokenTypeAuthorization realm used for token authentication.BEAREREnum: [BEARER SPLUNK]
Optional: {}
username stringBasic auth username.Optional: {}
passwordSecretRef SecretKeySelectorReference to a secret key containing the basic auth password.Optional: {}

WorkbenchToolTeamsConfig

WorkbenchToolTeamsConfig defines a microsoft teams / graph connection.

Appears in:

FieldDescriptionDefaultValidation
clientId stringMicrosoft Entra application (client) id.Required: {}
clientSecretSecretRef SecretKeySelectorReference to a secret key containing the microsoft entra client secret.Required: {}
tenantId stringMicrosoft Entra tenant (directory) id.Required: {}

WorkbenchToolTempoConfig

WorkbenchToolTempoConfig defines a tempo connection.

Appears in:

FieldDescriptionDefaultValidation
url stringTempo base URL.Required: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the bearer token or api key.Optional: {}
username stringBasic auth username.Optional: {}
passwordSecretRef SecretKeySelectorReference to a secret key containing the basic auth password.Optional: {}
tenantId stringOptional tenant id.Optional: {}

WorkbenchToolVictoriaLogsConfig

WorkbenchToolVictoriaLogsConfig defines a VictoriaLogs connection.

Appears in:

FieldDescriptionDefaultValidation
url stringVictoriaLogs base URL.Required: {}
tokenSecretRef SecretKeySelectorReference to a secret key containing the bearer token or api key.Optional: {}
username stringBasic auth username.Optional: {}
passwordSecretRef SecretKeySelectorReference to a secret key containing the basic auth password.Optional: {}
accountId stringOptional AccountID tenant header.Optional: {}
projectId stringOptional ProjectID tenant header.Optional: {}

WorkbenchWebhook

WorkbenchWebhook represents a webhook trigger for a Workbench. When an incoming webhook payload matches the configured criteria, a prompt is run on the workbench.

FieldDescriptionDefaultValidation
apiVersion stringdeployments.plural.sh/v1alpha1
kind stringWorkbenchWebhook
metadata ObjectMetaRefer to Kubernetes API documentation for fields of metadata.
spec WorkbenchWebhookSpecSpec defines the desired state of the WorkbenchWebhook.Required: {}

WorkbenchWebhookMatchesSpec

WorkbenchWebhookMatchesSpec defines criteria to match incoming webhook payloads.

Appears in:

FieldDescriptionDefaultValidation
regex stringRegex is a regex pattern to match in the webhook body.Optional: {}
Type: string
substring stringSubstring is a substring to match in the webhook body.Optional: {}
Type: string
caseInsensitive booleanCaseInsensitive enables case-insensitive matching.Optional: {}

WorkbenchWebhookSpec

WorkbenchWebhookSpec defines the desired state of a WorkbenchWebhook.

Appears in:

FieldDescriptionDefaultValidation
workbenchRef ObjectReferenceWorkbenchRef references the Workbench this webhook trigger belongs to.Required: {}
name stringName is the unique name for this webhook trigger on the workbench.
If not set, metadata.name is used.
Optional: {}
Type: string
webhookName stringWebhookName is the name of an observability webhook in the Console API that receives events.
Either WebhookName or IssueWebhookName must be set.
Optional: {}
Type: string
issueWebhookName stringIssueWebhookName is the name of an issue webhook in the Console API that receives events.
Either WebhookName or IssueWebhookName must be set.
Optional: {}
Type: string
matches WorkbenchWebhookMatchesSpecMatches defines criteria to match incoming webhook payloads.Optional: {}
prompt stringPrompt is the prompt to run when the webhook matches.Optional: {}
Type: string
reconciliation ReconciliationReconciliation settings for this resource.Optional: {}

YamlOverlay

YamlOverlay defines a YAML merge operation to modify existing YAML files.

Appears in:

FieldDescriptionDefaultValidation
file stringFile to execute the overlay on.Required: {}
yaml stringYaml (possibly templated) to use as the overlayed YAML blob written to the file.Required: {}
templated booleanTemplated indicates whether you want to apply templating to the YAML blob before overlaying.Optional: {}
listMerge ListMergeListMerge defines how you want list merge to be performed, defaults to OVERWRITE.Enum: [OVERWRITE APPEND]
Optional: {}