kuma-cp configuration reference

Kuma CP configuration

  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. # Driver to use, one of: pgx, postgres
  26. driverName: pgx # ENV: KUMA_STORE_POSTGRES_DRIVER_NAME
  27. # Connection Timeout to the DB in seconds
  28. connectionTimeout: 5 # ENV: KUMA_STORE_POSTGRES_CONNECTION_TIMEOUT
  29. # MaxConnectionLifetime (applied only when driverName=pgx) is the duration since creation after which a connection will be automatically closed
  30. maxConnectionLifetime: "1h" # ENV: KUMA_STORE_POSTGRES_MAX_CONNECTION_LIFETIME
  31. # MaxConnectionLifetimeJitter (applied only when driverName=pgx) is the duration after maxConnectionLifetime to randomly decide to close a connection.
  32. # This helps prevent all connections from being closed at the exact same time, starving the pool.
  33. maxConnectionLifetimeJitter: "1m" # ENV: KUMA_STORE_POSTGRES_MAX_CONNECTION_LIFETIME_JITTER
  34. # HealthCheckInterval (applied only when driverName=pgx) is the duration between checks of the health of idle connections.
  35. healthCheckInterval: "30s" # ENV: KUMA_STORE_POSTGRES_HEALTH_CHECK_INTERVAL
  36. # MinOpenConnections (applied only when driverName=pgx) is the minimum number of open connections to the database
  37. minOpenConnections: 0 # ENV: KUMA_STORE_POSTGRES_MIN_OPEN_CONNECTIONS
  38. # MaxOpenConnections is the maximum number of open connections to the database
  39. # `0` value means number of open connections is unlimited
  40. maxOpenConnections: 50 # ENV: KUMA_STORE_POSTGRES_MAX_OPEN_CONNECTIONS
  41. # MaxIdleConnections (applied only when driverName=postgres) is the maximum number of connections in the idle connection pool
  42. # <0 value means no idle connections and 0 means default max idle connections
  43. maxIdleConnections: 50 # ENV: KUMA_STORE_POSTGRES_MAX_IDLE_CONNECTIONS
  44. # MaxListQueryElements defines maximum number of changed elements before requesting full list of elements from the store.
  45. maxListQueryElements: 0 # ENV: KUMA_STORE_POSTGRES_MAX_LIST_QUERY_ELEMENTS
  46. # TLS settings
  47. tls:
  48. # Mode of TLS connection. Available values are: "disable", "verifyNone", "verifyCa", "verifyFull"
  49. mode: disable # ENV: KUMA_STORE_POSTGRES_TLS_MODE
  50. # Path to TLS Certificate of the client. Required when server has METHOD=cert
  51. certPath: # ENV: KUMA_STORE_POSTGRES_TLS_CERT_PATH
  52. # Path to TLS Key of the client. Required when server has METHOD=cert
  53. keyPath: # ENV: KUMA_STORE_POSTGRES_TLS_KEY_PATH
  54. # Path to the root certificate. Used in verifyCa and verifyFull modes.
  55. caPath: # ENV: KUMA_STORE_POSTGRES_TLS_ROOT_CERT_PATH
  56. # MinReconnectInterval (applied only when driverName=postgres) controls the duration to wait before trying to
  57. # re-establish the database connection after connection loss. After each
  58. # consecutive failure this interval is doubled, until MaxReconnectInterval
  59. # is reached. Successfully completing the connection establishment procedure
  60. # resets the interval back to MinReconnectInterval.
  61. minReconnectInterval: "10s" # ENV: KUMA_STORE_POSTGRES_MIN_RECONNECT_INTERVAL
  62. # MaxReconnectInterval (applied only when driverName=postgres) controls the maximum possible duration to wait before trying
  63. # to re-establish the database connection after connection loss.
  64. maxReconnectInterval: "60s" # ENV: KUMA_STORE_POSTGRES_MAX_RECONNECT_INTERVAL
  65. # ReadReplica is a setting for a DB replica used only for read queries
  66. readReplica:
  67. # Host of the Postgres DB read replica. If not set, read replica is not used.
  68. host: "" # ENV: KUMA_STORE_POSTGRES_READ_REPLICA_HOST
  69. # Port of the Postgres DB read replica
  70. port: 5432 # ENV: KUMA_STORE_POSTGRES_READ_REPLICA_PORT
  71. # Ratio in [0-100] range. How many SELECT queries (out of 100) will use read replica.
  72. ratio: 100 # ENV: KUMA_STORE_POSTGRES_READ_REPLICA_RATIO
  73. # Cache for read only operations. This cache is local to the instance of the control plane.
  74. cache:
  75. # If true then cache is enabled
  76. enabled: true # ENV: KUMA_STORE_CACHE_ENABLED
  77. # Expiration time for elements in cache.
  78. expirationTime: 1s # ENV: KUMA_STORE_CACHE_EXPIRATION_TIME
  79. # Upsert (get and update) configuration
  80. upsert:
  81. # Base time for exponential backoff on upsert operations when retry is enabled
  82. conflictRetryBaseBackoff: 200ms # ENV: KUMA_STORE_UPSERT_CONFLICT_RETRY_BASE_BACKOFF
  83. # Max retries on upsert (get and update) operation when retry is enabled
  84. conflictRetryMaxTimes: 10 # ENV: KUMA_STORE_UPSERT_CONFLICT_RETRY_MAX_TIMES
  85. # Percentage of jitter. For example: if backoff is 20s, and this value 10, the backoff will be between 18s and 22s.
  86. conflictRetryJitterPercent: 30 # ENV: KUMA_STORE_UPSERT_CONFLICT_RETRY_JITTER_PERCENT
  87. # If true, skips validation of resource delete.
  88. # For example you don't have to delete all Dataplane objects before you delete a Mesh
  89. unsafeDelete: false # ENV: KUMA_STORE_UNSAFE_DELETE
  90. # Configuration of Bootstrap Server, which provides bootstrap config to Dataplanes
  91. bootstrapServer:
  92. # Parameters of bootstrap configuration
  93. params:
  94. # Address of Envoy Admin
  95. adminAddress: 127.0.0.1 # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_ADMIN_ADDRESS
  96. # Port of Envoy Admin
  97. adminPort: 9901 # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_ADMIN_PORT
  98. # Path to access log file of Envoy Admin
  99. adminAccessLogPath: /dev/null # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_ADMIN_ACCESS_LOG_PATH
  100. # Host of XDS Server. By default it is the same host as the one used by kuma-dp to connect to the control plane
  101. xdsHost: "" # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_XDS_HOST
  102. # Port of XDS Server. By default it is autoconfigured from KUMA_DP_SERVER_PORT
  103. xdsPort: 0 # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_XDS_PORT
  104. # Connection timeout to the XDS Server
  105. xdsConnectTimeout: 1s # ENV: KUMA_BOOTSTRAP_SERVER_PARAMS_XDS_CONNECT_TIMEOUT
  106. # Monitoring Assignment Discovery Service (MADS) server configuration
  107. monitoringAssignmentServer:
  108. # Port of a gRPC server that serves Monitoring Assignment Discovery Service (MADS).
  109. port: 5676 # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_PORT
  110. # Which MADS API versions to serve
  111. apiVersions: ["v1"] # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_API_VERSIONS
  112. # Interval for re-generating monitoring assignments for clients connected to the Control Plane.
  113. assignmentRefreshInterval: 1s # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_ASSIGNMENT_REFRESH_INTERVAL
  114. # The default timeout for a single fetch-based discovery request, if not specified
  115. defaultFetchTimeout: 30s # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_DEFAULT_FETCH_TIMEOUT
  116. # Path to TLS certificate file
  117. tlsCertFile: "" # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_CERT_FILE
  118. # Path to TLS key file
  119. tlsKeyFile: "" # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_KEY_FILE
  120. # TlsMinVersion the minimum version of TLS used across all the Kuma Servers.
  121. tlsMinVersion: "TLSv1_2" # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_MIN_VERSION
  122. # TlsMaxVersion the maximum version of TLS used across all the Kuma Servers.
  123. tlsMaxVersion: # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_MAX_VERSION
  124. # TlsCipherSuites the list of cipher suites to be used across all the Kuma Servers.
  125. tlsCipherSuites: [] # ENV: KUMA_MONITORING_ASSIGNMENT_SERVER_TLS_CIPHER_SUITES
  126. # Envoy XDS server configuration
  127. xdsServer:
  128. # Interval for re-genarting configuration for Dataplanes connected to the Control Plane
  129. dataplaneConfigurationRefreshInterval: 1s # ENV: KUMA_XDS_SERVER_DATAPLANE_CONFIGURATION_REFRESH_INTERVAL
  130. # Interval for flushing status of Dataplanes connected to the Control Plane
  131. dataplaneStatusFlushInterval: 10s # ENV: KUMA_XDS_SERVER_DATAPLANE_STATUS_FLUSH_INTERVAL
  132. # Backoff that is executed when Control Plane is sending the response that was previously rejected by Dataplane
  133. nackBackoff: 5s # ENV: KUMA_XDS_SERVER_NACK_BACKOFF
  134. # A delay between proxy terminating a connection and the CP trying to deregister the proxy.
  135. # It is used only in universal mode when you use direct lifecycle.
  136. # Setting this setting to 0s disables the delay.
  137. # Disabling this may cause race conditions that one instance of CP removes proxy object
  138. # while proxy is connected to another instance of the CP.
  139. dataplaneDeregistrationDelay: 10s # ENV: KUMA_XDS_DATAPLANE_DEREGISTRATION_DELAY
  140. # API Server configuration
  141. apiServer:
  142. # HTTP configuration of the API Server
  143. http:
  144. # If true then API Server will be served on HTTP
  145. enabled: true # ENV: KUMA_API_SERVER_HTTP_ENABLED
  146. # Network interface on which HTTP API Server will be exposed
  147. interface: 0.0.0.0 # ENV: KUMA_API_SERVER_HTTP_INTERFACE
  148. # Port of the API Server
  149. port: 5681 # ENV: KUMA_API_SERVER_HTTP_PORT
  150. # HTTPS configuration of the API Server
  151. https:
  152. # If true then API Server will be served on HTTPS
  153. enabled: true # ENV: KUMA_API_SERVER_HTTPS_ENABLED
  154. # Network interface on which HTTPS API Server will be exposed
  155. interface: 0.0.0.0 # ENV: KUMA_API_SERVER_HTTPS_INTERFACE
  156. # Port of the HTTPS API Server
  157. port: 5682 # ENV: KUMA_API_SERVER_HTTPS_PORT
  158. # Path to TLS certificate file. Autoconfigured from KUMA_GENERAL_TLS_CERT_FILE if empty
  159. tlsCertFile: "" # ENV: KUMA_API_SERVER_HTTPS_TLS_CERT_FILE
  160. # Path to TLS key file. Autoconfigured from KUMA_GENERAL_TLS_KEY_FILE if empty
  161. tlsKeyFile: "" # ENV: KUMA_API_SERVER_HTTPS_TLS_KEY_FILE
  162. # Path to the CA certificate which is used to sign client certificates. It is used only for verifying client certificates.
  163. tlsCaFile: "" # ENV: KUMA_API_SERVER_HTTPS_CLIENT_CERTS_CA_FILE
  164. # TlsMinVersion the minimum version of TLS used across all the Kuma Servers.
  165. tlsMinVersion: "TLSv1_2" # ENV: KUMA_API_SERVER_HTTPS_TLS_MIN_VERSION
  166. # TlsMaxVersion the maximum version of TLS used across all the Kuma Servers.
  167. tlsMaxVersion: # ENV: KUMA_API_SERVER_HTTPS_TLS_MAX_VERSION
  168. # TlsCipherSuites the list of cipher suites to be used across all the Kuma Servers.
  169. tlsCipherSuites: [] # ENV: KUMA_API_SERVER_HTTPS_TLS_CIPHER_SUITES
  170. # If true, then HTTPS connection will require client cert.
  171. requireClientCert: false # ENV: KUMA_API_SERVER_HTTPS_REQUIRE_CLIENT_CERT
  172. # Authentication configuration for administrative endpoints like Dataplane Token or managing Secrets
  173. auth:
  174. # Directory of authorized client certificates (only validate in HTTPS)
  175. clientCertsDir: "" # ENV: KUMA_API_SERVER_AUTH_CLIENT_CERTS_DIR
  176. # Api Server Authentication configuration
  177. authn:
  178. # Type of authentication mechanism (available values: "adminClientCerts", "tokens")
  179. type: tokens # ENV: KUMA_API_SERVER_AUTHN_TYPE
  180. # Localhost is authenticated as a user admin of group admin
  181. localhostIsAdmin: true # ENV: KUMA_API_SERVER_AUTHN_LOCALHOST_IS_ADMIN
  182. # Configuration for tokens authentication
  183. tokens:
  184. # If true then User Token with name admin and group admin will be created and placed as admin-user-token Kuma secret
  185. bootstrapAdminToken: true # ENV: KUMA_API_SERVER_AUTHN_TOKENS_BOOTSTRAP_ADMIN_TOKEN
  186. # If true the control plane token issuer is enabled. It's recommended to set it to false when all the tokens are issued offline.
  187. enableIssuer: true # ENV: KUMA_API_SERVER_AUTHN_TOKENS_ENABLE_ISSUER
  188. # Token validator configuration
  189. validator:
  190. # If true then Kuma secrets with prefix "user-token-signing-key" are considered as signing keys.
  191. useSecrets: true # ENV: KUMA_API_SERVER_AUTHN_TOKENS_VALIDATOR_USE_SECRETS
  192. # List of public keys used to validate the token. Example:
  193. # - kid: 1
  194. # key: |
  195. # -----BEGIN RSA PUBLIC KEY-----
  196. # MIIBCgKCAQEAq....
  197. # -----END RSA PUBLIC KEY-----
  198. # - kid: 2
  199. # keyFile: /keys/public.pem
  200. publicKeys: []
  201. # If true, then API Server will operate in read only mode (serving GET requests)
  202. readOnly: false # ENV: KUMA_API_SERVER_READ_ONLY
  203. # Allowed domains for Cross-Origin Resource Sharing. The value can be either domain or regexp
  204. corsAllowedDomains:
  205. - ".*" # ENV: KUMA_API_SERVER_CORS_ALLOWED_DOMAINS
  206. # Can be used if you use a reverse proxy
  207. rootUrl: "" # ENV: KUMA_API_SERVER_ROOT_URL
  208. # The path to serve the API from
  209. basePath: "/" # ENV: KUMA_API_SERVER_BASE_PATH
  210. # configuration specific to the GUI
  211. gui:
  212. # Whether to serve the gui (if mode=zone this has no effect)
  213. enabled: true # ENV: KUMA_API_SERVER_GUI_ENABLED
  214. # Can be used if you use a reverse proxy or want to serve the gui from a different path
  215. rootUrl: "" # ENV: KUMA_API_SERVER_GUI_ROOT_URL
  216. # The path to serve the GUI from
  217. basePath: "/gui" # ENV: KUMA_API_SERVER_GUI_BASE_PATH
  218. # Environment-specific configuration
  219. runtime:
  220. # Kubernetes-specific configuration
  221. kubernetes:
  222. # Service name of the Kuma Control Plane. It is used to point Kuma DP to proper URL.
  223. controlPlaneServiceName: kuma-control-plane # ENV: KUMA_RUNTIME_KUBERNETES_CONTROL_PLANE_SERVICE_NAME
  224. # Name of Service Account that is used to run the Control Plane
  225. serviceAccountName: "system:serviceaccount:kuma-system:kuma-control-plane" # ENV: KUMA_RUNTIME_KUBERNETES_SERVICE_ACCOUNT_NAME
  226. # Taint controller that prevents applications from scheduling until CNI is ready.
  227. nodeTaintController:
  228. # If true enables the taint controller.
  229. enabled: false # ENV: KUMA_RUNTIME_KUBERNETES_NODE_TAINT_CONTROLLER_ENABLED
  230. # Value of app label on CNI pod that indicates if node can be ready.
  231. cniApp: "" # ENV: KUMA_RUNTIME_KUBERNETES_NODE_TAINT_CONTROLLER_CNI_APP
  232. # Value of CNI namespace.
  233. cniNamespace: "kube-system" # ENV: KUMA_RUNTIME_KUBERNETES_NODE_TAINT_CONTROLLER_CNI_NAMESPACE
  234. # Admission WebHook Server configuration
  235. admissionServer:
  236. # Address the Admission WebHook Server should be listening on
  237. address: # ENV: KUMA_RUNTIME_KUBERNETES_ADMISSION_SERVER_ADDRESS
  238. # Port the Admission WebHook Server should be listening on
  239. port: 5443 # ENV: KUMA_RUNTIME_KUBERNETES_ADMISSION_SERVER_PORT
  240. # Directory with a TLS cert and private key for the Admission WebHook Server.
  241. # TLS certificate file must be named `tls.crt`.
  242. # TLS key file must be named `tls.key`.
  243. certDir: # ENV: kuma_runtime_kubernetes_admission_server_cert_dir
  244. # Injector defines configuration of a Kuma Sidecar Injector.
  245. injector:
  246. # if true runs kuma-cp in CNI compatible mode
  247. cniEnabled: false # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_CNI_ENABLED
  248. # list of exceptions for Kuma injection
  249. exceptions:
  250. # a map of labels for exception. If pod matches label with given value Kuma won't be injected. Specify '*' to match any value.
  251. labels:
  252. openshift.io/build.name: "*"
  253. openshift.io/deployer-pod-for.name: "*"
  254. # VirtualProbesEnabled enables automatic converting HttpGet probes to virtual. Virtual probe
  255. # serves on sub-path of insecure port 'virtualProbesPort',
  256. # i.e :8080/health/readiness -> :9000/8080/health/readiness where 9000 is virtualProbesPort
  257. virtualProbesEnabled: true # ENV: KUMA_RUNTIME_KUBERNETES_VIRTUAL_PROBES_ENABLED
  258. # VirtualProbesPort is a port for exposing virtual probes which are not secured by mTLS
  259. virtualProbesPort: 9000 # ENV: KUMA_RUNTIME_KUBERNETES_VIRTUAL_PROBES_PORT
  260. # CaCertFile is CA certificate which will be used to verify a connection to the control plane.
  261. caCertFile: # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_CA_CERT_FILE
  262. # SidecarContainer defines configuration of the Kuma sidecar container.
  263. sidecarContainer:
  264. # Image name.
  265. image: kuma/kuma-dp:latest # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_IMAGE
  266. # Redirect port for inbound traffic.
  267. redirectPortInbound: 15006 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_REDIRECT_PORT_INBOUND
  268. # Redirect port for inbound traffic.
  269. redirectPortInboundV6: 15010 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_REDIRECT_PORT_INBOUND_V6
  270. # Redirect port for outbound traffic.
  271. redirectPortOutbound: 15001 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_REDIRECT_PORT_OUTBOUND
  272. # User ID.
  273. uid: 5678 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_UID
  274. # Group ID.
  275. gid: 5678 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_GUI
  276. # Drain time for listeners.
  277. drainTime: 30s # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_DRAIN_TIME
  278. # Readiness probe.
  279. readinessProbe:
  280. # Number of seconds after the container has started before readiness probes are initiated.
  281. initialDelaySeconds: 1 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_INITIAL_DELAY_SECONDS
  282. # Number of seconds after which the probe times out.
  283. timeoutSeconds: 3 # ENV : KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_TIMEOUT_SECONDS
  284. # Number of seconds after which the probe times out.
  285. periodSeconds: 5 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_PERIOD_SECONDS
  286. # Minimum consecutive successes for the probe to be considered successful after having failed.
  287. successThreshold: 1 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_SUCCESS_THRESHOLD
  288. # Minimum consecutive failures for the probe to be considered failed after having succeeded.
  289. failureThreshold: 12 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_READINESS_PROBE_FAILURE_THRESHOLD
  290. # Liveness probe.
  291. livenessProbe:
  292. # Number of seconds after the container has started before liveness probes are initiated.
  293. initialDelaySeconds: 60 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_INITIAL_DELAY_SECONDS
  294. # Number of seconds after which the probe times out.
  295. timeoutSeconds: 3 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_TIMEOUT_SECONDS
  296. # How often (in seconds) to perform the probe.
  297. periodSeconds: 5 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_PERIOD_SECONDS
  298. # Minimum consecutive failures for the probe to be considered failed after having succeeded.
  299. failureThreshold: 12 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_LIVENESS_PROBE_FAILURE_THRESHOLD
  300. # Compute resource requirements.
  301. resources:
  302. # Minimum amount of compute resources required.
  303. requests:
  304. # CPU, in cores. (500m = .5 cores)
  305. cpu: 50m # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_REQUESTS_CPU
  306. # Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
  307. memory: 64Mi # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_REQUESTS_MEMORY
  308. # Maximum amount of compute resources allowed.
  309. limits:
  310. # CPU, in cores. (500m = .5 cores)
  311. cpu: 1000m # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_LIMITS_CPU
  312. # Memory, in bytes. (500Gi = 500GiB = 500 * 1024 * 1024 * 1024)
  313. memory: 512Mi # ENV: KUMA_INJECTOR_SIDECAR_CONTAINER_RESOURCES_LIMITS_MEMORY
  314. # Additional environment variables that can be placed on Kuma DP sidecar
  315. envVars: {} # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_ENV_VARS
  316. # If true, it enables a postStart script that waits until Envoy is ready.
  317. # With the current Kubernetes behavior, any other container in the Pod will wait until the script is complete.
  318. waitForDataplaneReady: false # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_SIDECAR_CONTAINER_WAIT_FOR_DATAPLANE_READY
  319. # InitContainer defines configuration of the Kuma init container
  320. initContainer:
  321. # Image name.
  322. image: kuma/kuma-init:latest # ENV: KUMA_INJECTOR_INIT_CONTAINER_IMAGE
  323. # ContainerPatches is an optional list of ContainerPatch names which will be applied
  324. # to init and sidecar containers if workload is not annotated with a patch list.
  325. containerPatches: [ ] # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_CONTAINER_PATCHES
  326. # Configuration for a traffic that is intercepted by sidecar
  327. sidecarTraffic:
  328. # List of inbound ports that will be excluded from interception.
  329. # This setting is applied on every pod unless traffic.kuma.io/exclude-inbound-ports annotation is specified on Pod.
  330. excludeInboundPorts: [ ] # ENV: KUMA_RUNTIME_KUBERNETES_SIDECAR_TRAFFIC_EXCLUDE_INBOUND_PORTS
  331. # List of outbound ports that will be excluded from interception.
  332. # This setting is applied on every pod unless traffic.kuma.io/exclude-oubound-ports annotation is specified on Pod.
  333. excludeOutboundPorts: [ ] # ENV: KUMA_RUNTIME_KUBERNETES_SIDECAR_TRAFFIC_EXCLUDE_OUTBOUND_PORTS
  334. builtinDNS:
  335. # Use the built-in DNS
  336. enabled: true # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_BUILTIN_DNS_ENABLED
  337. # Redirect port for DNS
  338. port: 15053 # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_BUILTIN_DNS_PORT
  339. # EBPF defines configuration for the ebpf, when transparent proxy is marked to be
  340. # installed using ebpf instead of iptables
  341. ebpf:
  342. # Install transparent proxy using ebpf
  343. enabled: false # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_ENABLED
  344. # Name of the environmental variable which will include IP address of the pod
  345. instanceIPEnvVarName: INSTANCE_IP # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_INSTANCE_IP_ENV_VAR_NAME
  346. # Path where BPF file system will be mounted for pinning ebpf programs and maps
  347. bpffsPath: /sys/fs/bpf # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_BPFFS_PATH
  348. # Path of mounted cgroup2
  349. cgroupPath: /sys/fs/cgroup # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_CGROUP_PATH
  350. # Name of the network interface which should be used to attach to it TC programs
  351. # when not specified, we will try to automatically determine it
  352. tcAttachIface: "" # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_TC_ATTACH_IFACE
  353. # Path where compiled eBPF programs are placed
  354. programsSourcePath: /kuma/ebpf # ENV: KUMA_RUNTIME_KUBERNETES_INJECTOR_EBPF_PROGRAMS_SOURCE_PATH
  355. marshalingCacheExpirationTime: 5m # ENV: KUMA_RUNTIME_KUBERNETES_MARSHALING_CACHE_EXPIRATION_TIME
  356. # Kubernetes's resources reconciliation concurrency configuration
  357. controllersConcurrency:
  358. # PodController defines maximum concurrent reconciliations of Pod resources
  359. # Default value 10. If set to 0 kube controller-runtime default value of 1 will be used.
  360. podController: 10 # ENV: KUMA_RUNTIME_KUBERNETES_CONTROLLERS_CONCURRENCY_POD_CONTROLLER
  361. # Kubernetes client configuration
  362. clientConfig:
  363. # Qps defines maximum requests kubernetes client is allowed to make per second.
  364. # Default value 100. If set to 0 kube-client default value of 5 will be used.
  365. qps: 100 # ENV: KUMA_RUNTIME_KUBERNETES_CLIENT_CONFIG_QPS
  366. # BurstQps defines maximum burst requests kubernetes client is allowed to make per second
  367. # Default value 100. If set to 0 kube-client default value of 10 will be used.
  368. burstQps: 100 # ENV: KUMA_RUNTIME_KUBERNETES_CLIENT_CONFIG_BURST_QPS
  369. leaderElection:
  370. # LeaseDuration is the duration that non-leader candidates will
  371. # wait to force acquire leadership. This is measured against time of
  372. # last observed ack. Default is 15 seconds.
  373. leaseDuration: 15s # ENV: KUMA_RUNTIME_KUBERNETES_LEADER_ELECTION_LEASE_DURATION
  374. # RenewDeadline is the duration that the acting controlplane will retry
  375. # refreshing leadership before giving up. Default is 10 seconds.
  376. renewDeadline: 10s # ENV: KUMA_RUNTIME_KUBERNETES_LEADER_ELECTION_RENEW_DEADLINE
  377. # Universal-specific configuration
  378. universal:
  379. # DataplaneCleanupAge defines how long Dataplane should be offline to be cleaned up by GC
  380. dataplaneCleanupAge: 72h0m0s # ENV: KUMA_RUNTIME_UNIVERSAL_DATAPLANE_CLEANUP_AGE
  381. # Default Kuma entities configuration
  382. defaults:
  383. # If true, it skips creating the default Mesh
  384. skipMeshCreation: false # ENV: KUMA_DEFAULTS_SKIP_MESH_CREATION
  385. # If true, it skips creating the default tenant resources
  386. skipTenantResources: false # ENV: KUMA_DEFAULTS_SKIP_TENANT_RESOURCES
  387. # Metrics configuration
  388. metrics:
  389. dataplane:
  390. # How many latest subscriptions will be stored in DataplaneInsight object, if equals 0 then unlimited
  391. subscriptionLimit: 2 # ENV: KUMA_METRICS_DATAPLANE_SUBSCRIPTION_LIMIT
  392. # How long data plane proxy can stay Online without active xDS connection
  393. idleTimeout: 5m # ENV: KUMA_METRICS_DATAPLANE_IDLE_TIMEOUT
  394. zone:
  395. # How many latest subscriptions will be stored in ZoneInsights object, if equals 0 then unlimited
  396. subscriptionLimit: 10 # ENV: KUMA_METRICS_ZONE_SUBSCRIPTION_LIMIT
  397. # How long zone can stay Online without active KDS connection
  398. idleTimeout: 5m # ENV: KUMA_METRICS_ZONE_IDLE_TIMEOUT
  399. # Compact finished metrics (do not store config and details of KDS exchange).
  400. compactFinishedSubscriptions: false # ENV: KUMA_METRICS_ZONE_COMPACT_FINISHED_SUBSCRIPTIONS
  401. mesh:
  402. # Minimum time between 2 refresh of insights
  403. minResyncInterval: 1s # ENV: KUMA_METRICS_MESH_MIN_RESYNC_INTERVAL
  404. # time between triggering a full refresh of all the insights
  405. fullResyncInterval: 20s # ENV: KUMA_METRICS_MESH_FULL_RESYNC_INTERVAL
  406. # the size of the buffer between event creation and processing
  407. bufferSize: 1000 # ENV: KUMA_METRICS_MESH_BUFFER_SIZE
  408. # the number of workers that process metrics events
  409. eventProcessors: 1 # ENV: KUMA_METRICS_MESH_EVENT_PROCESSORS
  410. controlPlane:
  411. # If true metrics show number of resources in the system should be reported
  412. reportResourcesCount: true # ENV: KUMA_METRICS_CONTROL_PLANE_REPORT_RESOURCES_COUNT
  413. # Reports configuration
  414. reports:
  415. # If true then usage stats will be reported
  416. enabled: false # ENV: KUMA_REPORTS_ENABLED
  417. # General configuration
  418. general:
  419. # dnsCacheTTL represents duration for how long Kuma CP will cache result of resolving dataplane's domain name
  420. dnsCacheTTL: 10s # ENV: KUMA_GENERAL_DNS_CACHE_TTL
  421. # TlsCertFile defines a path to a file with PEM-encoded TLS cert that will be used across all the Kuma Servers.
  422. tlsCertFile: # ENV: KUMA_GENERAL_TLS_CERT_FILE
  423. # TlsKeyFile defines a path to a file with PEM-encoded TLS key that will be used across all the Kuma Servers.
  424. tlsKeyFile: # ENV: KUMA_GENERAL_TLS_KEY_FILE
  425. # TlsMinVersion the minimum version of TLS used across all the Kuma Servers.
  426. tlsMinVersion: "TLSv1_2" # ENV: KUMA_GENERAL_TLS_MIN_VERSION
  427. # TlsMaxVersion the maximum version of TLS used across all the Kuma Servers.
  428. tlsMaxVersion: # ENV: KUMA_GENERAL_TLS_MAX_VERSION
  429. # TlsCipherSuites the list of cipher suites to be used across all the Kuma Servers.
  430. tlsCipherSuites: [] # ENV: KUMA_GENERAL_TLS_CIPHER_SUITES
  431. # WorkDir defines a path to the working directory
  432. # Kuma stores in this directory autogenerated entities like certificates.
  433. # If empty then the working directory is $HOME/.kuma
  434. workDir: "" # ENV: KUMA_GENERAL_WORK_DIR
  435. # DNS Server configuration
  436. dnsServer:
  437. # The domain that the server will resolve the services for
  438. domain: "mesh" # ENV: KUMA_DNS_SERVER_DOMAIN
  439. # The CIDR range used to allocate
  440. CIDR: "240.0.0.0/4" # ENV: KUMA_DNS_SERVER_CIDR
  441. # Will create a service "<kuma.io/service>.mesh" dns entry for every service.
  442. serviceVipEnabled: true # ENV: KUMA_DNS_SERVER_SERVICE_VIP_ENABLED
  443. # The port to use along with the `<kuma.io/service>.mesh` dns entry
  444. serviceVipPort: 80 # ENV: KUMA_DNS_SERVICE_SERVICE_VIP_PORT
  445. # Multizone mode
  446. multizone:
  447. global:
  448. kds:
  449. # Port of a gRPC server that serves Kuma Discovery Service (KDS).
  450. grpcPort: 5685 # ENV: KUMA_MULTIZONE_GLOBAL_KDS_GRPC_PORT
  451. # Interval for refreshing state of the world
  452. refreshInterval: 1s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_REFRESH_INTERVAL
  453. # Interval for flushing Zone Insights (stats of multi-zone communication)
  454. zoneInsightFlushInterval: 10s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_ZONE_INSIGHT_FLUSH_INTERVAL
  455. # TlsEnabled turns on TLS for KDS
  456. tlsEnabled: true # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_ENABLED
  457. # TlsCertFile defines a path to a file with PEM-encoded TLS cert.
  458. tlsCertFile: # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_CERT_FILE
  459. # TlsKeyFile defines a path to a file with PEM-encoded TLS key.
  460. tlsKeyFile: # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_KEY_FILE
  461. # TlsMinVersion the minimum version of TLS
  462. tlsMinVersion: "TLSv1_2" # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_MIN_VERSION
  463. # TlsMaxVersion the maximum version of TLS
  464. tlsMaxVersion: # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_MAX_VERSION
  465. # TlsCipherSuites the list of cipher suites
  466. tlsCipherSuites: [] # ENV: KUMA_MULTIZONE_GLOBAL_KDS_TLS_CIPHER_SUITES
  467. # MaxMsgSize defines a maximum size of the message in bytes that is exchanged using KDS.
  468. # In practice this means a limit on full list of one resource type.
  469. maxMsgSize: 10485760 # ENV: KUMA_MULTIZONE_GLOBAL_KDS_MAX_MSG_SIZE
  470. # MsgSendTimeout defines a timeout on sending a single KDS message.
  471. # KDS stream between control planes is terminated if the control plane hits this timeout.
  472. msgSendTimeout: 60s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_MSG_SEND_TIMEOUT
  473. # Backoff that is executed when the global control plane is sending the response that was previously rejected by zone control plane
  474. nackBackoff: 5s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_NACK_BACKOFF
  475. # DisableSOTW if true doesn't expose SOTW version of KDS. Default: false
  476. disableSOTW: false # ENV: KUMA_MULTIZONE_GLOBAL_KDS_DISABLE_SOTW
  477. # Response backoff is a time Global CP waits before sending ACK/NACK.
  478. # This is a way to slow down Zone CP from sending resources too often.
  479. responseBackoff: 0s # ENV: KUMA_MULTIZONE_GLOBAL_KDS_RESPONSE_BACKOFF
  480. zone:
  481. # Kuma Zone name used to mark the zone dataplane resources
  482. name: "" # ENV: KUMA_MULTIZONE_ZONE_NAME
  483. # GlobalAddress URL of Global Kuma CP
  484. globalAddress: # ENV KUMA_MULTIZONE_ZONE_GLOBAL_ADDRESS
  485. kds:
  486. # Interval for refreshing state of the world
  487. refreshInterval: 1s # ENV: KUMA_MULTIZONE_ZONE_KDS_REFRESH_INTERVAL
  488. # RootCAFile defines a path to a file with PEM-encoded Root CA. Client will verify server by using it.
  489. rootCaFile: # ENV: KUMA_MULTIZONE_ZONE_KDS_ROOT_CA_FILE
  490. # If true, TLS connection to the server won't be verified.
  491. tlsSkipVerify: false # ENV: KUMA_MULTIZONE_ZONE_KDS_TLS_SKIP_VERIFY
  492. # MaxMsgSize defines a maximum size of the message in bytes that is exchanged using KDS.
  493. # In practice this means a limit on full list of one resource type.
  494. maxMsgSize: 10485760 # ENV: KUMA_MULTIZONE_ZONE_KDS_MAX_MSG_SIZE
  495. # MsgSendTimeout defines a timeout on sending a single KDS message.
  496. # KDS stream between control planes is terminated if the control plane hits this timeout.
  497. msgSendTimeout: 60s # ENV: KUMA_MULTIZONE_ZONE_KDS_MSG_SEND_TIMEOUT
  498. # Backoff that is executed when the zone control plane is sending the response that was previously rejected by global control plane
  499. nackBackoff: 5s # ENV: KUMA_MULTIZONE_ZONE_KDS_NACK_BACKOFF
  500. # Response backoff is a time Zone CP waits before sending ACK/NACK.
  501. # This is a way to slow down Global CP from sending resources too often.
  502. responseBackoff: 0s # ENV: KUMA_MULTIZONE_ZONE_KDS_RESPONSE_BACKOFF
  503. # Diagnostics configuration
  504. diagnostics:
  505. # Port of Diagnostic Server for checking health and readiness of the Control Plane
  506. serverPort: 5680 # ENV: KUMA_DIAGNOSTICS_SERVER_PORT
  507. # If true, enables https://golang.org/pkg/net/http/pprof/ debug endpoints
  508. debugEndpoints: false # ENV: KUMA_DIAGNOSTICS_DEBUG_ENDPOINTS
  509. # Whether tls is enabled or not
  510. tlsEnabled: false # ENV: KUMA_DIAGNOSTICS_TLS_ENABLED
  511. # TlsCertFile defines a path to a file with PEM-encoded TLS cert. If empty, autoconfigured from general.tlsCertFile
  512. tlsCertFile: # ENV: KUMA_DIAGNOSTICS_TLS_CERT_FILE
  513. # TlsKeyFile defines a path to a file with PEM-encoded TLS key. If empty, autoconfigured from general.tlsKeyFile
  514. tlsKeyFile: # ENV: KUMA_DIAGNOSTICS_TLS_KEY_FILE
  515. # TlsMinVersion the minimum version of TLS
  516. tlsMinVersion: "TLSv1_2" # ENV: KUMA_DIAGNOSTICS_TLS_MIN_VERSION
  517. # TlsMaxVersion the maximum version of TLS
  518. tlsMaxVersion: # ENV: KUMA_DIAGNOSTICS_TLS_MAX_VERSION
  519. # TlsCipherSuites the list of cipher suites
  520. tlsCipherSuites: [] # ENV: KUMA_DIAGNOSTICS_TLS_CIPHER_SUITES
  521. # Dataplane Server configuration that servers API like Bootstrap/XDS for the Dataplane.
  522. dpServer:
  523. # Port of the DP Server
  524. port: 5678 # ENV: KUMA_DP_SERVER_PORT
  525. # TlsCertFile defines a path to a file with PEM-encoded TLS cert. If empty, autoconfigured from general.tlsCertFile
  526. tlsCertFile: # ENV: KUMA_DP_SERVER_TLS_CERT_FILE
  527. # TlsKeyFile defines a path to a file with PEM-encoded TLS key. If empty, autoconfigured from general.tlsKeyFile
  528. tlsKeyFile: # ENV: KUMA_DP_SERVER_TLS_KEY_FILE
  529. # TlsMinVersion the minimum version of TLS
  530. tlsMinVersion: "TLSv1_2" # ENV: KUMA_DP_SERVER_TLS_MIN_VERSION
  531. # TlsMaxVersion the maximum version of TLS
  532. tlsMaxVersion: # ENV: KUMA_DP_SERVER_TLS_MAX_VERSION
  533. # TlsCipherSuites the list of cipher suites
  534. tlsCipherSuites: [] # ENV: KUMA_DP_SERVER_TLS_CIPHER_SUITES
  535. # ReadHeaderTimeout defines the amount of time DP server will be allowed
  536. # to read request headers. The connection's read deadline is reset
  537. # after reading the headers and the Handler can decide what is considered
  538. # too slow for the body. If ReadHeaderTimeout is zero there is no timeout.
  539. # The timeout is configurable as in rare cases, when Kuma CP was restarting,
  540. # 1s which is explicitly set in other servers was insufficient and DPs
  541. # were failing to reconnect (we observed this in Projected Service Account
  542. # Tokens e2e tests, which started flaking a lot after introducing explicit
  543. # 1s timeout)
  544. readHeaderTimeout: 5s # ENV: KUMA_DP_SERVER_READ_HEADER_TIMEOUT
  545. # Auth defines an authentication configuration for the DP Server
  546. # DEPRECATED: use "authn" section.
  547. auth:
  548. # Type of authentication. Available values: "serviceAccountToken", "dpToken", "none".
  549. # If empty, autoconfigured based on the environment - "serviceAccountToken" on Kubernetes, "dpToken" on Universal.
  550. type: "" # ENV: KUMA_DP_SERVER_AUTH_TYPE
  551. # Authn defines an authentication configuration for the DP Server
  552. authn:
  553. # Configuration for data plane proxy authentication.
  554. dpProxy:
  555. # Type of authentication. Available values: "serviceAccountToken", "dpToken", "none".
  556. # If empty, autoconfigured based on the environment - "serviceAccountToken" on Kubernetes, "dpToken" on Universal.
  557. type: ""
  558. # Configuration of dpToken authentication method
  559. dpToken:
  560. # If true the control plane token issuer is enabled. It's recommended to set it to false when all the tokens are issued offline.
  561. enableIssuer: true
  562. # DP Token validator configuration.
  563. validator:
  564. # If true then Kuma secrets with prefix "dataplane-token-signing-key-{mesh}" are considered as signing keys.
  565. useSecrets: true
  566. # List of public keys used to validate the token. Example:
  567. # - kid: 1
  568. # mesh: default
  569. # key: |
  570. # -----BEGIN RSA PUBLIC KEY-----
  571. # MIIBCgKCAQEAq....
  572. # -----END RSA PUBLIC KEY-----
  573. # - kid: 2
  574. # mesh: demo
  575. # keyFile: /keys/public.pem
  576. publicKeys: []
  577. # Configuration for zone proxy authentication.
  578. zoneProxy:
  579. # Type of authentication. Available values: "serviceAccountToken", "zoneToken", "none".
  580. # If empty, autoconfigured based on the environment - "serviceAccountToken" on Kubernetes, "zoneToken" on Universal.
  581. type: ""
  582. # Configuration for zoneToken authentication method.
  583. zoneToken:
  584. # If true the control plane token issuer is enabled. It's recommended to set it to false when all the tokens are issued offline.
  585. enableIssuer: true
  586. # Zone Token validator configuration.
  587. validator:
  588. # If true then Kuma secrets with prefix "zone-token-signing-key" are considered as signing keys.
  589. useSecrets: true
  590. # List of public keys used to validate the token. Example:
  591. # - kid: 1
  592. # key: |
  593. # -----BEGIN RSA PUBLIC KEY-----
  594. # MIIBCgKCAQEAq....
  595. # -----END RSA PUBLIC KEY-----
  596. # - kid: 2
  597. # keyFile: /keys/public.pem
  598. publicKeys: []
  599. # If true then Envoy uses Google gRPC instead of Envoy gRPC which lets a proxy reload the auth data (service account token, dp token etc.) stored in the file without proxy restart.
  600. enableReloadableTokens: false # ENV: KUMA_DP_SERVER_AUTHN_ENABLE_RELOADABLE_TOKENS
  601. # Hds defines a Health Discovery Service configuration
  602. hds:
  603. # Enabled if true then Envoy will actively check application's ports, but only on Universal.
  604. # On Kubernetes this feature disabled for now regardless the flag value
  605. enabled: true # ENV: KUMA_DP_SERVER_HDS_ENABLED
  606. # Interval for Envoy to send statuses for HealthChecks
  607. interval: 5s # ENV: KUMA_DP_SERVER_HDS_INTERVAL
  608. # RefreshInterval is an interval for re-genarting configuration for Dataplanes connected to the Control Plane
  609. refreshInterval: 10s # ENV: KUMA_DP_SERVER_HDS_REFRESH_INTERVAL
  610. # Check defines a HealthCheck configuration
  611. checkDefaults:
  612. # Timeout is a time to wait for a health check response. If the timeout is reached the
  613. # health check attempt will be considered a failure
  614. timeout: 2s # ENV: KUMA_DP_SERVER_HDS_CHECK_TIMEOUT
  615. # Interval between health checks
  616. interval: 1s # ENV: KUMA_DP_SERVER_HDS_CHECK_INTERVAL
  617. # NoTrafficInterval is a special health check interval that is used when a cluster has
  618. # never had traffic routed to it
  619. noTrafficInterval: 1s # ENV: KUMA_DP_SERVER_HDS_CHECK_NO_TRAFFIC_INTERVAL
  620. # HealthyThreshold is a number of healthy health checks required before a host is marked healthy
  621. healthyThreshold: 1 # ENV: KUMA_DP_SERVER_HDS_CHECK_HEALTHY_THRESHOLD
  622. # UnhealthyThreshold is a number of unhealthy health checks required before a host is marked unhealthy
  623. unhealthyThreshold: 1 # ENV: KUMA_DP_SERVER_HDS_CHECK_UNHEALTHY_THRESHOLD
  624. # Intercommunication CP configuration
  625. interCp:
  626. # Catalog configuration. Catalog keeps a record of all live CP instances in the zone.
  627. catalog:
  628. # Indicates an address on which other control planes can communicate with this CP.
  629. # If empty then it's autoconfigured by taking the first IP of the nonloopback network interface.
  630. instanceAddress: "" # ENV: KUMA_INTER_CP_CATALOG_INSTANCE_ADDRESS
  631. # Interval on which CP will send heartbeat to a leader.
  632. heartbeatInterval: 5s # ENV: KUMA_INTER_CP_CATALOG_HEARTBEAT_INTERVAL
  633. # Interval on which CP will write all instances to a catalog.
  634. writerInterval: 15s # ENV: KUMA_INTER_CP_CATALOG_WRITER_INTERVAL
  635. # Intercommunication CP server configuration
  636. server:
  637. # Port of the inter-cp server
  638. port: 5683 # ENV: KUMA_INTER_CP_SERVER_PORT
  639. # TlsMinVersion the minimum version of TLS
  640. tlsMinVersion: "TLSv1_2" # ENV: KUMA_INTER_CP_SERVER_TLS_MIN_VERSION
  641. # TlsMaxVersion the maximum version of TLS
  642. tlsMaxVersion: # ENV: KUMA_INTER_CP_SERVER_TLS_MAX_VERSION
  643. # TlsCipherSuites the list of cipher suites
  644. tlsCipherSuites: [ ] # ENV: KUMA_INTER_CP_SERVER_TLS_CIPHER_SUITES
  645. # Access Control configuration
  646. access:
  647. # Type of access strategy (available values: "static")
  648. type: static
  649. # Configuration of static access strategy
  650. static:
  651. # AdminResources defines an access to admin resources (Secret/GlobalSecret)
  652. adminResources:
  653. # List of users that are allowed to access admin resources
  654. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_ADMIN_RESOURCES_USERS
  655. # List of groups that are allowed to access admin resources
  656. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_ADMIN_RESOURCES_GROUPS
  657. # GenerateDPToken defines an access to generating dataplane token
  658. generateDpToken:
  659. # List of users that are allowed to generate dataplane token
  660. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_DP_TOKEN_USERS
  661. # List of groups that are allowed to generate dataplane token
  662. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_DP_TOKEN_GROUPS
  663. # GenerateUserToken defines an access to generating user token
  664. generateUserToken:
  665. # List of users that are allowed to generate user token
  666. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_USER_TOKEN_USERS
  667. # List of groups that are allowed to generate user token
  668. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_USER_TOKEN_GROUPS
  669. # GenerateZoneToken defines an access to generating zone token
  670. generateZoneToken:
  671. # List of users that are allowed to generate zone token
  672. users: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_ZONE_TOKEN_USERS
  673. # List of groups that are allowed to generate zone token
  674. groups: ["mesh-system:admin"] # ENV: KUMA_ACCESS_STATIC_GENERATE_ZONE_TOKEN_GROUPS
  675. viewConfigDump:
  676. # List of users that are allowed to get envoy config dump
  677. users: [ ] # ENV: KUMA_ACCESS_STATIC_GET_CONFIG_DUMP_USERS
  678. # List of groups that are allowed to get envoy config dump
  679. groups: ["mesh-system:unauthenticated","mesh-system:authenticated"] # ENV: KUMA_ACCESS_STATIC_GET_CONFIG_DUMP_GROUPS
  680. viewStats:
  681. # List of users that are allowed to get envoy stats
  682. users: [ ] # ENV: KUMA_ACCESS_STATIC_VIEW_STATS_USERS
  683. # List of groups that are allowed to get envoy stats
  684. groups: ["mesh-system:unauthenticated","mesh-system:authenticated"] # ENV: KUMA_ACCESS_STATIC_VIEW_STATS_GROUPS
  685. viewClusters:
  686. # List of users that are allowed to get envoy clusters
  687. users: [ ] # ENV: KUMA_ACCESS_STATIC_VIEW_CLUSTERS_USERS
  688. # List of groups that are allowed to get envoy clusters
  689. groups: ["mesh-system:unauthenticated","mesh-system:authenticated"] # ENV: KUMA_ACCESS_STATIC_VIEW_CLUSTERS_GROUPS
  690. # Configuration of experimental features of Kuma
  691. experimental:
  692. # If true, experimental Gateway API is enabled
  693. gatewayAPI: false # ENV: KUMA_EXPERIMENTAL_GATEWAY_API
  694. # If true, instead of embedding kubernetes outbounds into Dataplane object, they are persisted next to VIPs in ConfigMap
  695. # This can improve performance, but it should be enabled only after all instances are migrated to version that supports this config
  696. kubeOutboundsAsVIPs: true # ENV: KUMA_EXPERIMENTAL_KUBE_OUTBOUNDS_AS_VIPS
  697. # Tag first virtual outbound model is compressed version of default Virtual Outbound model
  698. # It is recommended to use tag first model for deployments with more than 2k services
  699. # You can enable this flag on existing deployment. In order to downgrade cp with this flag enabled
  700. # you need to first disable this flag and redeploy cp, after config is rewritten to default
  701. # format you can downgrade your cp
  702. useTagFirstVirtualOutboundModel: false # ENV: KUMA_EXPERIMENTAL_USE_TAG_FIRST_VIRTUAL_OUTBOUND_MODEL
  703. # If true, KDS will sync using incremental xDS updates
  704. kdsDeltaEnabled: true # ENV: KUMA_EXPERIMENTAL_KDS_DELTA_ENABLED
  705. # List of prefixes that will be used to filter out tags by keys from ingress' available services section.
  706. # This can trim the size of the ZoneIngress object significantly.
  707. # The drawback is that you cannot use filtered out tags for traffic routing.
  708. # If empty, no filter is applied.
  709. ingressTagFilters: [] # ENV: KUMA_EXPERIMENTAL_INGRESS_TAG_FILTERS
  710. # KDS event based watchdog settings. It is a more optimal way to generate KDS snapshot config.
  711. kdsEventBasedWatchdog:
  712. # If true, then experimental event based watchdog to generate KDS snapshot is used.
  713. enabled: false # ENV: KUMA_EXPERIMENTAL_KDS_EVENT_BASED_WATCHDOG_ENABLED
  714. # How often we flush changes when experimental event based watchdog is used.
  715. flushInterval: 5s # ENV: KUMA_EXPERIMENTAL_KDS_EVENT_BASED_WATCHDOG_FLUSH_INTERVAL
  716. # How often we schedule full KDS resync when experimental event based watchdog is used.
  717. fullResyncInterval: 60s # ENV: KUMA_EXPERIMENTAL_KDS_EVENT_BASED_WATCHDOG_FULL_RESYNC_INTERVAL
  718. # If true, then initial full resync is going to be delayed by 0 to FullResyncInterval.
  719. delayFullResync: false # ENV: KUMA_EXPERIMENTAL_KDS_EVENT_BASED_WATCHDOG_DELAY_FULL_RESYNC
  720. # If true then control plane computes reachable services automatically based on MeshTrafficPermission.
  721. # Lack of MeshTrafficPermission is treated as Deny the traffic.
  722. autoReachableServices: false # ENV: KUMA_EXPERIMENTAL_AUTO_REACHABLE_SERVICES
  723. # KDSSyncNameWithHashSuffix if true then during KDS sync resource name is going to be suffixed with hash.
  724. # The hash is computed based on various resource characteristics like mesh, namespace, etc. The feature prevents name
  725. # collisions when syncing policies with the same names but different meshes from Global(Universal) to Zone(Kubernetes).
  726. # More extensive explanation of the problem and solution can be found in the MADR https://github.com/kumahq/kuma/blob/master/docs/madr/decisions/029-kds-sync-hash-suffix.md
  727. KDSSyncNameWithHashSuffix: false # ENV: KUMA_EXPERIMENTAL_KDS_SYNC_NAME_WITH_HASH_SUFFIX
  728. proxy:
  729. gateway:
  730. # Sets the envoy runtime value to limit maximum number of incoming
  731. # connections to a builtin gateway data plane proxy
  732. globalDownstreamMaxConnections: 50000 # ENV: KUMA_PROXY_GATEWAY_GLOBAL_DOWNSTREAM_MAX_CONNECTIONS
  733. tracing:
  734. openTelemetry:
  735. endpoint: "" # e.g. otel-collector:4317
  736. # Configuration of the event bus which is local to one instance of CP
  737. eventBus:
  738. # BufferSize controls the buffer for every single event listener.
  739. # If we go over buffer, additional delay may happen to various operation like insight recomputation or KDS.
  740. bufferSize: 100 # ENV: KUMA_EVENT_BUS_BUFFER_SIZE

