--- title: IstioOperator Options description: Configuration affecting Istio control plane installation version and shape. location: https://istio.io/docs/reference/config/istio.operator.v1alpha1.html layout: protoc-gen-docs generator: protoc-gen-docs weight: 20 number_of_entries: 74 ---

Configuration affecting Istio control plane installation version and shape. Note: unlike other Istio protos, field names must use camelCase. This is asserted in tests. Without camelCase, the `json` tag on the Go struct will not match the user’s JSON representation. This leads to Kubernetes merge libraries, which rely on this tag, to fail. All other usages use jsonpb which does not use the `json` tag.

## IstioOperatorSpec

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.

    apiVersion: install.istio.io/v1alpha1
    kind: IstioOperator
    spec:
      profile: default
      hub: gcr.io/istio-testing
      tag: latest
      revision: 1-8-0
      meshConfig:
        accessLogFile: /dev/stdout
        enableTracing: true
      components:
        egressGateways:
        - name: istio-egressgateway
          enabled: true

Field | Type | Description | Required
--- | --- | --- | ---
`profile` | `string` | Path or name for the profile e.g. minimal (looks in profiles dir for a file called minimal.yaml) /tmp/istio/install/values/custom/custom-install.yaml (local file path) default profile is used if this field is unset. | No
`installPackagePath` | `string` | Path for the install package. e.g. /tmp/istio-installer/nightly (local file path) | No
`hub` | `string` | Root for docker image paths e.g. `docker.io/istio` | No
`tag` | `Value` | Version tag for docker images e.g. `1.7.2` | No
`namespace` | `string` | Namespace to install control plane resources into. If unset, Istio will be installed into the same namespace as the `IstioOperator` CR. You must also set `values.global.istioNamespace` if you wish to install Istio in a custom namespace. If you have enabled CNI, you must exclude this namespace by adding it to the list `values.cni.excludeNamespaces`. | No
`revision` | `string` | Identify the revision this installation is associated with. This option is currently experimental. | No
`defaultRevision` | `bool` | Identify whether this revision is the default revision for the cluster This option is currently experimental. | No
`meshConfig` | `Struct` | Config used by control plane components internally. | No
`components` | `IstioComponentSetSpec` | Kubernetes resource settings, enablement and component-specific settings that are not internal to the component. | No
`values` | `Struct` | Overrides for default `values.yaml`. This is a validated pass-through to Helm templates. See the Helm installation options for schema details. Anything that is available in `IstioOperatorSpec` should be set above rather than using the passthrough. This includes Kubernetes resource settings for components in `KubernetesResourcesSpec`. | No
`unvalidatedValues` | `Struct` | Unvalidated overrides for default `values.yaml`. Used for custom templates where new parameters are added. | No
`addonComponents` | `map<string, ExternalComponentSpec>` | Deprecated. Users should manage the installation of addon components on their own. Refer to samples/addons for demo installation of addon components. | No

## InstallStatus

Observed state of IstioOperator

Field | Type | Description | Required
--- | --- | --- | ---
`status` | `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
`message` | `string` | Optional message providing additional information about the existing overall status. | No
`componentStatus` | `map<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.

Field | Type | Description | Required
--- | --- | --- | ---
`base` | `BaseComponentSpec` |  | No
`pilot` | `ComponentSpec` |  | No
`cni` | `ComponentSpec` |  | No
`ztunnel` | `ComponentSpec` |  | No
`istiodRemote` | `ComponentSpec` | Remote cluster using an external control plane. | No
`ingressGateways` | `GatewaySpec[]` |  | No
`egressGateways` | `GatewaySpec[]` |  | No

## BaseComponentSpec

Configuration for base component.

Field | Type | Description | Required
--- | --- | --- | ---
`enabled` | `BoolValue` | Selects whether this component is installed. | No
`k8s` | `KubernetesResourcesSpec` | Kubernetes resource spec. | No

## ComponentSpec

Configuration for internal components.

