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:

bash
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.

Sample Custom Resource ​

This is a sample Istio CR that configures Istio installation in your Kyma cluster.

yaml
apiVersion: operator.kyma-project.io/v1alpha2
kind: Istio
metadata:
  name: default
  namespace: kyma-system
spec:
  config:
    gatewayExternalTrafficPolicy: Cluster

Custom Resource Parameters ​

The following tables list all the possible parameters of a given resource together with their descriptions.

APIVersions ​

Resource Types ​

Authorizer ​

Authorizer defines an external authorization provider configuration. The defined authorizer can be referenced by name in an AuthorizationPolicy with action CUSTOM to enforce requests to be authorized by the external authorization service.

Appears in:

FieldDescriptionValidation
name
string
A unique name identifying the extension authorization provider.Required
service
string
Specifies the service that implements the Envoy ext_authz HTTP authorization service.
The format is "[Namespace/]Hostname".
The specification of "Namespace" is required only when it is insufficient to unambiguously resolve a service in the service registry.
The "Hostname" is a fully qualified host name of a service defined by the Kubernetes service or ServiceEntry.
The recommended format is "[Namespace/]Hostname".
Optional
port
integer
Specifies the port of the service.Required
headers
Headers
Specifies headers to be included, added or forwarded during authorization.Optional
pathPrefix
string
Specifies the prefix which will be included in the request sent to the authorization service.
The prefix might be constructed with special characters (e.g., "/test?original_path=").
Optional
timeout
Duration
Specifies the timeout for the HTTP authorization request to the external service.Optional

CniComponent ​

CniComponent defines configuration for CNI Istio component.

Appears in:

FieldDescriptionValidation
k8s
CniK8sConfig
CniK8sConfig is a subset of https://istio.io/latest/docs/reference/config/istio.operator.v1alpha1/#KubernetesResourcesSpecRequired

CniK8sConfig ​

Appears in:

FieldDescriptionValidation
affinity
Affinity
Affinity defines the Pod scheduling affinity constraints: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinityOptional
resources
Resources
Resources define Kubernetes resources configuration: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/Optional

Components ​

Appears in:

FieldDescriptionValidation
pilot
IstioComponent
Pilot defines component configuration for IstiodOptional
ingressGateway
IstioComponent
IngressGateway defines component configurations for Istio Ingress GatewayOptional
cni
CniComponent
Cni defines component configuration for Istio CNI DaemonSetOptional
proxy
ProxyComponent
Proxy defines component configuration for Istio proxy sidecarOptional
egressGateway
EgressGateway
Optional

ConditionReason ​

Underlying type: string

Appears in:

FieldDescription
ReconcileSucceededReconciliation finished with full success.
ReconcileUnknownReconciliation is in progress or failed previously.
ReconcileRequeuedReconciliation is requeued to be tried again later.
ReconcileFailedReconciliation failed.
ValidationFailedReconciliation did not happen as validation of Istio Custom Resource failed.
OlderCRExistsReconciliation did not happen as there exists an older Istio Custom Resource.
OldestCRNotFoundReconciliation did not happen as the oldest Istio Custom Resource could not be found.
IstioInstallNotNeededIstio installtion is not needed.
IstioInstallSucceededIstio installation or uninstallation succeeded.
IstioUninstallSucceededIstio uninstallation succeeded.
IstioInstallUninstallFailedIstio installation or uninstallation failed.
IstioCustomResourceMisconfiguredIstio Custom Resource has invalid configuration.
IstioCustomResourcesDanglingIstio Custom Resources are blocking Istio uninstallation.
IstioVersionUpdateNotAllowedIstio version update is not allowed.
CustomResourcesReconcileSucceededCustom resources reconciliation succeeded.
CustomResourcesReconcileFailedCustom resources reconciliation failed.
ProxySidecarRestartSucceededProxy sidecar restart succeeded.
ProxySidecarRestartFailedProxy sidecar restart failed.
ProxySidecarRestartPartiallySucceededProxy sidecar restart partially succeeded.
ProxySidecarManualRestartRequiredProxy sidecar manual restart is required.
IngressGatewayRestartSucceededIstio ingress gateway restart succeeded.
IngressGatewayRestartFailedIstio ingress gateway restart failed.
EgressGatewayRestartSucceededIstio egress gateway restart succeeded.
EgressGatewayRestartFailedIstio egress gateway restart failed.
IngressTargetingUserResourceFoundResource targeting Istio Ingress Gateway found.
IngressTargetingUserResourceNotFoundNo resources targeting Istio Ingress Gateway found.
IngressTargetingUserResourceDetectionFailedResource targeting Istio Ingress Gateway detection failed.

