v1alpha1

package
v0.1.21 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 7, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the muster v1alpha1 API group.

This package defines the Kubernetes Custom Resource Definitions (CRDs) for muster's core components. The v1alpha1 API version represents the initial alpha release of the muster Kubernetes API and is subject to change.

API Group: muster.giantswarm.io/v1alpha1

## MCPServer

MCPServer represents a Model Context Protocol server definition and runtime state. It consolidates configuration and runtime information for MCP servers that provide tools and capabilities to the muster system.

MCPServers can be configured as local command processes with specific command arguments, environment variables, and lifecycle behavior.

Example:

apiVersion: muster.giantswarm.io/v1alpha1
kind: MCPServer
metadata:
  name: git-tools
  namespace: default
spec:
  name: git-tools
  type: localCommand
  autoStart: true
  toolPrefix: git
  command: ["npx", "@modelcontextprotocol/server-git"]
  env:
    GIT_ROOT: "/workspace"
  description: "Git tools MCP server for repository operations"

+kubebuilder:object:generate=true +groupName=muster.giantswarm.io

Package v1alpha1 contains API Schema definitions for the muster v1alpha1 API group +kubebuilder:object:generate=true +groupName=muster.giantswarm.io

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "muster.giantswarm.io", Version: "v1alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type ArgDefinition

type ArgDefinition struct {
	// Type specifies the expected data type for this argument.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=string;integer;boolean;number;object;array
	Type string `json:"type" yaml:"type"`

	// Required indicates whether this argument must be provided.
	// +kubebuilder:default=false
	Required bool `json:"required,omitempty" yaml:"required,omitempty"`

	// Default provides a default value if the argument is not specified.
	Default *runtime.RawExtension `json:"default,omitempty" yaml:"default,omitempty"`

	// Description explains the purpose and usage of this argument.
	// +kubebuilder:validation:MaxLength=500
	Description string `json:"description,omitempty" yaml:"description,omitempty"`
}

ArgDefinition defines validation and metadata for service arguments

func (*ArgDefinition) DeepCopy

func (in *ArgDefinition) DeepCopy() *ArgDefinition

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ArgDefinition.

func (*ArgDefinition) DeepCopyInto

