-
Notifications
You must be signed in to change notification settings - Fork 2
/
values.yaml
387 lines (357 loc) · 16 KB
/
values.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
# These are the default values for running Optimizely Agent in Kubernetes.
# Copy this file. Then, install Agent into your K8s cluster using the `-f`ile flag eg
# `helm install -f <./path-to/your-custom-values.yaml> <agent-deployment-name> optimizely-agent/agent --version <version>`
#################
# Use name overrides to adjust the name of this Chart [optional] and/or...
nameOverride: ""
# overriding the fully qualified name [optional] of the app once deployed
fullnameOverride: ""
image:
# Use `optimizely/agent` unless you have a specific usecase; Pulls from https://hub.docker.com/r/optimizely/agent
repository: optimizely/agent
# If you wish to use a specific image tag set that here (https://kubernetes.io/docs/concepts/containers/images/#image-names)
tag: ""
# Use `IfNotPresent` to get the image if not available locally. Alternatives (https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy)
pullPolicy: IfNotPresent
# Set image pull secrets if you use a private container registry (https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod)
imagePullSecrets: [] # 👈 Remember: remove the empty object `[]` and place collection values indented on the next lines
serviceAccount:
# Specifies whether a service account (https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) should be created
create: true
# The name of the service account to use. If not set and `create` is true, a name is generated using the fullname template [optional]
name: ""
# Annotations (https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) to add to the service account [optional]
annotations: {} # 👈 Remember: remove the empty object `{}` and place sub-properties indented on the next lines
# Set the number of replica pods to run >= 1.
# For dynamic load balancing use the autoscaling section below.
replicaCount: 1
# Configure how auto-scaling of pod counts should occur
autoscaling:
# First, set `enabled` to `true` then...
enabled: false
# ...configure the following values to meet your traffic requirements [consumed in the hpa.yaml for HorizontalPodAutoscaler when enabled]
minReplicas: 1
maxReplicas: 100
targetCPUUtilizationPercentage: 80
targetMemoryUtilizationPercentage: 80
# Constrain pods to be scheduled on a particular node with a given spec (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) [optional]
nodeSelector: {}
# Set expanded types of constraints for scheduling on nodes (https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) [optional]
affinity: {}
# Set pod toleration of given taints on the node (https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) [optional]
tolerations: []
# - key: "example-key-1"
# operator: "Exists"
# effect: "NoSchedule"
# - key: "example-key-2"
# operator: "Exists"
# effect: "NoSchedule"
# Annotations (https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/) to add to each pod [optional]
podAnnotations: {}
# Pod-level security context (https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod) [optional]
podSecurityContext: {}
# fsGroup: 2000
# Container-level security context (https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) [optional]
securityContext: {}
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
# Service configuration for exposing pods to network traffic (https://kubernetes.io/docs/concepts/services-networking/service/)
service:
# `ClusterIP` is default allowing access only from within the cluster. Change the `type` based on your network's
# requirements (https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types)
type: ClusterIP
# These are the 3 ports on which the Agent's functinoality is exposed.
# Please do not adjust the `targetPort`s. You may adjust the external port as you need.
ports:
- port: 8080
protocol: TCP
name: api
targetPort: 8080
- port: 8085
protocol: TCP
name: webhook
targetPort: 8085
- port: 8088
protocol: TCP
name: admin
targetPort: 8088
# Allow for exposing inbound traffic to the cluster (https://kubernetes.io/docs/concepts/services-networking/ingress/)
ingress:
# Set `enabled` to `true` then ...
enabled: false
# .. uncomment the following lines and configure the ingress values below
# annotations: {}
# hosts:
# - host: api.optimizely-agent.local
# paths:
# - port: 8080
# path: /
# pathType: Prefix
# - host: webhook.optimizely-agent.local
# paths:
# - port: 8085
# path: /
# pathType: Prefix
# - host: admin.optimizely-agent.local
# paths:
# - port: 8088
# path: /
# pathType: Prefix
# Set any TLS configurations in a collection below (https://kubernetes.io/docs/concepts/services-networking/ingress/#tls)
# tls: []
# Set custom Container (https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#example-1) compute resources [optional]
resources: {}
# Configure logging level for Optimizely-specific `config` below
logs:
# Set `level` to panic, fatal, error, warn, info, or debug
level: debug
pretty: true
includeSdkKey: true
# Environmental values for...
env:
# The ConfigMap (https://kubernetes.io/docs/concepts/configuration/configmap/) to store non-confidential data in key-value pairs
# Alternatively or in addition, you can use a `config` section below (https://github.com/optimizely/agent#configuration-options)
variables: {}
# OPTIMIZELY_SDKKEYS: sdk_keys
# OPTIMIZELY_CLIENT_FLUSHINTERVAL: flush_interval
# ...the Secrets configuration. Be sure to follow the proper encoding for the `data` field (https://kubernetes.io/docs/concepts/configuration/secret/#editing-a-secret)
secrets: {}
# OPTIMIZELY_ADMIN_AUTH_HMACSECRETS: hmac_secrets
# OPTIMIZELY_API_AUTH_HMACSECRETS: hmac_secrets
# Config file contents (https://github.com/optimizely/agent/blob/master/config.yaml) to be consumed by Agent directly as a
# scalar value after Helm template interpretation
config: |
## config.yaml provides a default set of configuration options
## service author included in the /info response
author: "Optimizely Inc."
## name of the running application included in the /info response
name: "{{ include "optimizely-agent.fullname" . }}"
## version of the application included in the /info response and startup logs
version: {{ .Chart.AppVersion }}
## list of SDK keys to be pre-fetched during startup (recommended for production)
#sdkkeys:
# - <sdk-key-1>
# - <sdk-key-2>
##
## log: logger configuration
##
log:
## log level used to filter logs of lesser severity (from highest to lowest):
## panic, fatal, error, warn, info, debug
level: {{ .Values.logs.level }}
## enable pretty colorized console logging. setting to false will output
## structured JSON logs. Recommended false in production.
pretty: {{ .Values.logs.pretty }}
## to set whether or not the SDK key is included in the logging output.
includeSdkKey: {{ .Values.logs.includeSdkKey }}
##
## tracing: tracing configuration
##
## For distributed tracing, trace context should be sent on "traceparent" header
## The value set in HTTP Header must be a hex compliant with the W3C trace-context specification.
## See more at https://www.w3.org/TR/trace-context/#trace-id
tracing:
## bydefault tracing is disabled
## to enable tracing set enabled to true
enabled: false
# opentelemetry tracing configuration
opentelemetry:
## bydefault stdout exporter is enabled
## to enable remote exporter set default as "remote"
default: "stdout"
## tracing service name
serviceName: "optimizely-agent"
## tracing environment name
## example: for production environment env can be set as "prod"
env: "dev"
## tracing service configuration
services:
## stdout exporter configuration
stdout:
## for stdout tracing data is saved in the specified file
filename: "trace.out"
## remote exporter configuration
remote:
## remote collector endpoint
endpoint: "localhost:4317"
## supported protocols are "http" and "grpc"
protocol: "grpc"
## "sampleRate" refers to the rate at which traces are collected and recorded.
## sampleRate >= 1 will always sample.
## sampleRate < 0 are treated as zero i.e. never sample.
sampleRate: 1.0
##
## http server configuration
##
server:
## List of allowed request host values.
## Requests whose host value does not match either the configured server.host, or one of these, will be rejected
## with a 404 response.
## To match all subdomains, you can use a leading dot (for example .example.com matches my.example.com, hello.world.example.com, etc.).
## You can use the value "." to disable allowed host checking, allowing requests with any host.
## Request host is determined in the following priority order:
## 1. X-Forwarded-Host header value
## 2. Forwarded header host= directive value
## 3. Host property of request (see Host under https://golang.org/pkg/net/http/#Request)
## Note: don't include port in these hosts values - port is stripped from the request host before comparing against these.
allowedHosts:
- "."
## the maximum duration for reading the entire request, including the body.
## Value can be set in seconds (e.g. "5s") or milliseconds (e.g. "5000ms")
readTimeout: 5s
## the maximum duration before timing out writes of the response.
## Value can be set in seconds (e.g. "5s") or milliseconds (e.g. "5000ms")
writeTimeout: 10s
## path for the health status api
healthCheckPath: "/health"
## the location of the TLS key file
# keyFile: <key-file>
## the location of the TLS certificate file
# certFile: <cert-file>
## IP of the host
host: "0.0.0.0"
## configure optional Agent interceptors
# interceptors:
# httplog: {}
##
## api service configuration
##
api:
## the maximum number of concurrent requests handled by the api listener
# maxConns: 10000
## http listener port
{{ with index .Values.service.ports 0 }}
port: {{ .targetPort | quote }}
{{ end }}
## set to true to enable subscribing to notifications via an SSE event-stream
enableNotifications: false
## set to true to be able to override experiment bucketing. (recommended false in production)
enableOverrides: true
## CORS support is provided via chi middleware
## https://github.com/go-chi/cors
# cors:
# ## If allowedOrigins is nil or empty, value is set to ["*"].
# allowedOrigins: ["*"]
# ## If allowedMethods is nil or empty, value is set to (HEAD, GET and POST).
# allowedMethods:
# - "HEAD"
# - "GET"
# - "POST"
# - "OPTIONS"
# ## Default value is [] but "Origin" is always appended to the list.
# allowedHeaders: ["*"]
# exposedHeaders: []
# allowedCredentials: false
# maxAge: 300
##
## admin service configuration
##
admin:
## http listener port
{{ with index .Values.service.ports 2 }}
port: {{ .targetPort | quote }}
{{ end }}
##
## webhook service receives update notifications to your Optimizely project. Receipt of the webhook will
## trigger an immediate download of the datafile from the CDN
##
webhook:
## http listener port
{{ with index .Values.service.ports 1 }}
port: {{ .targetPort | quote }}
{{ end }}
# ## a map of Optimizely Projects to one or more SDK keys
# projects:
# ## <project-id>: Optimizely project id as an integer
# <project-id>:
# ## sdkKeys: a list of SDKs linked to this project
# sdkKeys:
# - <sdk-key-1>
# - <sdk-key-1>
# ## secret: webhook secret used the validate the notification
# secret: <secret-10000>
# ## skipSignatureCheck: override the signature check (not recommended for production)
# skipSignatureCheck: true
##
## optimizely client configurations (options passed to the underlying go-sdk)
##
client:
## the time between successive polls for updated project configuration
pollingInterval: 1m
## the number of events in a batch
batchSize: 10
## the max number of events pending dispatch, setting this too low may result in events being dropped
queueSize: 1000
## the maximum time between events being dispatched
flushInterval: 30s
## Template URL for SDK datafile location. The template should specify a "%s" token for SDK key substitution.
datafileURLTemplate: "https://cdn.optimizely.com/datafiles/%s.json"
## URL for dispatching events.
eventURL: "https://logx.optimizely.com/v1/events"
## Validation Regex on the request SDK Key
## By default Agent assumes only alphanumeric characters as part of the SDK Key string.
## https://github.com/google/re2/wiki/Syntax
sdkKeyRegex: "^\\w+(:\\w+)?$"
## configure optional User profile service
userProfileService:
default: ""
services:
# in-memory:
# capacity: 0
# storageStrategy: "fifo"
# redis:
# host: "localhost:6379"
# password: ""
# database: 0
# rest:
# async: false
# host: "http://localhost"
# lookupPath: "/ups/lookup"
# lookupMethod: "POST"
# savePath: "/ups/save"
# saveMethod: "POST"
# userIDKey: "user_id"
# headers:
# Content-Type: "application/json"
# Auth-Token: "12345"
##
## optimizely runtime configuration can be used for debugging and profiling the go runtime.
## These should only be configured when debugging in a non-production environment.
##
runtime:
## SetBlockProfileRate controls the fraction of goroutine blocking events
## that are reported in the blocking profile. The profiler aims to sample
## an average of one blocking event per rate nanoseconds spent blocked.
##
## To include every blocking event in the profile, pass rate = 1.
## To turn off profiling entirely, pass rate <= 0.
blockProfileRate: 0
## mutexProfileFraction controls the fraction of mutex contention events
## that are reported in the mutex profile. On average 1/rate events are
## reported. The previous rate is returned.
##
## To turn off profiling entirely, pass rate 0.
## To just read the current rate, pass rate < 0.
## (For n>1 the details of sampling may change.)
mutexProfileFraction: 0
## synchronization should be enabled when features for multiple nodes like notification streaming are deployed
synchronization:
pubsub:
redis:
host: "redis.demo.svc:6379"
password: ""
database: 0
## if notification synchronization is enabled, then the active notification event-stream API
## will get the notifications from available replicas
notification:
enable: false
default: "redis"
## if datafile synchronization is enabled, then for each webhook API call
## the datafile will be sent to all available replicas to achieve better eventual consistency
datafile:
enable: false
default: "redis"