Field | Type | Description | Required
--- | --- | --- | ---
`enabled` | `BoolValue` | Selects whether this component is installed. | No
`namespace` | `string` | Namespace for the component. | No
`hub` | `string` | Hub for the component (overrides top level hub setting). | No
`tag` | `Value` | Tag for the component (overrides top level tag setting). | No
`spec` | `Struct` | Arbitrary install time configuration for the component. | No
`k8s` | `KubernetesResourcesSpec` | Kubernetes resource spec. | No

## ExternalComponentSpec

Configuration for external components.

Field | Type | Description | Required
--- | --- | --- | ---
`enabled` | `BoolValue` | Selects whether this component is installed. | No
`namespace` | `string` | Namespace for the component. | No
`spec` | `Struct` | Arbitrary install time configuration for the component. | No
`chartPath` | `string` | Chart path for addon components. | No
`schema` | `Any` | Optional schema to validate spec against. | No
`k8s` | `KubernetesResourcesSpec` | Kubernetes resource spec. | No

## GatewaySpec

Configuration for gateways.

Field | Type | Description | Required
--- | --- | --- | ---
`enabled` | `BoolValue` | Selects whether this gateway is installed. | No
`namespace` | `string` | Namespace for the gateway. | No
`name` | `string` | Name for the gateway. | No
`label` | `map<string, string>` | Labels for the gateway. | No
`hub` | `string` | Hub for the component (overrides top level hub setting). | No
`tag` | `Value` | Tag for the component (overrides top level tag setting). | No
`k8s` | `KubernetesResourcesSpec` | Kubernetes resource spec. | No

## KubernetesResourcesSpec

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