Config ​

Config is the configuration for the Istio installation.

Appears in:

FieldDescriptionValidation
numTrustedProxies
integer
Defines the number of trusted proxies deployed in front of the Istio gateway proxy.Maximum: 4.294967295e+09
Minimum: 0
authorizers
Authorizer array
Defines a list of external authorization providers.Optional
gatewayExternalTrafficPolicy
string
Defines the external traffic policy for the 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.
WARNING: Switching externalTrafficPolicy may result in a temporal increase in request delay. Make sure that this is acceptable.
Enum: [Local Cluster]
Optional
telemetry
Telemetry
Defines the telemetry configuration of Istio.Optional

EgressGateway ​

EgressGateway defines configuration for Istio egressGateway.

Appears in:

FieldDescriptionValidation
k8s
KubernetesResourcesConfig
Defines the Kubernetes resources configuration for Istio egress gateway.Optional
enabled
boolean
Enables or disables the Istio egress gateway.Optional

Experimental ​

Appears in:

FieldDescriptionValidation
pilot
PilotFeatures
Optional
enableDualStack
boolean
Enables dual-stack support.Optional
enableAmbient
boolean
Enables ambient mode support.Optional

HPASpec ​

HPASpec defines configuration for HorizontalPodAutoscaler.

Appears in:

FieldDescriptionValidation
maxReplicas
integer
Maximum: 2.147483647e+09
Minimum: 0
minReplicas
integer
Maximum: 2.147483647e+09
Minimum: 0

Headers ​

Appears in:

FieldDescriptionValidation
inCheck
InCheck
Defines headers to be included or added in check authorization request.Optional
toUpstream
ToUpstream
Defines headers to be forwarded to the upstream (to the backend service).Optional
toDownstream
ToDownstream
Defines headers to be forwarded to the downstream (the client).Optional

InCheck ​

Appears in:

FieldDescriptionValidation
include
string array
List of client request headers that should be included in the authorization request sent to the authorization service.
Note that in addition to the headers specified here, the following headers are included by default:
1. Host, Method, Path and Content-Length are automatically sent.
2. Content-Length will be set to 0, and the request will not have a message body. However, the authorization request can include the buffered client request body (controlled by include_request_body_in_check setting), consequently the value of Content-Length of the authorization request reflects the size of its payload size.
Optional
add
object (keys:string, values:string)
Set of additional fixed headers that should be included in the authorization request sent to the authorization service.
The Key is the header name and value is the header value.
Note that client request of the same key or headers specified in Include will be overridden.
Optional

Istio ​

Istio contains Istio CR specification and current status.

FieldDescriptionValidation
apiVersion
string
operator.kyma-project.io/v1alpha2Optional
kind
string
IstioOptional
metadata
ObjectMeta
For more information on the metadata fields, see Kubernetes API documentation.Optional
spec
IstioSpec
Spec defines the desired state of the Istio installation.Optional
status
IstioStatus
Status represents the current state of the Istio installation.Optional

IstioComponent ​

IstioComponent defines configuration for generic Istio component (ingress gateway, istiod).

Appears in:

FieldDescriptionValidation
k8s
KubernetesResourcesConfig
Required

IstioSpec ​

IstioSpec describes the desired specification for installing or updating Istio.

Appears in:

FieldDescriptionValidation
config
Config
Defines configuration of the Istio installation.Optional
components
Components
Defines configuration of Istio components.Optional
experimental
Experimental
Defines experimental configuration options.Optional
compatibilityMode
boolean
Enables compatibility mode for Istio installation.Optional

IstioStatus ​

IstioStatus defines the observed state of IstioCR.

Appears in:

FieldDescriptionValidation
state
State
State signifies the current state of CustomObject. Value
can be one of ("Ready", "Processing", "Error", "Deleting", "Warning").
Enum: [Processing Deleting Ready Error Warning]
Required
conditions
Condition
Conditions associated with IstioStatus.Optional
description
string
Description of Istio status.Optional

KubernetesResourcesConfig ​

KubernetesResourcesConfig is a subset of https://istio.io/latest/docs/reference/config/istio.operator.v1alpha1/#KubernetesResourcesSpec

Appears in:

FieldDescriptionValidation
hpaSpec
HPASpec
HPASpec defines configuration for HorizontalPodAutoscaler: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/Optional
strategy
Strategy
Strategy defines configuration for rolling updates: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deploymentOptional
resources
Resources
Resources define Kubernetes resources configuration: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/Optional

Metrics ​

Appears in:

FieldDescriptionValidation
prometheusMerge
boolean
Defines whether the prometheusMerge feature is enabled. If yes, appropriate prometheus.io annotations will be added to all data plane pods to set up scraping.
If these annotations already exist, they will be overwritten. With this option, the Envoy sidecar will merge Istio’s metrics with the application metrics.
The merged metrics will be scraped from :15020/stats/prometheus.
Optional

PilotFeatures ​

Appears in:

FieldDescriptionValidation
enableAlphaGatewayAPI
boolean
Optional
enableMultiNetworkDiscoverGatewayAPI
boolean
Optional

ProxyComponent ​

ProxyComponent defines configuration for Istio proxies.

Appears in:

FieldDescriptionValidation
k8s
ProxyK8sConfig
Required

ProxyK8sConfig ​

ProxyK8sConfig is a subset of https://istio.io/latest/docs/reference/config/istio.operator.v1alpha1/#KubernetesResourcesSpec

Appears in:

FieldDescriptionValidation
resources
Resources
Optional

ResourceClaims ​

Appears in:

FieldDescriptionValidation
cpu
string
Pattern: ^([0-9]+m?|[0-9]\.[0-9]\{1,3\})$
memory
string
Pattern: ^[0-9]+(((\.[0-9]+)?(E|P|T|G|M|k|Ei|Pi|Ti|Gi|Mi|Ki|m)?)|(e[0-9]+))$

Resources ​

Resources define Kubernetes resources configuration: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Appears in:

FieldDescriptionValidation
limits
ResourceClaims
Optional
requests
ResourceClaims
Optional

RollingUpdate ​

RollingUpdate defines configuration for rolling updates: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment

Appears in:

FieldDescriptionValidation
maxSurge
IntOrString
Pattern: ^[0-9]+%?$
XIntOrString: {}
maxUnavailable
IntOrString
Pattern: ^((100|[0-9]\{1,2\})%|[0-9]+)$
XIntOrString: {}

State ​

Underlying type: string

Appears in:

FieldDescription
ReadyReady is reported when the Istio installation / upgrade process has completed successfully.
ProcessingProcessing is reported when the Istio installation / upgrade process is in progress.
ErrorError is reported when the Istio installation / upgrade process has failed.
DeletingDeleting is reported when the Istio installation / upgrade process is being deleted.
WarningWarning is reported when the Istio installation / upgrade process has completed with warnings.
This state warrants user attention, as some features may not work as expected.

Strategy ​

Strategy defines rolling update strategy.

Appears in:

FieldDescriptionValidation
rollingUpdate
RollingUpdate
Required

Telemetry ​

Appears in:

FieldDescriptionValidation
metrics
Metrics
Istio telemetry configuration related to metricsOptional

ToDownstream ​

Appears in:

FieldDescriptionValidation
onAllow
string array
List of headers from the authorization service that should be forwarded to downstream when the authorization check result is allowed (HTTP code 200).
If not specified, the original response will not be modified and forwarded to downstream as-is.
Note, any existing headers will be overridden.
Optional
onDeny
string array
List 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, all the authorization response headers, except Authority (Host) will be in the response to the downstream.
When a header is included in this list, Path, Status, Content-Length, WWWAuthenticate and Location are automatically added.
Note, the body from the authorization service is always included in the response to downstream.
Optional

ToUpstream ​

Appears in:

FieldDescriptionValidation
onAllow
string array
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 backend as-is.
Note, any existing headers will be overridden.
Optional