Files

58 lines
1.4 KiB
Go
Raw Permalink Normal View History

2026-08-13 01:57:26 +07:00
package v1alpha1
2026-08-13 03:29:29 +07:00
import corev1 "k8s.io/api/core/v1"
2026-08-13 01:57:26 +07:00
const (
Domain = "minikura.kirameki.cafe"
LabelPrefix = Domain
LabelServerType = LabelPrefix + "/server-type"
LabelServerID = LabelPrefix + "/server-id"
LabelProxyID = LabelPrefix + "/proxy-id"
LabelManagedBy = LabelPrefix + "/managed-by"
ManagerName = "minikura-operator"
PhasePending = "Pending"
PhaseRunning = "Running"
PhaseFailed = "Failed"
ConditionReady = "Ready"
)
2026-08-13 03:29:29 +07:00
// +kubebuilder:validation:XValidation:rule="!(has(self.value) && has(self.valueFrom))",message="value and valueFrom are mutually exclusive"
2026-08-13 01:57:26 +07:00
type EnvVar struct {
Name string `json:"name"`
// +optional
Value string `json:"value,omitempty"`
2026-08-13 03:29:29 +07:00
// +optional
ValueFrom *corev1.EnvVarSource `json:"valueFrom,omitempty"`
2026-08-13 01:57:26 +07:00
}
// +kubebuilder:validation:Enum=ClusterIP;NodePort;LoadBalancer
type ServiceExposure string
const (
ExposureClusterIP ServiceExposure = "ClusterIP"
ExposureNodePort ServiceExposure = "NodePort"
ExposureLoadBalancer ServiceExposure = "LoadBalancer"
)
type Resources struct {
// +kubebuilder:validation:Minimum=256
// +kubebuilder:default=2048
MemoryLimitMB int32 `json:"memoryLimitMB,omitempty"`
// +optional
// +kubebuilder:validation:Minimum=256
MemoryRequestMB int32 `json:"memoryRequestMB,omitempty"`
// +kubebuilder:default="500m"
CPURequest string `json:"cpuRequest,omitempty"`
// +kubebuilder:default="2"
CPULimit string `json:"cpuLimit,omitempty"`
}