Skip to content

Commit 20e832f

Browse files
committed
feat:
1 parent 95ebf5b commit 20e832f

File tree

10 files changed

+73
-9
lines changed

10 files changed

+73
-9
lines changed

api/v1alpha1/const.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,12 @@ const (
99
DefaultDomainName = "cluster.local"
1010
DNSDomainAnnotation = "dns.domain"
1111

12-
GRPCPort = 2135
13-
GRPCServicePortName = "grpc"
14-
GRPCProto = "grpc://"
15-
GRPCSProto = "grpcs://"
16-
GRPCServiceFQDNFormat = "%s-grpc.%s.svc.%s"
12+
GRPCPort = 2135
13+
GRPCServicePortName = "grpc"
14+
GRPCServiceAdditionalPortName = "additional-grpc"
15+
GRPCProto = "grpc://"
16+
GRPCSProto = "grpcs://"
17+
GRPCServiceFQDNFormat = "%s-grpc.%s.svc.%s"
1718

1819
InterconnectPort = 19001
1920
InterconnectServicePortName = "interconnect"

api/v1alpha1/service_types.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ type TLSConfiguration struct {
2020
type GRPCService struct {
2121
Service `json:""`
2222

23+
AdditionalPort int32 `json:"additionalPort,omitempty"`
24+
2325
TLSConfiguration *TLSConfiguration `json:"tls,omitempty"`
2426
ExternalHost string `json:"externalHost,omitempty"`
2527
ExternalPort int32 `json:"externalPort,omitempty"`

deploy/ydb-operator/crds/database.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4073,6 +4073,9 @@ spec:
40734073
additionalProperties:
40744074
type: string
40754075
type: object
4076+
additionalPort:
4077+
format: int32
4078+
type: integer
40764079
externalHost:
40774080
type: string
40784081
externalPort:

deploy/ydb-operator/crds/databasenodeset.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2685,6 +2685,9 @@ spec:
26852685
additionalProperties:
26862686
type: string
26872687
type: object
2688+
additionalPort:
2689+
format: int32
2690+
type: integer
26882691
externalHost:
26892692
type: string
26902693
externalPort:

deploy/ydb-operator/crds/remotedatabasenodeset.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2686,6 +2686,9 @@ spec:
26862686
additionalProperties:
26872687
type: string
26882688
type: object
2689+
additionalPort:
2690+
format: int32
2691+
type: integer
26892692
externalHost:
26902693
type: string
26912694
externalPort:

deploy/ydb-operator/crds/remotestoragenodeset.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2713,6 +2713,9 @@ spec:
27132713
additionalProperties:
27142714
type: string
27152715
type: object
2716+
additionalPort:
2717+
format: int32
2718+
type: integer
27162719
externalHost:
27172720
type: string
27182721
externalPort:

deploy/ydb-operator/crds/storage.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5214,6 +5214,9 @@ spec:
52145214
additionalProperties:
52155215
type: string
52165216
type: object
5217+
additionalPort:
5218+
format: int32
5219+
type: integer
52175220
externalHost:
52185221
type: string
52195222
externalPort:

deploy/ydb-operator/crds/storagenodeset.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2712,6 +2712,9 @@ spec:
27122712
additionalProperties:
27132713
type: string
27142714
type: object
2715+
additionalPort:
2716+
format: int32
2717+
type: integer
27152718
externalHost:
27162719
type: string
27172720
externalPort:

internal/controllers/storage/controller_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,38 @@ var _ = Describe("Storage controller medium tests", func() {
9797
},
9898
})
9999

100+
storageSample.Spec.Service.GRPC.AdditionalPort = 2136
101+
100102
Expect(k8sClient.Create(ctx, storageSample)).Should(Succeed())
101103

104+
By("Check grpc service has an additional port...", func() {
105+
var svc corev1.Service
106+
serviceName := fmt.Sprintf("%v-grpc", testobjects.StorageName)
107+
Eventually(func() bool {
108+
err := k8sClient.Get(ctx,
109+
client.ObjectKey{
110+
Name: serviceName,
111+
Namespace: testobjects.YdbNamespace,
112+
},
113+
&svc,
114+
)
115+
if err != nil {
116+
return false
117+
}
118+
return true
119+
}, test.Timeout, test.Interval).Should(BeTrue(),
120+
"Service %s/%s should eventually exist", testobjects.YdbNamespace, serviceName,
121+
)
122+
123+
ports := svc.Spec.Ports
124+
Expect(len(ports)).To(Equal(2), "expected 2 ports but got %d", len(ports))
125+
Expect(ports[0].Port).To(Equal(int32(2135)))
126+
Expect(ports[0].Name).To(Equal(v1alpha1.GRPCServicePortName))
127+
Expect(ports[1].Port).To(Equal(int32(2136)))
128+
Expect(ports[1].Name).To(Equal(v1alpha1.GRPCServiceAdditionalPortName))
129+
Expect(ports[1].TargetPort.IntVal).To(Equal(int32(2136)))
130+
})
131+
102132
By("Check volume has been propagated to pods...")
103133
storageStatefulSets := appsv1.StatefulSetList{}
104134
Eventually(func() bool {

internal/resources/storage.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,7 @@ func (b *StorageClusterBuilder) GetResourceBuilders(restConfig *rest.Config) []R
177177
Labels: grpcServiceLabels,
178178
SelectorLabels: storageSelectorLabels,
179179
Annotations: b.Spec.Service.GRPC.AdditionalAnnotations,
180-
Ports: []corev1.ServicePort{{
181-
Name: api.GRPCServicePortName,
182-
Port: api.GRPCPort,
183-
}},
180+
Ports: b.buildGrpcServicePorts(),
184181
IPFamilies: b.Spec.Service.GRPC.IPFamilies,
185182
IPFamilyPolicy: b.Spec.Service.GRPC.IPFamilyPolicy,
186183
},
@@ -214,6 +211,22 @@ func (b *StorageClusterBuilder) GetResourceBuilders(restConfig *rest.Config) []R
214211
)
215212
}
216213

214+
func (b *StorageClusterBuilder) buildGrpcServicePorts() []corev1.ServicePort {
215+
ports := []corev1.ServicePort{{
216+
Name: api.GRPCServicePortName,
217+
Port: api.GRPCPort,
218+
}}
219+
220+
if b.Spec.Service.GRPC.AdditionalPort != 0 {
221+
ports = append(ports, corev1.ServicePort{
222+
Name: api.GRPCServiceAdditionalPortName,
223+
Port: b.Spec.Service.GRPC.AdditionalPort,
224+
})
225+
}
226+
227+
return ports
228+
}
229+
217230
func (b *StorageClusterBuilder) getNodeSetBuilders() []ResourceBuilder {
218231
var nodeSetBuilders []ResourceBuilder
219232

0 commit comments

Comments
 (0)