4 corev1 "k8s.io/api/core/v1"
\r
5 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
\r
10 func GetStatefulSet() []*appsv1.StatefulSet {
\r
12 statefulSet1 := &appsv1.StatefulSet{
\r
13 ObjectMeta: metav1.ObjectMeta{
\r
14 Namespace: "ricplt",
\r
15 Labels: map[string]string{
\r
16 "app": "ricplt-dbaas",
\r
17 "chart": "dbaas-2.0.0",
\r
19 "release": "release-name",
\r
21 Name: "statefulset-ricplt-dbaas-server",
\r
23 Spec: appsv1.StatefulSetSpec{
\r
24 PodManagementPolicy: appsv1.PodManagementPolicyType("OrderedReady"),
\r
25 Replicas: int32Ptr(1),
\r
26 Selector: &metav1.LabelSelector{
\r
27 MatchLabels: map[string]string{
\r
28 "app": "ricplt-dbaas",
\r
29 "release": "release-name",
\r
32 ServiceName: "service-ricplt-dbaas-tcp",
\r
33 Template: corev1.PodTemplateSpec{
\r
34 ObjectMeta: metav1.ObjectMeta{
\r
35 Labels: map[string]string{
\r
36 "app": "ricplt-dbaas",
\r
37 "release": "release-name",
\r
40 Spec: corev1.PodSpec{
\r
41 ImagePullSecrets: []corev1.LocalObjectReference{
\r
43 corev1.LocalObjectReference{
\r
44 Name: "secret-nexus3-o-ran-sc-org-10002-o-ran-sc",
\r
47 ShareProcessNamespace: boolPtr(true),
\r
48 TerminationGracePeriodSeconds: int64Ptr(5),
\r
49 Volumes: []corev1.Volume{
\r
53 VolumeSource: corev1.VolumeSource{
\r
54 ConfigMap: &corev1.ConfigMapVolumeSource{
\r
55 LocalObjectReference: corev1.LocalObjectReference{
\r
56 Name: "configmap-ricplt-dbaas-config",
\r
62 Containers: []corev1.Container{
\r
69 EnvFrom: []corev1.EnvFromSource{
\r
71 corev1.EnvFromSource{
\r
72 ConfigMapRef: &corev1.ConfigMapEnvSource{
\r
73 LocalObjectReference: corev1.LocalObjectReference{
\r
74 Name: "configmap-ricplt-dbaas-appconfig",
\r
79 LivenessProbe: &corev1.Probe{
\r
81 ProbeHandler: corev1.ProbeHandler{
\r
82 Exec: &corev1.ExecAction{
\r
87 "timeout 10 redis-cli -p 6379 ping",
\r
91 InitialDelaySeconds: 15,
\r
95 VolumeMounts: []corev1.VolumeMount{
\r
105 "/data/redis.conf",
\r
107 Image: "nexus3.o-ran-sc.org:10002/o-ran-sc/ric-plt-dbaas:0.6.1",
\r
108 Name: "container-ricplt-dbaas-redis",
\r
109 Ports: []corev1.ContainerPort{
\r
111 corev1.ContainerPort{
\r
112 ContainerPort: 6379,
\r
116 ReadinessProbe: &corev1.Probe{
\r
117 InitialDelaySeconds: 15,
\r
119 ProbeHandler: corev1.ProbeHandler{
\r
120 Exec: &corev1.ExecAction{
\r
125 "timeout 10 redis-cli -p 6379 ping",
\r
134 HostNetwork: false,
\r
138 UpdateStrategy: appsv1.StatefulSetUpdateStrategy{
\r
139 Type: appsv1.StatefulSetUpdateStrategyType("RollingUpdate"),
\r
142 TypeMeta: metav1.TypeMeta{
\r
143 APIVersion: "apps/v1",
\r
144 Kind: "StatefulSet",
\r
148 statefulSet2 := &appsv1.StatefulSet{
\r
149 ObjectMeta: metav1.ObjectMeta{
\r
150 Name: "redis-cluster",
\r
152 Spec: appsv1.StatefulSetSpec{
\r
153 Replicas: int32Ptr(9),
\r
154 Selector: &metav1.LabelSelector{
\r
155 MatchLabels: map[string]string{
\r
156 "app.kubernetes.io/instance": "release-name",
\r
157 "app.kubernetes.io/name": "redis-cluster",
\r
160 Template: corev1.PodTemplateSpec{
\r
161 ObjectMeta: metav1.ObjectMeta{
\r
162 Labels: map[string]string{
\r
163 "app.kubernetes.io/instance": "release-name",
\r
164 "app.kubernetes.io/name": "redis-cluster",
\r
167 Spec: corev1.PodSpec{
\r
168 Volumes: []corev1.Volume{
\r
172 VolumeSource: corev1.VolumeSource{
\r
173 ConfigMap: &corev1.ConfigMapVolumeSource{
\r
174 DefaultMode: int32Ptr(493),
\r
175 LocalObjectReference: corev1.LocalObjectReference{
\r
176 Name: "redis-cluster-cm",
\r
182 Containers: []corev1.Container{
\r
190 "/conf/update-node.sh",
\r
192 "/conf/redis.conf",
\r
195 Ports: []corev1.ContainerPort{
\r
197 corev1.ContainerPort{
\r
198 ContainerPort: 6379,
\r
201 corev1.ContainerPort{
\r
203 ContainerPort: 16379,
\r
206 VolumeMounts: []corev1.VolumeMount{
\r
208 corev1.VolumeMount{
\r
211 MountPath: "/conf",
\r
213 corev1.VolumeMount{
\r
214 MountPath: "/data",
\r
219 Env: []corev1.EnvVar{
\r
223 ValueFrom: &corev1.EnvVarSource{
\r
224 FieldRef: &corev1.ObjectFieldSelector{
\r
225 FieldPath: "status.podIP",
\r
230 Image: "redis:5.0.1-alpine",
\r
231 ImagePullPolicy: corev1.PullPolicy("IfNotPresent"),
\r
235 HostNetwork: false,
\r
237 TopologySpreadConstraints: []corev1.TopologySpreadConstraint{
\r
239 corev1.TopologySpreadConstraint{
\r
240 TopologyKey: "kubernetes.io/hostname",
\r
241 WhenUnsatisfiable: corev1.UnsatisfiableConstraintAction("DoNotSchedule"),
\r
242 LabelSelector: &metav1.LabelSelector{
\r
243 MatchLabels: map[string]string{
\r
244 "app.kubernetes.io/instance": "release-name",
\r
245 "app.kubernetes.io/name": "redis-cluster",
\r
253 VolumeClaimTemplates: []corev1.PersistentVolumeClaim{
\r
255 corev1.PersistentVolumeClaim{
\r
256 ObjectMeta: metav1.ObjectMeta{
\r
257 Labels: map[string]string{
\r
258 "app.kubernetes.io/name": "redis-cluster",
\r
259 "app.kubernetes.io/instance": "release-name",
\r
263 Spec: corev1.PersistentVolumeClaimSpec{
\r
264 AccessModes: []corev1.PersistentVolumeAccessMode{
\r
266 corev1.PersistentVolumeAccessMode("ReadWriteOnce"),
\r
268 Resources: corev1.ResourceRequirements{
\r
269 Requests: corev1.ResourceList{
\r
270 "storage": resource.MustParse("1Gi"),
\r
277 TypeMeta: metav1.TypeMeta{
\r
278 APIVersion: "apps/v1",
\r
279 Kind: "StatefulSet",
\r
283 return []*appsv1.StatefulSet{statefulSet1, statefulSet2}
\r