Closed toddbaert closed 1 year ago
I would like to take this issue :)
Do we please have a usage example of using the file
or flagd-proxy
sync ? Would be very helpful.
Thank you!
@odubajDT here is the doc on FlagSourceConfiguration
.
Here is an example I've used locally. Notice how the workload is annotated with the FlagSourceConfiguration
and the FlagSourceConfiguration
has multiple different sources:
# A basic flag custom resource
apiVersion: core.openfeature.dev/v1alpha2
kind: FeatureFlagConfiguration
metadata:
name: end-to-end
labels:
app: open-feature-demo
spec:
featureFlagSpec:
flags:
new-welcome-message:
state: ENABLED
variants:
'on': true
'off': false
defaultVariant: 'off'
hex-color:
variants:
red: c05543
green: 2f5230
blue: 0d507b
defaultVariant: red
state: ENABLED
fib-algo:
variants:
recursive: recursive
memo: memo
loop: loop
binet: binet
defaultVariant: recursive
state: ENABLED
targeting:
if:
- in:
- "@faas.com"
- var:
- email
- binet
- null
use-remote-fib-service:
state: ENABLED
variants:
'on': true
'off': false
defaultVariant: 'off'
---
apiVersion: core.openfeature.dev/v1alpha2
kind: FeatureFlagConfiguration
metadata:
name: end-to-end2
labels:
app: open-feature-demo
spec:
featureFlagSpec:
flags:
some-flag:
state: ENABLED
variants:
'one': one
'two': two
defaultVariant: 'one'
---
apiVersion: core.openfeature.dev/v1alpha3
kind: FlagSourceConfiguration
metadata:
name: end-to-end-fsc
spec:
sources:
- source: default/end-to-end
provider: filepath # this can be "filepath", "kubernetes" or "kube-proxy"
- source: default/end-to-end2
provider: kube-proxy
---
# Deployment of a demo-app using our custom resource
apiVersion: apps/v1
kind: Deployment
metadata:
name: open-feature-demo-deployment
labels:
app: open-feature-demo
spec:
replicas: 1
selector:
matchLabels:
app: open-feature-demo
template:
metadata:
labels:
app: open-feature-demo
annotations:
openfeature.dev/enabled: "true"
openfeature.dev/flagsourceconfiguration: "end-to-end-fsc"
spec:
containers:
- name: open-feature-demo
image: ghcr.io/open-feature/playground-app:v0.6.3 # x-release-please-version
args:
- flagd
ports:
- containerPort: 30000
---
# Service exposed using NodePort
apiVersion: v1
kind: Service
metadata:
name: open-feature-demo-service
labels:
app: open-feature-demo
spec:
type: NodePort
selector:
app: open-feature-demo
ports:
# By default and for convenience, the `targetPort` is set to the same value as the `port` field.
- port: 30000
targetPort: 30000
nodePort: 30000
Thank you very much!
We should write some more e2e (KUTTL) tests:
flagsourceconfiguration
(k8s-sync).file
syncflagd-proxy sync