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 any component is in ERROR state, overall status is ERROR.
    • 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
    baseBaseComponentSpecNo
    pilotNo
    cniComponentSpecNo
    istiodRemoteNo
    ingressGatewaysGatewaySpec[]No
    egressGatewaysNo

    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
    enabledTypeBoolValueForPB

    Selects whether this component is installed.

    No
    namespacestring

    Namespace for the component.

    No
    hubstring

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

    No
    tag

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

    No
    specTypeInterface

    Arbitrary install time configuration for the component.

    No
    k8s

    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
    enabledTypeBoolValueForPB

    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
    tagNo
    k8sKubernetesResourcesSpec

    Kubernetes resource spec.

    No

    KubernetesResourcesSpec

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

    FieldTypeDescriptionRequired
    affinityAffinity

    k8s affinity.

    No
    envEnvVar[]

    Deployment environment variables.

    No
    hpaSpecHorizontalPodAutoscalerSpec

    k8s HorizontalPodAutoscaler settings.

    No
    imagePullPolicystring

    k8s imagePullPolicy. https://kubernetes.io/docs/concepts/containers/images/

    No
    nodeSelectormap<string, string>

    k8s nodeSelector.

    No
    podDisruptionBudgetPodDisruptionBudgetSpec

    k8s PodDisruptionBudget settings.

    No
    podAnnotationsmap<string, string>

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

    No
    priorityClassNamestring

    k8s priorityclassname. Default for all resources unless overridden.

    No
    readinessProbeReadinessProbe

    k8s readinessProbe settings. k8s.io.api.core.v1.Probe readiness_probe = 9;

    No
    replicaCountuint32

    k8s Deployment replicas setting. https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

    No
    resources

    k8s resources settings. https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container

    No
    service

    k8s Service settings. https://kubernetes.io/docs/concepts/services-networking/service/

    No
    strategy

    k8s deployment strategy. https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

    No
    tolerations

    k8s toleration https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/

    No
    serviceAnnotationsmap<string, string>

    k8s service annotations.

    No
    securityContextPodSecurityContext

    k8s pod security context

    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
    patchesPathValue[]

    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
    localObjectReferenceNo
    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
    valueFromNo

    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
    portNo
    hoststringNo
    schemestringNo
    httpHeadersHTTPHeader[]No

    HTTPHeader

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

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

    FieldTypeDescriptionRequired
    scaleTargetRefCrossVersionObjectReferenceNo
    minReplicasint32No
    maxReplicasint32No
    metricsNo

    LocalObjectReference

    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
    requiredDuringSchedulingIgnoredDuringExecutionNo
    preferredDuringSchedulingIgnoredDuringExecutionPreferredSchedulingTerm[]No

    NodeSelector

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

    FieldTypeDescriptionRequired
    nodeSelectorTermsNodeSelectorTerm[]No

    NodeSelectorTerm

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

    FieldTypeDescriptionRequired
    matchExpressionsNodeSelectorRequirement[]No
    matchFieldsNo

    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
    targetCrossVersionObjectReferenceNo
    metricNamestringNo
    targetValueNo
    selectorLabelSelectorNo
    averageValueNo

    PodAffinity

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

    FieldTypeDescriptionRequired
    requiredDuringSchedulingIgnoredDuringExecutionNo
    preferredDuringSchedulingIgnoredDuringExecutionWeightedPodAffinityTerm[]No

    PodAntiAffinity

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

    FieldTypeDescriptionRequired
    requiredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm[]No
    preferredDuringSchedulingIgnoredDuringExecutionNo

    PodAffinityTerm

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

    FieldTypeDescriptionRequired
    labelSelectorNo
    namespacesstring[]No
    topologyKeystringNo

    PodDisruptionBudgetSpec

    See k8s.io.api.policy.v1beta1.PodDisruptionBudget.

    FieldTypeDescriptionRequired
    minAvailableuint32No
    selectorNo
    maxUnavailableuint32No

    PodsMetricSource

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

    FieldTypeDescriptionRequired
    metricNamestringNo
    targetAverageValueNo
    selectorLabelSelectorNo

    PreferredSchedulingTerm

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

    FieldTypeDescriptionRequired
    weightint32No
    preferenceNodeSelectorTermNo

    ReadinessProbe

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

    FieldTypeDescriptionRequired
    execExecActionNo
    httpGetNo
    tcpSocketTCPSocketActionNo
    initialDelaySecondsint32No
    int32No
    periodSecondsint32No
    successThresholdint32No
    failureThresholdint32No

    ResourceFieldSelector

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

    FieldTypeDescriptionRequired
    containerNamestringNo
    resourcestringNo
    divisorTypeIntOrStringForPBNo

    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

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

    FieldTypeDescriptionRequired
    maxUnavailableNo
    maxSurgeTypeIntOrStringForPBNo

    SecretKeySelector

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

    FieldTypeDescriptionRequired
    localObjectReferenceLocalObjectReferenceNo
    keystringNo
    optionalboolNo

    ServiceSpec

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

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

    ServicePort

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

    FieldTypeDescriptionRequired
    namestringNo
    protocolstringNo
    portint32No
    targetPortNo
    nodePortint32No

    SessionAffinityConfig

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

    FieldTypeDescriptionRequired
    clientIPNo

    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
    seLinuxOptionsSELinuxOptionsNo
    runAsUserint64No
    runAsNonRootboolNo
    supplementalGroupsint64[]No
    fsGroupint64No
    runAsGroupint64No
    sysctlsNo
    windowsOptionsWindowsSecurityContextOptionsNo
    fsGroupChangePolicystringNo
    seccompProfileNo

    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
    value

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

    FieldTypeDescriptionRequired
    matchLabelsmap<string, string>

    matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is “key”, the operator is “In”, and the values array contains only “value”. The requirements are ANDed. +optional

    No
    matchExpressions

    matchExpressions is a list of label selector requirements. The requirements are ANDed. +optional

    No

    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

    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.