Field | Type | Description | Required
--- | --- | --- | ---
`affinity` | `Affinity` | k8s affinity. https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity | No
`env` | `EnvVar[]` | Deployment environment variables. https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/ | No
`hpaSpec` | `HorizontalPodAutoscalerSpec` | k8s HorizontalPodAutoscaler settings. https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/ | No
`imagePullPolicy` | `string` | k8s imagePullPolicy. https://kubernetes.io/docs/concepts/containers/images/ | No
`nodeSelector` | `map<string, string>` | k8s nodeSelector. https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector | No
`podDisruptionBudget` | `PodDisruptionBudgetSpec` | k8s PodDisruptionBudget settings. https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#how-disruption-budgets-work | No
`podAnnotations` | `map<string, string>` | k8s pod annotations. https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ | No
`priorityClassName` | `string` | k8s priority_class_name. Default for all resources unless overridden. https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass | No
`readinessProbe` | `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
`replicaCount` | `uint32` | k8s Deployment replicas setting. https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ | No
`resources` | `Resources` | k8s resources settings. https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-container | No
`service` | `ServiceSpec` | k8s Service settings. https://kubernetes.io/docs/concepts/services-networking/service/ | No
`strategy` | `DeploymentStrategy` | k8s deployment strategy. https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ | No
`tolerations` | `Toleration[]` | k8s toleration https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ | No
`serviceAnnotations` | `map<string, string>` | k8s service annotations. https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ | No
`securityContext` | `PodSecurityContext` | k8s pod security context https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod | No
`volumes` | `Volume[]` | k8s volume https://kubernetes.io/docs/concepts/storage/volumes/ Volumes defines the collection of Volume to inject into the pod. | No
`volumeMounts` | `VolumeMount[]` | k8s volumeMounts VolumeMounts defines the collection of VolumeMount to inject into containers. | No
`overlays` | `K8sObjectOverlay[]` | Overlays for k8s resources in rendered manifests. | No

## K8sObjectOverlay

Patch for an existing k8s resource.

Field | Type | Description | Required
--- | --- | --- | ---
`apiVersion` | `string` | Resource API version. | No
`kind` | `string` | Resource kind. | No
`name` | `string` | Name of resource. Namespace is always the component namespace. | No
`patches` | `PathValue[]` | List of patches to apply to resource. | No

## Affinity

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

Field | Type | Description | Required
--- | --- | --- | ---
`nodeAffinity` | `NodeAffinity` |  | No
`podAffinity` | `PodAffinity` |  | No
`podAntiAffinity` | `PodAntiAffinity` |  | No

## ConfigMapKeySelector

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

Field | Type | Description | Required
--- | --- | --- | ---
`localObjectReference` | `LocalObjectReference` |  | No
`key` | `string` |  | No
`optional` | `bool` |  | No

## ContainerResourceMetricSource

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

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No
`target` | `MetricTarget` |  | No
`container` | `string` |  | No

## ContainerResourceMetricStatus

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

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No
`current` | `MetricValueStatus` |  | No
`container` | `string` |  | No

## ClientIPConfig

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

Field | Type | Description | Required
--- | --- | --- | ---
`timeoutSeconds` | `int32` |  | No

## CrossVersionObjectReference

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

Field | Type | Description | Required
--- | --- | --- | ---
`kind` | `string` |  | No
`name` | `string` |  | No
`apiVersion` | `string` |  | No

## DeploymentStrategy

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

Field | Type | Description | Required
--- | --- | --- | ---
`type` | `string` |  | No
`rollingUpdate` | `RollingUpdateDeployment` |  | No

## EnvVar

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

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No
`value` | `string` |  | No
`valueFrom` | `EnvVarSource` |  | No

## EnvVarSource

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

Field | Type | Description | Required
--- | --- | --- | ---
`fieldRef` | `ObjectFieldSelector` |  | No
`resourceFieldRef` | `ResourceFieldSelector` |  | No
`configMapKeyRef` | `ConfigMapKeySelector` |  | No
`secretKeyRef` | `SecretKeySelector` |  | No

## ExecAction

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

Field | Type | Description | Required
--- | --- | --- | ---
`command` | `string[]` |  | No

## ExternalMetricSource

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

Field | Type | Description | Required
--- | --- | --- | ---
`metric` | `MetricIdentifier` |  | No
`target` | `MetricTarget` |  | No
`metricName` | `string` |  | No
`metricSelector` | `LabelSelector` |  | No
`targetValue` | `IntOrString` |  | No
`targetAverageValue` | `IntOrString` |  | No

## ExternalMetricStatus

See k8s.io.autoscaling.v2beta2.ExternalMetricStatus.

Field | Type | Description | Required
--- | --- | --- | ---
`metric` | `MetricIdentifier` |  | No
`current` | `MetricValueStatus` |  | No

## HTTPGetAction

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

Field | Type | Description | Required
--- | --- | --- | ---
`path` | `string` |  | No
`port` | `IntOrString` |  | No
`host` | `string` |  | No
`scheme` | `string` |  | No
`httpHeaders` | `HTTPHeader[]` |  | No

## HTTPHeader

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

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No
`value` | `string` |  | No

## HorizontalPodAutoscalerSpec

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

Field | Type | Description | Required
--- | --- | --- | ---
`scaleTargetRef` | `CrossVersionObjectReference` |  | No
`minReplicas` | `int32` |  | No
`maxReplicas` | `int32` |  | No
`metrics` | `MetricSpec[]` |  | No
`behavior` | `HorizontalPodAutoScalerBehavior` |  | No

## HorizontalPodAutoScalerBehavior

See k8s.io.autoscaling.v2beta2.HorizontalPodAutoScalerBehavior.

Field | Type | Description | Required
--- | --- | --- | ---
`scaleUp` | `HPAScalingRules` |  | No
`scaleDown` | `HPAScalingRules` |  | No

## HPAScalingRules

See k8s.io.autoscaling.v2beta2.HPAScalingRules.

Field | Type | Description | Required
--- | --- | --- | ---
`stabilizationWindowSeconds` | `int32` |  | No
`selectPolicy` | `string` |  | No
`policies` | `HPAScalingPolicy[]` |  | No

## HPAScalingPolicy

See k8s.io.autoscaling.v2beta2.HPAScalingPolicy.

Field | Type | Description | Required
--- | --- | --- | ---
`type` | `string` |  | No
`value` | `int32` |  | No
`periodSeconds` | `int32` |  | No

## LocalObjectReference

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

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No

## MetricIdentifier

See k8s.io.autoscaling.v2beta2.MetricIdentifier.

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string (oneof)` |  | No
`selector` | `LabelSelector` |  | No

