From 107713ccd34545827385c2a2144767244c1313e0 Mon Sep 17 00:00:00 2001 From: Aleksei Kobzev Date: Tue, 29 Jul 2025 09:16:54 +0300 Subject: [PATCH 1/2] grpc-public-host pqv0 support --- internal/resources/storage_statefulset.go | 32 +++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/internal/resources/storage_statefulset.go b/internal/resources/storage_statefulset.go index 11d1cf0e..11eb92ec 100644 --- a/internal/resources/storage_statefulset.go +++ b/internal/resources/storage_statefulset.go @@ -4,6 +4,7 @@ import ( "errors" "fmt" "strconv" + "strings" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" @@ -570,6 +571,37 @@ func (b *StorageStatefulSetBuilder) buildContainerArgs() ([]string, []string) { } } + var publicHost string + if b.Spec.Service.GRPC.ExternalHost != "" { + publicHost = fmt.Sprintf("%s.%s", "$(POD_NAME)", b.Spec.Service.GRPC.ExternalHost) + } + if value, ok := b.ObjectMeta.Annotations[api.AnnotationGRPCPublicHost]; ok { + publicHost = value + } + if publicHost != "" { + if !(strings.HasPrefix(publicHost, "$(POD_NAME)") || strings.HasPrefix(publicHost, "$(NODE_NAME)")) { + publicHost = fmt.Sprintf("%s.%s", "$(POD_NAME)", publicHost) + } + args = append(args, + "--grpc-public-host", + publicHost, + ) + } + + var publicPort string + if b.Spec.Service.GRPC.ExternalPort > 0 { + publicPort = fmt.Sprintf("%d", b.Spec.Service.GRPC.ExternalPort) + } + if value, ok := b.ObjectMeta.Annotations[api.AnnotationGRPCPublicPort]; ok { + publicPort = value + } + if publicPort != "" { + args = append(args, + "--grpc-public-port", + publicPort, + ) + } + return command, args } From 380091832aa47458b40ec0b151d5d55ec36fbe20 Mon Sep 17 00:00:00 2001 From: Aleksei Kobzev Date: Tue, 29 Jul 2025 10:57:08 +0300 Subject: [PATCH 2/2] add buildEnv for storage --- internal/resources/storage_statefulset.go | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/internal/resources/storage_statefulset.go b/internal/resources/storage_statefulset.go index 11eb92ec..40a52329 100644 --- a/internal/resources/storage_statefulset.go +++ b/internal/resources/storage_statefulset.go @@ -102,6 +102,42 @@ func (b *StorageStatefulSetBuilder) Build(obj client.Object) error { return nil } +func (b *StorageStatefulSetBuilder) buildEnv() []corev1.EnvVar { + var envVars []corev1.EnvVar + + envVars = append(envVars, + corev1.EnvVar{ + Name: "POD_NAME", // for `--grpc-public-host` flag + ValueFrom: &corev1.EnvVarSource{ + FieldRef: &corev1.ObjectFieldSelector{ + APIVersion: "v1", + FieldPath: "metadata.name", + }, + }, + }, + corev1.EnvVar{ + Name: "NODE_NAME", // for `--grpc-public-host` flag + ValueFrom: &corev1.EnvVarSource{ + FieldRef: &corev1.ObjectFieldSelector{ + APIVersion: "v1", + FieldPath: "metadata.name", + }, + }, + }, + corev1.EnvVar{ + Name: "POD_IP", // for `--grpc-public-address-` flag + ValueFrom: &corev1.EnvVarSource{ + FieldRef: &corev1.ObjectFieldSelector{ + APIVersion: "v1", + FieldPath: "status.podIP", + }, + }, + }, + ) + + return envVars +} + func (b *StorageStatefulSetBuilder) buildPodTemplateLabels() labels.Labels { podTemplateLabels := labels.Labels{} @@ -404,6 +440,7 @@ func (b *StorageStatefulSetBuilder) buildContainer() corev1.Container { // todo ImagePullPolicy: imagePullPolicy, Command: command, Args: args, + Env: b.buildEnv(), SecurityContext: mergeSecurityContextWithDefaults(b.Spec.SecurityContext),