@@ -17,19 +17,57 @@ limitations under the License.
17
17
package v1
18
18
19
19
import (
20
+ corev1 "k8s.io/api/core/v1"
20
21
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
21
22
)
22
23
23
- // EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
24
- // NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
25
-
26
24
// MetabaseSpec defines the desired state of Metabase
27
25
type MetabaseSpec struct {
28
26
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
29
27
// Important: Run "make" to regenerate code after modifying this file
30
28
31
- // Foo is an example field of Metabase. Edit metabase_types.go to remove/update
32
- Foo string `json:"foo,omitempty"`
29
+ // +kubebuilder:default="postgres:latest"
30
+ // +kubebuilder:validation:Optional
31
+ Test string `json:"test"`
32
+
33
+ // +kubebuilder:validation:Required
34
+ DB DBSpec `json:"db"`
35
+ }
36
+
37
+ type DBSpec struct {
38
+ // The image name to use for PostgreSQL containers.
39
+ // +kubebuilder:default="postgres:latest"
40
+ // +kubebuilder:validation:Optional
41
+ Image string `json:"image,omitempty"`
42
+
43
+ // ImagePullPolicy is used to determine when Kubernetes will attempt to
44
+ // pull (download) container images.
45
+ // +kubebuilder:validation:Enum={Always,Never,IfNotPresent}
46
+ // +kubebuilder:default="IfNotPresent"
47
+ // +kubebuilder:validation:Optional
48
+ ImagePullPolicy corev1.PullPolicy `json:"imagePullPolicy,omitempty"`
49
+
50
+ // Number of desired PostgreSQL pods.
51
+ // +kubebuilder:validation:Minimum=1
52
+ // +kubebuilder:default=1
53
+ // +kubebuilder:validation:Optional
54
+ Replicas * int32 `json:"replicas,omitempty"`
55
+
56
+ // +kubebuilder:validation:Required
57
+ Volume VolumeSpec `json:"volume"`
58
+ }
59
+
60
+ type VolumeSpec struct {
61
+ // StorageClassName defined for the volume.
62
+ // +kubebuilder:validation:Optional
63
+ StorageClassName * string `json:"storageClassName,omitempty"`
64
+
65
+ // Size of the volume.
66
+ // +kubebuilder:validation:default=10Gi
67
+ // +kubebuilder:validation:Pattern=`^\d+(Gi|Gb|Ki|)$`
68
+ // +kubebuilder:validation:Pattern=`^\d+(Ki|Mi|Gi|Ti|Pi|Ei|m|k|M|G|T|P|E)$`
69
+ // +kubebuilder:validation:Required
70
+ Size string `json:"size"`
33
71
}
34
72
35
73
// MetabaseStatus defines the observed state of Metabase
@@ -46,7 +84,8 @@ type Metabase struct {
46
84
metav1.TypeMeta `json:",inline"`
47
85
metav1.ObjectMeta `json:"metadata,omitempty"`
48
86
49
- Spec MetabaseSpec `json:"spec,omitempty"`
87
+ // +kubebuilder:validation:Required
88
+ Spec MetabaseSpec `json:"spec"`
50
89
Status MetabaseStatus `json:"status,omitempty"`
51
90
}
52
91
0 commit comments