Skip to content

Flagd serves flagd service with random port even if default port 8013 was set #709

@kimsehwan96

Description

@kimsehwan96

I setmanagementPort and port in FeatureFlagSource like below, but only managementPort was correctly set and port was not.

FeatureFlagSource

apiVersion: core.openfeature.dev/v1beta1
kind: FeatureFlagSource
metadata:
  name: feature-flag-source
spec:
  sources:
    - source: http://foo.bar.com
      provider: http
      interval: 5
  port: 8888
  debugLogging: true
  defaultSyncProvider: http
  evaluator: json
  managementPort: 9999

Flagd

apiVersion: core.openfeature.dev/v1beta1
kind: Flagd
metadata:
  name: flagd
spec:
  replicas: 1
  ...
  featureFlagSource: feature-flag-source
  ingress:
  ...

Operator creates flagd pods but only managementPort was properly set not the port

│ 2024-10-04T05:00:34.767Z    info    cmd/start.go:107    flagd version: v0.11.1 (9ac329f9206360e532d615904f977309b0af71a5), built at: 2024-07-08    {"component": "start"}
│ 2024-10-04T05:00:34.768Z    debug    telemetry/builder.go:68    skipping trace provider setup as collector target is not set. Traces will use NoopTracerProvider provider and propagator will use no-Op TextMapPr
│ 2024-10-04T05:00:34.768Z    info    flag-sync/sync_service.go:54    starting flag sync service on port 8015    {"component": "FlagSyncService"}
│ 2024-10-04T05:00:34.768Z    debug    builder/syncbuilder.go:95    using remote sync-provider for: http://xxx.svc.cluster.local:8080/core/v1/flagd    {"component": "sync"}
│ 2024-10-04T05:00:34.768Z    info    flag-evaluation/connect_service.go:247    metrics and probes listening at 9999    {"component": "service"}
│ 2024-10-04T05:00:34.768Z    info    ofrep/ofrep_service.go:56    ofrep service listening at 8016    {"component": "OFREPService"}
│ 2024-10-04T05:00:34.769Z    info    flag-evaluation/connect_service.go:227    Flag IResolver listening at :38293    {"component": "service"}
│ 2024-10-04T05:00:34.778Z    debug    http/http_sync.go:71    polling http://foo.bar.com every 5 seconds    {"component": "sync", "sync": "remote"}

I set the flagd port with 8888 in FeatureFlagSource but as you can see in above logs, IResolver was not served with 8888 port.

So we need to add --port argument and its configuration in flagd pod.

func (fi *FlagdContainerInjector) generateBasicFlagdContainer(flagSourceConfig *api.FeatureFlagSourceSpec) corev1.Container {
return corev1.Container{
Name: "flagd",
Image: fmt.Sprintf("%s:%s", fi.Image, fi.Tag),
Args: []string{
"start",
"--management-port",
fmt.Sprintf("%d", flagSourceConfig.ManagementPort),
},
ImagePullPolicy: common.FlagdImagePullPolicy,
VolumeMounts: []corev1.VolumeMount{},
Env: []corev1.EnvVar{},
Ports: []corev1.ContainerPort{
{
Name: "management",
ContainerPort: flagSourceConfig.ManagementPort,
},
},
SecurityContext: getSecurityContext(),
Resources: fi.FlagdResourceRequirements,
}
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions