Skip to content

Istio Custom Resource ​

The istios.operator.kyma-project.io CustomResourceDefinition (CRD) describes the kind and the format of data that Istio Controller uses to configure, update, and manage the Istio installation. Applying the CR triggers the installation of Istio, and deleting it triggers the uninstallation of Istio. The default Istio CR has the name default.

To get the up-to-date CRD in the yaml format, run the following command:

shell
kubectl get crd istios.operator.kyma-project.io -o yaml

You are only allowed to use one Istio CR, which you must create in the kyma-system namespace. If the namespace contains multiple Istio CRs, the oldest one reconciles the module. Any additional Istio CR is placed in the Warning state.

Custom Resource Parameters ​

This table lists all the possible parameters of Istio CR together with their descriptions:

Spec ​

ParameterTypeDescription
compatibilityModeboolEnables compatibility mode in Istio. See Compatibility Mode. If a specific compatibility version introduces new flags to the Istio proxy component, enabling the compatibility mode causes a restart of Istio sidecar proxies.
components.cniobjectDefines component configuration for Istio CNI DaemonSet.
components.cni.k8s.affinityobjectAffinity is a group of affinity scheduling rules. To learn more, read about affininty in the Istio documentation.
components.cni.k8s.resourcesobjectDefines Kubernetes resources requests and limits configuration. For more information, read about Resources in the Istio documentation.
components.ingressGatewayobjectDefines component configurations for Istio Ingress Gateway.
components.ingressGateway.k8s.hpaSpecobjectDefines configuration for HorizontalPodAutoscaler.
components.ingressGateway.k8s.hpaSpec.maxReplicasintegerSpecifies the upper limit for the number of Pods that can be set by the autoscaler. It cannot be smaller than MinReplicas.
components.ingressGateway.k8s.hpaSpec.minReplicasintegerSpecifies the lower limit for the number of replicas to which the autoscaler can scale down. By default, it is set to 1 Pod. The value can be set to 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.
components.ingressGateway.k8s.resourcesobjectDefines Kubernetes resources requests and limits configuration. To learn more, read the Istio documentation.
components.ingressGateway.k8s.strategyobjectDefines the rolling update strategy. To learn more, read about DeploymentStrategy in the Istio documentation.
components.egressGatewayobjectDefines component configurations for Istio Egress Gateway.
components.egressGateway.enabledboolEnables Istio Egress Gateway.
components.egressGateway.k8s.hpaSpecobjectDefines configuration for HorizontalPodAutoscaler.
components.egressGateway.k8s.hpaSpec.maxReplicasintegerSpecifies the upper limit for the number of Pods that can be set by the autoscaler. It cannot be smaller than MinReplicas.
components.egressGateway.k8s.hpaSpec.minReplicasintegerSpecifies the lower limit for the number of replicas to which the autoscaler can scale down. By default, it is set to 1 Pod. The value can be set to 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.
components.egressGateway.k8s.resourcesobjectDefines Kubernetes resources requests and limits configuration. To learn more, read the Istio documentation.
components.egressGateway.k8s.strategyobjectDefines the rolling update strategy. To learn more, read about DeploymentStrategy in the Istio documentation.
components.pilotobjectDefines component configuration for Istiod.
components.pilot.k8s.hpaSpecobjectDefines configuration for HorizontalPodAutoscaler.
components.pilot.k8s.hpaSpec.maxReplicasintegerSpecifies the upper limit for the number of Pods that can be set by the autoscaler. It cannot be smaller than MinReplicas.
components.pilot.k8s.hpaSpec.minReplicasintegerSpecifies the lower limit for the number of replicas to which the autoscaler can scale down. By default, it is set to 1 Pod. The value can be set to 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.
components.pilot.k8s.resourcesobjectDefines Kubernetes resources requests and limits configuration. For more information, read about Resources in the Istio documentation.
components.pilot.k8s.strategyobjectDefines the rolling update strategy. To learn more, read about DeploymentStrategy in the Istio documentation.
components.proxyobjectDefines component configuration for the Istio proxy sidecar.
components.proxy.k8s.resourcesobjectDefines Kubernetes resources requests and limits configuration. To learn more, read about Resources in the Istio documnetation.
configobjectSpecifies the configuration for the Istio installation.
config.authorizers[]authorizerSpecifies the list of external authorizers configured in the Istio service mesh config.
config.numTrustedProxiesintegerSpecifies the number of trusted proxies deployed in front of the Istio gateway proxy. Updating the field causes a restart of the Istio proxies that are part of the istio-ingressgateway Deployment.
config.gatewayExternalTrafficPolicystringDefines the external traffic policy for Istio Ingress Gateway Service. Valid configurations are Local or Cluster. The external traffic policy set to Local preserves the client IP in the request but also introduces the risk of unbalanced traffic distribution.
config.telemetry.metrics.prometheusMergeboolEnables the prometheusMerge feature from Istio, which merges the application's and Istio's metrics and exposes them together at :15020/stats/prometheus for scraping using plain HTTP. Updating the field causes a restart of the Istio sidecar proxies.
experimentalobjectDefines additional experimental features that can be enabled in experimental builds.
experimental.pilotobjectDefines additional experimental features that can be enabled in Istio pilot component.
experimental.pilot.enableAlphaGatewayAPIboolEnables support for alpha Kubernetes Gateway API.
experimental.pilot.enableMultiNetworkDiscoverGatewayAPIboolEnables support for multi-network discovery in Kubernetes Gateway API.

