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

    Remote cluster using an external control plane.

    No
    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
    enabledBoolValue

    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
    specStruct

    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
    specStruct

    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
    enabledBoolValue

    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
    tag

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

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

    List of patches to apply to resource.

    No

    Affinity

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

    FieldTypeDescriptionRequired
    nodeAffinityNodeAffinityNo
    podAffinityNo
    podAntiAffinityPodAntiAffinityNo

    ConfigMapKeySelector

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

    FieldTypeDescriptionRequired
    localObjectReferenceLocalObjectReferenceNo
    keystringNo
    optionalboolNo

    ContainerResourceMetricSource

    See k8s.io.api.autoscaling.v2beta2.ContainerResourceMetricSource.

    FieldTypeDescriptionRequired
    namestringNo
    targetMetricTargetNo
    containerstringNo

    ContainerResourceMetricStatus

    See k8s.io.api.autoscaling.v2beta2.ContainerResourceMetricStatus.

    FieldTypeDescriptionRequired
    namestringNo
    currentMetricValueStatusNo
    containerstringNo

    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
    rollingUpdateRollingUpdateDeploymentNo

    EnvVar

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

    FieldTypeDescriptionRequired
    namestringNo
    valuestringNo
    EnvVarSourceNo

    EnvVarSource

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

    FieldTypeDescriptionRequired
    fieldRefObjectFieldSelectorNo
    resourceFieldRefNo
    configMapKeyRefConfigMapKeySelectorNo
    secretKeyRefNo

    ExecAction

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

    FieldTypeDescriptionRequired
    commandstring[]No

    ExternalMetricSource

    See k8s.io.api.autoscaling.v2beta2.ExternalMetricSource.

    FieldTypeDescriptionRequired
    metricMetricIdentifierNo
    targetNo
    metricNamestringNo
    metricSelectorLabelSelectorNo
    targetValueNo
    targetAverageValueIntOrStringNo

    ExternalMetricStatus

    See k8s.io.autoscaling.v2beta2.ExternalMetricStatus.

    FieldTypeDescriptionRequired
    metricMetricIdentifierNo
    currentNo

    HTTPGetAction

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

    FieldTypeDescriptionRequired
    pathstringNo
    portNo
    hoststringNo
    schemestringNo
    httpHeadersHTTPHeader[]No

    HTTPHeader

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

    FieldTypeDescriptionRequired
    namestringNo
    valuestringNo

    HorizontalPodAutoscalerSpec

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

    FieldTypeDescriptionRequired
    scaleTargetRefNo
    minReplicasint32No
    maxReplicasint32No
    metricsMetricSpec[]No
    behaviorNo

    See k8s.io.autoscaling.v2beta2.HorizontalPodAutoScalerBehavior.

    HPAScalingRules

    See k8s.io.autoscaling.v2beta2.HPAScalingRules.

    FieldTypeDescriptionRequired
    stabilizationWindowSecondsint32No
    selectPolicystringNo
    policiesNo

    HPAScalingPolicy

    See k8s.io.autoscaling.v2beta2.HPAScalingPolicy.

    FieldTypeDescriptionRequired
    typestringNo
    valueint32No
    periodSecondsint32No

    LocalObjectReference

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

    FieldTypeDescriptionRequired
    namestringNo

    MetricIdentifier

    See k8s.io.autoscaling.v2beta2.MetricIdentifier.

    FieldTypeDescriptionRequired
    namestring (oneof)No
    selectorNo

    MetricSpec

    See k8s.io.autoscaling.v2beta2.MetricSpec.

    FieldTypeDescriptionRequired
    typestringNo
    objectNo
    podsPodsMetricSourceNo
    resourceNo
    containerResourceContainerResourceMetricSourceNo
    externalNo

    MetricStatus

    See k8s.io.autoscaling.v2beta2.MetricStatus.

    FieldTypeDescriptionRequired
    typestringNo
    objectNo
    podsPodsMetricStatusNo
    resourceNo
    containerResourceContainerResourceMetricStatusNo
    externalNo

    MetricTarget

    See k8s.io.autoscaling.v2beta2.MetricTarget.

    FieldTypeDescriptionRequired
    typestringNo
    valueNo
    averageValueIntOrStringNo
    averageUtilizationint32No

    MetricValueStatus

    See k8s.io.autoscaling.v2beta2.MetricValueStatus.

    FieldTypeDescriptionRequired
    valueIntOrStringNo
    averageValueNo
    averageUtilizationint32No

    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

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

    FieldTypeDescriptionRequired
    targetValue

    Type changes from CrossVersionObjectReference to ResourceMetricTarget in autoscaling v2beta2/v2 compared with v2beta1 Change it to dynamic type to keep backward compatible

    No
    describedObjectNo
    metricMetricIdentifierNo
    metricNamestringNo
    targetValueNo
    selectorLabelSelectorNo
    averageValueNo

    ObjectMetricStatus

    See k8s.io.autoscaling.v2beta2.ObjectMetricStatus.

    FieldTypeDescriptionRequired
    metricNo
    currentMetricValueStatusNo
    describedObjectNo

    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
    minAvailableNo
    selectorLabelSelectorNo
    maxUnavailableNo

    PodsMetricSource

    FieldTypeDescriptionRequired
    metric

    v2beta2/v2 fields

    No
    targetMetricTargetNo
    metricNamestringNo
    targetAverageValueNo
    selectorLabelSelectorNo

    PodsMetricStatus

    See k8s.io.autoscaling.v2beta2.PodsMetricStatus.

    FieldTypeDescriptionRequired
    metricMetricIdentifierNo
    currentNo

    PreferredSchedulingTerm

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

    FieldTypeDescriptionRequired
    weightint32No
    preferenceNo

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

    ResourceFieldSelector

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

    FieldTypeDescriptionRequired
    containerNamestringNo
    resourcestringNo
    divisorNo

    ResourceMetricSource

    See k8s.io.autoscaling.v2beta2.ResourceMetricSource.

    FieldTypeDescriptionRequired
    namestringNo
    targetNo
    targetAverageUtilizationint32No
    targetAverageValueIntOrStringNo

    ResourceMetricStatus

    See k8s.io.autoscaling.v2beta2.ResourceMetricStatus.

    FieldTypeDescriptionRequired
    namestringNo
    currentMetricValueStatusNo

    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
    maxUnavailableNo
    maxSurgeIntOrStringNo

    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

    IntOrString

    IntOrString is a type that can hold an int32 or a string. When used in JSON or YAML marshalling and unmarshalling, it produces or consumes the inner type. This allows you to have, for example, a JSON field that can accept a name or number.

    FieldTypeDescriptionRequired
    typeint64No
    intValNo
    strValStringValueNo

    InstallStatus.VersionStatus

    VersionStatus is the status and version of a component.

    FieldTypeDescriptionRequired
    versionstringNo
    statusStatusNo
    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
    valueValue

    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

    google.protobuf.Value

    Value represents a dynamically typed value which can be either null, a number, a string, a boolean, a recursive struct value, or a list of values. A producer of value is expected to set one of that variants, absence of any variant indicates an error.

    The JSON representation for Value is JSON value.

    FieldTypeDescriptionRequired
    nullValueNullValue (oneof)

    Represents a null value.

    No
    numberValuedouble (oneof)

    Represents a double value.

    No
    stringValuestring (oneof)

    Represents a string value.

    No
    boolValuebool (oneof)

    Represents a boolean value.

    No
    structValue

    Represents a structured value.

    No
    listValueListValue (oneof)

    Represents a repeated Value.

    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

    name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names

    No
    volumeSource

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

    No

    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. +structType=atomic

    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.