This commit is contained in:
Nikola Jokic
2026-06-15 16:22:23 +02:00
parent b4da30412b
commit b3a6c2e0cb
16 changed files with 252 additions and 166 deletions
@@ -24,36 +24,36 @@ import (
// AutoscalingListenerSpec defines the desired state of AutoscalingListener
type AutoscalingListenerSpec struct {
// Required
// +required
GitHubConfigURL string `json:"githubConfigUrl,omitempty"`
// Required
// +required
GitHubConfigSecret string `json:"githubConfigSecret,omitempty"`
// Required
// +required
RunnerScaleSetID int `json:"runnerScaleSetId,omitempty"`
// Required
// +required
AutoscalingRunnerSetNamespace string `json:"autoscalingRunnerSetNamespace,omitempty"`
// Required
// +required
AutoscalingRunnerSetName string `json:"autoscalingRunnerSetName,omitempty"`
// Required
// +required
EphemeralRunnerSetName string `json:"ephemeralRunnerSetName,omitempty"`
// Required
// +kubebuilder:validation:Minimum:=0
// +kubebuilder:validation:Minimum=0
// +required
MaxRunners int `json:"maxRunners,omitempty"`
// Required
// +kubebuilder:validation:Minimum:=0
// +kubebuilder:validation:Minimum=0
// +required
MinRunners int `json:"minRunners,omitempty"`
// Required
// +required
Image string `json:"image,omitempty"`
// Required
// +required
ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
// +optional
@@ -99,17 +99,22 @@ type AutoscalingListenerStatus struct{}
// AutoscalingListener is the Schema for the autoscalinglisteners API
type AutoscalingListener struct {
metav1.TypeMeta `json:",inline"`
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec AutoscalingListenerSpec `json:"spec,omitempty"`
// +optional
Spec AutoscalingListenerSpec `json:"spec,omitempty"`
// +optional
Status AutoscalingListenerStatus `json:"status,omitempty"`
}
// AutoscalingListenerList is a list of AutoscalingListener resources
// +kubebuilder:object:root=true
// AutoscalingListenerList contains a list of AutoscalingListener
type AutoscalingListenerList struct {
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ListMeta `json:"metadata,omitempty"`
Items []AutoscalingListener `json:"items"`
}
@@ -40,8 +40,7 @@ import (
// +kubebuilder:printcolumn:JSONPath=".status.phase",name=Phase,type=string
// +kubebuilder:printcolumn:JSONPath=".status.pendingEphemeralRunners",name=Pending Runners,type=integer
// +kubebuilder:printcolumn:JSONPath=".status.runningEphemeralRunners",name=Running Runners,type=integer
// +kubebuilder:printcolumn:JSONPath=".status.finishedEphemeralRunners",name=Finished Runners,type=integer
// +kubebuilder:printcolumn:JSONPath=".status.deletingEphemeralRunners",name=Deleting Runners,type=integer
// +kubebuilder:printcolumn:JSONPath=".status.failedEphemeralRunners",name=Failed Runners,type=integer
// AutoscalingRunnerSet is the Schema for the autoscalingrunnersets API
type AutoscalingRunnerSet struct {
@@ -54,10 +53,10 @@ type AutoscalingRunnerSet struct {
// AutoscalingRunnerSetSpec defines the desired state of AutoscalingRunnerSet
type AutoscalingRunnerSetSpec struct {
// Required
// +required
GitHubConfigUrl string `json:"githubConfigUrl,omitempty"`
// Required
// +required
GitHubConfigSecret string `json:"githubConfigSecret,omitempty"`
// +optional
@@ -78,7 +77,7 @@ type AutoscalingRunnerSetSpec struct {
// +optional
VaultConfig *VaultConfig `json:"vaultConfig,omitempty"`
// Required
// +required
Template corev1.PodTemplateSpec `json:"template,omitempty"`
// +optional
@@ -112,16 +111,16 @@ type AutoscalingRunnerSetSpec struct {
EphemeralRunnerConfigSecretMetadata *ResourceMeta `json:"ephemeralRunnerConfigSecretMetadata,omitempty"`
// +optional
// +kubebuilder:validation:Minimum:=0
// +kubebuilder:validation:Minimum=0
MaxRunners *int `json:"maxRunners,omitempty"`
// +optional
// +kubebuilder:validation:Minimum:=0
// +kubebuilder:validation:Minimum=0
MinRunners *int `json:"minRunners,omitempty"`
}
type TLSConfig struct {
// Required
// +required
CertificateFrom *TLSCertificateSource `json:"certificateFrom,omitempty"`
}
@@ -158,7 +157,7 @@ func (c *TLSConfig) ToCertPool(keyFetcher func(name, key string) ([]byte, error)
}
type TLSCertificateSource struct {
// Required
// +required
ConfigMapKeyRef *corev1.ConfigMapKeySelector `json:"configMapKeyRef,omitempty"`
}
@@ -259,7 +258,7 @@ func (c *ProxyConfig) ProxyFunc(secretFetcher func(string) (*corev1.Secret, erro
}
type ProxyServerConfig struct {
// Required
// +required
URL string `json:"url,omitempty"`
// +optional
@@ -41,10 +41,13 @@ const EphemeralRunnerContainerName = "runner"
// EphemeralRunner is the Schema for the ephemeralrunners API
type EphemeralRunner struct {
metav1.TypeMeta `json:",inline"`
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec EphemeralRunnerSpec `json:"spec,omitempty"`
// +optional
Spec EphemeralRunnerSpec `json:"spec,omitempty"`
// +optional
Status EphemeralRunnerStatus `json:"status,omitempty"`
}
@@ -23,10 +23,13 @@ import (
// EphemeralRunnerSetSpec defines the desired state of EphemeralRunnerSet
type EphemeralRunnerSetSpec struct {
// Replicas is the number of desired EphemeralRunner resources in the k8s namespace.
// +optional
Replicas int `json:"replicas,omitempty"`
// PatchID is the unique identifier for the patch issued by the listener app
// +optional
PatchID int `json:"patchID"`
// EphemeralRunnerSpec is the spec of the ephemeral runner
// +optional
EphemeralRunnerSpec EphemeralRunnerSpec `json:"ephemeralRunnerSpec,omitempty"`
// EphemeralRunnerMetadata is the metadata to be applied to all ephemeral runners created by this set.
// If the EphemeralRunnerMetadata is updated, the update applies to new ephemeral runners created after the update,
@@ -39,6 +42,7 @@ type EphemeralRunnerSetSpec struct {
type EphemeralRunnerSetStatus struct {
// CurrentReplicas is the number of currently running EphemeralRunner resources being managed by this EphemeralRunnerSet.
// +kubebuilder:validation:Minimum=0
// +optional
CurrentReplicas int `json:"currentReplicas"`
// +optional
// +kubebuilder:validation:Minimum=0
@@ -75,10 +79,13 @@ const (
// EphemeralRunnerSet is the Schema for the ephemeralrunnersets API
type EphemeralRunnerSet struct {
metav1.TypeMeta `json:",inline"`
metav1.TypeMeta `json:",inline"`
// +optional
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec EphemeralRunnerSetSpec `json:"spec,omitempty"`
// +optional
Spec EphemeralRunnerSetSpec `json:"spec,omitempty"`
// +optional
Status EphemeralRunnerSetStatus `json:"status,omitempty"`
}