@@ -75,15 +75,26 @@ func (b *DatabaseStatefulSetBuilder) Build(obj client.Object) error {
7575func (b * DatabaseStatefulSetBuilder ) buildEnv () []corev1.EnvVar {
7676 var envVars []corev1.EnvVar
7777
78- envVars = append (envVars , corev1.EnvVar {
79- Name : "NODE_NAME" , // for `--grpc-public-host` flag
80- ValueFrom : & corev1.EnvVarSource {
81- FieldRef : & corev1.ObjectFieldSelector {
82- APIVersion : "v1" ,
83- FieldPath : "metadata.name" ,
78+ envVars = append (envVars ,
79+ corev1.EnvVar {
80+ Name : "NODE_NAME" , // for `--grpc-public-host` flag
81+ ValueFrom : & corev1.EnvVarSource {
82+ FieldRef : & corev1.ObjectFieldSelector {
83+ APIVersion : "v1" ,
84+ FieldPath : "metadata.name" ,
85+ },
8486 },
8587 },
86- })
88+ corev1.EnvVar {
89+ Name : "POD_IP" , // for `--grpc-public-address-<ip-family>` flag
90+ ValueFrom : & corev1.EnvVarSource {
91+ FieldRef : & corev1.ObjectFieldSelector {
92+ APIVersion : "v1" ,
93+ FieldPath : "status.podIP" ,
94+ },
95+ },
96+ },
97+ )
8798
8899 return envVars
89100}
@@ -621,23 +632,45 @@ func (b *DatabaseStatefulSetBuilder) buildContainerArgs() ([]string, []string) {
621632 }
622633 }
623634
624- publicHostOption := "--grpc-public-host"
625635 publicHost := fmt .Sprintf (api .InterconnectServiceFQDNFormat , b .Database .Name , b .GetNamespace ()) // FIXME .svc.cluster.local
636+
626637 if b .Spec .Service .GRPC .ExternalHost != "" {
627638 publicHost = b .Spec .Service .GRPC .ExternalHost
628639 }
629640 if value , ok := b .ObjectMeta .Annotations [api .AnnotationGRPCPublicHost ]; ok {
630641 publicHost = value
631642 }
643+
644+ if b .Spec .Service .GRPC .IPDiscovery != nil && b .Spec .Service .GRPC .IPDiscovery .Enabled == true {
645+
646+ ipFamilyArg := "--grpc-public-address-v4"
647+
648+ if b .Spec .Service .GRPC .IPDiscovery .IPFamily == corev1 .IPv6Protocol {
649+ ipFamilyArg = "--grpc-public-address-v6"
650+ }
651+
652+ args = append (
653+ args ,
654+ "--grpc-public-target-name-override" ,
655+ fmt .Sprintf ("%s.%s" , "$(NODE_NAME)" , publicHost ),
656+
657+ ipFamilyArg ,
658+ "$(POD_IP)" ,
659+ )
660+ } else {
661+ publicHostOption := "--grpc-public-host"
662+ args = append (
663+ args ,
664+ publicHostOption ,
665+ fmt .Sprintf ("%s.%s" , "$(NODE_NAME)" , publicHost ), // fixme $(NODE_NAME)
666+ )
667+ }
668+
632669 publicPortOption := "--grpc-public-port"
633670 publicPort := api .GRPCPort
634671
635672 args = append (
636673 args ,
637-
638- publicHostOption ,
639- fmt .Sprintf ("%s.%s" , "$(NODE_NAME)" , publicHost ), // fixme $(NODE_NAME)
640-
641674 publicPortOption ,
642675 strconv .Itoa (publicPort ),
643676 )
0 commit comments