## MetricSpec

See k8s.io.autoscaling.v2beta2.MetricSpec.

Field | Type | Description | Required
--- | --- | --- | ---
`type` | `string` |  | No
`object` | `ObjectMetricSource` |  | No
`pods` | `PodsMetricSource` |  | No
`resource` | `ResourceMetricSource` |  | No
`containerResource` | `ContainerResourceMetricSource` |  | No
`external` | `ExternalMetricSource` |  | No

## MetricStatus

See k8s.io.autoscaling.v2beta2.MetricStatus.

Field | Type | Description | Required
--- | --- | --- | ---
`type` | `string` |  | No
`object` | `ObjectMetricStatus` |  | No
`pods` | `PodsMetricStatus` |  | No
`resource` | `ResourceMetricStatus` |  | No
`containerResource` | `ContainerResourceMetricStatus` |  | No
`external` | `ExternalMetricStatus` |  | No

## MetricTarget

See k8s.io.autoscaling.v2beta2.MetricTarget.

Field | Type | Description | Required
--- | --- | --- | ---
`type` | `string` |  | No
`value` | `IntOrString` |  | No
`averageValue` | `IntOrString` |  | No
`averageUtilization` | `int32` |  | No

## MetricValueStatus

See k8s.io.autoscaling.v2beta2.MetricValueStatus.

Field | Type | Description | Required
--- | --- | --- | ---
`value` | `IntOrString` |  | No
`averageValue` | `IntOrString` |  | No
`averageUtilization` | `int32` |  | No

## NodeAffinity

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

Field | Type | Description | Required
--- | --- | --- | ---
`requiredDuringSchedulingIgnoredDuringExecution` | `NodeSelector` |  | No
`preferredDuringSchedulingIgnoredDuringExecution` | `PreferredSchedulingTerm[]` |  | No

## NodeSelector

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

Field | Type | Description | Required
--- | --- | --- | ---
`nodeSelectorTerms` | `NodeSelectorTerm[]` |  | No

## NodeSelectorTerm

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

Field | Type | Description | Required
--- | --- | --- | ---
`matchExpressions` | `NodeSelectorRequirement[]` |  | No
`matchFields` | `NodeSelectorRequirement[]` |  | No

## NodeSelectorRequirement

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

Field | Type | Description | Required
--- | --- | --- | ---
`key` | `string` |  | No
`operator` | `string` |  | No
`values` | `string[]` |  | No

## ObjectFieldSelector

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

Field | Type | Description | Required
--- | --- | --- | ---
`apiVersion` | `string` |  | No
`fieldPath` | `string` |  | No

## ObjectMeta

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

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No
`namespace` | `string` |  | No

## ObjectMetricSource

See k8s.io.autoscaling.v2beta2.ObjectMetricSource.

Field | Type | Description | Required
--- | --- | --- | ---
`target` | `Value` | Type changes from CrossVersionObjectReference to ResourceMetricTarget in autoscaling v2beta2/v2 compared with v2beta1 Change it to dynamic type to keep backward compatible | No
`describedObject` | `CrossVersionObjectReference` |  | No
`metric` | `MetricIdentifier` |  | No
`metricName` | `string` |  | No
`targetValue` | `IntOrString` |  | No
`selector` | `LabelSelector` |  | No
`averageValue` | `IntOrString` |  | No

## ObjectMetricStatus

See k8s.io.autoscaling.v2beta2.ObjectMetricStatus.

Field | Type | Description | Required
--- | --- | --- | ---
`metric` | `MetricIdentifier` |  | No
`current` | `MetricValueStatus` |  | No
`describedObject` | `CrossVersionObjectReference` |  | No

## PodAffinity

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

Field | Type | Description | Required
--- | --- | --- | ---
`requiredDuringSchedulingIgnoredDuringExecution` | `PodAffinityTerm[]` |  | No
`preferredDuringSchedulingIgnoredDuringExecution` | `WeightedPodAffinityTerm[]` |  | No

## PodAntiAffinity

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

Field | Type | Description | Required
--- | --- | --- | ---
`requiredDuringSchedulingIgnoredDuringExecution` | `PodAffinityTerm[]` |  | No
`preferredDuringSchedulingIgnoredDuringExecution` | `WeightedPodAffinityTerm[]` |  | No

## PodAffinityTerm

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

Field | Type | Description | Required
--- | --- | --- | ---
`labelSelector` | `LabelSelector` |  | No
`namespaces` | `string[]` |  | No
`topologyKey` | `string` |  | No

## PodDisruptionBudgetSpec

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

Field | Type | Description | Required
--- | --- | --- | ---
`minAvailable` | `IntOrString` |  | No
`selector` | `LabelSelector` |  | No
`maxUnavailable` | `IntOrString` |  | No

## PodsMetricSource

See k8s.io.autoscaling.v2beta2.PodsMetricSource.

Field | Type | Description | Required
--- | --- | --- | ---
`metric` | `MetricIdentifier` | v2beta2/v2 fields | No
`target` | `MetricTarget` |  | No
`metricName` | `string` |  | No
`targetAverageValue` | `IntOrString` |  | No
`selector` | `LabelSelector` |  | No

## PodsMetricStatus

See k8s.io.autoscaling.v2beta2.PodsMetricStatus.

Field | Type | Description | Required
--- | --- | --- | ---
`metric` | `MetricIdentifier` |  | No
`current` | `MetricValueStatus` |  | No

## PreferredSchedulingTerm

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

Field | Type | Description | Required
--- | --- | --- | ---
`weight` | `int32` |  | No
`preference` | `NodeSelectorTerm` |  | No

## ReadinessProbe

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

Field | Type | Description | Required
--- | --- | --- | ---
`exec` | `ExecAction` |  | No
`httpGet` | `HTTPGetAction` |  | No
`tcpSocket` | `TCPSocketAction` |  | No
`initialDelaySeconds` | `int32` |  | No
`timeoutSeconds` | `int32` |  | No
`periodSeconds` | `int32` |  | No
`successThreshold` | `int32` |  | No
`failureThreshold` | `int32` |  | No

## ResourceFieldSelector

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

Field | Type | Description | Required
--- | --- | --- | ---
`containerName` | `string` |  | No
`resource` | `string` |  | No
`divisor` | `IntOrString` |  | No

## ResourceMetricSource

See k8s.io.autoscaling.v2beta2.ResourceMetricSource.

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No
`target` | `MetricTarget` |  | No
`targetAverageUtilization` | `int32` |  | No
`targetAverageValue` | `IntOrString` |  | No

## ResourceMetricStatus

See k8s.io.autoscaling.v2beta2.ResourceMetricStatus.

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No
`current` | `MetricValueStatus` |  | No

## Resources

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

Field | Type | Description | Required
--- | --- | --- | ---
`limits` | `map<string, string>` |  | No
`requests` | `map<string, string>` |  | No

## RollingUpdateDeployment

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

Field | Type | Description | Required
--- | --- | --- | ---
`maxUnavailable` | `IntOrString` |  | No
`maxSurge` | `IntOrString` |  | No

## SecretKeySelector

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

Field | Type | Description | Required
--- | --- | --- | ---
`localObjectReference` | `LocalObjectReference` |  | No
`key` | `string` |  | No
`optional` | `bool` |  | No

## ServiceSpec

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

Field | Type | Description | Required
--- | --- | --- | ---
`ports` | `ServicePort[]` |  | No
`selector` | `map<string, string>` |  | No
`clusterIP` | `string` |  | No
`type` | `string` |  | No
`externalIPs` | `string[]` |  | No
`sessionAffinity` | `string` |  | No
`loadBalancerIP` | `string` |  | No
`loadBalancerSourceRanges` | `string[]` |  | No
`externalName` | `string` |  | No
`externalTrafficPolicy` | `string` |  | No
`healthCheckNodePort` | `int32` |  | No
`publishNotReadyAddresses` | `bool` |  | No
`sessionAffinityConfig` | `SessionAffinityConfig` |  | No

## ServicePort

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

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No
`protocol` | `string` |  | No
`port` | `int32` |  | No
`targetPort` | `IntOrString` |  | No
`nodePort` | `int32` |  | No
`appProtocol` | `string` |  | No

