1# "_internal_defaults_do_not_set" is a workaround for Helm limitations. Users should NOT set "._internal_defaults_do_not_set" explicitly, but rather directly set the fields internally.
2# For instance, instead of `--set _internal_defaults_do_not_set.foo=bar``, just set `--set foo=bar`.
3image: cgr.dev/chainguard-private/istio-pilot:1.30@sha256:085774899c90b3a718ef480dc4cb5746ceeca453b4e00052f5565dec9a160bdd
6 image: cgr.dev/chainguard-private/istio-proxy:1.30@sha256:da548145a4e31227a5e1c15bb7f5b915693e3d2b24e1dda983060f250f2bad36
8 image: cgr.dev/chainguard-private/istio-proxy:1.30@sha256:da548145a4e31227a5e1c15bb7f5b915693e3d2b24e1dda983060f250f2bad36
9_internal_defaults_do_not_set:
10 autoscaleEnabled: true
16 rollingMaxUnavailable: 25%
20 # Can be a full hub/image:tag
23 # Resources for a small pilot install
28 # Set to `type: RuntimeDefault` to use the default profile if available.
30 # Whether to use an existing CNI installation
34 # Additional container arguments
35 extraContainerArgs: []
38 # Settings related to the untaint controller
39 # This controller will remove the named taint (default `cni.istio.io/not-ready`) from nodes when the istio-cni pod becomes ready.
40 # It should be noted that cluster operator/owner is responsible for having the taint set by their infrastructure provider when new nodes are added to the cluster; the untaint controller does not taint nodes
42 # Controls whether or not the untaint controller is active
43 # When enabled, this automatically sets PILOT_ENABLE_NODE_UNTAINT_CONTROLLERS environment variable to true in the istiod deployment.
45 # What namespace the untaint controller should watch for istio-cni pods. This is only required when istio-cni is running in a different namespace than istiod
47 # The taint key used by the node-untaint controller to identify nodes that should be untainted.
48 name: cni.istio.io/not-ready
52 targetAverageUtilization: 80
54 # targetAverageUtilization: 80
56 # Additional volumeMounts to the istiod container
58 # Additional volumes to the istiod pod
60 # Inject initContainers into the istiod pod
64 serviceAnnotations: {}
65 serviceAccountAnnotations: {}
66 sidecarInjectorWebhookAnnotations: {}
67 topologySpreadConstraints: []
68 # You can use jwksResolverExtraRootCA to provide a root certificate
69 # in PEM format. This will then be trusted by pilot when resolving
71 jwksResolverExtraRootCA: ""
72 # The following is used to limit how long a sidecar can be connected
73 # to a pilot. It balances out load across pilot instances at the cost of
74 # increasing system churn.
75 keepaliveMaxServerConnectionAge: 30m
76 # Additional labels to apply to the deployment.
78 # Annotations to apply to the istiod deployment.
79 deploymentAnnotations: {}
80 ## Mesh config settings
82 # Install the mesh config map, generated from values.yaml.
83 # If false, pilot wil use default values (by default) or user-supplied values.
85 # Additional labels to apply on the pod level for monitoring and logging configuration.
87 # Setup how istiod Service is configured. See https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
91 # Set this if you install ztunnel to a different namespace from `istiod`.
92 # If set, `istiod` will allow connections from trusted node proxy ztunnels
93 # in the provided namespace.
94 # If unset, `istiod` will assume the trusted node proxy ztunnel resides
95 # in the same namespace as itself.
96 trustedZtunnelNamespace: ""
97 # Set this if you install ztunnel with a name different from the default.
98 trustedZtunnelName: ""
99 sidecarInjectorWebhook:
100 # You can use the field called alwaysInjectSelector and neverInjectSelector which will always inject the sidecar or
101 # always skip the injection on pods that match that label selector, regardless of the global policy.
102 # See https://istio.io/docs/setup/kubernetes/additional-setup/sidecar-injection/#more-control-adding-exceptions
103 neverInjectSelector: []
104 alwaysInjectSelector: []
105 # injectedAnnotations are additional annotations that will be added to the pod spec after injection
106 # This is primarily to support PSP annotations. For example, if you defined a PSP with the annotations:
109 # apparmor.security.beta.kubernetes.io/allowedProfileNames: runtime/default
110 # apparmor.security.beta.kubernetes.io/defaultProfileName: runtime/default
112 # The PSP controller would add corresponding annotations to the pod spec for each container. However, this happens before
113 # the inject adds additional containers, so we must specify them explicitly here. With the above example, we could specify:
114 # injectedAnnotations:
115 # container.apparmor.security.beta.kubernetes.io/istio-init: runtime/default
116 # container.apparmor.security.beta.kubernetes.io/istio-proxy: runtime/default
117 injectedAnnotations: {}
118 # This enables injection of sidecar in all namespaces,
119 # with the exception of namespaces with "istio-injection:disabled" annotation
120 # Only one environment should have this enabled.
121 enableNamespacesByDefault: false
122 # Mutations that occur after the sidecar injector are not handled by default, as the Istio sidecar injector is only run
123 # once. For example, an OPA sidecar injected after the Istio sidecar will not have it's liveness/readiness probes rewritten.
124 # Setting this to `IfNeeded` will result in the sidecar injector being run again if additional mutations occur.
125 reinvocationPolicy: Never
126 rewriteAppHTTPProbe: true
127 # Templates defines a set of custom injection templates that can be used. For example, defining:
135 # Then starting a pod with the `inject.istio.io/templates: hello` annotation, will result in the pod
136 # being injected with the hello=world labels.
137 # This is intended for advanced configuration only; most users should use the built in template
139 # Default templates specifies a set of default templates that are used in sidecar injection.
140 # By default, a template `sidecar` is always provided, which contains the template of default sidecar.
141 # To inject other additional templates, define it using the `templates` option, and add it to
142 # the default templates list.
151 # defaultTemplates: ["sidecar", "hello"]
154 # If `true`, indicates that this cluster/install should consume a "remote istiod" installation,
155 # and istiod itself will NOT be installed in this cluster - only the support resources necessary
156 # to utilize a remote instance.
158 # If `true`, indicates that this cluster/install should consume a "local istiod" installation,
159 # local istiod inject sidecars
160 enabledLocalInjectorIstiod: false
161 # Sidecar injector mutating webhook configuration clientConfig.url value.
162 # For example: https://$remotePilotAddress:15017/inject
163 # The host should not refer to a service running in the cluster; use a service reference by specifying
164 # the clientConfig.service field instead.
166 # Sidecar injector mutating webhook configuration path value for the clientConfig.service field.
167 # Override to pass env variables, for example: /inject/cluster/remote/net/network2
168 injectionPath: "/inject"
169 injectionCABundle: ""
173 # For Null VM case now.
174 # This also enables metadata exchange.
176 # Indicate if prometheus stats filter is enabled or not
179 # stackdriver filter settings.
182 # Revision is set as 'version' label and part of the resource names when installing multiple control planes.
184 # Revision tags are aliases to Istio control plane revisions
186 # For Helm compatibility.
188 # meshConfig defines runtime configuration of components, including Istiod and istio-agent behavior
189 # See https://istio.io/docs/reference/config/istio.mesh.v1alpha1/ for all available options
191 enablePrometheusMerge: true
193 stableValidationPolicy: false
195 # Used to locate istiod.
196 istioNamespace: istio-system
197 # List of cert-signers to allow "approve" action in the istio cluster role
200 # - clusterissuers.cert-manager.io/istio-ca
202 # enable pod disruption budget for the control plane, which is used to
203 # ensure Istio control plane components are gradually upgraded or recovered.
204 defaultPodDisruptionBudget:
206 # The values aren't mutable due to a current PodDisruptionBudget limitation
208 # A minimal set of requested resources to applied to all deployments so that
209 # Horizontal Pod Autoscaler will be able to function (if set).
210 # Each component can overwrite these default values by adding its own resources
211 # block in the relevant section below and setting the desired resources values.
219 # Default hub for Istio images.
220 # Releases are published to docker hub under 'istio' project.
221 # Dev builds from prow are on registry.istio.io/testing.
222 hub: registry.istio.io/testing
223 # Default tag for Istio images.
225 # Variant of the image to use.
226 # Currently supported are: [debug, distroless]
228 # Specify image pull policy if default behavior isn't desired.
229 # Default behavior: latest images will be Always else IfNotPresent.
231 # ImagePullSecrets for all ServiceAccount, list of secrets in the same namespace
232 # to use for pulling any images in pods that reference this ServiceAccount.
233 # For components that don't use ServiceAccounts (i.e. grafana, servicegraph, tracing)
234 # ImagePullSecrets will be added to the corresponding Deployment(StatefulSet) objects.
235 # Must be set for any cluster configured with private docker registry.
237 # - private-registry-key
239 # Enabled by default in master for maximising testing.
241 enableAnalysis: false
242 # To output all istio components logs in json format by adding --log_as_json argument to each container argument
244 # In order to use native nftable rules instead of iptable rules, set this flag to true.
245 nativeNftables: false
246 # Comma-separated minimum per-scope logging level of messages to output, in the form of <scope>:<level>,<scope>:<level>
247 # The control plane has different scopes depending on component, but can configure default log level across all components
248 # If empty, default scope and level will be used as configured in code
250 level: "default:info"
251 # When enabled, default NetworkPolicy resources will be created
254 omitSidecarInjectorConfigMap: false
255 # resourceScope controls what resources will be processed by helm.
256 # This is useful when installing Istio on a cluster where some resources need to be owned by a cluster administrator and some can be owned by the mesh administrator.
258 # - all: all resources are processed
259 # - cluster: only cluster-scoped resources are processed
260 # - namespace: only namespace-scoped resources are processed
262 # Configure whether Operator manages webhook configurations. The current behavior
263 # of Istiod is to manage its own webhook configurations.
264 # When this option is set as true, Istio Operator, instead of webhooks, manages the
265 # webhook configurations. When this option is set as false, webhooks manage their
266 # own webhook configurations.
267 operatorManageWebhooks: false
268 # Custom DNS config for the pod to resolve names of services in other
269 # clusters. Use this to add additional search domains, and other settings.
271 # https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#dns-config
272 # This does not apply to gateway pods as they typically need a different
273 # set of DNS settings than the normal application pods (e.g., in
274 # multicluster scenarios).
275 # NOTE: If using templates, follow the pattern in the commented example below.
276 #podDNSSearchNamespaces:
278 #- "{{ valueOrDefault .DeploymentMeta.Namespace \"default\" }}.global"
280 # Kubernetes >=v1.11.0 will create two PriorityClass, including system-cluster-critical and
281 # system-node-critical, it is better to configure this in order to make sure your Istio pods
282 # will not be killed because of low priority class.
283 # Refer to https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass
285 priorityClassName: ""
288 # This controls the 'policy' in the sidecar injector.
290 # CAUTION: It is important to ensure that all Istio helm charts specify the same clusterDomain value
291 # cluster domain. Default value is "cluster.local".
292 clusterDomain: "cluster.local"
293 # Per Component log level for proxy, applies to gateways and sidecars. If a component level is
294 # not set, then the global "logLevel" will be used.
295 componentLogLevel: "misc:error"
296 # istio ingress capture allowlist
298 # Redirect only selected ports: --includeInboundPorts="80,8080"
299 excludeInboundPorts: ""
300 includeInboundPorts: "*"
301 # istio egress capture allowlist
302 # https://istio.io/docs/tasks/traffic-management/egress.html#calling-external-services-directly
303 # example: includeIPRanges: "172.30.0.0/16,172.20.0.0/16"
304 # would only capture egress traffic on those two IP Ranges, all other outbound traffic would
305 # be allowed by the sidecar
308 includeOutboundPorts: ""
309 excludeOutboundPorts: ""
310 # Log level for proxy, applies to gateways and sidecars.
311 # Expected values are: trace|debug|info|warning|error|critical|off
313 # Specify the path to the outlier event log.
314 # Example: /dev/stdout
316 #If set to true, istio-proxy container will have privileged securityContext
319 # The number of successive failed probes before indicating readiness failure.
320 readinessFailureThreshold: 4
321 # The initial delay for readiness probes in seconds.
322 readinessInitialDelaySeconds: 0
323 # The period between readiness probes.
324 readinessPeriodSeconds: 15
325 # Enables or disables a startup probe.
326 # For optimal startup times, changing this should be tied to the readiness probe values.
328 # If the probe is enabled, it is recommended to have delay=0s,period=15s,failureThreshold=4.
329 # This ensures the pod is marked ready immediately after the startup probe passes (which has a 1s poll interval),
330 # and doesn't spam the readiness endpoint too much
332 # If the probe is disabled, it is recommended to have delay=1s,period=2s,failureThreshold=30.
333 # This ensures the startup is reasonable fast (polling every 2s). 1s delay is used since the startup is not often ready instantly.
336 failureThreshold: 600 # 10 minutes
337 # Resources for the sidecar.
345 # Default port for Pilot agent health checks. A value of 0 will disable health checking.
347 # Specify which tracer to use. One of: zipkin, lightstep, datadog, stackdriver, none.
348 # If using stackdriver tracer outside GCP, set env GOOGLE_APPLICATION_CREDENTIALS to the GCP credential file.
351 # Base name for the proxy_init container, used to configure iptables.
353 # Bypasses iptables idempotency handling, and attempts to apply iptables rules regardless of table state, which may cause unrecoverable failures.
354 # Do not use unless you need to work around an issue of the idempotency handling. This flag will be removed in future releases.
355 forceApplyIptables: false
356 # configure remote pilot and istiod service and endpoint
357 remotePilotAddress: ""
358 ##############################################################################################
359 # The following values are found in other charts. To effectively modify these values, make #
360 # make sure they are consistent across your Istio helm charts #
361 ##############################################################################################
363 # The customized CA address to retrieve certificates for the pods in the cluster.
364 # CSR clients such as the Istio Agent and ingress gateways can use this to specify the CA endpoint.
365 # If not set explicitly, default to the Istio discovery address.
367 # Enable control of remote clusters.
368 externalIstiod: false
369 # Configure a remote cluster as the config cluster for an external istiod.
371 # configValidation enables the validation webhook for Istio configuration.
372 configValidation: true
373 # Mesh ID means Mesh Identifier. It should be unique within the scope where
374 # meshes will interact with each other, but it is not required to be
375 # globally/universally unique. For example, if any of the following are true,
376 # then two meshes must have different Mesh IDs:
377 # - Meshes will have their telemetry aggregated in one place
378 # - Meshes will be federated together
379 # - Policy will be written referencing one mesh from the other
381 # If an administrator expects that any of these conditions may become true in
382 # the future, they should ensure their meshes have different Mesh IDs
385 # Within a multicluster mesh, each cluster must be (manually or auto)
386 # configured to have the same Mesh ID value. If an existing cluster 'joins' a
387 # multicluster mesh, it will need to be migrated to the new mesh ID. Details
388 # of migration TBD, and it may be a disruptive operation to change the Mesh
391 # If the mesh admin does not specify a value, Istio will use the value of the
392 # mesh's Trust Domain. The best practice is to select a proper Trust Domain
395 # Configure the mesh networks to be used by the Split Horizon EDS.
397 # The following example defines two networks with different endpoints association methods.
398 # For `network1` all endpoints that their IP belongs to the provided CIDR range will be
399 # mapped to network1. The gateway for this network example is specified by its public IP
401 # The second network, `network2`, in this example is defined differently with all endpoints
402 # retrieved through the specified Multi-Cluster registry being mapped to network2. The
403 # gateway is also defined differently with the name of the gateway service on the remote
404 # cluster. The public IP for the gateway will be determined from that remote service (only
405 # LoadBalancer gateway service type is currently supported, for a NodePort type gateway service,
406 # it still need to be configured manually).
411 # - fromCidr: "192.168.0.1/24"
417 # - fromRegistry: reg1
419 # - registryServiceName: istio-ingressgateway.istio-system.svc.cluster.local
423 # Use the user-specified, secret volume mounted key and certs for Pilot and workloads.
424 mountMtlsCerts: false
426 # Should be set to the name of the cluster this installation will run in. This is required for sidecar injection
427 # to properly label proxies
429 # Network defines the network this cluster belong to. This name
430 # corresponds to the networks in the map of mesh networks.
432 # Configure the certificate provider for control plane communication.
433 # Currently, two providers are supported: "kubernetes" and "istiod".
434 # As some platforms may not have kubernetes signing APIs,
435 # Istiod is the default
436 pilotCertProvider: istiod
438 # The JWT token for SDS and the aud field of such JWT. See RFC 7519, section 4.1.3.
439 # When a CSR is sent from Istio Agent to the CA (e.g. Istiod), this aud is to make sure the
440 # JWT is intended for the CA.
444 # The service port used by Security Token Service (STS) server to handle token exchange requests.
445 # Setting this port to a non-zero value enables STS server.
447 # The name of the CA for workload certificates.
448 # For example, when caName=GkeWorkloadCertificate, GKE workload certificates
449 # will be used as the certificates for workloads.
450 # The default value is "" and when caName="", the CA will be configured by other
451 # mechanisms (e.g., environmental variable CA_PROVIDER).
454 # Resources for the waypoint proxy.
462 # If specified, affinity defines the scheduling constraints of waypoint pods.
464 # Topology Spread Constraints for the waypoint proxy.
465 topologySpreadConstraints: []
466 # Node labels for the waypoint proxy.
468 # Tolerations for the waypoint proxy.
471 # For istioctl usage to disable istio config crds in base
472 enableIstioConfigCRDs: true
473 # Override the failurePolicy for the validation webhook.
474 # By default, the webhook starts with "Ignore" and istiod flips it to "Fail" once ready.
475 # Set to "Fail" to avoid the flip-flop, which is useful for server-side apply tools
476 # that do not support .Release.IsUpgrade (e.g. helm template | kubectl apply --server-side).
477 # validationFailurePolicy: Fail
480 # Define the security context for the pod.
481 # If unset, this will be automatically set to the minimum privileges required to bind to port 80 and 443.
482 # On Kubernetes 1.22+, this only requires the `net.ipv4.ip_unprivileged_port_start` sysctl.
484 # Set to `type: RuntimeDefault` to use the default profile for templated gateways, if your container runtime supports it
486 # gatewayClasses allows customizing the configuration of the default deployment of Gateways per GatewayClass.
493 # Per-Gateway configuration can also be set in the `Gateway.spec.infrastructure.parametersRef` field.
496 # -- Minimum available pods set in PodDisruptionBudget.
497 # Define either 'minAvailable' or 'maxUnavailable', never both.
499 # -- Maximum unavailable pods set in PodDisruptionBudget. If set, 'minAvailable' is ignored.
501 # -- Eviction policy for unhealthy pods guarded by PodDisruptionBudget.
502 # Ref: https://kubernetes.io/blog/2023/01/06/unhealthy-pod-eviction-policy-for-pdbs/
503 unhealthyPodEvictionPolicy: ""