Helm values.yaml

  1. global:
  2. image:
  3. # -- Default registry for all Kuma Images
  4. registry: "docker.io/kumahq"
  5. # -- The default tag for all Kuma images, which itself defaults to .Chart.AppVersion
  6. tag:
  7. # -- Add `imagePullSecrets` to all the service accounts used for Kuma components
  8. imagePullSecrets: []
  9. # -- Whether to patch the target namespace with the system label
  10. patchSystemNamespace: true
  11. installCrdsOnUpgrade:
  12. # -- Whether install new CRDs before upgrade (if any were introduced with the new version of Kuma)
  13. enabled: true
  14. # -- The `imagePullSecrets` to attach to the Service Account running CRD installation.
  15. # This field will be deprecated in a future release, please use .global.imagePullSecrets
  16. imagePullSecrets: []
  17. # -- Whether to disable all helm hooks
  18. noHelmHooks: false
  19. # -- Whether to restart control-plane by calculating a new checksum for the secret
  20. restartOnSecretChange: true
  21. controlPlane:
  22. # -- Environment that control plane is run in, useful when running universal global control plane on k8s
  23. environment: "kubernetes"
  24. # -- Labels to add to resources in addition to default labels
  25. extraLabels: {}
  26. # -- Kuma CP log level: one of off,info,debug
  27. logLevel: "info"
  28. # -- Kuma CP log output path: Defaults to /dev/stdout
  29. logOutputPath: ""
  30. # -- Kuma CP modes: one of standalone,zone,global
  31. mode: "standalone"
  32. # -- (string) Kuma CP zone, if running multizone
  33. zone:
  34. # -- Only used in `zone` mode
  35. kdsGlobalAddress: ""
  36. # -- Number of replicas of the Kuma CP. Ignored when autoscaling is enabled
  37. replicas: 1
  38. # -- Minimum number of seconds for which a newly created pod should be ready for it to be considered available.
  39. minReadySeconds: 0
  40. # -- Annotations applied only to the `Deployment` resource
  41. deploymentAnnotations: {}
  42. # -- Annotations applied only to the `Pod` resource
  43. podAnnotations: {}
  44. # Horizontal Pod Autoscaling configuration
  45. autoscaling:
  46. # -- Whether to enable Horizontal Pod Autoscaling, which requires the [Metrics Server](https://github.com/kubernetes-sigs/metrics-server) in the cluster
  47. enabled: false
  48. # -- The minimum CP pods to allow
  49. minReplicas: 2
  50. # -- The max CP pods to scale to
  51. maxReplicas: 5
  52. # -- For clusters that don't support autoscaling/v2, autoscaling/v1 is used
  53. targetCPUUtilizationPercentage: 80
  54. # -- For clusters that do support autoscaling/v2, use metrics
  55. metrics:
  56. - type: Resource
  57. resource:
  58. name: cpu
  59. target:
  60. type: Utilization
  61. averageUtilization: 80
  62. # -- Node selector for the Kuma Control Plane pods
  63. nodeSelector:
  64. kubernetes.io/os: linux
  65. # -- Tolerations for the Kuma Control Plane pods
  66. tolerations: []
  67. podDisruptionBudget:
  68. # -- Whether to create a pod disruption budget
  69. enabled: false
  70. # -- The maximum number of unavailable pods allowed by the budget
  71. maxUnavailable: 1
  72. # -- Affinity placement rule for the Kuma Control Plane pods.
  73. # This is rendered as a template, so you can reference other helm variables or includes.
  74. affinity:
  75. podAntiAffinity:
  76. preferredDuringSchedulingIgnoredDuringExecution:
  77. - weight: 100
  78. podAffinityTerm:
  79. labelSelector:
  80. # These match the selector labels used on the deployment.
  81. matchExpressions:
  82. - key: app.kubernetes.io/name
  83. operator: In
  84. values:
  85. - '{{ include "kuma.name" . }}'
  86. - key: app.kubernetes.io/instance
  87. operator: In
  88. values:
  89. - '{{ .Release.Name }}'
  90. - key: app
  91. operator: In
  92. values:
  93. - '{{ include "kuma.name" . }}-control-plane'
  94. topologyKey: kubernetes.io/hostname
  95. # -- Topology spread constraints rule for the Kuma Control Plane pods.
  96. # This is rendered as a template, so you can use variables to generate match labels.
  97. topologySpreadConstraints:
  98. # -- Failure policy of the mutating webhook implemented by the Kuma Injector component
  99. injectorFailurePolicy: Fail
  100. service:
  101. apiServer:
  102. http:
  103. # -- Port on which Http api server Service is exposed on Node for service of type NodePort
  104. nodePort: 30681
  105. https:
  106. # -- Port on which Https api server Service is exposed on Node for service of type NodePort
  107. nodePort: 30682
  108. # -- Whether to create a service resource.
  109. enabled: true
  110. # -- (string) Optionally override of the Kuma Control Plane Service's name
  111. name:
  112. # -- Service type of the Kuma Control Plane
  113. type: ClusterIP
  114. # -- Additional annotations to put on the Kuma Control Plane
  115. annotations: { }
  116. # Kuma API and GUI ingress settings. Useful if you want to expose the
  117. # API and GUI of Kuma outside the k8s cluster.
  118. ingress:
  119. # -- Install K8s Ingress resource that exposes GUI and API
  120. enabled: false
  121. # -- IngressClass defines which controller will implement the resource
  122. ingressClassName:
  123. # -- Ingress hostname
  124. hostname:
  125. # -- Map of ingress annotations.
  126. annotations: {}
  127. # -- Ingress path.
  128. path: /
  129. # -- Each path in an Ingress is required to have a corresponding path type. (ImplementationSpecific/Exact/Prefix)
  130. pathType: ImplementationSpecific
  131. # -- Port from kuma-cp to use to expose API and GUI. Switch to 5682 to expose TLS port
  132. servicePort: 5681
  133. globalZoneSyncService:
  134. # -- Whether to create a k8s service for the global zone sync
  135. # service. It will only be created when enabled and deploying the global
  136. # control plane.
  137. enabled: true
  138. # -- Service type of the Global-zone sync
  139. type: LoadBalancer
  140. # -- (string) Optionally specify IP to be used by cloud provider when configuring load balancer
  141. loadBalancerIP:
  142. # -- Optionally specify allowed source ranges that can access the load balancer
  143. loadBalancerSourceRanges: []
  144. # -- Additional annotations to put on the Global Zone Sync Service
  145. annotations: { }
  146. # -- Port on which Global Zone Sync Service is exposed on Node for service of type NodePort
  147. nodePort: 30685
  148. # -- Port on which Global Zone Sync Service is exposed
  149. port: 5685
  150. # -- Protocol of the Global Zone Sync service port
  151. protocol: grpc
  152. defaults:
  153. # -- Whether to skip creating the default Mesh
  154. skipMeshCreation: false
  155. # -- Whether to automountServiceAccountToken for cp. Optionally set to false
  156. automountServiceAccountToken: true
  157. # -- Optionally override the resource spec
  158. resources:
  159. requests:
  160. cpu: 500m
  161. memory: 256Mi
  162. limits:
  163. memory: 256Mi
  164. # -- Pod lifecycle settings (useful for adding a preStop hook, when
  165. # using AWS ALB or NLB)
  166. lifecycle: {}
  167. # -- Number of seconds to wait before force killing the pod. Make sure to
  168. # update this if you add a preStop hook.
  169. terminationGracePeriodSeconds: 30
  170. # TLS for various servers
  171. tls:
  172. general:
  173. # -- Secret that contains tls.crt, tls.key [and ca.crt when no
  174. # controlPlane.tls.general.caSecretName specified] for protecting
  175. # Kuma in-cluster communication
  176. secretName: ""
  177. # -- Secret that contains ca.crt that was used to sign cert for protecting
  178. # Kuma in-cluster communication (ca.crt present in this secret
  179. # have precedence over the one provided in the controlPlane.tls.general.secretName)
  180. caSecretName: ""
  181. # -- Base64 encoded CA certificate (the same as in controlPlane.tls.general.secret#ca.crt)
  182. caBundle: ""
  183. apiServer:
  184. # -- Secret that contains tls.crt, tls.key for protecting Kuma API on HTTPS
  185. secretName: ""
  186. # -- Secret that contains list of .pem certificates that can access admin endpoints of Kuma API on HTTPS
  187. clientCertsSecretName: ""
  188. # - if not creating the global control plane, then do nothing
  189. # - if secretName is empty and create is false, then do nothing
  190. # - if secretName is non-empty and create is false, then use the secret made outside of helm with the name secretName
  191. # - if secretName is empty and create is true, then create a secret with a default name and use it
  192. # - if secretName is non-empty and create is true, then create the secret using the provided name
  193. kdsGlobalServer:
  194. # -- Name of the K8s TLS Secret resource. If you set this and don't set
  195. # create=true, you have to create the secret manually.
  196. secretName: ""
  197. # -- Whether to create the TLS secret in helm.
  198. create: false
  199. # -- The TLS certificate to offer.
  200. cert: ""
  201. # -- The TLS key to use.
  202. key: ""
  203. # - if not creating the zonal control plane, then do nothing
  204. # - if secretName is empty and create is false, then do nothing
  205. # - if secretName is non-empty and create is false, then use the secret made outside of helm with the name secretName
  206. # - if secretName is empty and create is true, then create a secret with a default name and use it
  207. # - if secretName is non-empty and create is true, then create the secret using the provided name
  208. kdsZoneClient:
  209. # -- Name of the K8s Secret resource that contains ca.crt which was
  210. # used to sign the certificate of KDS Global Server. If you set this
  211. # and don't set create=true, you have to create the secret manually.
  212. secretName: ""
  213. # -- Whether to create the TLS secret in helm.
  214. create: false
  215. # -- CA bundle that was used to sign the certificate of KDS Global Server.
  216. cert: ""
  217. # -- If true, TLS cert of the server is not verified.
  218. skipVerify: false
  219. # -- Annotations to add for Control Plane's Service Account
  220. serviceAccountAnnotations: { }
  221. image:
  222. # -- Kuma CP ImagePullPolicy
  223. pullPolicy: IfNotPresent
  224. # -- Kuma CP image repository
  225. repository: "kuma-cp"
  226. # -- Kuma CP Image tag. When not specified, the value is copied from global.tag
  227. tag:
  228. # -- (object with { Env: string, Secret: string, Key: string }) Secrets to add as environment variables,
  229. # where `Env` is the name of the env variable,
  230. # `Secret` is the name of the Secret,
  231. # and `Key` is the key of the Secret value to use
  232. secrets:
  233. # someSecret:
  234. # Secret: some-secret
  235. # Key: secret_key
  236. # Env: SOME_SECRET
  237. # -- Additional environment variables that will be passed to the control plane
  238. envVars: { }
  239. # -- Additional config maps to mount into the control plane, with optional inline values
  240. extraConfigMaps: [ ]
  241. # - name: extra-config
  242. # mountPath: /etc/extra-config
  243. # readOnly: true
  244. # values:
  245. # extra-config-key: |
  246. # extra-config-value
  247. # -- (object with { name: string, mountPath: string, readOnly: string }) Additional secrets to mount into the control plane,
  248. # where `Env` is the name of the env variable,
  249. # `Secret` is the name of the Secret,
  250. # and `Key` is the key of the Secret value to use
  251. extraSecrets:
  252. # extraConfig:
  253. # name: extra-config
  254. # mountPath: /etc/extra-config
  255. # readOnly: true
  256. webhooks:
  257. validator:
  258. # -- Additional rules to apply on Kuma validator webhook. Useful when building custom policy on top of Kuma.
  259. additionalRules: ""
  260. ownerReference:
  261. # -- Additional rules to apply on Kuma owner reference webhook. Useful when building custom policy on top of Kuma.
  262. additionalRules: ""
  263. # -- Specifies if the deployment should be started in hostNetwork mode.
  264. hostNetwork: false
  265. # -- Define a new server port for the admission controller. Recommended to set in combination with
  266. # hostNetwork to prevent multiple port bindings on the same port (like Calico in AWS EKS).
  267. admissionServerPort: 5443
  268. # -- Security context at the pod level for control plane.
  269. podSecurityContext:
  270. runAsNonRoot: true
  271. # -- Security context at the container level for control plane.
  272. containerSecurityContext:
  273. readOnlyRootFilesystem: true
  274. cni:
  275. # -- Install Kuma with CNI instead of proxy init container
  276. enabled: false
  277. # -- Install CNI in chained mode
  278. chained: false
  279. # -- Set the CNI install directory
  280. netDir: /etc/cni/multus/net.d
  281. # -- Set the CNI bin directory
  282. binDir: /var/lib/cni/bin
  283. # -- Set the CNI configuration name
  284. confName: kuma-cni.conf
  285. # -- CNI log level: one of off,info,debug
  286. logLevel: info
  287. # -- Node Selector for the CNI pods
  288. nodeSelector:
  289. kubernetes.io/os: linux
  290. # -- Tolerations for the CNI pods
  291. tolerations: []
  292. # -- Additional pod annotations
  293. podAnnotations: { }
  294. # -- Set the CNI namespace
  295. namespace: kube-system
  296. image:
  297. # -- CNI image repository
  298. repository: "kuma-cni"
  299. # -- CNI image tag - defaults to .Chart.AppVersion
  300. tag:
  301. # -- CNI image pull policy
  302. imagePullPolicy: IfNotPresent
  303. # -- it's only useful in tests to trigger a possible race condition
  304. delayStartupSeconds: 0
  305. # -- use new CNI (experimental)
  306. experimental:
  307. imageEbpf:
  308. # -- CNI experimental eBPF image registry
  309. registry: "docker.io/kumahq"
  310. # -- CNI experimental eBPF image repository
  311. repository: "merbridge"
  312. # -- CNI experimental eBPF image tag
  313. tag: "0.8.5"
  314. resources:
  315. requests:
  316. cpu: 100m
  317. memory: 100Mi
  318. limits:
  319. memory: 100Mi
  320. # -- Security context at the pod level for cni
  321. podSecurityContext: {}
  322. # -- Security context at the container level for cni
  323. containerSecurityContext:
  324. readOnlyRootFilesystem: true
  325. runAsNonRoot: false
  326. runAsUser: 0
  327. runAsGroup: 0
  328. dataPlane:
  329. image:
  330. # -- The Kuma DP image repository
  331. repository: "kuma-dp"
  332. # -- Kuma DP ImagePullPolicy
  333. pullPolicy: IfNotPresent
  334. # -- Kuma DP Image Tag. When not specified, the value is copied from global.tag
  335. tag:
  336. initImage:
  337. # -- The Kuma DP init image repository
  338. repository: "kuma-init"
  339. # -- Kuma DP init image tag When not specified, the value is copied from global.tag
  340. tag:
  341. ingress:
  342. # -- If true, it deploys Ingress for cross cluster communication
  343. enabled: false
  344. # -- Labels to add to resources, in addition to default labels
  345. extraLabels: {}
  346. # -- Time for which old listener will still be active as draining
  347. drainTime: 30s
  348. # -- Number of replicas of the Ingress. Ignored when autoscaling is enabled.
  349. replicas: 1
  350. # -- Log level for ingress (available values: off|info|debug)
  351. logLevel: info
  352. # -- Define the resources to allocate to mesh ingress
  353. resources:
  354. requests:
  355. cpu: 50m
  356. memory: 64Mi
  357. limits:
  358. cpu: 1000m
  359. memory: 512Mi
  360. # -- Pod lifecycle settings (useful for adding a preStop hook, when
  361. # using AWS ALB or NLB)
  362. lifecycle: {}
  363. # -- Number of seconds to wait before force killing the pod. Make sure to
  364. # update this if you add a preStop hook.
  365. terminationGracePeriodSeconds: 40
  366. # Horizontal Pod Autoscaling configuration
  367. autoscaling:
  368. # -- Whether to enable Horizontal Pod Autoscaling, which requires the [Metrics Server](https://github.com/kubernetes-sigs/metrics-server) in the cluster
  369. enabled: false
  370. # -- The minimum CP pods to allow
  371. minReplicas: 2
  372. # -- The max CP pods to scale to
  373. maxReplicas: 5
  374. # -- For clusters that don't support autoscaling/v2, autoscaling/v1 is used
  375. targetCPUUtilizationPercentage: 80
  376. # -- For clusters that do support autoscaling/v2, use metrics
  377. metrics:
  378. - type: Resource
  379. resource:
  380. name: cpu
  381. target:
  382. type: Utilization
  383. averageUtilization: 80
  384. service:
  385. # -- Whether to create a Service resource.
  386. enabled: true
  387. # -- Service type of the Ingress
  388. type: LoadBalancer
  389. # -- (string) Optionally specify IP to be used by cloud provider when configuring load balancer
  390. loadBalancerIP:
  391. # -- Additional annotations to put on the Ingress service
  392. annotations: { }
  393. # -- Port on which Ingress is exposed
  394. port: 10001
  395. # -- Port on which service is exposed on Node for service of type NodePort
  396. nodePort:
  397. # -- Additional pod annotations (deprecated favor `podAnnotations`)
  398. annotations: { }
  399. # -- Additional pod annotations
  400. podAnnotations: { }
  401. # -- Node Selector for the Ingress pods
  402. nodeSelector:
  403. kubernetes.io/os: linux
  404. # -- Tolerations for the Ingress pods
  405. tolerations: []
  406. podDisruptionBudget:
  407. # -- Whether to create a pod disruption budget
  408. enabled: false
  409. # -- The maximum number of unavailable pods allowed by the budget
  410. maxUnavailable: 1
  411. # -- Affinity placement rule for the Kuma Ingress pods
  412. # This is rendered as a template, so you can reference other helm variables
  413. # or includes.
  414. affinity:
  415. podAntiAffinity:
  416. preferredDuringSchedulingIgnoredDuringExecution:
  417. - weight: 100
  418. podAffinityTerm:
  419. labelSelector:
  420. # These match the selector labels used on the deployment.
  421. matchExpressions:
  422. - key: app.kubernetes.io/name
  423. operator: In
  424. values:
  425. - '{{ include "kuma.name" . }}'
  426. - key: app.kubernetes.io/instance
  427. operator: In
  428. values:
  429. - '{{ .Release.Name }}'
  430. - key: app
  431. operator: In
  432. values:
  433. - kuma-ingress
  434. topologyKey: kubernetes.io/hostname
  435. # -- Topology spread constraints rule for the Kuma Mesh Ingress pods.
  436. # This is rendered as a template, so you can use variables to generate match labels.
  437. topologySpreadConstraints:
  438. # -- Security context at the pod level for ingress
  439. podSecurityContext:
  440. runAsNonRoot: true
  441. runAsUser: 5678
  442. runAsGroup: 5678
  443. # -- Security context at the container level for ingress
  444. containerSecurityContext:
  445. readOnlyRootFilesystem: true
  446. # -- Annotations to add for Control Plane's Service Account
  447. serviceAccountAnnotations: { }
  448. # -- Whether to automountServiceAccountToken for cp. Optionally set to false
  449. automountServiceAccountToken: true
  450. egress:
  451. # -- If true, it deploys Egress for cross cluster communication
  452. enabled: false
  453. # -- Labels to add to resources, in addition to the default labels.
  454. extraLabels: {}
  455. # -- Time for which old listener will still be active as draining
  456. drainTime: 30s
  457. # -- Number of replicas of the Egress. Ignored when autoscaling is enabled.
  458. replicas: 1
  459. # -- Log level for egress (available values: off|info|debug)
  460. logLevel: info
  461. # Horizontal Pod Autoscaling configuration
  462. autoscaling:
  463. # -- Whether to enable Horizontal Pod Autoscaling, which requires the [Metrics Server](https://github.com/kubernetes-sigs/metrics-server) in the cluster
  464. enabled: false
  465. # -- The minimum CP pods to allow
  466. minReplicas: 2
  467. # -- The max CP pods to scale to
  468. maxReplicas: 5
  469. # -- For clusters that don't support autoscaling/v2, autoscaling/v1 is used
  470. targetCPUUtilizationPercentage: 80
  471. # -- For clusters that do support autoscaling/v2, use metrics
  472. metrics:
  473. - type: Resource
  474. resource:
  475. name: cpu
  476. target:
  477. type: Utilization
  478. averageUtilization: 80
  479. resources:
  480. requests:
  481. cpu: 50m
  482. memory: 64Mi
  483. limits:
  484. cpu: 1000m
  485. memory: 512Mi
  486. service:
  487. # -- Whether to create the service object
  488. enabled: true
  489. # -- Service type of the Egress
  490. type: ClusterIP
  491. # -- (string) Optionally specify IP to be used by cloud provider when configuring load balancer
  492. loadBalancerIP:
  493. # -- Additional annotations to put on the Egress service
  494. annotations: { }
  495. # -- Port on which Egress is exposed
  496. port: 10002
  497. # -- Port on which service is exposed on Node for service of type NodePort
  498. nodePort:
  499. # -- Additional pod annotations (deprecated favor `podAnnotations`)
  500. annotations: { }
  501. # -- Additional pod annotations
  502. podAnnotations: { }
  503. # -- Node Selector for the Egress pods
  504. nodeSelector:
  505. kubernetes.io/os: linux
  506. # -- Tolerations for the Egress pods
  507. tolerations: []
  508. podDisruptionBudget:
  509. # -- Whether to create a pod disruption budget
  510. enabled: false
  511. # -- The maximum number of unavailable pods allowed by the budget
  512. maxUnavailable: 1
  513. # -- Affinity placement rule for the Kuma Egress pods.
  514. # This is rendered as a template, so you can reference other helm variables or includes.
  515. affinity:
  516. podAntiAffinity:
  517. preferredDuringSchedulingIgnoredDuringExecution:
  518. - weight: 100
  519. podAffinityTerm:
  520. labelSelector:
  521. # These match the selector labels used on the deployment.
  522. matchExpressions:
  523. - key: app.kubernetes.io/name
  524. operator: In
  525. values:
  526. - '{{ include "kuma.name" . }}'
  527. - key: app.kubernetes.io/instance
  528. operator: In
  529. values:
  530. - '{{ .Release.Name }}'
  531. - key: app
  532. operator: In
  533. values:
  534. - kuma-egress
  535. topologyKey: kubernetes.io/hostname
  536. # -- Topology spread constraints rule for the Kuma Egress pods.
  537. # This is rendered as a template, so you can use variables to generate match labels.
  538. topologySpreadConstraints:
  539. # -- Security context at the pod level for egress
  540. podSecurityContext:
  541. runAsNonRoot: true
  542. runAsUser: 5678
  543. runAsGroup: 5678
  544. # -- Security context at the container level for egress
  545. containerSecurityContext:
  546. readOnlyRootFilesystem: true
  547. # -- Annotations to add for Control Plane's Service Account
  548. serviceAccountAnnotations: { }
  549. # -- Whether to automountServiceAccountToken for cp. Optionally set to false
  550. automountServiceAccountToken: true
  551. kumactl:
  552. image:
  553. # -- The kumactl image repository
  554. repository: kumactl
  555. # -- The kumactl image tag. When not specified, the value is copied from global.tag
  556. tag:
  557. kubectl:
  558. image:
  559. # -- The kubectl image registry
  560. registry: docker.io
  561. # -- The kubectl image repository
  562. repository: bitnami/kubectl
  563. # -- The kubectl image tag
  564. tag: "1.27.5"
  565. hooks:
  566. # -- Node selector for the HELM hooks
  567. nodeSelector:
  568. kubernetes.io/os: linux
  569. # -- Tolerations for the HELM hooks
  570. tolerations: []
  571. # -- Security context at the pod level for crd/webhook/ns
  572. podSecurityContext:
  573. runAsNonRoot: true
  574. # -- Security context at the container level for crd/webhook/ns
  575. containerSecurityContext:
  576. readOnlyRootFilesystem: true
  577. # -- ebpf-cleanup hook needs write access to the root filesystem to clean ebpf programs
  578. # Changing below values will potentially break ebpf cleanup completely,
  579. # so be cautious when doing so.
  580. ebpfCleanup:
  581. # -- Security context at the pod level for crd/webhook/cleanup-ebpf
  582. podSecurityContext:
  583. runAsNonRoot: false
  584. # -- Security context at the container level for crd/webhook/cleanup-ebpf
  585. containerSecurityContext:
  586. readOnlyRootFilesystem: false
  587. experimental:
  588. # -- If true, it installs experimental Gateway API support
  589. gatewayAPI: false
  590. # Configuration for the experimental ebpf mode for transparent proxy
  591. ebpf:
  592. # -- If true, ebpf will be used instead of using iptables to install/configure transparent proxy
  593. enabled: false
  594. # -- Name of the environmental variable which will contain the IP address of a pod
  595. instanceIPEnvVarName: INSTANCE_IP
  596. # -- Path where BPF file system should be mounted
  597. bpffsPath: /sys/fs/bpf
  598. # -- Host's cgroup2 path
  599. cgroupPath: /sys/fs/cgroup
  600. # -- Name of the network interface which TC programs should be attached to, we'll try to automatically determine it if empty
  601. tcAttachIface: ""
  602. # -- Path where compiled eBPF programs which will be installed can be found
  603. programsSourcePath: /kuma/ebpf
  604. # -- If false, it uses legacy API for resource synchronization
  605. deltaKds: true
  606. # Postgres' settings for universal control plane on k8s
  607. postgres:
  608. # -- Postgres port, password should be provided as a secret reference in "controlPlane.secrets"
  609. # with the Env value "KUMA_STORE_POSTGRES_PASSWORD".
  610. # Example:
  611. # controlPlane:
  612. # secrets:
  613. # - Secret: postgres-postgresql
  614. # Key: postgresql-password
  615. # Env: KUMA_STORE_POSTGRES_PASSWORD
  616. port: "5432"
  617. # TLS settings
  618. tls:
  619. # -- Mode of TLS connection. Available values are: "disable", "verifyNone", "verifyCa", "verifyFull"
  620. mode: disable # ENV: KUMA_STORE_POSTGRES_TLS_MODE
  621. # -- Whether to disable SNI the postgres `sslsni` option.
  622. disableSSLSNI: false # ENV: KUMA_STORE_POSTGRES_TLS_DISABLE_SSLSNI
  623. # -- Secret name that contains the ca.crt
  624. caSecretName:
  625. # -- Secret name that contains the client tls.crt, tls.key
  626. secretName:
  627. # @ignored for helm-docs
  628. plugins:
  629. policies:
  630. meshaccesslogs: {}
  631. meshcircuitbreakers: {}
  632. meshfaultinjections: {}
  633. meshhealthchecks: {}
  634. meshhttproutes: {}
  635. meshloadbalancingstrategies: {}
  636. meshproxypatches: {}
  637. meshratelimits: {}
  638. meshretries: {}
  639. meshtcproutes: {}
  640. meshtimeouts: {}
  641. meshtraces: {}
  642. meshtrafficpermissions: {}