Control-Plane configuration

Here are all options to configure the control-plane:

  1. # Environment type. Available values are: "kubernetes" or "universal"
  2. environment: universal # ENV: KUMA_ENVIRONMENT
  3. # Mode in which Kuma CP is running. Available values are: "standalone", "global", "zone"
  4. mode: standalone # ENV: KUMA_MODE
  5. # Resource Store configuration
  6. store:
  7. # Type of Store used in the Control Plane. Available values are: "kubernetes", "postgres" or "memory"
  8. type: memory # ENV: KUMA_STORE_TYPE
  9. # Kubernetes Store configuration (used when store.type=kubernetes)
  10. kubernetes:
  11. # Namespace where Control Plane is installed to.
  12. systemNamespace: kuma-system # ENV: KUMA_STORE_KUBERNETES_SYSTEM_NAMESPACE
  13. # Postgres Store configuration (used when store.type=postgres)
  14. postgres:
  15. # Host of the Postgres DB
  16. host: 127.0.0.1 # ENV: KUMA_STORE_POSTGRES_HOST
  17. # Port of the Postgres DB
  18. port: 15432 # ENV: KUMA_STORE_POSTGRES_PORT
  19. # User of the Postgres DB
  20. user: kuma # ENV: KUMA_STORE_POSTGRES_USER
  21. # Password of the Postgres DB
  22. password: kuma # ENV: KUMA_STORE_POSTGRES_PASSWORD
  23. # Database name of the Postgres DB
  24. dbName: kuma # ENV: KUMA_STORE_POSTGRES_DB_NAME
  25. # Connection Timeout to the DB in seconds
  26. connectionTimeout: 5 # ENV: KUMA_STORE_POSTGRES_CONNECTION_TIMEOUT
  27. # Maximum number of open connections to the database
  28. # `0` value means number of open connections is unlimited
  29. maxOpenConnections: 50 # ENV: KUMA_STORE_POSTGRES_MAX_OPEN_CONNECTIONS
  30. # Maximum number of connections in the idle connection pool
  31. # <0 value means no idle connections and 0 means default max idle connections
  32. maxIdleConnections: 50 # ENV: KUMA_STORE_POSTGRES_MAX_IDLE_CONNECTIONS
  33. # TLS settings
  34. tls:
  35. # Mode of TLS connection. Available values are: "disable", "verifyNone", "verifyCa", "verifyFull"
  36. mode: disable # ENV: KUMA_STORE_POSTGRES_TLS_MODE
  37. # Path to TLS Certificate of the client. Used in verifyCa and verifyFull modes
  38. certPath: # ENV: KUMA_STORE_POSTGRES_TLS_CERT_PATH
  39. # Path to TLS Key of the client. Used in verifyCa and verifyFull modes
  40. keyPath: # ENV: KUMA_STORE_POSTGRES_TLS_KEY_PATH
  41. # Path to the root certificate. Used in verifyCa and verifyFull modes.
  42. caPath: # ENV: KUMA_STORE_POSTGRES_TLS_ROOT_CERT_PATH
  43. # MinReconnectInterval controls the duration to wait before trying to
  44. # re-establish the database connection after connection loss. After each
  45. # consecutive failure this interval is doubled, until MaxReconnectInterval
  46. # is reached. Successfully completing the connection establishment procedure
  47. # resets the interval back to MinReconnectInterval.
  48. minReconnectInterval: "10s" # ENV: KUMA_STORE_POSTGRES_MIN_RECONNECT_INTERVAL
  49. # MaxReconnectInterval controls the maximum possible duration to wait before trying
  50. # to re-establish the database connection after connection loss.
  51. maxReconnectInterval: "60s" # ENV: KUMA_STORE_POSTGRES_MAX_RECONNECT_INTERVAL
  52. # Cache for read only operations. This cache is local to the instance of the control plane.
  53. cache:
  54. # If true then cache is enabled
  55. enabled: true # ENV: KUMA_STORE_CACHE_ENABLED
  56. # Expiration time for elements in cache.
  57. expirationTime: 1s # ENV: KUMA_STORE_CACHE_EXPIRATION_TIME
  58. # Upsert (get and update) configuration
  59. upsert:
  60. # Base time for exponential backoff on upsert operations when retry is enabled
  61. conflictRetryBaseBackoff: 100ms # ENV: KUMA_STORE_UPSERT_CONFLICT_RETRY_BASE_BACKOFF
  62. # Max retries on upsert (get and update) operation when retry is enabled
  63. conflictRetryMaxTimes: 5 # ENV: KUMA_STORE_UPSERT_CONFLICT_RETRY_MAX_TIMES
  64. # If true, skips validation of resource delete.
  65. # For example you don't have to delete all Dataplane objects before you delete a Mesh
  66. unsafeDelete: false # ENV: KUMA_STORE_UNSAFE_DELETE
  67. # Configuration of Bootstrap Server, which provides bootstrap config to Dataplanes
  68. bootstrapServer:
  69. # Parameters of bootstrap configuration
  70. params:
  71. # Address of Envoy Admin
  72. adminAddress: 127.0.0.1 # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_ADMIN_ADDRESS
  73. # Port of Envoy Admin
  74. adminPort: 9901 # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_ADMIN_PORT
  75. # Path to access log file of Envoy Admin
  76. adminAccessLogPath: /dev/null # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_ADMIN_ACCESS_LOG_PATH
  77. # Host of XDS Server. By default it is the same host as the one used by kuma-dp to connect to the control plane
  78. xdsHost: "" # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_XDS_HOST
  79. # Port of XDS Server. By default it is autoconfigured from KUMA_DP_SERVER_PORT
  80. xdsPort: 0 # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_XDS_PORT
  81. # Connection timeout to the XDS Server
  82. xdsConnectTimeout: 1s # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_XDS_CONNECT_TIMEOUT
  83. # Monitoring Assignment Discovery Service (MADS) server configuration
  84. monitoringAssignmentServer:
  85. # Port of a gRPC server that serves Monitoring Assignment Discovery Service (MADS).
  86. port: 5676 # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_PORT
  87. # Which MADS API versions to serve
  88. apiVersions: ["v1"] # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_API_VERSIONS
  89. # Interval for re-generating monitoring assignments for clients connected to the Control Plane.
  90. assignmentRefreshInterval: 1s # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_ASSIGNMENT_REFRESH_INTERVAL
  91. # The default timeout for a single fetch-based discovery request, if not specified
  92. defaultFetchTimeout: 30s # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_DEFAULT_FETCH_TIMEOUT
  93. # Envoy XDS server configuration
  94. xdsServer:
  95. # Interval for re-genarting configuration for Dataplanes connected to the Control Plane
  96. dataplaneConfigurationRefreshInterval: 1s # ENV: KUMA_XDS_SERVER_DATAPLANE_CONFIGURATION_REFRESH_INTERVAL
  97. # Interval for flushing status of Dataplanes connected to the Control Plane
  98. dataplaneStatusFlushInterval: 10s # ENV: KUMA_XDS_SERVER_DATAPLANE_STATUS_FLUSH_INTERVAL
  99. # Backoff that is executed when Control Plane is sending the response that was previously rejected by Dataplane
  100. nackBackoff: 5s # ENV: KUMA_XDS_SERVER_NACK_BACKOFF
  101. # A delay between proxy terminating a connection and the CP trying to deregister the proxy.
  102. # It is used only in universal mode when you use direct lifecycle.
  103. # Setting this setting to 0s disables the delay.
  104. # Disabling this may cause race conditions that one instance of CP removes proxy object
  105. # while proxy is connected to another instance of the CP.
  106. dataplaneDeregistrationDelay: 10s # ENV: KUMA_XDS_DATAPLANE_DEREGISTRATION_DELAY
  107. # API Server configuration
  108. apiServer:
  109. # HTTP configuration of the API Server
  110. http:
  111. # If true then API Server will be served on HTTP
  112. enabled: true # ENV: KUMA_API_SERVER_HTTP_ENABLED
  113. # Network interface on which HTTP API Server will be exposed
  114. interface: 0.0.0.0 # ENV: KUMA_API_SERVER_HTTP_INTERFACE
  115. # Port of the API Server
  116. port: 5681 # ENV: KUMA_API_SERVER_HTTP_PORT
  117. # HTTPS configuration of the API Server
  118. https:
  119. # If true then API Server will be served on HTTPS
  120. enabled: true # ENV: KUMA_API_SERVER_HTTPS_ENABLED
  121. # Network interface on which HTTPS API Server will be exposed
  122. interface: 0.0.0.0 # ENV: KUMA_API_SERVER_HTTPS_INTERFACE
  123. # Port of the HTTPS API Server
  124. port: 5682 # ENV: KUMA_API_SERVER_HTTPS_PORT
  125. # Path to TLS certificate file. Autoconfigured from KUMA_GENERAL_TLS_CERT_FILE if empty
  126. tlsCertFile: "" # ENV: KUMA_API_SERVER_HTTPS_TLS_CERT_FILE
  127. # Path to TLS key file. Autoconfigured from KUMA_GENERAL_TLS_KEY_FILE if empty
  128. tlsKeyFile: "" # ENV: KUMA_API_SERVER_HTTPS_TLS_KEY_FILE
  129. # Authentication configuration for administrative endpoints like Dataplane Token or managing Secrets
  130. auth:
  131. # Directory of authorized client certificates (only validate in HTTPS)
  132. clientCertsDir: "" # ENV: KUMA_API_SERVER_AUTH_CLIENT_CERTS_DIR
  133. # Api Server Authentication configuration
  134. authn:
  135. # Type of authentication mechanism (available values: "adminClientCerts", "tokens")
  136. type: tokens # ENV: KUMA_API_SERVER_AUTHN_TYPE
  137. # Localhost is authenticated as a user admin of group admin
  138. localhostIsAdmin: true # ENV: KUMA_API_SERVER_AUTHN_LOCALHOST_IS_ADMIN
  139. # Configuration for tokens authentication
  140. tokens:
  141. # If true then User Token with name admin and group admin will be created and placed as admin-user-token Kuma secret
  142. bootstrapAdminToken: true # ENV: KUMA_API_SERVER_AUTHN_TOKENS_BOOTSTRAP_ADMIN_TOKEN
  143. # If true, then API Server will operate in read only mode (serving GET requests)
  144. readOnly: false # ENV: KUMA_API_SERVER_READ_ONLY
  145. # Allowed domains for Cross-Origin Resource Sharing. The value can be either domain or regexp
  146. corsAllowedDomains:
  147. - ".*" # ENV: KUMA_API_SERVER_CORS_ALLOWED_DOMAINS
  148. # Environment-specific configuration
  149. runtime:
  150. # Kubernetes-specific configuration
  151. kubernetes:
  152. # Service name of the Kuma Control Plane. It is used to point Kuma DP to proper URL.
  153. controlPlaneServiceName: kuma-control-plane # ENV: KUMA_RUNTIME_KUBERNETES_CONTROL_PLANE_SERVICE_NAME
  154. # Name of Service Account that is used to run the Control Plane
  155. serviceAccountName: "system:serviceaccount:kuma-system:kuma-control-plane" # ENV: KUMA_RUNTIME_KUBERNETES_SERVICE_ACCOUNT_NAME
  156. # Taint controller that prevents applications from scheduling until CNI is ready.
  157. nodeTaintController:
  158. # If true enables the taint controller.
  159. enabled: false # ENV: KUMA_RUNTIME_KUBERNETES_NODE_TAINT_CONTROLLER_ENABLED
  160. # Value of app label on CNI pod that indicates if node can be ready.
  161. cniApp: "" # ENV: KUMA_RUNTIME_KUBERNETES_NODE_TAINT_CONTROLLER_CNI_APP
  162. # Admission WebHook Server configuration
  163. admissionServer:
  164. # Address the Admission WebHook Server should be listening on
  165. address: # ENV: KUMA_RUNTIME_KUBERNETES_ADMISSION_SERVER_ADDRESS
  166. # Port the Admission WebHook Server should be listening on
  167. port: 5443 # ENV: KUMA_RUNTIME_KUBERNETES_ADMISSION_SERVER_PORT
  168. # Directory with a TLS cert and private key for the Admission WebHook Server.
  169. # TLS certificate file must be named `tls.crt`.
  170. # TLS key file must be named `tls.key`.
  171. certDir: # ENV: kuma_runtime_kubernetes_admission_server_cert_dir
  172. # Injector defines configuration of a Kuma Sidecar Injector.
  173. injector:
  174. # if true runs kuma-cp in CNI compatible mode
  175. cniEnabled: false # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_CNI_ENABLED
  176. # list of exceptions for Kuma injection
  177. exceptions:
  178. # a map of labels for exception. If pod matches label with given value Kuma won't be injected. Specify '*' to match any value.
  179. labels:
  180. openshift.io/build.name: "*"
  181. openshift.io/deployer-pod-for.name: "*"
  182. # VirtualProbesEnabled enables automatic converting HttpGet probes to virtual. Virtual probe
  183. # serves on sub-path of insecure port 'virtualProbesPort',
  184. # i.e :8080/health/readiness -> :9000/8080/health/readiness where 9000 is virtualProbesPort
  185. virtualProbesEnabled: true # ENV: KUMA_RUNTIME_KUBERNETES_VIRTUAL_PROBES_ENABLED
  186. # VirtualProbesPort is a port for exposing virtual probes which are not secured by mTLS
  187. virtualProbesPort: 9000 # ENV: KUMA_RUNTIME_KUBERNETES_VIRTUAL_PROBES_PORT
  188. # CaCertFile is CA certificate which will be used to verify a connection to the control plane.
  189. caCertFile: # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_CA_CERT_FILE
  190. # SidecarContainer defines configuration of the Kuma sidecar container.
  191. sidecarContainer:
  192. # Image name.
  193. image: kuma/kuma-dp:latest # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_IMAGE
  194. # Redirect port for inbound traffic.
  195. redirectPortInbound: 15006 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_REDIRECT_PORT_INBOUND
  196. # Redirect port for inbound traffic.
  197. redirectPortInboundV6: 15010 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_REDIRECT_PORT_INBOUND_V6
  198. # Redirect port for outbound traffic.
  199. redirectPortOutbound: 15001 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_REDIRECT_PORT_OUTBOUND
  200. # User ID.
  201. uid: 5678 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_UID
  202. # Group ID.
  203. gid: 5678 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_GUI
  204. # Drain time for listeners.
  205. drainTime: 30s # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_DRAIN_TIME
  206. # Readiness probe.
  207. readinessProbe:
  208. # Number of seconds after the container has started before readiness probes are initiated.
  209. initialDelaySeconds: 1 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_INITIAL_DELAY_SECONDS
  210. # Number of seconds after which the probe times out.
  211. timeoutSeconds: 3 # ENV : KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_TIMEOUT_SECONDS
  212. # Number of seconds after which the probe times out.
  213. periodSeconds: 5 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_PERIOD_SECONDS
  214. # Minimum consecutive successes for the probe to be considered successful after having failed.
  215. successThreshold: 1 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_SUCCESS_THRESHOLD
  216. # Minimum consecutive failures for the probe to be considered failed after having succeeded.
  217. failureThreshold: 12 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_FAILURE_THRESHOLD
  218. # Liveness probe.
  219. livenessProbe:
  220. # Number of seconds after the container has started before liveness probes are initiated.
  221. initialDelaySeconds: 60 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_INITIAL_DELAY_SECONDS
  222. # Number of seconds after which the probe times out.
  223. timeoutSeconds: 3 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_TIMEOUT_SECONDS
  224. # How often (in seconds) to perform the probe.
  225. periodSeconds: 5 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_PERIOD_SECONDS
  226. # Minimum consecutive failures for the probe to be considered failed after having succeeded.
  227. failureThreshold: 12 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_FAILURE_THRESHOLD
  228. # Compute resource requirements.
  229. resources:
  230. # Minimum amount of compute resources required.
  231. requests:
  232. # CPU, in cores. (500m = .5 cores)
  233. cpu: 50m # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_REQUESTS_CPU
  234. # Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
  235. memory: 64Mi # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_REQUESTS_MEMORY
  236. # Maximum amount of compute resources allowed.
  237. limits:
  238. # CPU, in cores. (500m = .5 cores)
  239. cpu: 1000m # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_LIMITS_CPU
  240. # Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
  241. memory: 512Mi # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_LIMITS_MEMORY
  242. # Additional environment variables that can be placed on Kuma DP sidecar
  243. envVars: {} # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_ENV_VARS
  244. # InitContainer defines configuration of the Kuma init container
  245. initContainer:
  246. # Image name.
  247. image: kuma/kuma-init:latest # ENV: KUMA_INJECTOR_INIT_CONTAINER_IMAGE
  248. # ContainerPatches is an optional list of ContainerPatch names which will be applied
  249. # to init and sidecar containers if workload is not annotated with a patch list.
  250. containerPatches: [ ] # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_CONTAINER_PATCHES
  251. # Configuration for a traffic that is intercepted by sidecar
  252. sidecarTraffic:
  253. # List of inbound ports that will be excluded from interception.
  254. # This setting is applied on every pod unless traffic.kuma.io/exclude-inbound-ports annotation is specified on Pod.
  255. excludeInboundPorts: [ ] # ENV: KUMA_RUNTIME_KUBERNETES_SIDECAR_TRAFFIC_EXCLUDE_INBOUND_PORTS
  256. # List of outbound ports that will be excluded from interception.
  257. # This setting is applied on every pod unless traffic.kuma.io/exclude-oubound-ports annotation is specified on Pod.
  258. excludeOutboundPorts: [ ] # ENV: KUMA_RUNTIME_KUBERNETES_SIDECAR_TRAFFIC_EXCLUDE_OUTBOUND_PORTS
  259. builtinDNS:
  260. # Use the built-in DNS
  261. enabled: true # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_BUILTIN_DNS_ENABLED
  262. # Redirect port for DNS
  263. port: 15053 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_BUILTIN_DNS_PORT
  264. marshalingCacheExpirationTime: 5m # ENV: KUMA_RUNTIME_KUBERNETES_MARSHALING_CACHE_EXPIRATION_TIME
  265. # Universal-specific configuration
  266. universal:
  267. # DataplaneCleanupAge defines how long Dataplane should be offline to be cleaned up by GC
  268. dataplaneCleanupAge: 72h0m0s # ENV: KUMA_RUNTIME_UNIVERSAL_DATAPLANE_CLEANUP_AGE
  269. # Default Kuma entities configuration
  270. defaults:
  271. # If true, it skips creating the default Mesh
  272. skipMeshCreation: false # ENV: KUMA_DEFAULTS_SKIP_MESH_CREATION
  273. # If true, instead of providing inbound clusters with address of dataplane, generates cluster with localhost.
  274. # Enabled can cause security threat by exposing application listing on localhost. This configuration is going to
  275. # be removed in the future.
  276. enableLocalhostInboundClusters: false #ENV: KUMA_DEFAULTS_ENABLE_LOCALHOST_INBOUND_CLUSTERS
  277. # Metrics configuration
  278. metrics:
  279. dataplane:
  280. # Enables collecting metrics from Dataplane
  281. enabled: true # ENV: KUMA_METRICS_DATAPLANE_ENABLED
  282. # How many latest subscriptions will be stored in DataplaneInsight object, if equals 0 then unlimited
  283. subscriptionLimit: 2 # ENV: KUMA_METRICS_DATAPLANE_SUBSCRIPTION_LIMIT
  284. # How long data plane proxy can stay Online without active xDS connection
  285. idleTimeout: 5m # ENV: KUMA_METRICS_DATAPLANE_IDLE_TIMEOUT
  286. zone:
  287. # Enables collecting metrics from Zone
  288. enabled: true # ENV: KUMA_METRICS_ZONE_ENABLED
  289. # How many latest subscriptions will be stored in ZoneInsights object, if equals 0 then unlimited
  290. subscriptionLimit: 10 # ENV: KUMA_METRICS_ZONE_SUBSCRIPTION_LIMIT
  291. # How long zone can stay Online without active KDS connection
  292. idleTimeout: 5m # ENV: KUMA_METRICS_ZONE_IDLE_TIMEOUT
  293. mesh:
  294. # Min time that should pass between MeshInsight resync
  295. minResyncTimeout: 1s # ENV: KUMA_METRICS_MESH_MIN_RESYNC_TIMEOUT
  296. # Max time that MeshInsight could spend without resync
  297. maxResyncTimeout: 20s # ENV: KUMA_METRICS_MESH_MAX_RESYNC_TIMEOUT
  298. # Reports configuration
  299. reports:
  300. # If true then usage stats will be reported
  301. enabled: false # ENV: KUMA_REPORTS_ENABLED
  302. # General configuration
  303. general:
  304. # dnsCacheTTL represents duration for how long Kuma CP will cache result of resolving dataplane's domain name
  305. dnsCacheTTL: 10s # ENV: KUMA_GENERAL_DNS_CACHE_TTL
  306. # TlsCertFile defines a path to a file with PEM-encoded TLS cert that will be used across all the Kuma Servers.
  307. tlsCertFile: # ENV: KUMA_GENERAL_TLS_CERT_FILE
  308. # TlsKeyFile defines a path to a file with PEM-encoded TLS key that will be used across all the Kuma Servers.
  309. tlsKeyFile: # ENV: KUMA_GENERAL_TLS_KEY_FILE
  310. # WorkDir defines a path to the working directory
  311. # Kuma stores in this directory autogenerated entities like certificates.
  312. # If empty then the working directory is $HOME/.kuma
  313. workDir: "" # ENV: KUMA_GENERAL_WORK_DIR
  314. # DNS Server configuration
  315. dnsServer:
  316. # The domain that the server will resolve the services for
  317. domain: "mesh" # ENV: KUMA_DNS_SERVER_DOMAIN
  318. # The CIDR range used to allocate
  319. CIDR: "240.0.0.0/4" # ENV: KUMA_DNS_SERVER_CIDR
  320. # Will create a service "<kuma.io/service>.mesh" dns entry for every service.
  321. serviceVipEnabled: true # ENV: KUMA_DNS_SERVER_SERVICE_VIP_ENABLED
  322. # Multizone mode
  323. multizone:
  324. global:
  325. kds:
  326. # Port of a gRPC server that serves Kuma Discovery Service (KDS).
  327. grpcPort: 5685 # ENV: KUMA_MULTIZONE_GLOBAL_KDS_GRPC_PORT
  328. # Interval for refreshing state of the world
  329. refreshInterval: 1s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_REFRESH_INTERVAL
  330. # Interval for flushing Zone Insights (stats of multi-zone communication)
  331. zoneInsightFlushInterval: 10s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_ZONE_INSIGHT_FLUSH_INTERVAL
  332. # TlsCertFile defines a path to a file with PEM-encoded TLS cert.
  333. tlsCertFile: # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_CERT_FILE
  334. # TTlsKeyFile defines a path to a file with PEM-encoded TLS key.
  335. tlsKeyFile: # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_KEY_FILE
  336. # MaxMsgSize defines a maximum size of the message in bytes that is exchanged using KDS.
  337. # In practice this means a limit on full list of one resource type.
  338. maxMsgSize: 10485760 # ENV: KUMA_MULTIZONE_GLOBAL_KDS_MAX_MSG_SIZE
  339. # MsgSendTimeout defines a timeout on sending a single KDS message.
  340. # KDS stream between control planes is terminated if the control plane hits this timeout.
  341. msgSendTimeout: 60s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_MSG_SEND_TIMEOUT
  342. zone:
  343. # Kuma Zone name used to mark the zone dataplane resources
  344. name: "" # ENV: KUMA_MULTIZONE_ZONE_NAME
  345. # GlobalAddress URL of Global Kuma CP
  346. globalAddress: # ENV KUMA_MULTIZONE_ZONE_GLOBAL_ADDRESS
  347. kds:
  348. # Interval for refreshing state of the world
  349. refreshInterval: 1s # ENV: KUMA_MULTIZONE_ZONE_KDS_REFRESH_INTERVAL
  350. # RootCAFile defines a path to a file with PEM-encoded Root CA. Client will verify server by using it.
  351. rootCaFile: # ENV: KUMA_MULTIZONE_ZONE_KDS_ROOT_CA_FILE
  352. # MaxMsgSize defines a maximum size of the message in bytes that is exchanged using KDS.
  353. # In practice this means a limit on full list of one resource type.
  354. maxMsgSize: 10485760 # ENV: KUMA_MULTIZONE_ZONE_KDS_MAX_MSG_SIZE
  355. # MsgSendTimeout defines a timeout on sending a single KDS message.
  356. # KDS stream between control planes is terminated if the control plane hits this timeout.
  357. msgSendTimeout: 60s # ENV: KUMA_MULTIZONE_ZONE_KDS_MSG_SEND_TIMEOUT
  358. # Diagnostics configuration
  359. diagnostics:
  360. # Port of Diagnostic Server for checking health and readiness of the Control Plane
  361. serverPort: 5680 # ENV: KUMA_DIAGNOSTICS_SERVER_PORT
  362. # If true, enables https://golang.org/pkg/net/http/pprof/ debug endpoints
  363. debugEndpoints: false # ENV: KUMA_DIAGNOSTICS_DEBUG_ENDPOINTS
  364. # Dataplane Server configuration that servers API like Bootstrap/XDS for the Dataplane.
  365. dpServer:
  366. # Port of the DP Server
  367. port: 5678 # ENV: KUMA_DP_SERVER_PORT
  368. # TlsCertFile defines a path to a file with PEM-encoded TLS cert. If empty, autoconfigured from general.tlsCertFile
  369. tlsCertFile: # ENV: KUMA_DP_SERVER_TLS_CERT_FILE
  370. # TlsKeyFile defines a path to a file with PEM-encoded TLS key. If empty, autoconfigured from general.tlsKeyFile
  371. tlsKeyFile: # ENV: KUMA_DP_SERVER_TLS_KEY_FILE
  372. # Auth defines an authentication configuration for the DP Server
  373. auth:
  374. # Type of authentication. Available values: "serviceAccountToken", "dpToken", "none".
  375. # If empty, autoconfigured based on the environment - "serviceAccountToken" on Kubernetes, "dpToken" on Universal.
  376. type: "" # ENV: KUMA_DP_SERVER_AUTH_TYPE
  377. # Hds defines a Health Discovery Service configuration
  378. hds:
  379. # Enabled if true then Envoy will actively check application's ports, but only on Universal.
  380. # On Kubernetes this feature disabled for now regardless the flag value
  381. enabled: true # ENV: KUMA_DP_SERVER_HDS_ENABLED
  382. # Interval for Envoy to send statuses for HealthChecks
  383. interval: 5s # ENV: KUMA_DP_SERVER_HDS_INTERVAL
  384. # RefreshInterval is an interval for re-genarting configuration for Dataplanes connected to the Control Plane
  385. refreshInterval: 10s # ENV: KUMA_DP_SERVER_HDS_REFRESH_INTERVAL
  386. # Check defines a HealthCheck configuration
  387. checkDefaults:
  388. # Timeout is a time to wait for a health check response. If the timeout is reached the
  389. # health check attempt will be considered a failure
  390. timeout: 2s # ENV: KUMA_DP_SERVER_HDS_CHECK_TIMEOUT
  391. # Interval between health checks
  392. interval: 1s # ENV: KUMA_DP_SERVER_HDS_CHECK_INTERVAL
  393. # NoTrafficInterval is a special health check interval that is used when a cluster has
  394. # never had traffic routed to it
  395. noTrafficInterval: 1s # ENV: KUMA_DP_SERVER_HDS_CHECK_NO_TRAFFIC_INTERVAL
  396. # HealthyThreshold is a number of healthy health checks required before a host is marked healthy
  397. healthyThreshold: 1 # ENV: KUMA_DP_SERVER_HDS_CHECK_HEALTHY_THRESHOLD
  398. # UnhealthyThreshold is a number of unhealthy health checks required before a host is marked unhealthy
  399. unhealthyThreshold: 1 # ENV: KUMA_DP_SERVER_HDS_CHECK_UNHEALTHY_THRESHOLD
  400. # Access Control configuration
  401. access:
  402. # Type of access strategy (available values: "static")
  403. type: static
  404. # Configuration of static access strategy
  405. static:
  406. # AdminResources defines an access to admin resources (Secret/GlobalSecret)
  407. adminResources:
  408. # List of users that are allowed to access admin resources
  409. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_ADMIN_RESOURCES_USERS
  410. # List of groups that are allowed to access admin resources
  411. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_ADMIN_RESOURCES_GROUPS
  412. # GenerateDPToken defines an access to generating dataplane token
  413. generateDpToken:
  414. # List of users that are allowed to generate dataplane token
  415. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_DP_TOKEN_USERS
  416. # List of groups that are allowed to generate dataplane token
  417. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_DP_TOKEN_GROUPS
  418. # GenerateUserToken defines an access to generating user token
  419. generateUserToken:
  420. # List of users that are allowed to generate user token
  421. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_USER_TOKEN_USERS
  422. # List of groups that are allowed to generate user token
  423. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_USER_TOKEN_GROUPS
  424. # GenerateZoneToken defines an access to generating zone token
  425. generateZoneToken:
  426. # List of users that are allowed to generate zone token
  427. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_ZONE_TOKEN_USERS
  428. # List of groups that are allowed to generate zone token
  429. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_ZONE_TOKEN_GROUPS
  430. viewConfigDump:
  431. # List of users that are allowed to get envoy config dump
  432. users: [ ] # ENV: KUMA_ACCESS_STATIC_GET_CONFIG_DUMP_USERS
  433. # List of groups that are allowed to get envoy config dump
  434. groups: ["mesh-system:unauthenticated","mesh-system:authenticated"] # ENV: KUMA_ACCESS_STATIC_GET_CONFIG_DUMP_GROUPS
  435. viewStats:
  436. # List of users that are allowed to get envoy stats
  437. users: [ ] # ENV: KUMA_ACCESS_STATIC_VIEW_STATS_USERS
  438. # List of groups that are allowed to get envoy stats
  439. groups: ["mesh-system:unauthenticated","mesh-system:authenticated"] # ENV: KUMA_ACCESS_STATIC_VIEW_STATS_GROUPS
  440. viewClusters:
  441. # List of users that are allowed to get envoy clusters
  442. users: [ ] # ENV: KUMA_ACCESS_STATIC_VIEW_CLUSTERS_USERS
  443. # List of groups that are allowed to get envoy clusters
  444. groups: ["mesh-system:unauthenticated","mesh-system:authenticated"] # ENV: KUMA_ACCESS_STATIC_VIEW_CLUSTERS_GROUPS
  445. # Configuration of experimental features of Kuma
  446. experimental:
  447. # If true, experimental Gateway API is enabled
  448. gatewayAPI: false # ENV: KUMA_EXPERIMENTAL_GATEWAY_API
  449. # If true, instead of embedding kubernetes outbounds into Dataplane object, they are persisted next to VIPs in ConfigMap
  450. # This can improve performance, but it should be enabled only after all instances are migrated to version that supports this config
  451. kubeOutboundsAsVIPs: false # ENV: KUMA_EXPERIMENTAL_KUBE_OUTBOUNDS_AS_VIPS
  452. proxy:
  453. gateway:
  454. # Sets the envoy runtime value to limit maximum number of incoming
  455. # connections to a builtin gateway data plane proxy
  456. globalDownstreamMaxConnections: 50000 # ENV: KUMA_PROXY_GATEWAY_GLOBAL_DOWNSTREAM_MAX_CONNECTIONS