func (in *ArgDefinition) DeepCopyInto(out *ArgDefinition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ClientCredentialsSecretRef

type ClientCredentialsSecretRef struct {
	// Name is the name of the Kubernetes Secret.
	// Required.
	Name string `json:"name" yaml:"name"`

	// Namespace is the Kubernetes namespace where the secret is located.
	// If not specified, defaults to the MCPServer's namespace.
	Namespace string `json:"namespace,omitempty" yaml:"namespace,omitempty"`

	// ClientIDKey is the key in the secret data that contains the client ID.
	// Defaults to "client-id" if not specified.
	// +kubebuilder:default="client-id"
	ClientIDKey string `json:"clientIdKey,omitempty" yaml:"clientIdKey,omitempty"`

	// ClientSecretKey is the key in the secret data that contains the client secret.
	// Defaults to "client-secret" if not specified.
	// +kubebuilder:default="client-secret"
	ClientSecretKey string `json:"clientSecretKey,omitempty" yaml:"clientSecretKey,omitempty"`
}

ClientCredentialsSecretRef references a Kubernetes Secret containing OAuth client credentials for token exchange authentication.

func (*ClientCredentialsSecretRef) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClientCredentialsSecretRef.

func (*ClientCredentialsSecretRef) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HealthCheckConfig

type HealthCheckConfig struct {
	// Enabled controls whether health checking is active.
	// +kubebuilder:default=false
	Enabled bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`

	// Interval specifies how often to perform health checks.
	// +kubebuilder:validation:Pattern="^[0-9]+(ns|us|ms|s|m|h)$"
	// +kubebuilder:default="30s"
	Interval string `json:"interval,omitempty" yaml:"interval,omitempty"`

	// FailureThreshold sets the number of failures before marking unhealthy.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=3
	FailureThreshold int `json:"failureThreshold,omitempty" yaml:"failureThreshold,omitempty"`

	// SuccessThreshold sets the number of successes to mark healthy.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:default=1
	SuccessThreshold int `json:"successThreshold,omitempty" yaml:"successThreshold,omitempty"`
}

HealthCheckConfig configures health monitoring behavior

func (*HealthCheckConfig) DeepCopy

func (in *HealthCheckConfig) DeepCopy() *HealthCheckConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckConfig.

func (*HealthCheckConfig) DeepCopyInto

func (in *HealthCheckConfig) DeepCopyInto(out *HealthCheckConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HealthCheckExpectation

type HealthCheckExpectation struct {
	// Success indicates whether the tool call should succeed.
	Success *bool `json:"success,omitempty" yaml:"success,omitempty"`

	// JSONPath defines JSON path conditions to check in the result.
	JSONPath map[string]*runtime.RawExtension `json:"jsonPath,omitempty" yaml:"jsonPath,omitempty"`
}

HealthCheckExpectation defines what to expect from health check results

func (*HealthCheckExpectation) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckExpectation.

func (*HealthCheckExpectation) DeepCopyInto

func (in *HealthCheckExpectation) DeepCopyInto(out *HealthCheckExpectation)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type HealthCheckToolCall

type HealthCheckToolCall struct {
	// Tool specifies the name of the tool to execute.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Tool string `json:"tool" yaml:"tool"`

	// Args provides arguments for the tool execution (supports templating).
	Args map[string]*runtime.RawExtension `json:"args,omitempty" yaml:"args,omitempty"`

	// Expect defines positive health check expectations.
	Expect *HealthCheckExpectation `json:"expect,omitempty" yaml:"expect,omitempty"`

	// ExpectNot defines negative health check expectations.
	ExpectNot *HealthCheckExpectation `json:"expectNot,omitempty" yaml:"expectNot,omitempty"`
}

HealthCheckToolCall extends ToolCall with health check expectations

func (*HealthCheckToolCall) DeepCopy

func (in *HealthCheckToolCall) DeepCopy() *HealthCheckToolCall

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HealthCheckToolCall.

func (*HealthCheckToolCall) DeepCopyInto

func (in *HealthCheckToolCall) DeepCopyInto(out *HealthCheckToolCall)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type LifecycleTools

type LifecycleTools struct {
	// Start tool configuration for starting service instances.
	// +kubebuilder:validation:Required
	Start ToolCall `json:"start" yaml:"start"`

	// Stop tool configuration for stopping service instances.
	// +kubebuilder:validation:Required
	Stop ToolCall `json:"stop" yaml:"stop"`

	// Restart tool configuration for restarting service instances.
	Restart *ToolCall `json:"restart,omitempty" yaml:"restart,omitempty"`

	// HealthCheck tool configuration for health checking.
	HealthCheck *HealthCheckToolCall `json:"healthCheck,omitempty" yaml:"healthCheck,omitempty"`

	// Status tool configuration for querying service status.
	Status *ToolCall `json:"status,omitempty" yaml:"status,omitempty"`
}

LifecycleTools defines the tools for service lifecycle management

func (*LifecycleTools) DeepCopy

func (in *LifecycleTools) DeepCopy() *LifecycleTools

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LifecycleTools.

func (*LifecycleTools) DeepCopyInto

func (in *LifecycleTools) DeepCopyInto(out *LifecycleTools)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MCPServer

type MCPServer struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   MCPServerSpec   `json:"spec,omitempty"`
	Status MCPServerStatus `json:"status,omitempty"`
}

MCPServer is the Schema for the mcpservers API

func (*MCPServer) DeepCopy

func (in *MCPServer) DeepCopy() *MCPServer

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServer.

func (*MCPServer) DeepCopyInto

func (in *MCPServer) DeepCopyInto(out *MCPServer)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MCPServer) DeepCopyObject

func (in *MCPServer) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MCPServerAuth

type MCPServerAuth struct {
	// Type specifies the authentication type.
	// Supported values:
	//   - "oauth": OAuth 2.0/OIDC authentication
	//   - "teleport": Teleport Application Access with Machine ID certificates
	//   - "none": No authentication
	// +kubebuilder:validation:Enum=oauth;teleport;none
	// +kubebuilder:default=none
	Type string `json:"type,omitempty" yaml:"type,omitempty"`

	// ForwardToken enables ID token forwarding for SSO.
	// When true, muster forwards the user's ID token to this server instead of
	// triggering a separate OAuth flow. The downstream server must be configured
	// to trust muster's client ID in its TrustedAudiences.
	// +kubebuilder:default=false
	ForwardToken bool `json:"forwardToken,omitempty" yaml:"forwardToken,omitempty"`

	// RequiredAudiences specifies additional audience(s) that the forwarded ID token
	// should contain. When ForwardToken is true, muster will request these audiences
	// from the upstream IdP (e.g., Dex) using cross-client scopes.
	//
	// This is used when the downstream server requires tokens with specific audiences,
	// for example when forwarding tokens to Kubernetes for OIDC authentication:
	//   requiredAudiences:
	//     - "dex-k8s-authenticator"
	//
	// At user authentication, muster collects all requiredAudiences from MCPServers
	// with forwardToken: true and requests them all from the IdP.
	RequiredAudiences []string `json:"requiredAudiences,omitempty" yaml:"requiredAudiences,omitempty"`

	// TokenExchange enables SSO via RFC 8693 Token Exchange for cross-cluster SSO.
	// When configured, muster exchanges its local token for a token valid on the
	// remote cluster's Identity Provider (e.g., Dex).
	//
	// Use TokenExchange when:
	//   - The remote cluster has its own Dex instance
	//   - The remote Dex is configured with an OIDC connector for muster's Dex
	//   - You need a token issued by the remote cluster's IdP (not just forwarded)
	//
	// Token exchange takes precedence over ForwardToken if both are configured.
	TokenExchange *TokenExchangeConfig `json:"tokenExchange,omitempty" yaml:"tokenExchange,omitempty"`

	// Teleport configures Teleport authentication for accessing private installations.
	// This is only used when Type is "teleport".
	//
	// When configured, muster uses Teleport Machine ID certificates to establish
	// mutual TLS connections to MCP servers accessible via Teleport Application Access.
	Teleport *TeleportAuthConfig `json:"teleport,omitempty" yaml:"teleport,omitempty"`
}

MCPServerAuth configures authentication behavior for an MCP server. This enables Single Sign-On (SSO) via token forwarding between muster and downstream MCP servers that share the same Identity Provider, or Teleport authentication for private installations.

func (*MCPServerAuth) DeepCopy

func (in *MCPServerAuth) DeepCopy() *MCPServerAuth

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServerAuth.

func (*MCPServerAuth) DeepCopyInto

func (in *MCPServerAuth) DeepCopyInto(out *MCPServerAuth)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MCPServerList

type MCPServerList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []MCPServer `json:"items"`
}

MCPServerList contains a list of MCPServer

func (*MCPServerList) DeepCopy

func (in *MCPServerList) DeepCopy() *MCPServerList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServerList.

func (*MCPServerList) DeepCopyInto

func (in *MCPServerList) DeepCopyInto(out *MCPServerList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*MCPServerList) DeepCopyObject

func (in *MCPServerList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type MCPServerSpec

type MCPServerSpec struct {
	// Type specifies how this MCP server should be executed.
	// Supported values: "stdio" for local processes, "streamable-http" for HTTP-based servers, "sse" for Server-Sent Events
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Enum=stdio;streamable-http;sse
	Type string `json:"type" yaml:"type"`

	// ToolPrefix is an optional prefix that will be prepended to all tool names
	// provided by this MCP server. This helps avoid naming conflicts when multiple
	// servers provide tools with similar names.
	// +kubebuilder:validation:Pattern="^[a-zA-Z][a-zA-Z0-9_-]*$"
	ToolPrefix string `json:"toolPrefix,omitempty" yaml:"toolPrefix,omitempty"`

	// Description provides a human-readable description of this MCP server's purpose.
	// +kubebuilder:validation:MaxLength=500
	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	// AutoStart determines whether this MCP server should be automatically started
	// when the muster system initializes or when dependencies become available.
	// +kubebuilder:default=false
	AutoStart bool `json:"autoStart,omitempty" yaml:"autoStart,omitempty"`

	// Command specifies the executable path for stdio type servers.
	// This field is required when Type is "stdio".
	Command string `json:"command,omitempty" yaml:"command,omitempty"`

	// Args specifies the command line arguments for stdio type servers.
	// This field is only available when Type is "stdio".
	Args []string `json:"args,omitempty" yaml:"args,omitempty"`

	// URL is the endpoint where the remote MCP server can be reached
	// This field is required when Type is "streamable-http" or "sse".
	// Examples: http://mcp-server:8080/mcp, https://api.example.com/mcp
	// +kubebuilder:validation:Pattern=`^https?://[^\s/$.?#].[^\s]*$`
	URL string `json:"url,omitempty" yaml:"url,omitempty"`

	// Env contains environment variables to set for the MCP server.
	// For stdio servers, these are passed to the process when it is started.
	// For remote servers, these can be used for authentication or configuration.
	Env map[string]string `json:"env,omitempty" yaml:"env,omitempty"`

	// Headers contains HTTP headers to send with requests to remote MCP servers.
	// This field is only relevant when Type is "streamable-http" or "sse".
	Headers map[string]string `json:"headers,omitempty" yaml:"headers,omitempty"`

	// Auth configures authentication behavior for this MCP server.
	// This is only relevant for remote servers (streamable-http or sse).
	Auth *MCPServerAuth `json:"auth,omitempty" yaml:"auth,omitempty"`

	// Timeout specifies the connection timeout for remote operations (in seconds)
	// +kubebuilder:default=30
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=300
	Timeout int `json:"timeout,omitempty" yaml:"timeout,omitempty"`
}

MCPServerSpec defines the desired state of MCPServer

func (*MCPServerSpec) DeepCopy

func (in *MCPServerSpec) DeepCopy() *MCPServerSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServerSpec.

func (*MCPServerSpec) DeepCopyInto

func (in *MCPServerSpec) DeepCopyInto(out *MCPServerSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type MCPServerStateValue

type MCPServerStateValue string

MCPServerStateValue represents the high-level infrastructure state of an MCPServer. This is independent of user session state (authentication, per-user connection status).

Status values reflect infrastructure availability with context-appropriate terminology:

For stdio (local process) servers:

  • Running: Process is running and responding
  • Starting: Process is being started
  • Stopped: Process is not running (initial state or explicitly stopped)
  • Failed: Process crashed or cannot be started

For remote (streamable-http, sse) servers:

  • Connected: TCP connection established and authenticated
  • AuthRequired: Server is reachable but requires authentication (returned 401)
  • Connecting: Attempting to establish connection
  • Disconnected: Not connected (initial state or connection closed)
  • Failed: Endpoint unreachable (network error, DNS failure, etc.)
const (

	// MCPServerStateRunning indicates a stdio server process is running.
	MCPServerStateRunning MCPServerStateValue = "Running"

	// MCPServerStateStarting indicates a stdio server process is being started.
	MCPServerStateStarting MCPServerStateValue = "Starting"

	// MCPServerStateStopped indicates a stdio server process is not running.
	MCPServerStateStopped MCPServerStateValue = "Stopped"

	// MCPServerStateConnected indicates a remote server is reachable and authenticated.
	// The server responded successfully (not 401/403).
	MCPServerStateConnected MCPServerStateValue = "Connected"

	// MCPServerStateAuthRequired indicates a remote server is reachable but requires authentication.
	// The server returned a 401 Unauthorized response, indicating it IS reachable at the
	// network level but needs OAuth authentication before it can be used.
	// Users should run `muster auth login --server <name>` to authenticate.
	MCPServerStateAuthRequired MCPServerStateValue = "Auth Required"

	// MCPServerStateConnecting indicates a connection attempt is in progress.
	MCPServerStateConnecting MCPServerStateValue = "Connecting"

	// MCPServerStateDisconnected indicates a remote server is not connected.
	MCPServerStateDisconnected MCPServerStateValue = "Disconnected"

	// MCPServerStateFailed indicates infrastructure is not available.
	// For stdio: process crashed or cannot be started.
	// For http/sse: endpoint unreachable (network error, DNS failure, etc.).
	MCPServerStateFailed MCPServerStateValue = "Failed"
)

type MCPServerStatus

type MCPServerStatus struct {
	// State represents the high-level infrastructure state of the MCP server.
	// This is independent of user session state (authentication, connection status).
	//
	// For stdio servers: Running, Starting, Stopped, Failed
	// For remote servers: Connected, Auth Required, Connecting, Disconnected, Failed
	// +kubebuilder:validation:Enum=Running;Starting;Stopped;Connected;Auth Required;Connecting;Disconnected;Failed
	State MCPServerStateValue `json:"state,omitempty" yaml:"state,omitempty"`

	// LastError contains any error message from the most recent server operation.
	// Note: Per-user authentication errors are tracked in the Session Registry,
	// not here. This field only contains infrastructure-level errors.
	LastError string `json:"lastError,omitempty" yaml:"lastError,omitempty"`

	// LastConnected indicates when the server was last successfully connected
	LastConnected *metav1.Time `json:"lastConnected,omitempty" yaml:"lastConnected,omitempty"`

	// RestartCount tracks how many times this server has been restarted (stdio only)
	RestartCount int `json:"restartCount,omitempty" yaml:"restartCount,omitempty"`

	// ConsecutiveFailures tracks the number of consecutive connection failures.
	// This is used for exponential backoff and to identify unreachable servers.
	// Reset to 0 when a connection succeeds.
	ConsecutiveFailures int `json:"consecutiveFailures,omitempty" yaml:"consecutiveFailures,omitempty"`

	// LastAttempt indicates when the last connection attempt was made.
	// Used with ConsecutiveFailures to implement exponential backoff.
	LastAttempt *metav1.Time `json:"lastAttempt,omitempty" yaml:"lastAttempt,omitempty"`

	// NextRetryAfter indicates the earliest time when the next retry should be attempted.
	// This is calculated based on exponential backoff from ConsecutiveFailures.
	NextRetryAfter *metav1.Time `json:"nextRetryAfter,omitempty" yaml:"nextRetryAfter,omitempty"`

	// Conditions represent the latest available observations of the MCPServer's current state.
	// Standard condition types:
	//   - Ready: True if infrastructure is reachable (process running or TCP connectable)
	Conditions []metav1.Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
}

MCPServerStatus defines the observed state of MCPServer.

IMPORTANT: This status reflects infrastructure state only, NOT user session state. Per-user connection status and authentication state are tracked in the Session Registry (internal/aggregator/session_registry.go) to support multi-user environments.

Infrastructure State (CRD):

  • State: Running/Connected/Starting/Connecting/Stopped/Disconnected/Failed
  • Conditions: Standard K8s conditions for detailed status

Session State (Session Registry):

  • ConnectionStatus: Connected, PendingAuth, Failed (per-user)
  • AuthStatus: Authenticated, AuthRequired, TokenExpired (per-user)
  • AvailableTools: Tools visible to this specific user

func (*MCPServerStatus) DeepCopy

func (in *MCPServerStatus) DeepCopy() *MCPServerStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MCPServerStatus.

func (*MCPServerStatus) DeepCopyInto

func (in *MCPServerStatus) DeepCopyInto(out *MCPServerStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceClass

type ServiceClass struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   ServiceClassSpec   `json:"spec,omitempty"`
	Status ServiceClassStatus `json:"status,omitempty"`
}

ServiceClass is the Schema for the serviceclasses API

func (*ServiceClass) DeepCopy

func (in *ServiceClass) DeepCopy() *ServiceClass

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceClass.

func (*ServiceClass) DeepCopyInto

func (in *ServiceClass) DeepCopyInto(out *ServiceClass)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ServiceClass) DeepCopyObject

func (in *ServiceClass) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ServiceClassList

type ServiceClassList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ServiceClass `json:"items"`
}

