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. # Path to TLS certificate file
  94. tlsCertFile: "" # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_CERT_FILE
  95. # Path to TLS key file
  96. tlsKeyFile: "" # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_KEY_FILE
  97. # TlsMinVersion the minimum version of TLS used across all the Kuma Servers.
  98. tlsMinVersion: "TLSv1_2" # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_MIN_VERSION
  99. # TlsMaxVersion the maximum version of TLS used across all the Kuma Servers.
  100. tlsMaxVersion: # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_MAX_VERSION
  101. # TlsCipherSuites the list of cipher suites to be used across all the Kuma Servers.
  102. tlsCipherSuites: [] # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_CIPHER_SUITES
  103. # Envoy XDS server configuration
  104. xdsServer:
  105. # Interval for re-genarting configuration for Dataplanes connected to the Control Plane
  106. dataplaneConfigurationRefreshInterval: 1s # ENV: KUMA_XDS_SERVER_DATAPLANE_CONFIGURATION_REFRESH_INTERVAL
  107. # Interval for flushing status of Dataplanes connected to the Control Plane
  108. dataplaneStatusFlushInterval: 10s # ENV: KUMA_XDS_SERVER_DATAPLANE_STATUS_FLUSH_INTERVAL
  109. # Backoff that is executed when Control Plane is sending the response that was previously rejected by Dataplane
  110. nackBackoff: 5s # ENV: KUMA_XDS_SERVER_NACK_BACKOFF
  111. # A delay between proxy terminating a connection and the CP trying to deregister the proxy.
  112. # It is used only in universal mode when you use direct lifecycle.
  113. # Setting this setting to 0s disables the delay.
  114. # Disabling this may cause race conditions that one instance of CP removes proxy object
  115. # while proxy is connected to another instance of the CP.
  116. dataplaneDeregistrationDelay: 10s # ENV: KUMA_XDS_DATAPLANE_DEREGISTRATION_DELAY
  117. # API Server configuration
  118. apiServer:
  119. # HTTP configuration of the API Server
  120. http:
  121. # If true then API Server will be served on HTTP
  122. enabled: true # ENV: KUMA_API_SERVER_HTTP_ENABLED
  123. # Network interface on which HTTP API Server will be exposed
  124. interface: 0.0.0.0 # ENV: KUMA_API_SERVER_HTTP_INTERFACE
  125. # Port of the API Server
  126. port: 5681 # ENV: KUMA_API_SERVER_HTTP_PORT
  127. # HTTPS configuration of the API Server
  128. https:
  129. # If true then API Server will be served on HTTPS
  130. enabled: true # ENV: KUMA_API_SERVER_HTTPS_ENABLED
  131. # Network interface on which HTTPS API Server will be exposed
  132. interface: 0.0.0.0 # ENV: KUMA_API_SERVER_HTTPS_INTERFACE
  133. # Port of the HTTPS API Server
  134. port: 5682 # ENV: KUMA_API_SERVER_HTTPS_PORT
  135. # Path to TLS certificate file. Autoconfigured from KUMA_GENERAL_TLS_CERT_FILE if empty
  136. tlsCertFile: "" # ENV: KUMA_API_SERVER_HTTPS_TLS_CERT_FILE
  137. # Path to TLS key file. Autoconfigured from KUMA_GENERAL_TLS_KEY_FILE if empty
  138. tlsKeyFile: "" # ENV: KUMA_API_SERVER_HTTPS_TLS_KEY_FILE
  139. # TlsMinVersion the minimum version of TLS used across all the Kuma Servers.
  140. tlsMinVersion: "TLSv1_2" # ENV: KUMA_API_SERVER_HTTPS_TLS_MIN_VERSION
  141. # TlsMaxVersion the maximum version of TLS used across all the Kuma Servers.
  142. tlsMaxVersion: # ENV: KUMA_API_SERVER_HTTPS_TLS_MAX_VERSION
  143. # TlsCipherSuites the list of cipher suites to be used across all the Kuma Servers.
  144. tlsCipherSuites: [] # ENV: KUMA_API_SERVER_HTTPS_TLS_CIPHER_SUITES
  145. # Authentication configuration for administrative endpoints like Dataplane Token or managing Secrets
  146. auth:
  147. # Directory of authorized client certificates (only validate in HTTPS)
  148. clientCertsDir: "" # ENV: KUMA_API_SERVER_AUTH_CLIENT_CERTS_DIR
  149. # Api Server Authentication configuration
  150. authn:
  151. # Type of authentication mechanism (available values: "adminClientCerts", "tokens")
  152. type: tokens # ENV: KUMA_API_SERVER_AUTHN_TYPE
  153. # Localhost is authenticated as a user admin of group admin
  154. localhostIsAdmin: true # ENV: KUMA_API_SERVER_AUTHN_LOCALHOST_IS_ADMIN
  155. # Configuration for tokens authentication
  156. tokens:
  157. # If true then User Token with name admin and group admin will be created and placed as admin-user-token Kuma secret
  158. bootstrapAdminToken: true # ENV: KUMA_API_SERVER_AUTHN_TOKENS_BOOTSTRAP_ADMIN_TOKEN
  159. # If true, then API Server will operate in read only mode (serving GET requests)
  160. readOnly: false # ENV: KUMA_API_SERVER_READ_ONLY
  161. # Allowed domains for Cross-Origin Resource Sharing. The value can be either domain or regexp
  162. corsAllowedDomains:
  163. - ".*" # ENV: KUMA_API_SERVER_CORS_ALLOWED_DOMAINS
  164. # Environment-specific configuration
  165. runtime:
  166. # Kubernetes-specific configuration
  167. kubernetes:
  168. # Service name of the Kuma Control Plane. It is used to point Kuma DP to proper URL.
  169. controlPlaneServiceName: kuma-control-plane # ENV: KUMA_RUNTIME_KUBERNETES_CONTROL_PLANE_SERVICE_NAME
  170. # Name of Service Account that is used to run the Control Plane
  171. serviceAccountName: "system:serviceaccount:kuma-system:kuma-control-plane" # ENV: KUMA_RUNTIME_KUBERNETES_SERVICE_ACCOUNT_NAME
  172. # Taint controller that prevents applications from scheduling until CNI is ready.
  173. nodeTaintController:
  174. # If true enables the taint controller.
  175. enabled: false # ENV: KUMA_RUNTIME_KUBERNETES_NODE_TAINT_CONTROLLER_ENABLED
  176. # Value of app label on CNI pod that indicates if node can be ready.
  177. cniApp: "" # ENV: KUMA_RUNTIME_KUBERNETES_NODE_TAINT_CONTROLLER_CNI_APP
  178. # Admission WebHook Server configuration
  179. admissionServer:
  180. # Address the Admission WebHook Server should be listening on
  181. address: # ENV: KUMA_RUNTIME_KUBERNETES_ADMISSION_SERVER_ADDRESS
  182. # Port the Admission WebHook Server should be listening on
  183. port: 5443 # ENV: KUMA_RUNTIME_KUBERNETES_ADMISSION_SERVER_PORT
  184. # Directory with a TLS cert and private key for the Admission WebHook Server.
  185. # TLS certificate file must be named `tls.crt`.
  186. # TLS key file must be named `tls.key`.
  187. certDir: # ENV: kuma_runtime_kubernetes_admission_server_cert_dir
  188. # Injector defines configuration of a Kuma Sidecar Injector.
  189. injector:
  190. # if true runs kuma-cp in CNI compatible mode
  191. cniEnabled: false # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_CNI_ENABLED
  192. # list of exceptions for Kuma injection
  193. exceptions:
  194. # a map of labels for exception. If pod matches label with given value Kuma won't be injected. Specify '*' to match any value.
  195. labels:
  196. openshift.io/build.name: "*"
  197. openshift.io/deployer-pod-for.name: "*"
  198. # VirtualProbesEnabled enables automatic converting HttpGet probes to virtual. Virtual probe
  199. # serves on sub-path of insecure port 'virtualProbesPort',
  200. # i.e :8080/health/readiness -> :9000/8080/health/readiness where 9000 is virtualProbesPort
  201. virtualProbesEnabled: true # ENV: KUMA_RUNTIME_KUBERNETES_VIRTUAL_PROBES_ENABLED
  202. # VirtualProbesPort is a port for exposing virtual probes which are not secured by mTLS
  203. virtualProbesPort: 9000 # ENV: KUMA_RUNTIME_KUBERNETES_VIRTUAL_PROBES_PORT
  204. # CaCertFile is CA certificate which will be used to verify a connection to the control plane.
  205. caCertFile: # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_CA_CERT_FILE
  206. # SidecarContainer defines configuration of the Kuma sidecar container.
  207. sidecarContainer:
  208. # Image name.
  209. image: kuma/kuma-dp:latest # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_IMAGE
  210. # Redirect port for inbound traffic.
  211. redirectPortInbound: 15006 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_REDIRECT_PORT_INBOUND
  212. # Redirect port for inbound traffic.
  213. redirectPortInboundV6: 15010 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_REDIRECT_PORT_INBOUND_V6
  214. # Redirect port for outbound traffic.
  215. redirectPortOutbound: 15001 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_REDIRECT_PORT_OUTBOUND
  216. # User ID.
  217. uid: 5678 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_UID
  218. # Group ID.
  219. gid: 5678 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_GUI
  220. # Drain time for listeners.
  221. drainTime: 30s # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_DRAIN_TIME
  222. # Readiness probe.
  223. readinessProbe:
  224. # Number of seconds after the container has started before readiness probes are initiated.
  225. initialDelaySeconds: 1 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_INITIAL_DELAY_SECONDS
  226. # Number of seconds after which the probe times out.
  227. timeoutSeconds: 3 # ENV : KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_TIMEOUT_SECONDS
  228. # Number of seconds after which the probe times out.
  229. periodSeconds: 5 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_PERIOD_SECONDS
  230. # Minimum consecutive successes for the probe to be considered successful after having failed.
  231. successThreshold: 1 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_SUCCESS_THRESHOLD
  232. # Minimum consecutive failures for the probe to be considered failed after having succeeded.
  233. failureThreshold: 12 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_FAILURE_THRESHOLD
  234. # Liveness probe.
  235. livenessProbe:
  236. # Number of seconds after the container has started before liveness probes are initiated.
  237. initialDelaySeconds: 60 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_INITIAL_DELAY_SECONDS
  238. # Number of seconds after which the probe times out.
  239. timeoutSeconds: 3 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_TIMEOUT_SECONDS
  240. # How often (in seconds) to perform the probe.
  241. periodSeconds: 5 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_PERIOD_SECONDS
  242. # Minimum consecutive failures for the probe to be considered failed after having succeeded.
  243. failureThreshold: 12 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_FAILURE_THRESHOLD
  244. # Compute resource requirements.
  245. resources:
  246. # Minimum amount of compute resources required.
  247. requests:
  248. # CPU, in cores. (500m = .5 cores)
  249. cpu: 50m # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_REQUESTS_CPU
  250. # Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
  251. memory: 64Mi # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_REQUESTS_MEMORY
  252. # Maximum amount of compute resources allowed.
  253. limits:
  254. # CPU, in cores. (500m = .5 cores)
  255. cpu: 1000m # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_LIMITS_CPU
  256. # Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
  257. memory: 512Mi # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_LIMITS_MEMORY
  258. # Additional environment variables that can be placed on Kuma DP sidecar
  259. envVars: {} # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_ENV_VARS
  260. # InitContainer defines configuration of the Kuma init container
  261. initContainer:
  262. # Image name.
  263. image: kuma/kuma-init:latest # ENV: KUMA_INJECTOR_INIT_CONTAINER_IMAGE
  264. # ContainerPatches is an optional list of ContainerPatch names which will be applied
  265. # to init and sidecar containers if workload is not annotated with a patch list.
  266. containerPatches: [ ] # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_CONTAINER_PATCHES
  267. # Configuration for a traffic that is intercepted by sidecar
  268. sidecarTraffic:
  269. # List of inbound ports that will be excluded from interception.
  270. # This setting is applied on every pod unless traffic.kuma.io/exclude-inbound-ports annotation is specified on Pod.
  271. excludeInboundPorts: [ ] # ENV: KUMA_RUNTIME_KUBERNETES_SIDECAR_TRAFFIC_EXCLUDE_INBOUND_PORTS
  272. # List of outbound ports that will be excluded from interception.
  273. # This setting is applied on every pod unless traffic.kuma.io/exclude-oubound-ports annotation is specified on Pod.
  274. excludeOutboundPorts: [ ] # ENV: KUMA_RUNTIME_KUBERNETES_SIDECAR_TRAFFIC_EXCLUDE_OUTBOUND_PORTS
  275. builtinDNS:
  276. # Use the built-in DNS
  277. enabled: true # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_BUILTIN_DNS_ENABLED
  278. # Redirect port for DNS
  279. port: 15053 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_BUILTIN_DNS_PORT
  280. transparentProxyV2: false # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_TRANSPARENT_PROXY_V2
  281. # EBPF defines configuration for the ebpf, when transparent proxy is marked to be
  282. # installed using ebpf instead of iptables
  283. ebpf:
  284. # Install transparent proxy using ebpf
  285. enabled: false # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_ENABLED
  286. # Name of the environmental variable which will include IP address of the pod
  287. instanceIPEnvVarName: INSTANCE_IP # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_INSTANCE_IP_ENV_VAR_NAME
  288. # Path where BPF file system will be mounted for pinning ebpf programs and maps
  289. bpffsPath: /sys/fs/bpf # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_BPFFS_PATH
  290. # Path of mounted cgroup2
  291. cgroupPath: /sys/fs/cgroup # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_CGROUP_PATH
  292. # Name of the network interface which should be used to attach to it TC programs
  293. # when not specified, we will try to automatically determine it
  294. tcAttachIface: "" # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_TC_ATTACH_IFACE
  295. # Path where compiled eBPF programs are placed
  296. programsSourcePath: /kuma/ebpf # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_PROGRAMS_SOURCE_PATH
  297. marshalingCacheExpirationTime: 5m # ENV: KUMA_RUNTIME_KUBERNETES_MARSHALING_CACHE_EXPIRATION_TIME
  298. # Universal-specific configuration
  299. universal:
  300. # DataplaneCleanupAge defines how long Dataplane should be offline to be cleaned up by GC
  301. dataplaneCleanupAge: 72h0m0s # ENV: KUMA_RUNTIME_UNIVERSAL_DATAPLANE_CLEANUP_AGE
  302. # Default Kuma entities configuration
  303. defaults:
  304. # If true, it skips creating the default Mesh
  305. skipMeshCreation: false # ENV: KUMA_DEFAULTS_SKIP_MESH_CREATION
  306. # If true, instead of providing inbound clusters with address of dataplane, generates cluster with localhost.
  307. # Enabled can cause security threat by exposing application listing on localhost. This configuration is going to
  308. # be removed in the future.
  309. enableLocalhostInboundClusters: false #ENV: KUMA_DEFAULTS_ENABLE_LOCALHOST_INBOUND_CLUSTERS
  310. # Metrics configuration
  311. metrics:
  312. dataplane:
  313. # How many latest subscriptions will be stored in DataplaneInsight object, if equals 0 then unlimited
  314. subscriptionLimit: 2 # ENV: KUMA_METRICS_DATAPLANE_SUBSCRIPTION_LIMIT
  315. # How long data plane proxy can stay Online without active xDS connection
  316. idleTimeout: 5m # ENV: KUMA_METRICS_DATAPLANE_IDLE_TIMEOUT
  317. zone:
  318. # How many latest subscriptions will be stored in ZoneInsights object, if equals 0 then unlimited
  319. subscriptionLimit: 10 # ENV: KUMA_METRICS_ZONE_SUBSCRIPTION_LIMIT
  320. # How long zone can stay Online without active KDS connection
  321. idleTimeout: 5m # ENV: KUMA_METRICS_ZONE_IDLE_TIMEOUT
  322. mesh:
  323. # Min time that should pass between MeshInsight resync
  324. minResyncTimeout: 1s # ENV: KUMA_METRICS_MESH_MIN_RESYNC_TIMEOUT
  325. # Max time that MeshInsight could spend without resync
  326. maxResyncTimeout: 20s # ENV: KUMA_METRICS_MESH_MAX_RESYNC_TIMEOUT
  327. # Reports configuration
  328. reports:
  329. # If true then usage stats will be reported
  330. enabled: false # ENV: KUMA_REPORTS_ENABLED
  331. # General configuration
  332. general:
  333. # dnsCacheTTL represents duration for how long Kuma CP will cache result of resolving dataplane's domain name
  334. dnsCacheTTL: 10s # ENV: KUMA_GENERAL_DNS_CACHE_TTL
  335. # TlsCertFile defines a path to a file with PEM-encoded TLS cert that will be used across all the Kuma Servers.
  336. tlsCertFile: # ENV: KUMA_GENERAL_TLS_CERT_FILE
  337. # TlsKeyFile defines a path to a file with PEM-encoded TLS key that will be used across all the Kuma Servers.
  338. tlsKeyFile: # ENV: KUMA_GENERAL_TLS_KEY_FILE
  339. # TlsMinVersion the minimum version of TLS used across all the Kuma Servers.
  340. tlsMinVersion: "TLSv1_2" # ENV: KUMA_GENERAL_TLS_MIN_VERSION
  341. # TlsMaxVersion the maximum version of TLS used across all the Kuma Servers.
  342. tlsMaxVersion: # ENV: KUMA_GENERAL_TLS_MAX_VERSION
  343. # TlsCipherSuites the list of cipher suites to be used across all the Kuma Servers.
  344. tlsCipherSuites: [] # ENV: KUMA_GENERAL_TLS_CIPHER_SUITES
  345. # WorkDir defines a path to the working directory
  346. # Kuma stores in this directory autogenerated entities like certificates.
  347. # If empty then the working directory is $HOME/.kuma
  348. workDir: "" # ENV: KUMA_GENERAL_WORK_DIR
  349. # DNS Server configuration
  350. dnsServer:
  351. # The domain that the server will resolve the services for
  352. domain: "mesh" # ENV: KUMA_DNS_SERVER_DOMAIN
  353. # The CIDR range used to allocate
  354. CIDR: "240.0.0.0/4" # ENV: KUMA_DNS_SERVER_CIDR
  355. # Will create a service "<kuma.io/service>.mesh" dns entry for every service.
  356. serviceVipEnabled: true # ENV: KUMA_DNS_SERVER_SERVICE_VIP_ENABLED
  357. # The port to use along with the `<kuma.io/service>.mesh` dns entry
  358. serviceVipPort: 80 # ENV: KUMA_DNS_SERVICE_SERVICE_VIP_PORT
  359. # Multizone mode
  360. multizone:
  361. global:
  362. kds:
  363. # Port of a gRPC server that serves Kuma Discovery Service (KDS).
  364. grpcPort: 5685 # ENV: KUMA_MULTIZONE_GLOBAL_KDS_GRPC_PORT
  365. # Interval for refreshing state of the world
  366. refreshInterval: 1s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_REFRESH_INTERVAL
  367. # Interval for flushing Zone Insights (stats of multi-zone communication)
  368. zoneInsightFlushInterval: 10s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_ZONE_INSIGHT_FLUSH_INTERVAL
  369. # TlsCertFile defines a path to a file with PEM-encoded TLS cert.
  370. tlsCertFile: # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_CERT_FILE
  371. # TlsKeyFile defines a path to a file with PEM-encoded TLS key.
  372. tlsKeyFile: # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_KEY_FILE
  373. # TlsMinVersion the minimum version of TLS
  374. tlsMinVersion: "TLSv1_2" # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_MIN_VERSION
  375. # TlsMaxVersion the maximum version of TLS
  376. tlsMaxVersion: # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_MAX_VERSION
  377. # TlsCipherSuites the list of cipher suites
  378. tlsCipherSuites: [] # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_CIPHER_SUITES
  379. # MaxMsgSize defines a maximum size of the message in bytes that is exchanged using KDS.
  380. # In practice this means a limit on full list of one resource type.
  381. maxMsgSize: 10485760 # ENV: KUMA_MULTIZONE_GLOBAL_KDS_MAX_MSG_SIZE
  382. # MsgSendTimeout defines a timeout on sending a single KDS message.
  383. # KDS stream between control planes is terminated if the control plane hits this timeout.
  384. msgSendTimeout: 60s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_MSG_SEND_TIMEOUT
  385. zone:
  386. # Kuma Zone name used to mark the zone dataplane resources
  387. name: "" # ENV: KUMA_MULTIZONE_ZONE_NAME
  388. # GlobalAddress URL of Global Kuma CP
  389. globalAddress: # ENV KUMA_MULTIZONE_ZONE_GLOBAL_ADDRESS
  390. kds:
  391. # Interval for refreshing state of the world
  392. refreshInterval: 1s # ENV: KUMA_MULTIZONE_ZONE_KDS_REFRESH_INTERVAL
  393. # RootCAFile defines a path to a file with PEM-encoded Root CA. Client will verify server by using it.
  394. rootCaFile: # ENV: KUMA_MULTIZONE_ZONE_KDS_ROOT_CA_FILE
  395. # MaxMsgSize defines a maximum size of the message in bytes that is exchanged using KDS.
  396. # In practice this means a limit on full list of one resource type.
  397. maxMsgSize: 10485760 # ENV: KUMA_MULTIZONE_ZONE_KDS_MAX_MSG_SIZE
  398. # MsgSendTimeout defines a timeout on sending a single KDS message.
  399. # KDS stream between control planes is terminated if the control plane hits this timeout.
  400. msgSendTimeout: 60s # ENV: KUMA_MULTIZONE_ZONE_KDS_MSG_SEND_TIMEOUT
  401. # Diagnostics configuration
  402. diagnostics:
  403. # Port of Diagnostic Server for checking health and readiness of the Control Plane
  404. serverPort: 5680 # ENV: KUMA_DIAGNOSTICS_SERVER_PORT
  405. # If true, enables https://golang.org/pkg/net/http/pprof/ debug endpoints
  406. debugEndpoints: false # ENV: KUMA_DIAGNOSTICS_DEBUG_ENDPOINTS
  407. # Dataplane Server configuration that servers API like Bootstrap/XDS for the Dataplane.
  408. dpServer:
  409. # Port of the DP Server
  410. port: 5678 # ENV: KUMA_DP_SERVER_PORT
  411. # TlsCertFile defines a path to a file with PEM-encoded TLS cert. If empty, autoconfigured from general.tlsCertFile
  412. tlsCertFile: # ENV: KUMA_DP_SERVER_TLS_CERT_FILE
  413. # TlsKeyFile defines a path to a file with PEM-encoded TLS key. If empty, autoconfigured from general.tlsKeyFile
  414. tlsKeyFile: # ENV: KUMA_DP_SERVER_TLS_KEY_FILE
  415. # TlsMinVersion the minimum version of TLS
  416. tlsMinVersion: "TLSv1_2" # ENV: KUMA_DP_SERVER_TLS_MIN_VERSION
  417. # TlsMaxVersion the maximum version of TLS
  418. tlsMaxVersion: # ENV: KUMA_DP_SERVER_TLS_MAX_VERSION
  419. # TlsCipherSuites the list of cipher suites
  420. tlsCipherSuites: [] # ENV: KUMA_DP_SERVER_TLS_CIPHER_SUITES
  421. # Auth defines an authentication configuration for the DP Server
  422. auth:
  423. # Type of authentication. Available values: "serviceAccountToken", "dpToken", "none".
  424. # If empty, autoconfigured based on the environment - "serviceAccountToken" on Kubernetes, "dpToken" on Universal.
  425. type: "" # ENV: KUMA_DP_SERVER_AUTH_TYPE
  426. # Hds defines a Health Discovery Service configuration
  427. hds:
  428. # Enabled if true then Envoy will actively check application's ports, but only on Universal.
  429. # On Kubernetes this feature disabled for now regardless the flag value
  430. enabled: true # ENV: KUMA_DP_SERVER_HDS_ENABLED
  431. # Interval for Envoy to send statuses for HealthChecks
  432. interval: 5s # ENV: KUMA_DP_SERVER_HDS_INTERVAL
  433. # RefreshInterval is an interval for re-genarting configuration for Dataplanes connected to the Control Plane
  434. refreshInterval: 10s # ENV: KUMA_DP_SERVER_HDS_REFRESH_INTERVAL
  435. # Check defines a HealthCheck configuration
  436. checkDefaults:
  437. # Timeout is a time to wait for a health check response. If the timeout is reached the
  438. # health check attempt will be considered a failure
  439. timeout: 2s # ENV: KUMA_DP_SERVER_HDS_CHECK_TIMEOUT
  440. # Interval between health checks
  441. interval: 1s # ENV: KUMA_DP_SERVER_HDS_CHECK_INTERVAL
  442. # NoTrafficInterval is a special health check interval that is used when a cluster has
  443. # never had traffic routed to it
  444. noTrafficInterval: 1s # ENV: KUMA_DP_SERVER_HDS_CHECK_NO_TRAFFIC_INTERVAL
  445. # HealthyThreshold is a number of healthy health checks required before a host is marked healthy
  446. healthyThreshold: 1 # ENV: KUMA_DP_SERVER_HDS_CHECK_HEALTHY_THRESHOLD
  447. # UnhealthyThreshold is a number of unhealthy health checks required before a host is marked unhealthy
  448. unhealthyThreshold: 1 # ENV: KUMA_DP_SERVER_HDS_CHECK_UNHEALTHY_THRESHOLD
  449. # Access Control configuration
  450. access:
  451. # Type of access strategy (available values: "static")
  452. type: static
  453. # Configuration of static access strategy
  454. static:
  455. # AdminResources defines an access to admin resources (Secret/GlobalSecret)
  456. adminResources:
  457. # List of users that are allowed to access admin resources
  458. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_ADMIN_RESOURCES_USERS
  459. # List of groups that are allowed to access admin resources
  460. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_ADMIN_RESOURCES_GROUPS
  461. # GenerateDPToken defines an access to generating dataplane token
  462. generateDpToken:
  463. # List of users that are allowed to generate dataplane token
  464. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_DP_TOKEN_USERS
  465. # List of groups that are allowed to generate dataplane token
  466. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_DP_TOKEN_GROUPS
  467. # GenerateUserToken defines an access to generating user token
  468. generateUserToken:
  469. # List of users that are allowed to generate user token
  470. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_USER_TOKEN_USERS
  471. # List of groups that are allowed to generate user token
  472. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_USER_TOKEN_GROUPS
  473. # GenerateZoneToken defines an access to generating zone token
  474. generateZoneToken:
  475. # List of users that are allowed to generate zone token
  476. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_ZONE_TOKEN_USERS
  477. # List of groups that are allowed to generate zone token
  478. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_ZONE_TOKEN_GROUPS
  479. viewConfigDump:
  480. # List of users that are allowed to get envoy config dump
  481. users: [ ] # ENV: KUMA_ACCESS_STATIC_GET_CONFIG_DUMP_USERS
  482. # List of groups that are allowed to get envoy config dump
  483. groups: ["mesh-system:unauthenticated","mesh-system:authenticated"] # ENV: KUMA_ACCESS_STATIC_GET_CONFIG_DUMP_GROUPS
  484. viewStats:
  485. # List of users that are allowed to get envoy stats
  486. users: [ ] # ENV: KUMA_ACCESS_STATIC_VIEW_STATS_USERS
  487. # List of groups that are allowed to get envoy stats
  488. groups: ["mesh-system:unauthenticated","mesh-system:authenticated"] # ENV: KUMA_ACCESS_STATIC_VIEW_STATS_GROUPS
  489. viewClusters:
  490. # List of users that are allowed to get envoy clusters
  491. users: [ ] # ENV: KUMA_ACCESS_STATIC_VIEW_CLUSTERS_USERS
  492. # List of groups that are allowed to get envoy clusters
  493. groups: ["mesh-system:unauthenticated","mesh-system:authenticated"] # ENV: KUMA_ACCESS_STATIC_VIEW_CLUSTERS_GROUPS
  494. # Configuration of experimental features of Kuma
  495. experimental:
  496. # If true, experimental Gateway API is enabled
  497. gatewayAPI: false # ENV: KUMA_EXPERIMENTAL_GATEWAY_API
  498. # If true, instead of embedding kubernetes outbounds into Dataplane object, they are persisted next to VIPs in ConfigMap
  499. # This can improve performance, but it should be enabled only after all instances are migrated to version that supports this config
  500. kubeOutboundsAsVIPs: false # ENV: KUMA_EXPERIMENTAL_KUBE_OUTBOUNDS_AS_VIPS
  501. proxy:
  502. gateway:
  503. # Sets the envoy runtime value to limit maximum number of incoming
  504. # connections to a builtin gateway data plane proxy
  505. globalDownstreamMaxConnections: 50000 # ENV: KUMA_PROXY_GATEWAY_GLOBAL_DOWNSTREAM_MAX_CONNECTIONS