IstioOperator Options

    IstioOperatorSpec defines the desired installed state of Istio components. The spec is a used to define a customization of the default profile values that are supplied with each Istio release. Because the spec is a customization API, specifying an empty IstioOperatorSpec results in a default Istio component values.

    InstallStatus

    Observed state of IstioOperator

    FieldTypeDescriptionRequired
    status

    Overall status of all components controlled by the operator.

    • If all components have status NONE, overall status is NONE.
    • If all components are HEALTHY, overall status is HEALTHY.
    • If one or more components are RECONCILING and others are HEALTHY, overall status is RECONCILING.
    • If one or more components are UPDATING and others are HEALTHY, overall status is UPDATING.
    • If components are a mix of RECONCILING, UPDATING and HEALTHY, overall status is UPDATING.
    • If further action is needed for reconciliation to proceed, overall status is ACTION_REQUIRED.
    No
    messagestring

    Optional message providing additional information about the existing overall status.

    No
    componentStatusmap<string, VersionStatus>

    Individual status of each component controlled by the operator. The map key is the name of the component.

    No

    IstioComponentSetSpec

    IstioComponentSpec defines the desired installed state of Istio components.

    FieldTypeDescriptionRequired
    baseNo
    pilotComponentSpecNo
    cniNo
    istiodRemoteComponentSpecNo
    ingressGatewaysNo
    egressGatewaysGatewaySpec[]No

    BaseComponentSpec

    Configuration for base component.

    FieldTypeDescriptionRequired
    enabled

    Selects whether this component is installed.

    No
    k8sKubernetesResourcesSpec

    Kubernetes resource spec.

    No

    ComponentSpec

    Configuration for internal components.

    FieldTypeDescriptionRequired
    enabled

    Selects whether this component is installed.

    No
    namespacestring

    Namespace for the component.

    No
    hubstring

    Hub for the component (overrides top level hub setting).

    No
    tagTypeInterface

    Tag for the component (overrides top level tag setting).

    No
    spec

    Arbitrary install time configuration for the component.

    No
    k8sKubernetesResourcesSpec

    Kubernetes resource spec.

    No

    ExternalComponentSpec

    Configuration for external components.

    FieldTypeDescriptionRequired
    enabled

    Selects whether this component is installed.

    No
    namespacestring

    Namespace for the component.

    No
    specTypeInterface

    Arbitrary install time configuration for the component.

    No
    chartPathstring

    Chart path for addon components.

    No
    schema

    Optional schema to validate spec against.

    No
    k8sKubernetesResourcesSpec

    Kubernetes resource spec.

    No

    GatewaySpec

    Configuration for gateways.

    FieldTypeDescriptionRequired
    enabled

    Selects whether this gateway is installed.

    No
    namespacestring

    Namespace for the gateway.

    No
    namestring

    Name for the gateway.

    No
    labelmap<string, string>

    Labels for the gateway.

    No
    hubstring

    Hub for the component (overrides top level hub setting).

    No
    tagTypeInterface

    Tag for the component (overrides top level tag setting).

    No
    k8s

    Kubernetes resource spec.

    No

    KubernetesResourcesSpec

    KubernetesResourcesConfig is a common set of k8s resource configs for components.

    FieldTypeDescriptionRequired
    affinityAffinity

    k8s affinity.

    No
    envEnvVar[]No
    hpaSpec

    k8s HorizontalPodAutoscaler settings. https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/

    No
    imagePullPolicystring

    k8s imagePullPolicy.

    No
    nodeSelectormap<string, string>

    k8s nodeSelector. https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector

    No
    podDisruptionBudget

    k8s PodDisruptionBudget settings. https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#how-disruption-budgets-work

    No
    podAnnotationsmap<string, string>

    k8s pod annotations.

    No
    priorityClassNamestring

    k8s priorityclassname. Default for all resources unless overridden. https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass

    No
    readinessProbe

    k8s readinessProbe settings. https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/ k8s.io.api.core.v1.Probe readiness_probe = 9;

    No
    replicaCountuint32

    k8s Deployment replicas setting.

    No
    resourcesResources

    k8s resources settings.

    No
    serviceServiceSpec

    k8s Service settings.

    No
    strategyDeploymentStrategy

    k8s deployment strategy.

    No
    tolerationsToleration[]

    k8s toleration

    No
    serviceAnnotationsmap<string, string>

    k8s service annotations. https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/

    No
    securityContext

    k8s pod security context https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod

    No
    volumes

    k8s volume https://kubernetes.io/docs/concepts/storage/volumes/ Volumes defines the collection of Volume to inject into the pod.

    No
    volumeMounts

    k8s volumeMounts VolumeMounts defines the collection of VolumeMount to inject into containers.

    No
    overlaysK8sObjectOverlay[]

    Overlays for k8s resources in rendered manifests.

    No

    K8sObjectOverlay

    Patch for an existing k8s resource.

    FieldTypeDescriptionRequired
    apiVersionstring

    Resource API version.

    No
    kindstring

    Resource kind.

    No
    namestring

    Name of resource. Namespace is always the component namespace.

    No
    patches

    List of patches to apply to resource.

    No

    Affinity

    See k8s.io.api.core.v1.Affinity.

    FieldTypeDescriptionRequired
    nodeAffinityNodeAffinityNo
    podAffinityNo
    podAntiAffinityNo

    ConfigMapKeySelector

    See k8s.io.api.core.v1.ConfigMapKeySelector.

    FieldTypeDescriptionRequired
    localObjectReferenceLocalObjectReferenceNo
    keystringNo
    optionalboolNo

    ClientIPConfig

    See k8s.io.api.core.v1.ClientIPConfig.

    FieldTypeDescriptionRequired
    timeoutSecondsint32No

    CrossVersionObjectReference

    See k8s.io.api.autoscaling.v2beta2.CrossVersionObjectReference.

    FieldTypeDescriptionRequired
    kindstringNo
    namestringNo
    apiVersionstringNo

    DeploymentStrategy

    See k8s.io.api.apps.v1.DeploymentStrategy.

    FieldTypeDescriptionRequired
    typestringNo
    rollingUpdateNo

    EnvVar

    See k8s.io.api.core.v1.EnvVar.

    FieldTypeDescriptionRequired
    namestringNo
    valuestringNo
    valueFromEnvVarSourceNo

    EnvVarSource

    See k8s.io.api.core.v1.EnvVarSource.

    FieldTypeDescriptionRequired
    fieldRefNo
    resourceFieldRefResourceFieldSelectorNo
    configMapKeyRefNo
    secretKeyRefSecretKeySelectorNo

    ExecAction

    See k8s.io.api.core.v1.ExecAction.

    FieldTypeDescriptionRequired
    commandstring[]No

    ExternalMetricSource

    See k8s.io.api.autoscaling.v2beta2.CrossVersionObjectReference.

    FieldTypeDescriptionRequired
    metricNamestringNo
    metricSelectorNo
    targetValueTypeIntOrStringForPBNo
    targetAverageValueNo

    HTTPGetAction

    See k8s.io.api.core.v1.HTTPGetAction.

    FieldTypeDescriptionRequired
    pathstringNo
    portTypeIntOrStringForPBNo
    hoststringNo
    schemestringNo
    httpHeadersNo

    HTTPHeader

    See k8s.io.api.core.v1.HTTPHeader.

    HorizontalPodAutoscalerSpec

    See k8s.io.api.autoscaling.v2beta1.HorizontalPodAutoscalerSpec.

    FieldTypeDescriptionRequired
    scaleTargetRefCrossVersionObjectReferenceNo
    minReplicasint32No
    maxReplicasint32No
    metricsNo

    See k8s.io.api.core.v1.LocalObjectReference.

    FieldTypeDescriptionRequired
    namestringNo

    MetricSpec

    See k8s.io.autoscaling.v2beta1.MetricSpec.

    FieldTypeDescriptionRequired
    typestringNo
    objectObjectMetricSourceNo
    podsNo
    resourceResourceMetricSourceNo
    externalNo

    NodeAffinity

    See k8s.io.api.core.v1.NodeAffinity.

    FieldTypeDescriptionRequired
    requiredDuringSchedulingIgnoredDuringExecutionNodeSelectorNo
    preferredDuringSchedulingIgnoredDuringExecutionNo

    NodeSelector

    See k8s.io.api.core.v1.NodeSelector.

    FieldTypeDescriptionRequired
    nodeSelectorTermsNodeSelectorTerm[]No

    NodeSelectorTerm

    See k8s.io.api.core.v1.NodeSelectorTerm.

    FieldTypeDescriptionRequired
    matchExpressionsNo
    matchFieldsNodeSelectorRequirement[]No

    NodeSelectorRequirement

    See k8s.io.api.core.v1.NodeSelectorRequirement.

    FieldTypeDescriptionRequired
    keystringNo
    operatorstringNo
    valuesstring[]No

    ObjectFieldSelector

    See k8s.io.api.core.v1.ObjectFieldSelector.

    FieldTypeDescriptionRequired
    apiVersionstringNo
    fieldPathstringNo

    ObjectMeta

    From k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta.

    FieldTypeDescriptionRequired
    namestringNo
    namespacestringNo

    ObjectMetricSource

    See k8s.io.autoscaling.v2beta1.ObjectMetricSource.

    FieldTypeDescriptionRequired
    targetNo
    metricNamestringNo
    targetValueTypeIntOrStringForPBNo
    selectorNo
    averageValueTypeIntOrStringForPBNo

    PodAffinity

    See k8s.io.api.core.v1.PodAffinity.

    FieldTypeDescriptionRequired
    requiredDuringSchedulingIgnoredDuringExecutionNo
    preferredDuringSchedulingIgnoredDuringExecutionWeightedPodAffinityTerm[]No

    PodAntiAffinity

    See k8s.io.api.core.v1.PodAntiAffinity.

    FieldTypeDescriptionRequired
    requiredDuringSchedulingIgnoredDuringExecutionNo
    preferredDuringSchedulingIgnoredDuringExecutionWeightedPodAffinityTerm[]No

    PodAffinityTerm

    See k8s.io.api.core.v1.PodAntiAffinity.

    FieldTypeDescriptionRequired
    labelSelectorNo
    namespacesstring[]No
    topologyKeystringNo

    PodDisruptionBudgetSpec

    FieldTypeDescriptionRequired
    minAvailableuint32No
    selectorLabelSelectorNo
    maxUnavailableuint32No

    PodsMetricSource

    See k8s.io.api.core.v1.PodsMetricSource.

    FieldTypeDescriptionRequired
    metricNamestringNo
    targetAverageValueNo
    selectorLabelSelectorNo

    PreferredSchedulingTerm

    See k8s.io.api.core.v1.PreferredSchedulingTerm.

    FieldTypeDescriptionRequired
    weightint32No
    preferenceNo

    ReadinessProbe

    See k8s.io.api.core.v1.ReadinessProbe.

    FieldTypeDescriptionRequired
    execExecActionNo
    httpGetNo
    tcpSocketTCPSocketActionNo
    initialDelaySecondsint32No
    timeoutSecondsint32No
    periodSecondsint32No
    successThresholdint32No
    failureThresholdint32No

    ResourceFieldSelector

    See k8s.io.api.core.v1..

    FieldTypeDescriptionRequired
    stringNo
    resourcestringNo
    divisorNo

    ResourceMetricSource

    See k8s.io.api.core.v1.ResourceMetricSource.

    Resources

    See k8s.io.api.core.v1.ResourceRequirements.

    FieldTypeDescriptionRequired
    limitsmap<string, string>No
    requestsmap<string, string>No

    RollingUpdateDeployment

    See k8s.io.api.apps.v1.RollingUpdateDeployment.

    FieldTypeDescriptionRequired
    maxUnavailableTypeIntOrStringForPBNo
    maxSurgeNo

    SecretKeySelector

    See k8s.io.api.core.v1.SecretKeySelector.

    FieldTypeDescriptionRequired
    localObjectReferenceLocalObjectReferenceNo
    keystringNo
    optionalboolNo

    See k8s.io.api.core.v1.ServiceSpec.

    FieldTypeDescriptionRequired
    portsNo
    selectormap<string, string>No
    clusterIPstringNo
    typestringNo
    externalIPsstring[]No
    sessionAffinitystringNo
    loadBalancerIPstringNo
    loadBalancerSourceRangesstring[]No
    externalNamestringNo
    externalTrafficPolicystringNo
    healthCheckNodePortint32No
    publishNotReadyAddressesboolNo
    sessionAffinityConfigSessionAffinityConfigNo

    ServicePort

    See k8s.io.api.core.v1..

    FieldTypeDescriptionRequired
    namestringNo
    protocolstringNo
    portint32No
    targetPortNo
    nodePortint32No

    SessionAffinityConfig

    See k8s.io.api.core.v1.SessionAffinityConfig.

    FieldTypeDescriptionRequired
    clientIPClientIPConfigNo

    TCPSocketAction

    See k8s.io.api.core.v1.TCPSocketAction.

    FieldTypeDescriptionRequired
    portNo
    hoststringNo

    Toleration

    See k8s.io.api.core.v1.Toleration.

    FieldTypeDescriptionRequired
    keystringNo
    operatorstringNo
    valuestringNo
    effectstringNo
    tolerationSecondsint64No

    WeightedPodAffinityTerm

    See k8s.io.api.core.v1.WeightedPodAffinityTerm.

    FieldTypeDescriptionRequired
    weightint32No
    podAffinityTermPodAffinityTermNo

    PodSecurityContext

    See k8s.io.api.core.v1.PodSecurityContext.

    FieldTypeDescriptionRequired
    seLinuxOptionsNo
    runAsUserint64No
    runAsNonRootboolNo
    supplementalGroupsint64[]No
    fsGroupint64No
    runAsGroupint64No
    sysctlsSysctl[]No
    windowsOptionsNo
    fsGroupChangePolicystringNo
    seccompProfileSeccompProfileNo

    SELinuxOptions

    See k8s.io.api.core.v1.SELinuxOptions.

    FieldTypeDescriptionRequired
    userstringNo
    rolestringNo
    typestringNo
    levelstringNo

    Sysctl

    See k8s.io.api.core.v1.Sysctl.

    FieldTypeDescriptionRequired
    namestringNo
    valuestringNo

    WindowsSecurityContextOptions

    See k8s.io.api.core.v1.WindowsSecurityContextOptions.

    FieldTypeDescriptionRequired
    gmsaCredentialSpecNamestringNo
    gmsaCredentialSpecstringNo
    runAsUserNamestringNo

    SeccompProfile

    See k8s.io.api.core.v1.SeccompProfile.

    FieldTypeDescriptionRequired
    typestringNo
    localhostProfilestringNo

    TypeInterface

    Synthetic type for generating Go structs. GOTYPE: interface{}

    TypeMapStringInterface

    Synthetic type for generating Go structs. GOTYPE: map[string]interface{}

    TypeIntOrStringForPB

    Synthetic type for generating Go structs. GOTYPE: *IntOrStringForPB

    TypeBoolValueForPB

    Synthetic type for generating Go structs. GOTYPE: *BoolValueForPB

    InstallStatus.VersionStatus

    VersionStatus is the status and version of a component.

    FieldTypeDescriptionRequired
    versionstringNo
    statusNo
    errorstringNo

    K8sObjectOverlay.PathValue

    FieldTypeDescriptionRequired
    pathstring

    Path of the form a.[key1:value1].b.[:value2] Where [key1:value1] is a selector for a key-value pair to identify a list element and [:value] is a value selector to identify a list element in a leaf list. All path intermediate nodes must exist.

    No
    valueTypeInterface

    Value to add, delete or replace. For add, the path should be a new leaf. For delete, value should be unset. For replace, path should reference an existing node. All values are strings but are converted into appropriate type based on schema.

    No

    k8s.io.api.core.v1.Volume

    Volume represents a named volume in a pod that may be accessed by any container in the pod.

    FieldTypeDescriptionRequired
    namestring

    Volume’s name. Must be a DNS_LABEL and unique within the pod. More info:

    No
    volumeSourceVolumeSource

    VolumeSource represents the location and type of the mounted volume. If not specified, the Volume is implied to be an EmptyDir. This implied behavior is deprecated and will be removed in a future version.

    No

    k8s.io.api.core.v1.VolumeMount

    VolumeMount describes a mounting of a Volume within a container.

    FieldTypeDescriptionRequired
    namestring

    This must match the Name of a Volume.

    No
    readOnlybool

    Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. +optional

    No
    mountPathstring

    Path within the container at which the volume should be mounted. Must not contain ‘:’.

    No
    subPathstring

    Path within the volume from which the container’s volume should be mounted. Defaults to “” (volume’s root). +optional

    No
    mountPropagationstring

    mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. +optional

    No
    subPathExprstring

    Expanded path within the volume from which the container’s volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container’s environment. Defaults to “” (volume’s root). SubPathExpr and SubPath are mutually exclusive. This field is beta in 1.15. +optional

    No

    k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector

    A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects.

    InstallStatus.Status

    Status describes the current state of a component.

    NameDescription
    NONE

    Component is not present.

    UPDATING

    Component is being updated to a different version.

    RECONCILING

    Controller has started but not yet completed reconciliation loop for the component.

    HEALTHY

    Component is healthy.

    ERROR

    Component is in an error state.

    Overall status only and would not be set as a component status. Action is needed from the user for reconciliation to proceed e.g. There are proxies still pointing to the control plane revision when try to remove an IstioOperator CR.