v1alpha1

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Feb 13, 2026 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API schema definitions for the coder.com API group.

+k8s:deepcopy-gen=package +groupName=coder.com

Index

Constants

View Source
const (
	// CoderControlPlanePhasePending indicates the control plane has not reported ready yet.
	CoderControlPlanePhasePending = "Pending"
	// CoderControlPlanePhaseReady indicates at least one control plane pod is ready.
	CoderControlPlanePhaseReady = "Ready"
	// CoderControlPlaneConditionLicenseApplied indicates whether the operator uploaded the configured license.
	CoderControlPlaneConditionLicenseApplied = "LicenseApplied"

	// CoderControlPlaneLicenseTierNone indicates no license is currently installed.
	CoderControlPlaneLicenseTierNone = "none"
	// CoderControlPlaneLicenseTierTrial indicates a trial license is currently installed.
	CoderControlPlaneLicenseTierTrial = "trial"
	// CoderControlPlaneLicenseTierEnterprise indicates an enterprise license is currently installed.
	CoderControlPlaneLicenseTierEnterprise = "enterprise"
	// CoderControlPlaneLicenseTierPremium indicates a premium license is currently installed.
	CoderControlPlaneLicenseTierPremium = "premium"
	// CoderControlPlaneLicenseTierUnknown indicates the controller could not determine the current license tier.
	CoderControlPlaneLicenseTierUnknown = "unknown"

	// CoderControlPlaneEntitlementUnknown indicates the controller could not determine a feature entitlement.
	CoderControlPlaneEntitlementUnknown = "unknown"
)
View Source
const (
	// CoderProvisionerPhasePending indicates the provisioner deployment is not ready.
	CoderProvisionerPhasePending = "Pending"
	// CoderProvisionerPhaseReady indicates at least one provisioner pod is ready.
	CoderProvisionerPhaseReady = "Ready"

	// CoderProvisionerConditionControlPlaneReady indicates whether the referenced control plane is reachable.
	CoderProvisionerConditionControlPlaneReady = "ControlPlaneReady"
	// CoderProvisionerConditionOperatorAccessReady indicates whether operator-managed
	// access from the referenced control plane is ready for provisioner key management.
	CoderProvisionerConditionOperatorAccessReady = "OperatorAccessReady"
	// CoderProvisionerConditionProvisionerKeyReady indicates whether the provisioner key exists in coderd.
	CoderProvisionerConditionProvisionerKeyReady = "ProvisionerKeyReady"
	// CoderProvisionerConditionProvisionerKeySecretReady indicates whether the provisioner key secret is populated.
	CoderProvisionerConditionProvisionerKeySecretReady = "ProvisionerKeySecretReady"
	// CoderProvisionerConditionExternalProvisionersEntitled indicates whether the
	// referenced Coder deployment is entitled to run external provisioner daemons.
	CoderProvisionerConditionExternalProvisionersEntitled = "ExternalProvisionersEntitled"
	// CoderProvisionerConditionDeploymentReady indicates whether the provisioner deployment has ready replicas.
	CoderProvisionerConditionDeploymentReady = "DeploymentReady"

	// DefaultProvisionerKeySecretKey is the default data key for provisioner key secrets.
	DefaultProvisionerKeySecretKey = "key"

	// ProvisionerKeyCleanupFinalizer is applied to ensure coderd key cleanup on deletion.
	ProvisionerKeyCleanupFinalizer = "coder.com/provisioner-key-cleanup"
)
View Source
const (
	// WorkspaceProxyPhasePending indicates the proxy deployment is not ready.
	WorkspaceProxyPhasePending = "Pending"
	// WorkspaceProxyPhaseReady indicates at least one proxy pod is ready.
	WorkspaceProxyPhaseReady = "Ready"
)
View Source
const (
	// DefaultTokenSecretKey is the default key used for proxy session tokens.
	DefaultTokenSecretKey = "token"
	// DefaultLicenseSecretKey is the default key used for Coder license JWTs.
	DefaultLicenseSecretKey = "license"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects.
	GroupVersion = schema.GroupVersion{Group: "coder.com", 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 provided scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

This section is empty.

Types

type CertSecretSelector

type CertSecretSelector struct {
	// Name is the Secret name.
	Name string `json:"name"`
	// Key is the key within the Secret data map.
	Key string `json:"key"`
}

CertSecretSelector identifies a key within a Secret for CA cert mounting.

func (*CertSecretSelector) DeepCopy

func (in *CertSecretSelector) DeepCopy() *CertSecretSelector

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

func (*CertSecretSelector) DeepCopyInto

func (in *CertSecretSelector) DeepCopyInto(out *CertSecretSelector)

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

type CertsSpec

type CertsSpec struct {
	// Secrets lists Secret key selectors for CA certificates.
	// Each is mounted at `/etc/ssl/certs/{name}.crt`.
	Secrets []CertSecretSelector `json:"secrets,omitempty"`
}

CertsSpec configures additional CA certificate mounts.

func (*CertsSpec) DeepCopy

func (in *CertsSpec) DeepCopy() *CertsSpec

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

func (*CertsSpec) DeepCopyInto

func (in *CertsSpec) DeepCopyInto(out *CertsSpec)

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

type CoderControlPlane

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

	Spec   CoderControlPlaneSpec   `json:"spec,omitempty"`
	Status CoderControlPlaneStatus `json:"status,omitempty"`
}

CoderControlPlane is the schema for Coder control plane resources.

func (*CoderControlPlane) DeepCopy

func (in *CoderControlPlane) DeepCopy() *CoderControlPlane

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

func (*CoderControlPlane) DeepCopyInto

func (in *CoderControlPlane) DeepCopyInto(out *CoderControlPlane)

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

func (*CoderControlPlane) DeepCopyObject

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

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

type CoderControlPlaneList

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

CoderControlPlaneList contains a list of CoderControlPlane objects.

func (*CoderControlPlaneList) DeepCopy

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

func (*CoderControlPlaneList) DeepCopyInto

func (in *CoderControlPlaneList) DeepCopyInto(out *CoderControlPlaneList)

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

func (*CoderControlPlaneList) DeepCopyObject

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

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

type CoderControlPlaneSpec

type CoderControlPlaneSpec struct {
	// Image is the container image used for the Coder control plane pod.
	// +kubebuilder:default="ghcr.io/coder/coder:latest"
	Image string `json:"image,omitempty"`
	// Replicas is the desired number of control plane pods.
	// +kubebuilder:default=1
	Replicas *int32 `json:"replicas,omitempty"`
	// Service controls the service created in front of the control plane.
	// +kubebuilder:default={}
	Service ServiceSpec `json:"service,omitempty"`
	// ExtraArgs are appended to the default Coder server arguments.
	ExtraArgs []string `json:"extraArgs,omitempty"`
	// ExtraEnv are injected into the Coder control plane container.
	ExtraEnv []corev1.EnvVar `json:"extraEnv,omitempty"`
	// ImagePullSecrets are used by the pod to pull private images.
	ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
	// OperatorAccess configures bootstrap API access to the coderd instance.
	// +kubebuilder:default={}
	OperatorAccess OperatorAccessSpec `json:"operatorAccess,omitempty"`
	// LicenseSecretRef references a Secret key containing a Coder Enterprise
	// license JWT. When set, the controller uploads the license after the
	// control plane is ready and re-uploads when the Secret value changes.
	// +optional
	LicenseSecretRef *SecretKeySelector `json:"licenseSecretRef,omitempty"`

	// ServiceAccount configures the ServiceAccount for the control plane pod.
	// +kubebuilder:default={}
	ServiceAccount ServiceAccountSpec `json:"serviceAccount,omitempty"`
	// RBAC configures namespace-scoped RBAC for workspace provisioning.
	// +kubebuilder:default={}
	RBAC RBACSpec `json:"rbac,omitempty"`

	// Resources sets resource requests/limits for the control plane container.
	// +optional
	Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
	// SecurityContext sets the container security context.
	// +optional
	SecurityContext *corev1.SecurityContext `json:"securityContext,omitempty"`
	// PodSecurityContext sets the pod-level security context.
	// +optional
	PodSecurityContext *corev1.PodSecurityContext `json:"podSecurityContext,omitempty"`

	// TLS configures Coder built-in TLS.
	// +kubebuilder:default={}
	TLS TLSSpec `json:"tls,omitempty"`

	// ReadinessProbe configures the readiness probe for the control plane container.
	// +kubebuilder:default={enabled:true}
	ReadinessProbe ProbeSpec `json:"readinessProbe,omitempty"`
	// LivenessProbe configures the liveness probe for the control plane container.
	// +kubebuilder:default={enabled:false}
	LivenessProbe ProbeSpec `json:"livenessProbe,omitempty"`

	// EnvUseClusterAccessURL injects a default CODER_ACCESS_URL when not explicitly set.
	// +kubebuilder:default=true
	EnvUseClusterAccessURL *bool `json:"envUseClusterAccessURL,omitempty"`

	// Expose configures external exposure via Ingress or Gateway API.
	// +optional
	Expose *ExposeSpec `json:"expose,omitempty"`

	// +kubebuilder:validation:XValidation:rule="self.all(e, !(has(e.configMapRef) && has(e.secretRef)))",message="each envFrom entry may specify at most one of configMapRef or secretRef"
	// EnvFrom injects environment variables from ConfigMaps/Secrets.
	EnvFrom []corev1.EnvFromSource `json:"envFrom,omitempty"`
	// Volumes are additional volumes to add to the pod.
	Volumes []corev1.Volume `json:"volumes,omitempty"`
	// VolumeMounts are additional volume mounts for the control plane container.
	VolumeMounts []corev1.VolumeMount `json:"volumeMounts,omitempty"`
	// Certs configures additional CA certificate mounts.
	// +kubebuilder:default={}
	Certs CertsSpec `json:"certs,omitempty"`

	// NodeSelector constrains pod scheduling to nodes matching labels.
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`
	// Tolerations are applied to the control plane pod.
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
	// Affinity configures pod affinity/anti-affinity rules.
	// +optional
	Affinity *corev1.Affinity `json:"affinity,omitempty"`
	// TopologySpreadConstraints control pod topology spread.
	TopologySpreadConstraints []corev1.TopologySpreadConstraint `json:"topologySpreadConstraints,omitempty"`
}

CoderControlPlaneSpec defines the desired state of a CoderControlPlane.

func (*CoderControlPlaneSpec) DeepCopy

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

func (*CoderControlPlaneSpec) DeepCopyInto

func (in *CoderControlPlaneSpec) DeepCopyInto(out *CoderControlPlaneSpec)

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

type CoderControlPlaneStatus

type CoderControlPlaneStatus struct {
	// ObservedGeneration tracks the spec generation this status reflects.
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// ReadyReplicas is the number of ready pods observed in the deployment.
	ReadyReplicas int32 `json:"readyReplicas,omitempty"`
	// URL is the in-cluster URL for the control plane service.
	URL string `json:"url,omitempty"`
	// OperatorTokenSecretRef points to the Secret key containing the `coder-k8s-operator` API token.
	OperatorTokenSecretRef *SecretKeySelector `json:"operatorTokenSecretRef,omitempty"`
	// OperatorAccessReady reports whether operator API access bootstrap succeeded.
	OperatorAccessReady bool `json:"operatorAccessReady,omitempty"`
	// LicenseLastApplied is the timestamp of the most recent successful
	// operator-managed license upload.
	// +optional
	LicenseLastApplied *metav1.Time `json:"licenseLastApplied,omitempty"`
	// LicenseLastAppliedHash is the SHA-256 hex hash of the trimmed license JWT
	// that LicenseLastApplied refers to.
	// +optional
	LicenseLastAppliedHash string `json:"licenseLastAppliedHash,omitempty"`
	// LicenseTier is a best-effort classification of the currently applied license.
	// Values: none, trial, enterprise, premium, unknown.
	// +optional
	LicenseTier string `json:"licenseTier,omitempty"`
	// EntitlementsLastChecked is when the operator last queried coderd entitlements.
	// +optional
	EntitlementsLastChecked *metav1.Time `json:"entitlementsLastChecked,omitempty"`
	// ExternalProvisionerDaemonsEntitlement is the entitlement value for feature
	// "external_provisioner_daemons".
	// Values: entitled, grace_period, not_entitled, unknown.
	// +optional
	ExternalProvisionerDaemonsEntitlement string `json:"externalProvisionerDaemonsEntitlement,omitempty"`
	// Phase is a high-level readiness indicator.
	Phase string `json:"phase,omitempty"`
	// Conditions are Kubernetes-standard conditions for this resource.
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

CoderControlPlaneStatus defines the observed state of a CoderControlPlane.

func (*CoderControlPlaneStatus) DeepCopy

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

func (*CoderControlPlaneStatus) DeepCopyInto

func (in *CoderControlPlaneStatus) DeepCopyInto(out *CoderControlPlaneStatus)

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

type CoderProvisioner

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

	Spec   CoderProvisionerSpec   `json:"spec,omitempty"`
	Status CoderProvisionerStatus `json:"status,omitempty"`
}

CoderProvisioner is the schema for Coder external provisioner daemon resources.

func (*CoderProvisioner) DeepCopy

func (in *CoderProvisioner) DeepCopy() *CoderProvisioner

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

func (*CoderProvisioner) DeepCopyInto

func (in *CoderProvisioner) DeepCopyInto(out *CoderProvisioner)

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

func (*CoderProvisioner) DeepCopyObject

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

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

type CoderProvisionerKeySpec

type CoderProvisionerKeySpec struct {
	// Name is the provisioner key name in coderd. Defaults to the CR name.
	// +kubebuilder:validation:MaxLength=128
	Name string `json:"name,omitempty"`
	// SecretName is the Kubernetes Secret to store the key. Defaults to "{crName}-provisioner-key".
	// +kubebuilder:validation:MaxLength=253
	SecretName string `json:"secretName,omitempty"`
	// SecretKey is the data key in the Secret. Defaults to "key".
	// +kubebuilder:validation:MaxLength=253
	SecretKey string `json:"secretKey,omitempty"`
}

CoderProvisionerKeySpec configures provisioner key naming and storage.

func (*CoderProvisionerKeySpec) DeepCopy

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

func (*CoderProvisionerKeySpec) DeepCopyInto

func (in *CoderProvisionerKeySpec) DeepCopyInto(out *CoderProvisionerKeySpec)

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

type CoderProvisionerList

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

CoderProvisionerList contains a list of CoderProvisioner objects.

func (*CoderProvisionerList) DeepCopy

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

func (*CoderProvisionerList) DeepCopyInto

func (in *CoderProvisionerList) DeepCopyInto(out *CoderProvisionerList)

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

func (*CoderProvisionerList) DeepCopyObject

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

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

type CoderProvisionerSpec

type CoderProvisionerSpec struct {
	// ControlPlaneRef identifies which CoderControlPlane instance to join.
	// Provisioner key management uses operator-managed access from this
	// control plane's status.operatorTokenSecretRef.
	ControlPlaneRef corev1.LocalObjectReference `json:"controlPlaneRef"`
	// OrganizationName is the Coder organization. Defaults to "default".
	// +kubebuilder:validation:MaxLength=128
	OrganizationName string `json:"organizationName,omitempty"`
	// Key configures provisioner key naming and secret storage.
	Key CoderProvisionerKeySpec `json:"key,omitempty"`
	// Replicas is the desired number of provisioner pods.
	Replicas *int32 `json:"replicas,omitempty"`
	// Tags are attached to the provisioner key for job routing.
	Tags map[string]string `json:"tags,omitempty"`
	// Image is the container image. Defaults to the control plane image.
	Image string `json:"image,omitempty"`
	// ExtraArgs are appended after "provisioner start".
	ExtraArgs []string `json:"extraArgs,omitempty"`
	// ExtraEnv are injected into the provisioner container.
	ExtraEnv []corev1.EnvVar `json:"extraEnv,omitempty"`
	// Resources for the provisioner container.
	Resources corev1.ResourceRequirements `json:"resources,omitempty"`
	// ImagePullSecrets are used by the pod to pull private images.
	ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
	// TerminationGracePeriodSeconds for the provisioner pods.
	TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
}

CoderProvisionerSpec defines the desired state of a CoderProvisioner.

func (*CoderProvisionerSpec) DeepCopy

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

func (*CoderProvisionerSpec) DeepCopyInto

func (in *CoderProvisionerSpec) DeepCopyInto(out *CoderProvisionerSpec)

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

type CoderProvisionerStatus

type CoderProvisionerStatus struct {
	// ObservedGeneration tracks the spec generation this status reflects.
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// ReadyReplicas is the number of ready pods observed in the deployment.
	ReadyReplicas int32 `json:"readyReplicas,omitempty"`
	// Phase is a high-level readiness indicator.
	Phase string `json:"phase,omitempty"`
	// Conditions are Kubernetes-standard conditions for this resource.
	Conditions []metav1.Condition `json:"conditions,omitempty"`
	// OrganizationID is the organization ID last applied to the provisioner key.
	OrganizationID string `json:"organizationID,omitempty"`
	// OrganizationName is the organization name last applied to the provisioner key.
	OrganizationName string `json:"organizationName,omitempty"`
	// ProvisionerKeyID is the provisioner key ID last applied in coderd.
	ProvisionerKeyID string `json:"provisionerKeyID,omitempty"`
	// ProvisionerKeyName is the provisioner key name last applied in coderd.
	ProvisionerKeyName string `json:"provisionerKeyName,omitempty"`
	// TagsHash is a deterministic hash of spec.tags last applied to the provisioner key.
	TagsHash string `json:"tagsHash,omitempty"`
	// ControlPlaneRefName is the control plane ref name last applied to the provisioner key.
	ControlPlaneRefName string `json:"controlPlaneRefName,omitempty"`
	// ControlPlaneURL is the control plane URL last applied to the provisioner key.
	ControlPlaneURL string `json:"controlPlaneURL,omitempty"`
	// SecretRef references the provisioner key secret data currently in use.
	SecretRef *SecretKeySelector `json:"secretRef,omitempty"`
}

CoderProvisionerStatus defines the observed state of a CoderProvisioner.

func (*CoderProvisionerStatus) DeepCopy

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

func (*CoderProvisionerStatus) DeepCopyInto

func (in *CoderProvisionerStatus) DeepCopyInto(out *CoderProvisionerStatus)

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

type CoderWorkspaceProxy

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

	Spec   WorkspaceProxySpec   `json:"spec,omitempty"`
	Status WorkspaceProxyStatus `json:"status,omitempty"`
}

CoderWorkspaceProxy is the schema for Coder workspace proxy resources.

func (*CoderWorkspaceProxy) DeepCopy

func (in *CoderWorkspaceProxy) DeepCopy() *CoderWorkspaceProxy

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

func (*CoderWorkspaceProxy) DeepCopyInto

func (in *CoderWorkspaceProxy) DeepCopyInto(out *CoderWorkspaceProxy)

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

func (*CoderWorkspaceProxy) DeepCopyObject

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

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

type CoderWorkspaceProxyList

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

CoderWorkspaceProxyList contains a list of CoderWorkspaceProxy objects.

func (*CoderWorkspaceProxyList) DeepCopy

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

func (*CoderWorkspaceProxyList) DeepCopyInto

func (in *CoderWorkspaceProxyList) DeepCopyInto(out *CoderWorkspaceProxyList)

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

func (*CoderWorkspaceProxyList) DeepCopyObject

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

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

type ExposeSpec

type ExposeSpec struct {
	// Ingress configures a networking.k8s.io/v1 Ingress.
	// +optional
	Ingress *IngressExposeSpec `json:"ingress,omitempty"`
	// Gateway configures a gateway.networking.k8s.io/v1 HTTPRoute.
	// +optional
	Gateway *GatewayExposeSpec `json:"gateway,omitempty"`
}

ExposeSpec configures external exposure for the control plane. At most one of Ingress or Gateway may be set. +kubebuilder:validation:XValidation:rule="!(has(self.ingress) && has(self.gateway))",message="only one of ingress or gateway may be set"

func (*ExposeSpec) DeepCopy

func (in *ExposeSpec) DeepCopy() *ExposeSpec

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

func (*ExposeSpec) DeepCopyInto

func (in *ExposeSpec) DeepCopyInto(out *ExposeSpec)

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

type GatewayExposeSpec

type GatewayExposeSpec struct {
	// Host is the primary hostname for the HTTPRoute.
	Host string `json:"host"`
	// WildcardHost is an optional wildcard hostname.
	WildcardHost string `json:"wildcardHost,omitempty"`
	// ParentRefs are Gateways that the HTTPRoute attaches to.
	// At least one parentRef is required when gateway exposure is configured.
	// +kubebuilder:validation:MinItems=1
	ParentRefs []GatewayParentRef `json:"parentRefs"`
}

GatewayExposeSpec defines Gateway API (HTTPRoute) exposure configuration.

func (*GatewayExposeSpec) DeepCopy

func (in *GatewayExposeSpec) DeepCopy() *GatewayExposeSpec

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

func (*GatewayExposeSpec) DeepCopyInto

func (in *GatewayExposeSpec) DeepCopyInto(out *GatewayExposeSpec)

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

type GatewayParentRef

type GatewayParentRef struct {
	// Name is the Gateway name.
	Name string `json:"name"`
	// Namespace is the Gateway namespace.
	// +optional
	Namespace *string `json:"namespace,omitempty"`
	// SectionName is the listener name within the Gateway.
	// +optional
	SectionName *string `json:"sectionName,omitempty"`
}

GatewayParentRef identifies a Gateway for HTTPRoute attachment.

func (*GatewayParentRef) DeepCopy

func (in *GatewayParentRef) DeepCopy() *GatewayParentRef

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

func (*GatewayParentRef) DeepCopyInto

func (in *GatewayParentRef) DeepCopyInto(out *GatewayParentRef)

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

type IngressExposeSpec

type IngressExposeSpec struct {
	// ClassName is the Ingress class name.
	ClassName *string `json:"className,omitempty"`
	// Host is the primary hostname for the Ingress rule.
	Host string `json:"host"`
	// WildcardHost is an optional wildcard hostname (e.g., for workspace apps).
	WildcardHost string `json:"wildcardHost,omitempty"`
	// Annotations are applied to the managed Ingress.
	Annotations map[string]string `json:"annotations,omitempty"`
	// TLS configures TLS termination at the Ingress.
	// +optional
	TLS *IngressTLSExposeSpec `json:"tls,omitempty"`
}

IngressExposeSpec defines Ingress exposure configuration.

func (*IngressExposeSpec) DeepCopy

func (in *IngressExposeSpec) DeepCopy() *IngressExposeSpec

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

func (*IngressExposeSpec) DeepCopyInto

func (in *IngressExposeSpec) DeepCopyInto(out *IngressExposeSpec)

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

type IngressTLSExposeSpec

type IngressTLSExposeSpec struct {
	// SecretName is the TLS Secret for the primary host.
	SecretName string `json:"secretName,omitempty"`
	// WildcardSecretName is the TLS Secret for the wildcard host.
	WildcardSecretName string `json:"wildcardSecretName,omitempty"`
}

IngressTLSExposeSpec defines TLS configuration for the Ingress.

func (*IngressTLSExposeSpec) DeepCopy

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

func (*IngressTLSExposeSpec) DeepCopyInto

func (in *IngressTLSExposeSpec) DeepCopyInto(out *IngressTLSExposeSpec)

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

type OperatorAccessSpec

type OperatorAccessSpec struct {
	// Disabled turns off creation and management of the `coder-k8s-operator`
	// user and API token.
	// +kubebuilder:default=false
	Disabled bool `json:"disabled,omitempty"`
	// GeneratedTokenSecretName stores the generated operator API token.
	GeneratedTokenSecretName string `json:"generatedTokenSecretName,omitempty"`
}

OperatorAccessSpec configures the controller-managed coderd operator user.

func (*OperatorAccessSpec) DeepCopy

func (in *OperatorAccessSpec) DeepCopy() *OperatorAccessSpec

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

func (*OperatorAccessSpec) DeepCopyInto

func (in *OperatorAccessSpec) DeepCopyInto(out *OperatorAccessSpec)

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

type ProbeSpec

type ProbeSpec struct {
	// Enabled toggles the probe on or off.
	// When omitted, readiness defaults to enabled while liveness defaults to disabled.
	Enabled *bool `json:"enabled,omitempty"`
	// InitialDelaySeconds is the delay before the probe starts.
	// +kubebuilder:default=0
	InitialDelaySeconds int32 `json:"initialDelaySeconds,omitempty"`
	// PeriodSeconds controls how often the probe is performed.
	PeriodSeconds *int32 `json:"periodSeconds,omitempty"`
	// TimeoutSeconds is the probe timeout.
	TimeoutSeconds *int32 `json:"timeoutSeconds,omitempty"`
	// SuccessThreshold is the minimum consecutive successes for the probe to be considered successful.
	SuccessThreshold *int32 `json:"successThreshold,omitempty"`
	// FailureThreshold is the minimum consecutive failures for the probe to be considered failed.
	FailureThreshold *int32 `json:"failureThreshold,omitempty"`
}

ProbeSpec configures a Kubernetes probe with an enable toggle.

func (*ProbeSpec) DeepCopy

func (in *ProbeSpec) DeepCopy() *ProbeSpec

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

func (*ProbeSpec) DeepCopyInto

func (in *ProbeSpec) DeepCopyInto(out *ProbeSpec)

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

type ProxyBootstrapSpec

type ProxyBootstrapSpec struct {
	// CoderURL is the URL for the primary Coder control plane API.
	CoderURL string `json:"coderURL"`
	// CredentialsSecretRef points to a Secret containing a Coder session token.
	CredentialsSecretRef SecretKeySelector `json:"credentialsSecretRef"`
	// ProxyName is the name used when registering the proxy in Coder.
	ProxyName string `json:"proxyName,omitempty"`
	// DisplayName is the human-readable name for the proxy region.
	DisplayName string `json:"displayName,omitempty"`
	// Icon is the optional icon URL or emoji path for the proxy region.
	Icon string `json:"icon,omitempty"`
	// GeneratedTokenSecretName stores the generated proxy token.
	GeneratedTokenSecretName string `json:"generatedTokenSecretName,omitempty"`
}

ProxyBootstrapSpec configures optional registration with the Coder API.

func (*ProxyBootstrapSpec) DeepCopy

func (in *ProxyBootstrapSpec) DeepCopy() *ProxyBootstrapSpec

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

func (*ProxyBootstrapSpec) DeepCopyInto

func (in *ProxyBootstrapSpec) DeepCopyInto(out *ProxyBootstrapSpec)

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

type RBACSpec

type RBACSpec struct {
	// WorkspacePerms enables Role/RoleBinding creation for workspace resources.
	// When omitted, the default is true.
	// +kubebuilder:default=true
	WorkspacePerms *bool `json:"workspacePerms,omitempty"`
	// EnableDeployments grants apps/deployments permissions (only when WorkspacePerms is true).
	// When omitted, the default is true.
	// +kubebuilder:default=true
	EnableDeployments *bool `json:"enableDeployments,omitempty"`
	// ExtraRules are appended to the managed Role rules.
	ExtraRules []rbacv1.PolicyRule `json:"extraRules,omitempty"`
	// WorkspaceNamespaces lists additional namespaces for Role/RoleBinding creation.
	WorkspaceNamespaces []string `json:"workspaceNamespaces,omitempty"`
}

RBACSpec configures namespace-scoped RBAC for workspace provisioning.

func (*RBACSpec) DeepCopy

func (in *RBACSpec) DeepCopy() *RBACSpec

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

func (*RBACSpec) DeepCopyInto

func (in *RBACSpec) DeepCopyInto(out *RBACSpec)

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

type SecretKeySelector

type SecretKeySelector struct {
	// Name is the Kubernetes Secret name.
	Name string `json:"name"`
	// Key is the key inside the Secret data map.
	Key string `json:"key,omitempty"`
}

SecretKeySelector identifies a key in a Secret.

func (*SecretKeySelector) DeepCopy

func (in *SecretKeySelector) DeepCopy() *SecretKeySelector

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

func (*SecretKeySelector) DeepCopyInto

func (in *SecretKeySelector) DeepCopyInto(out *SecretKeySelector)

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

type ServiceAccountSpec

type ServiceAccountSpec struct {
	// DisableCreate skips ServiceAccount creation (use an existing SA).
	// +kubebuilder:default=false
	DisableCreate bool `json:"disableCreate,omitempty"`
	// Name overrides the ServiceAccount name. Defaults to the CoderControlPlane name.
	Name string `json:"name,omitempty"`
	// Annotations are applied to the managed ServiceAccount.
	Annotations map[string]string `json:"annotations,omitempty"`
	// Labels are applied to the managed ServiceAccount.
	Labels map[string]string `json:"labels,omitempty"`
}

ServiceAccountSpec configures the ServiceAccount used by the Coder pod.

func (*ServiceAccountSpec) DeepCopy

func (in *ServiceAccountSpec) DeepCopy() *ServiceAccountSpec

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

func (*ServiceAccountSpec) DeepCopyInto

func (in *ServiceAccountSpec) DeepCopyInto(out *ServiceAccountSpec)

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

type ServiceSpec

type ServiceSpec struct {
	// Type controls the Kubernetes service type.
	// +kubebuilder:default="ClusterIP"
	Type corev1.ServiceType `json:"type,omitempty"`
	// Port controls the exposed service port.
	// +kubebuilder:default=80
	Port int32 `json:"port,omitempty"`
	// Annotations are applied to the reconciled service object.
	Annotations map[string]string `json:"annotations,omitempty"`
}

ServiceSpec defines the Service configuration reconciled by the operator.

func (*ServiceSpec) DeepCopy

func (in *ServiceSpec) DeepCopy() *ServiceSpec

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

func (*ServiceSpec) DeepCopyInto

func (in *ServiceSpec) DeepCopyInto(out *ServiceSpec)

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

type TLSSpec

type TLSSpec struct {
	// SecretNames lists TLS secrets to mount for built-in TLS.
	// When non-empty, TLS is enabled on the Coder control plane.
	SecretNames []string `json:"secretNames,omitempty"`
}

TLSSpec configures Coder built-in TLS.

func (*TLSSpec) DeepCopy

func (in *TLSSpec) DeepCopy() *TLSSpec

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

func (*TLSSpec) DeepCopyInto

func (in *TLSSpec) DeepCopyInto(out *TLSSpec)

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

type WorkspaceProxySpec

type WorkspaceProxySpec struct {
	// Image is the container image used for the workspace proxy pod.
	Image string `json:"image,omitempty"`
	// Replicas is the desired number of proxy pods.
	Replicas *int32 `json:"replicas,omitempty"`
	// Service controls the service created in front of the workspace proxy.
	// +kubebuilder:default={}
	Service ServiceSpec `json:"service,omitempty"`
	// PrimaryAccessURL is the coderd URL the proxy should connect to.
	PrimaryAccessURL string `json:"primaryAccessURL,omitempty"`
	// ProxySessionTokenSecretRef points to a Secret key containing the proxy token.
	ProxySessionTokenSecretRef *SecretKeySelector `json:"proxySessionTokenSecretRef,omitempty"`
	// Bootstrap optionally registers the proxy and mints a proxy token.
	Bootstrap *ProxyBootstrapSpec `json:"bootstrap,omitempty"`
	// DerpOnly configures the workspace proxy to only serve DERP traffic.
	DerpOnly bool `json:"derpOnly,omitempty"`
	// ExtraArgs are appended to the default workspace proxy arguments.
	ExtraArgs []string `json:"extraArgs,omitempty"`
	// ExtraEnv are injected into the workspace proxy container.
	ExtraEnv []corev1.EnvVar `json:"extraEnv,omitempty"`
	// ImagePullSecrets are used by the pod to pull private images.
	ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
}

WorkspaceProxySpec defines the desired state of a WorkspaceProxy.

func (*WorkspaceProxySpec) DeepCopy

func (in *WorkspaceProxySpec) DeepCopy() *WorkspaceProxySpec

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

func (*WorkspaceProxySpec) DeepCopyInto

func (in *WorkspaceProxySpec) DeepCopyInto(out *WorkspaceProxySpec)

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

type WorkspaceProxyStatus

type WorkspaceProxyStatus struct {
	// ObservedGeneration tracks the spec generation this status reflects.
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
	// ReadyReplicas is the number of ready pods observed in the deployment.
	ReadyReplicas int32 `json:"readyReplicas,omitempty"`
	// Registered reports whether bootstrap registration completed successfully.
	Registered bool `json:"registered,omitempty"`
	// ProxyTokenSecretRef is the Secret used for the proxy session token.
	ProxyTokenSecretRef *SecretKeySelector `json:"proxyTokenSecretRef,omitempty"`
	// Phase is a high-level readiness indicator.
	Phase string `json:"phase,omitempty"`
	// Conditions are Kubernetes-standard conditions for this resource.
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

WorkspaceProxyStatus defines the observed state of a WorkspaceProxy.

func (*WorkspaceProxyStatus) DeepCopy

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

func (*WorkspaceProxyStatus) DeepCopyInto

func (in *WorkspaceProxyStatus) DeepCopyInto(out *WorkspaceProxyStatus)

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