From fffacc3c40ffa3acbd731dd94964bdf8365f7e10 Mon Sep 17 00:00:00 2001 From: Lukas Reining Date: Mon, 13 Jan 2025 16:41:45 +0100 Subject: [PATCH 1/2] fix: flagd environment variables missing prefix Signed-off-by: Lukas Reining --- apis/core/v1beta1/featureflagsource_types.go | 5 + ...re.openfeature.dev_featureflagsources.yaml | 5 + docs/crds.md | 8 + .../flagd-with-custom-ports/00-assert.yaml | 146 ++++++++++++++++++ .../flagd-with-custom-ports/00-install.yaml | 34 ++++ .../chainsaw-test.yaml | 17 ++ 6 files changed, 215 insertions(+) create mode 100644 test/e2e/chainsaw/flagd-with-custom-ports/00-assert.yaml create mode 100644 test/e2e/chainsaw/flagd-with-custom-ports/00-install.yaml create mode 100644 test/e2e/chainsaw/flagd-with-custom-ports/chainsaw-test.yaml diff --git a/apis/core/v1beta1/featureflagsource_types.go b/apis/core/v1beta1/featureflagsource_types.go index 7aff2fe05..5519a6fbc 100644 --- a/apis/core/v1beta1/featureflagsource_types.go +++ b/apis/core/v1beta1/featureflagsource_types.go @@ -28,10 +28,12 @@ import ( type FeatureFlagSourceSpec struct { // ManagemetPort defines the port to serve management on, defaults to 8014 // +optional + // +kubebuilder:default:=8014 ManagementPort int32 `json:"managementPort"` // Port defines the port to listen on, defaults to 8013 // +optional + // +kubebuilder:default:=8013 Port int32 `json:"port"` // SocketPath defines the unix socket path to listen on @@ -40,6 +42,7 @@ type FeatureFlagSourceSpec struct { // Evaluator sets an evaluator, defaults to 'json' // +optional + // +kubebuilder:default:="json" Evaluator string `json:"evaluator"` // SyncProviders define the syncProviders and associated configuration to be applied to the sidecar @@ -61,10 +64,12 @@ type FeatureFlagSourceSpec struct { // LogFormat allows for the sidecar log format to be overridden, defaults to 'json' // +optional + // +kubebuilder:default:="json" LogFormat string `json:"logFormat"` // EnvVarPrefix defines the prefix to be applied to all environment variables applied to the sidecar, default FLAGD // +optional + // +kubebuilder:default:="FLAGD" EnvVarPrefix string `json:"envVarPrefix"` // RolloutOnChange dictates whether annotated deployments will be restarted when configuration changes are diff --git a/config/crd/bases/core.openfeature.dev_featureflagsources.yaml b/config/crd/bases/core.openfeature.dev_featureflagsources.yaml index 68a28d342..c1288dbff 100644 --- a/config/crd/bases/core.openfeature.dev_featureflagsources.yaml +++ b/config/crd/bases/core.openfeature.dev_featureflagsources.yaml @@ -49,6 +49,7 @@ spec: description: DefaultSyncProvider defines the default sync provider type: string envVarPrefix: + default: FLAGD description: EnvVarPrefix defines the prefix to be applied to all environment variables applied to the sidecar, default FLAGD type: string @@ -173,13 +174,16 @@ spec: type: object type: array evaluator: + default: json description: Evaluator sets an evaluator, defaults to 'json' type: string logFormat: + default: json description: LogFormat allows for the sidecar log format to be overridden, defaults to 'json' type: string managementPort: + default: 8014 description: ManagemetPort defines the port to serve management on, defaults to 8014 format: int32 @@ -189,6 +193,7 @@ spec: flag of flagd sidecar. Default false (disabled). type: string port: + default: 8013 description: Port defines the port to listen on, defaults to 8013 format: int32 type: integer diff --git a/docs/crds.md b/docs/crds.md index ec676eaa4..d4c17eb09 100644 --- a/docs/crds.md +++ b/docs/crds.md @@ -279,6 +279,8 @@ FeatureFlagSourceSpec defines the desired state of FeatureFlagSource string EnvVarPrefix defines the prefix to be applied to all environment variables applied to the sidecar, default FLAGD
+
+ Default: FLAGD
false @@ -294,6 +296,8 @@ are added at the lowest index, all values will have the EnvVarPrefix applied, de string Evaluator sets an evaluator, defaults to 'json'
+
+ Default: json
false @@ -301,6 +305,8 @@ are added at the lowest index, all values will have the EnvVarPrefix applied, de string LogFormat allows for the sidecar log format to be overridden, defaults to 'json'
+
+ Default: json
false @@ -310,6 +316,7 @@ are added at the lowest index, all values will have the EnvVarPrefix applied, de ManagemetPort defines the port to serve management on, defaults to 8014

Format: int32
+ Default: 8014
false @@ -326,6 +333,7 @@ are added at the lowest index, all values will have the EnvVarPrefix applied, de Port defines the port to listen on, defaults to 8013

Format: int32
+ Default: 8013
false diff --git a/test/e2e/chainsaw/flagd-with-custom-ports/00-assert.yaml b/test/e2e/chainsaw/flagd-with-custom-ports/00-assert.yaml new file mode 100644 index 000000000..56bb76774 --- /dev/null +++ b/test/e2e/chainsaw/flagd-with-custom-ports/00-assert.yaml @@ -0,0 +1,146 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + app: flagd-sample + app.kubernetes.io/managed-by: open-feature-operator + app.kubernetes.io/name: flagd-sample + name: flagd-sample + namespace: ($namespace) + ownerReferences: + - apiVersion: core.openfeature.dev/v1beta1 + kind: Flagd + name: flagd-sample +spec: + replicas: 1 + selector: + matchLabels: + app: flagd-sample + template: + metadata: + labels: + app: flagd-sample + app.kubernetes.io/managed-by: open-feature-operator + app.kubernetes.io/name: flagd-sample + spec: + containers: + - name: flagd + # renovate: datasource=github-tags depName=open-feature/flagd/flagd + image: ghcr.io/open-feature/flagd:v0.11.1 + ports: + - containerPort: 8014 + name: management + protocol: TCP + - containerPort: 8013 + name: flagd + protocol: TCP + - containerPort: 8016 + name: ofrep + protocol: TCP + - containerPort: 8015 + name: sync + protocol: TCP + env: + - name: FLAGD_MANAGEMENT_PORT + value: "9999" + - name: FLAGD_PORT + value: "8888" + - name: FLAGD_EVALUATOR + value: json + - name: FLAGD_LOG_FORMAT + value: json + - name: FLAGD_RESOLVER + value: rpc + serviceAccount: default + serviceAccountName: default +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: flagd-sample + app.kubernetes.io/managed-by: open-feature-operator + app.kubernetes.io/name: flagd-sample + name: flagd-sample + namespace: ($namespace) + ownerReferences: + - apiVersion: core.openfeature.dev/v1beta1 + kind: Flagd + name: flagd-sample +spec: + ports: + - name: flagd + port: 8013 + protocol: TCP + targetPort: 8013 + - name: ofrep + port: 8016 + protocol: TCP + targetPort: 8016 + - name: sync + port: 8015 + protocol: TCP + targetPort: 8015 + - name: metrics + port: 8014 + protocol: TCP + targetPort: 8014 + selector: + app: flagd-sample + type: ClusterIP +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + labels: + app: flagd-sample + app.kubernetes.io/managed-by: open-feature-operator + app.kubernetes.io/name: flagd-sample + name: flagd-sample + namespace: ($namespace) + ownerReferences: + - apiVersion: core.openfeature.dev/v1beta1 + kind: Flagd + name: flagd-sample +spec: + hostnames: + - flagd-sample + parentRefs: + - group: gateway.networking.k8s.io + kind: Gateway + name: my-gateway + namespace: my-gateway-namespace + rules: + - backendRefs: + - group: "" + kind: Service + name: flagd-sample + namespace: ($namespace) + port: 8016 + weight: 1 + matches: + - path: + type: PathPrefix + value: /ofrep + - backendRefs: + - group: "" + kind: Service + name: flagd-sample + namespace: ($namespace) + port: 8013 + weight: 1 + matches: + - path: + type: PathPrefix + value: /flagd.evaluation.v1.Service + - backendRefs: + - group: "" + kind: Service + name: flagd-sample + namespace: ($namespace) + port: 8015 + weight: 1 + matches: + - path: + type: PathPrefix + value: /flagd.sync.v1.Service diff --git a/test/e2e/chainsaw/flagd-with-custom-ports/00-install.yaml b/test/e2e/chainsaw/flagd-with-custom-ports/00-install.yaml new file mode 100644 index 000000000..75d860cf2 --- /dev/null +++ b/test/e2e/chainsaw/flagd-with-custom-ports/00-install.yaml @@ -0,0 +1,34 @@ +apiVersion: core.openfeature.dev/v1beta1 +kind: FeatureFlag +metadata: + name: featureflag-sample +spec: + flagSpec: + flags: + "simple-flag": + state: "ENABLED" + variants: + "on": true + "off": false + defaultVariant: "on" +--- +apiVersion: core.openfeature.dev/v1beta1 +kind: FeatureFlagSource +metadata: + name: end-to-end +spec: + sources: + - source: featureflag-sample + provider: kubernetes + port: 8888 + managementPort: 9999 + evaluator: json +--- +apiVersion: core.openfeature.dev/v1beta1 +kind: Flagd +metadata: + name: flagd-sample +spec: + serviceType: ClusterIP + serviceAccountName: default + featureFlagSource: end-to-end diff --git a/test/e2e/chainsaw/flagd-with-custom-ports/chainsaw-test.yaml b/test/e2e/chainsaw/flagd-with-custom-ports/chainsaw-test.yaml new file mode 100644 index 000000000..63a4a9cc6 --- /dev/null +++ b/test/e2e/chainsaw/flagd-with-custom-ports/chainsaw-test.yaml @@ -0,0 +1,17 @@ +# yaml-language-server: $schema=https://raw.githubusercontent.com/kyverno/chainsaw/main/.schemas/json/test-chainsaw-v1alpha1.json +apiVersion: chainsaw.kyverno.io/v1alpha1 +kind: Test +metadata: + name: flagd-custom-ports +spec: + steps: + - name: step-00 + try: + - apply: + file: ../assets/gateway-api.yaml + - name: step-01 + try: + - apply: + file: 00-install.yaml + - assert: + file: 00-assert.yaml From b3b895634a6ff86e0ffdca384806e60856df98b0 Mon Sep 17 00:00:00 2001 From: Lukas Reining Date: Mon, 13 Jan 2025 17:24:34 +0100 Subject: [PATCH 2/2] fix: tests Signed-off-by: Lukas Reining --- .../flagd-with-custom-ports/00-assert.yaml | 56 ------------------- 1 file changed, 56 deletions(-) diff --git a/test/e2e/chainsaw/flagd-with-custom-ports/00-assert.yaml b/test/e2e/chainsaw/flagd-with-custom-ports/00-assert.yaml index 56bb76774..be38eaf0e 100644 --- a/test/e2e/chainsaw/flagd-with-custom-ports/00-assert.yaml +++ b/test/e2e/chainsaw/flagd-with-custom-ports/00-assert.yaml @@ -88,59 +88,3 @@ spec: selector: app: flagd-sample type: ClusterIP ---- -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - labels: - app: flagd-sample - app.kubernetes.io/managed-by: open-feature-operator - app.kubernetes.io/name: flagd-sample - name: flagd-sample - namespace: ($namespace) - ownerReferences: - - apiVersion: core.openfeature.dev/v1beta1 - kind: Flagd - name: flagd-sample -spec: - hostnames: - - flagd-sample - parentRefs: - - group: gateway.networking.k8s.io - kind: Gateway - name: my-gateway - namespace: my-gateway-namespace - rules: - - backendRefs: - - group: "" - kind: Service - name: flagd-sample - namespace: ($namespace) - port: 8016 - weight: 1 - matches: - - path: - type: PathPrefix - value: /ofrep - - backendRefs: - - group: "" - kind: Service - name: flagd-sample - namespace: ($namespace) - port: 8013 - weight: 1 - matches: - - path: - type: PathPrefix - value: /flagd.evaluation.v1.Service - - backendRefs: - - group: "" - kind: Service - name: flagd-sample - namespace: ($namespace) - port: 8015 - weight: 1 - matches: - - path: - type: PathPrefix - value: /flagd.sync.v1.Service