## SessionAffinityConfig

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

Field | Type | Description | Required
--- | --- | --- | ---
`clientIP` | `ClientIPConfig` |  | No

## TCPSocketAction

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

Field | Type | Description | Required
--- | --- | --- | ---
`port` | `IntOrString` |  | No
`host` | `string` |  | No

## Toleration

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

Field | Type | Description | Required
--- | --- | --- | ---
`key` | `string` |  | No
`operator` | `string` |  | No
`value` | `string` |  | No
`effect` | `string` |  | No
`tolerationSeconds` | `int64` |  | No

## WeightedPodAffinityTerm

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

Field | Type | Description | Required
--- | --- | --- | ---
`weight` | `int32` |  | No
`podAffinityTerm` | `PodAffinityTerm` |  | No

## PodSecurityContext

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

Field | Type | Description | Required
--- | --- | --- | ---
`seLinuxOptions` | `SELinuxOptions` |  | No
`runAsUser` | `int64` |  | No
`runAsNonRoot` | `bool` |  | No
`supplementalGroups` | `int64[]` |  | No
`fsGroup` | `int64` |  | No
`runAsGroup` | `int64` |  | No
`sysctls` | `Sysctl[]` |  | No
`windowsOptions` | `WindowsSecurityContextOptions` |  | No
`fsGroupChangePolicy` | `string` |  | No
`seccompProfile` | `SeccompProfile` |  | No

## SELinuxOptions

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

Field | Type | Description | Required
--- | --- | --- | ---
`user` | `string` |  | No
`role` | `string` |  | No
`type` | `string` |  | No
`level` | `string` |  | No

## Sysctl

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

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` |  | No
`value` | `string` |  | No

## WindowsSecurityContextOptions

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

Field | Type | Description | Required
--- | --- | --- | ---
`gmsaCredentialSpecName` | `string` |  | No
`gmsaCredentialSpec` | `string` |  | No
`runAsUserName` | `string` |  | No

## SeccompProfile

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

Field | Type | Description | Required
--- | --- | --- | ---
`type` | `string` |  | No
`localhostProfile` | `string` |  | No

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

Field | Type | Description | Required
--- | --- | --- | ---
`type` | `int64` |  | No
`intVal` | `Int32Value` |  | No
`strVal` | `StringValue` |  | No

## InstallStatus.VersionStatus

VersionStatus is the status and version of a component.

Field | Type | Description | Required
--- | --- | --- | ---
`version` | `string` |  | No
`status` | `Status` |  | No
`error` | `string` |  | No

## K8sObjectOverlay.PathValue

Field | Type | Description | Required
--- | --- | --- | ---
`path` | `string` | 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` | 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.

Field | Type | Description | Required
--- | --- | --- | ---
`nullValue` | `NullValue (oneof)` | Represents a null value. | No
`numberValue` | `double (oneof)` | Represents a double value. | No
`stringValue` | `string (oneof)` | Represents a string value. | No
`boolValue` | `bool (oneof)` | Represents a boolean value. | No
`structValue` | `Struct (oneof)` | Represents a structured value. | No
`listValue` | `ListValue (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.

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` | 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` | 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.

Field | Type | Description | Required
--- | --- | --- | ---
`name` | `string` | This must match the Name of a Volume. | No
`readOnly` | `bool` | Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. +optional | No
`mountPath` | `string` | Path within the container at which the volume should be mounted. Must not contain ‘:’. | No
`subPath` | `string` | Path within the volume from which the container’s volume should be mounted. Defaults to "" (volume’s root). +optional | No
`mountPropagation` | `string` | 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
`subPathExpr` | `string` | 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

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

Field | Type | Description | Required
--- | --- | --- | ---
`matchLabels` | `map<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` | `LabelSelectorRequirement[]` | matchExpressions is a list of label selector requirements. The requirements are ANDed. +optional | No

## InstallStatus.Status

Status describes the current state of a component.

Name | Description
--- | ---
`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.
`ACTION_REQUIRED` | 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.