ServiceClassList contains a list of ServiceClass

func (*ServiceClassList) DeepCopy

func (in *ServiceClassList) DeepCopy() *ServiceClassList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceClassList.

func (*ServiceClassList) DeepCopyInto

func (in *ServiceClassList) DeepCopyInto(out *ServiceClassList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ServiceClassList) DeepCopyObject

func (in *ServiceClassList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ServiceClassSpec

type ServiceClassSpec struct {
	// Description provides a human-readable description of this ServiceClass.
	// +kubebuilder:validation:MaxLength=1000
	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	// Args defines the argument schema for service instantiation.
	Args map[string]ArgDefinition `json:"args,omitempty" yaml:"args,omitempty"`

	// ServiceConfig defines the core service configuration template.
	// +kubebuilder:validation:Required
	ServiceConfig ServiceConfig `json:"serviceConfig" yaml:"serviceConfig"`
}

ServiceClassSpec defines the desired state of ServiceClass

func (*ServiceClassSpec) DeepCopy

func (in *ServiceClassSpec) DeepCopy() *ServiceClassSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceClassSpec.

func (*ServiceClassSpec) DeepCopyInto

func (in *ServiceClassSpec) DeepCopyInto(out *ServiceClassSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceClassStatus

type ServiceClassStatus struct {
	// Valid indicates whether the ServiceClass spec passes structural validation.
	Valid bool `json:"valid,omitempty" yaml:"valid,omitempty"`

	// ValidationErrors contains any spec validation error messages.
	ValidationErrors []string `json:"validationErrors,omitempty" yaml:"validationErrors,omitempty"`

	// ReferencedTools lists all tools mentioned in the ServiceClass lifecycle definitions.
	// This is informational only; actual availability depends on the user's session.
	// See ADR 007 for details on session-scoped tool visibility.
	ReferencedTools []string `json:"referencedTools,omitempty" yaml:"referencedTools,omitempty"`

	// Conditions represent the latest available observations.
	Conditions []metav1.Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
}

ServiceClassStatus defines the observed state of ServiceClass

func (*ServiceClassStatus) DeepCopy

func (in *ServiceClassStatus) DeepCopy() *ServiceClassStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceClassStatus.

func (*ServiceClassStatus) DeepCopyInto

func (in *ServiceClassStatus) DeepCopyInto(out *ServiceClassStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceConfig

type ServiceConfig struct {
	// DefaultName provides a template for generating service instance names.
	DefaultName string `json:"defaultName,omitempty" yaml:"defaultName,omitempty"`

	// Dependencies lists other ServiceClasses that must be available.
	Dependencies []string `json:"dependencies,omitempty" yaml:"dependencies,omitempty"`

	// LifecycleTools defines the tools for service lifecycle management.
	// +kubebuilder:validation:Required
	LifecycleTools LifecycleTools `json:"lifecycleTools" yaml:"lifecycleTools"`

	// HealthCheck configures health monitoring for service instances.
	HealthCheck *HealthCheckConfig `json:"healthCheck,omitempty" yaml:"healthCheck,omitempty"`

	// Timeout configures timeouts for various operations.
	Timeout *TimeoutConfig `json:"timeout,omitempty" yaml:"timeout,omitempty"`

	// Outputs defines template-based outputs for service instances.
	Outputs map[string]string `json:"outputs,omitempty" yaml:"outputs,omitempty"`
}

ServiceConfig defines the service template configuration

func (*ServiceConfig) DeepCopy

func (in *ServiceConfig) DeepCopy() *ServiceConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceConfig.

func (*ServiceConfig) DeepCopyInto

func (in *ServiceConfig) DeepCopyInto(out *ServiceConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TeleportAuthConfig

type TeleportAuthConfig struct {
	// IdentitySecretName is the name of the Kubernetes Secret containing
	// tbot identity files. The secret should contain: tlscert, key, teleport-application-ca.pem
	// (matching tbot's application output type).
	// Required when running in Kubernetes mode.
	// Example: tbot-identity-output
	IdentitySecretName string `json:"identitySecretName,omitempty" yaml:"identitySecretName,omitempty"`

	// IdentitySecretNamespace is the Kubernetes namespace where the identity
	// secret is located. Defaults to the MCPServer's namespace if not specified.
	IdentitySecretNamespace string `json:"identitySecretNamespace,omitempty" yaml:"identitySecretNamespace,omitempty"`

	// IdentityDir is the directory containing Teleport identity files.
	// Used in filesystem mode when certificates are mounted directly.
	// Example: /var/run/tbot/identity
	IdentityDir string `json:"identityDir,omitempty" yaml:"identityDir,omitempty"`

	// AppName is the Teleport application name for routing.
	// This is used to identify which Teleport-protected application to connect to.
	// Example: mcp-kubernetes
	AppName string `json:"appName,omitempty" yaml:"appName,omitempty"`
}

TeleportAuthConfig configures Teleport authentication for an MCP server. This enables access to MCP servers on private installations via Teleport Application Access using Machine ID certificates managed by tbot.

func (*TeleportAuthConfig) DeepCopy

func (in *TeleportAuthConfig) DeepCopy() *TeleportAuthConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TeleportAuthConfig.

func (*TeleportAuthConfig) DeepCopyInto

func (in *TeleportAuthConfig) DeepCopyInto(out *TeleportAuthConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TimeoutConfig

type TimeoutConfig struct {
	// Create timeout for service creation operations.
	// +kubebuilder:validation:Pattern="^[0-9]+(ns|us|ms|s|m|h)$"
	Create string `json:"create,omitempty" yaml:"create,omitempty"`

	// Delete timeout for service deletion operations.
	// +kubebuilder:validation:Pattern="^[0-9]+(ns|us|ms|s|m|h)$"
	Delete string `json:"delete,omitempty" yaml:"delete,omitempty"`

	// HealthCheck timeout for individual health check operations.
	// +kubebuilder:validation:Pattern="^[0-9]+(ns|us|ms|s|m|h)$"
	HealthCheck string `json:"healthCheck,omitempty" yaml:"healthCheck,omitempty"`
}

TimeoutConfig configures operation timeouts

func (*TimeoutConfig) DeepCopy

func (in *TimeoutConfig) DeepCopy() *TimeoutConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TimeoutConfig.

func (*TimeoutConfig) DeepCopyInto

func (in *TimeoutConfig) DeepCopyInto(out *TimeoutConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type TokenExchangeConfig

type TokenExchangeConfig struct {
	// Enabled determines whether token exchange should be attempted.
	// +kubebuilder:default=false
	Enabled bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`

	// DexTokenEndpoint is the URL used to connect to the remote cluster's Dex token endpoint.
	// This may differ from the issuer URL when access goes through a proxy (e.g., Teleport).
	// Required when Enabled is true.
	// Example: https://dex.cluster-b.example.com/token (direct)
	// Example: https://dex-cluster.proxy.example.com/token (via proxy)
	// +kubebuilder:validation:Pattern=`^https://[^\s/$.?#].[^\s]*$`
	DexTokenEndpoint string `json:"dexTokenEndpoint,omitempty" yaml:"dexTokenEndpoint,omitempty"`

	// ExpectedIssuer is the expected issuer URL in the exchanged token's "iss" claim.
	// This should match the remote Dex's configured issuer URL.
	// When access goes through a proxy, this differs from DexTokenEndpoint.
	// If not specified, the issuer is derived from DexTokenEndpoint (backward compatible).
	// Example: https://dex.cluster-b.example.com
	// +kubebuilder:validation:Pattern=`^https://[^\s/$.?#].[^\s]*$`
	ExpectedIssuer string `json:"expectedIssuer,omitempty" yaml:"expectedIssuer,omitempty"`

	// ConnectorID is the ID of the OIDC connector on the remote Dex that
	// trusts the local cluster's Dex.
	// Required when Enabled is true.
	// Example: "cluster-a-dex"
	// +kubebuilder:validation:Pattern="^[a-zA-Z][a-zA-Z0-9_-]*$"
	ConnectorID string `json:"connectorId,omitempty" yaml:"connectorId,omitempty"`

	// Scopes are the scopes to request for the exchanged token.
	// +kubebuilder:default="openid profile email groups"
	Scopes string `json:"scopes,omitempty" yaml:"scopes,omitempty"`

	// ClientCredentialsSecretRef references a Kubernetes Secret containing
	// client credentials for authenticating with the remote Dex's token endpoint.
	// This is required when the remote Dex requires client authentication for
	// token exchange (RFC 8693).
	//
	// The secret should contain:
	//   - client-id: The OAuth client ID registered on the remote Dex
	//   - client-secret: The OAuth client secret for authentication
	//
	// Example secret:
	//
	//	apiVersion: v1
	//	kind: Secret
	//	metadata:
	//	  name: grizzly-token-exchange-credentials
	//	  namespace: muster
	//	type: Opaque
	//	stringData:
	//	  client-id: muster-token-exchange
	//	  client-secret: <secret-value>
	ClientCredentialsSecretRef *ClientCredentialsSecretRef `json:"clientCredentialsSecretRef,omitempty" yaml:"clientCredentialsSecretRef,omitempty"`
}

TokenExchangeConfig configures RFC 8693 Token Exchange for cross-cluster SSO. This enables muster to exchange its local token for a token valid on a remote cluster's Identity Provider (typically Dex).

The remote Dex must be configured with an OIDC connector that trusts the local cluster's Dex. For example:

# On remote cluster's Dex (cluster-b)
connectors:
- type: oidc
  id: cluster-a-dex
  name: "Cluster A"
  config:
    issuer: https://dex.cluster-a.example.com
    getUserInfo: true
    insecureEnableGroups: true

func (*TokenExchangeConfig) DeepCopy

func (in *TokenExchangeConfig) DeepCopy() *TokenExchangeConfig

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenExchangeConfig.

func (*TokenExchangeConfig) DeepCopyInto

func (in *TokenExchangeConfig) DeepCopyInto(out *TokenExchangeConfig)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ToolCall

type ToolCall struct {
	// Tool specifies the name of the tool to execute.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Tool string `json:"tool" yaml:"tool"`

	// Args provides arguments for the tool execution (supports templating).
	Args map[string]*runtime.RawExtension `json:"args,omitempty" yaml:"args,omitempty"`

	// Outputs maps tool result paths to variable names for later use.
	Outputs map[string]string `json:"outputs,omitempty" yaml:"outputs,omitempty"`
}

ToolCall defines a tool invocation with arguments and output mapping

func (*ToolCall) DeepCopy

func (in *ToolCall) DeepCopy() *ToolCall

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ToolCall.

func (*ToolCall) DeepCopyInto

func (in *ToolCall) DeepCopyInto(out *ToolCall)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type Workflow

type Workflow struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	Spec   WorkflowSpec   `json:"spec,omitempty"`
	Status WorkflowStatus `json:"status,omitempty"`
}

Workflow is the Schema for the workflows API

func (*Workflow) DeepCopy

func (in *Workflow) DeepCopy() *Workflow

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Workflow.

func (*Workflow) DeepCopyInto

func (in *Workflow) DeepCopyInto(out *Workflow)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*Workflow) DeepCopyObject

func (in *Workflow) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type WorkflowCondition

type WorkflowCondition struct {
	// Tool specifies the name of the tool to execute for condition evaluation.
	// Optional when FromStep is used.
	Tool string `json:"tool,omitempty" yaml:"tool,omitempty"`

	// Args provides the arguments to pass to the condition tool.
	Args map[string]*runtime.RawExtension `json:"args,omitempty" yaml:"args,omitempty"`

	// FromStep specifies the step ID to reference for condition evaluation.
	FromStep string `json:"fromStep,omitempty" yaml:"fromStep,omitempty"`

	// Expect defines positive health check expectations.
	Expect *WorkflowConditionExpectation `json:"expect,omitempty" yaml:"expect,omitempty"`

	// ExpectNot defines negative health check expectations.
	ExpectNot *WorkflowConditionExpectation `json:"expectNot,omitempty" yaml:"expectNot,omitempty"`
}

WorkflowCondition defines execution conditions for workflow steps

func (*WorkflowCondition) DeepCopy

func (in *WorkflowCondition) DeepCopy() *WorkflowCondition

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowCondition.

func (*WorkflowCondition) DeepCopyInto

func (in *WorkflowCondition) DeepCopyInto(out *WorkflowCondition)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkflowConditionExpectation

type WorkflowConditionExpectation struct {
	// Success indicates whether the tool call should succeed.
	Success *bool `json:"success,omitempty" yaml:"success,omitempty"`

	// JsonPath defines JSON path conditions to check in the result.
	JsonPath map[string]*runtime.RawExtension `json:"jsonPath,omitempty" yaml:"jsonPath,omitempty"`
}

WorkflowConditionExpectation defines expected outcomes for workflow conditions

func (*WorkflowConditionExpectation) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowConditionExpectation.

func (*WorkflowConditionExpectation) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkflowList

type WorkflowList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []Workflow `json:"items"`
}

WorkflowList contains a list of Workflow

func (*WorkflowList) DeepCopy

func (in *WorkflowList) DeepCopy() *WorkflowList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowList.

func (*WorkflowList) DeepCopyInto

func (in *WorkflowList) DeepCopyInto(out *WorkflowList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*WorkflowList) DeepCopyObject

func (in *WorkflowList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type WorkflowSpec

type WorkflowSpec struct {
	// Description provides a human-readable description of the workflow's purpose.
	// +kubebuilder:validation:MaxLength=1000
	Description string `json:"description,omitempty" yaml:"description,omitempty"`

	// Args defines the argument schema for workflow execution validation.
	Args map[string]ArgDefinition `json:"args,omitempty" yaml:"args,omitempty"`

	// Steps defines the sequence of workflow steps defining the execution flow.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinItems=1
	Steps []WorkflowStep `json:"steps" yaml:"steps"`
}

WorkflowSpec defines the desired state of Workflow

func (*WorkflowSpec) DeepCopy

func (in *WorkflowSpec) DeepCopy() *WorkflowSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowSpec.

func (*WorkflowSpec) DeepCopyInto

func (in *WorkflowSpec) DeepCopyInto(out *WorkflowSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkflowStatus

type WorkflowStatus struct {
	// Valid indicates whether the Workflow spec passes structural validation.
	Valid bool `json:"valid,omitempty" yaml:"valid,omitempty"`

	// ValidationErrors contains any spec validation error messages.
	ValidationErrors []string `json:"validationErrors,omitempty" yaml:"validationErrors,omitempty"`

	// ReferencedTools lists all tools mentioned in the Workflow steps.
	// This is informational only; actual availability depends on the user's session.
	// See ADR 007 for details on session-scoped tool visibility.
	ReferencedTools []string `json:"referencedTools,omitempty" yaml:"referencedTools,omitempty"`

	// StepCount is the number of steps in the workflow.
	StepCount int `json:"stepCount,omitempty" yaml:"stepCount,omitempty"`

	// Conditions represent the latest available observations of the workflow's state.
	Conditions []metav1.Condition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
}

WorkflowStatus defines the observed state of Workflow

func (*WorkflowStatus) DeepCopy

func (in *WorkflowStatus) DeepCopy() *WorkflowStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowStatus.

func (*WorkflowStatus) DeepCopyInto

func (in *WorkflowStatus) DeepCopyInto(out *WorkflowStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type WorkflowStep

type WorkflowStep struct {
	// ID is the unique identifier for this step within the workflow.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:Pattern="^[a-zA-Z0-9_-]+$"
	// +kubebuilder:validation:MaxLength=63
	ID string `json:"id" yaml:"id"`

	// Tool specifies the name of the tool to execute for this step.
	// +kubebuilder:validation:Required
	// +kubebuilder:validation:MinLength=1
	Tool string `json:"tool" yaml:"tool"`

	// Args provides arguments for the tool execution (supports templating).
	Args map[string]*runtime.RawExtension `json:"args,omitempty" yaml:"args,omitempty"`

	// Condition defines an optional condition that determines whether this step should execute.
	Condition *WorkflowCondition `json:"condition,omitempty" yaml:"condition,omitempty"`

	// Store indicates whether to store the step result for use in later steps.
	// +kubebuilder:default=false
	Store bool `json:"store,omitempty" yaml:"store,omitempty"`

	// AllowFailure defines if in case of an error the next step is executed or not.
	// +kubebuilder:default=false
	AllowFailure bool `json:"allowFailure,omitempty" yaml:"allowFailure,omitempty"`

	// Outputs defines how step results should be stored and made available to subsequent steps.
	Outputs map[string]*runtime.RawExtension `json:"outputs,omitempty" yaml:"outputs,omitempty"`

	// Description provides human-readable documentation for this step's purpose.
	// +kubebuilder:validation:MaxLength=500
	Description string `json:"description,omitempty" yaml:"description,omitempty"`
}

WorkflowStep defines a single step in the workflow execution

func (*WorkflowStep) DeepCopy

func (in *WorkflowStep) DeepCopy() *WorkflowStep

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new WorkflowStep.

func (*WorkflowStep) DeepCopyInto

func (in *WorkflowStep) DeepCopyInto(out *WorkflowStep)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL