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