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