Authorizer ​

ParameterTypeDescription
name (required)stringA unique name identifying the extension authorization provider.
service (required)stringSpecifies the service that implements the Envoy ext_authz HTTP authorization service. The recommended format is [<Namespace>/]<Hostname>.
port (required)integerSpecifies the port number of the external authorizer used to make the authorization request.
headersheadersSpecifies headers to be included, added, or forwarded during authorization.

Headers ​

ParameterTypeDescription
inCheckobjectDefines headers to be included or added in the authorization request check.
inCheck.include[]stringSpecifies a list of client request headers that should be included in the authorization request sent to the authorization service.
inCheck.addkey-valueDefines a set of additional fixed headers that should be included in the authorization request sent to the authorization service. The key is the header's name, and the value is the header's value. It overrides a client request of the same key or headers specified in the include field.
toUpstreamobjectDefines headers to be forwarded to the upstream.
toUpstream.onAllow[]stringSpecifies a list of headers from the authorization service that should be added or overridden in the original request and forwarded to the upstream when the authorization check result is allowed (HTTP code 200). If not specified, the original request will not be modified and forwarded to the backend as-is. It overrides any existing headers.
toDownstreamobjectDefines headers to be forwarded to the downstream.
toDownstream.onAllow[]stringSpecifies a list of headers from the authorization service that should be added or overridden in the original request and forwarded to the downstream when the authorization check result is allowed (HTTP code 200). If not specified, the original request will not be modified and forwarded to backend as-is. It overrides any existing headers.
toDownstream.onDeny[]stringList of headers from the authorization service that should be forwarded to downstream when the authorization check result is not allowed (HTTP code other than 200). If not specified, the response to the downstream will contain all the authorization response headers, except Authority (Host). When a header is included in this list, Path, Status, Content-Length, WWWAuthenticate, and Location are automatically added. Note that the body from the authorization service is always included in the response to downstream.

Status ​

ParameterTypeDescription
state (required)stringSignifies the current state of the CR. Its value can be either Ready, Processing, Error, Warning, or Deleting.
conditions[]objectRepresents the current state of the CR's conditions.
conditions.​lastTransitionTimestringDefines the date of the last condition status change.
conditions.​messagestringProvides more details about the condition status change.
conditions.​reasonstringDefines the reason for the condition status change.
conditions.​status (required)stringRepresents the status of the condition. The value is either True, False, or Unknown.
conditions.​typestringProvides a short description of the condition.

Istio CR's State ​

See the possible values of the status.state field:

CodeDescription
ReadyIstio Controller finished reconciliation.
ProcessingIstio Controller is installing or upgrading Istio.
DeletingIstio Controller is uninstalling Istio.
ErrorAn error occurred during reconciliation.
WarningIstio Controller is misconfigured.

Istio CR's Status Conditions ​

See the possible values of the status.conditions fields:

Istio CR's StateTypeStatusReasonMessage
ReadyReadyTrueReconcileSucceededReconciliation succeeded.
ErrorReadyFalseReconcileFailedReconciliation failed.
WarningReadyFalseOlderCRExistsThis Istio custom resource is not the oldest one and does not represent the module state.
ProcessingReadyFalseIstioInstallNotNeededIstio installation is not needed.
ProcessingReadyFalseIstioInstallSucceededIstio installation succeeded.
ProcessingReadyFalseIstioUninstallSucceededIstio uninstallation succeeded.
ErrorReadyFalseIstioInstallUninstallFailedIstio install or uninstall failed.
ErrorReadyFalseIstioCustomResourceMisconfiguredIstio custom resource has invalid configuration.
WarningReadyFalseIstioCustomResourcesDanglingIstio deletion blocked because of existing Istio custom resources.
ProcessingReadyFalseCustomResourcesReconcileSucceededCustom resources reconciliation succeeded.
ErrorReadyFalseCustomResourcesReconcileFailedCustom resources reconciliation failed.
ProcessingProxySidecarRestartSucceededTrueProxySidecarRestartSucceededProxy sidecar restart succeeded.
ErrorProxySidecarRestartSucceededFalseProxySidecarRestartFailedProxy sidecar restart failed.
ProcessingProxySidecarRestartSucceededFalseProxySidecarPartiallySucceededProxy sidecar restart partially succeeded.
WarningProxySidecarRestartSucceededFalseProxySidecarManualRestartRequiredProxy sidecar manual restart is required for some workloads.
ProcessingReadyFalseIngressGatewayReconcileSucceededIstio Ingress Gateway reconciliation succeeded.
ErrorReadyFalseIngressGatewayReconcileFailedIstio Ingress Gateway reconciliation failed.
ProcessingReadyFalseEgressGatewayReconcileSucceededIstio Egress Gateway reconciliation succeeded.
ErrorReadyFalseEgressGatewayReconcileFailedIstio Egress Gateway reconciliation failed.
WarningReadyFalseIstioVersionUpdateNotAllowedUpdate to the new Istio version is not allowed.
WarningIngressTargetingUserResourceFoundTrueIngressTargetingUserResourceFoundResource targeting Istio Ingress Gateway found.
ReadyIngressTargetingUserResourceFoundFalseIngressTargetingUserResourceFoundResources targeting Istio Ingress Gateway not found. (default state)
WarningIngressTargetingUserResourceFoundUnknownIngressTargetingUserResourceDetectionFailedResource targeting Istio Ingress Gateway detection failed.