--- WARNING: THIS IS AN AUTO-GENERATED FILE, DO NOT EDIT. PLEASE MODIFY THE ORIGINAL SOURCE IN THE 'https://github.com/istio/api' REPO source_repo: https://github.com/istio/api 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: 60 ---

Configuration affecting Istio control plane installation version and shape.

Affinity

Mirrors k8s.io.api.core.v1.

Field Type Description Required
nodeAffinity NodeAffinity No
podAffinity PodAffinity No
podAntiAffinity PodAntiAffinity No

BaseComponentSpec

Configuration for base component.

Field Type Description Required
enabled TypeBoolValueForPB

Selects whether this component is installed.

No

ClientIPConfig

Field Type Description Required
timeoutSeconds int32 No

ComponentSpec

Configuration for internal components.

Field Type Description Required
enabled TypeBoolValueForPB

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 TypeInterface

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

No
spec TypeInterface

Arbitrary install time configuration for the component.

No
k8s KubernetesResourcesSpec

Kubernetes resource spec.

No

ConfigMapKeySelector

Field Type Description Required
localObjectReference LocalObjectReference No
key string No
optional bool No

CrossVersionObjectReference

Field Type Description Required
kind string No
name string No
apiVersion string No

DeploymentStrategy

Mirrors k8s.io.api.apps.v1.DeploymentStrategy for unmarshaling.

Field Type Description Required
type string No
rollingUpdate RollingUpdateDeployment No

EnvVar

Field Type Description Required
name string No
value string No
valueFrom EnvVarSource No

EnvVarSource

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

ExecAction

Mirrors k8s.io.api.core.v1.ExecAction for unmarshaling.

Field Type Description Required
command string[] No

ExternalComponentSpec

Configuration for external components.

Field Type Description Required
enabled TypeBoolValueForPB

Selects whether this component is installed.

No
namespace string

Namespace for the component.

No
spec TypeInterface

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

ExternalMetricSource

Field Type Description Required
metricName string No
metricSelector LabelSelector No
targetValue Quantity No
targetAverageValue Quantity No

GatewaySpec

Configuration for gateways.

Field Type Description Required
enabled TypeBoolValueForPB

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 TypeInterface

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

No
k8s KubernetesResourcesSpec

Kubernetes resource spec.

No

HTTPGetAction

Mirrors k8s.io.api.core.v1.HTTPGetAction for unmarshaling.

Field Type Description Required
path string No
port TypeInterface_kubernetes No
host string No
scheme string No
httpHeaders HTTPHeader[] No

HTTPHeader

Mirrors k8s.io.api.core.v1.HTTPHeader for unmarshaling.

Field Type Description Required
name string No
value string No

HorizontalPodAutoscalerSpec

Field Type Description Required
scaleTargetRef CrossVersionObjectReference No
minReplicas int32 No
maxReplicas int32 No
metrics MetricSpec[] 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.

No
componentStatus map<string, VersionStatus>

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

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.

InstallStatus.VersionStatus

VersionStatus is the status and version of a component.

Field Type Description Required
version string No
status Status No
error string No

IstioComponentSetSpec

IstioComponentSpec defines the desired installed state of Istio components.

Field Type Description Required
base BaseComponentSpec No
pilot ComponentSpec No
proxy ComponentSpec No
sidecarInjector ComponentSpec No
policy ComponentSpec No
telemetry ComponentSpec No
citadel ComponentSpec No
nodeAgent ComponentSpec No
galley ComponentSpec No
cni ComponentSpec No
ingressGateways GatewaySpec[] No
egressGateways GatewaySpec[] No

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.

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 TypeInterface2

Version tag for docker images e.g. 1.0.6

No
namespace string

Namespace to install control plane resources into. If unset, Istio will be installed into the same namespace as the IstioOperator CR.

No
revision string

Identify the revision this installation is associated with. This option is currently experimental.

No
meshConfig MeshConfig

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
addonComponents map<string, ExternalComponentSpec>

Extra addon components which are not explicitly specified above.

No
values TypeMapStringInterface2

Overrides for default values.yaml. This is a validated pass-through to Helm templates. See the Helm installation options for schema details: https://istio.io/docs/reference/config/installation-options/. 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 TypeMapStringInterface2

Unvalidated overrides for default values.yaml. Used for custom templates where new parameters are added.

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

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 TypeInterface

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

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 priorityclassname. 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
overlays K8sObjectOverlay[]

Overlays for k8s resources in rendered manifests.

No

LocalObjectReference

Field Type Description Required
name string No

MetricSpec

Field Type Description Required
type string No
object ObjectMetricSource No
pods PodsMetricSource No
resource ResourceMetricSource No
external ExternalMetricSource No

NodeAffinity

Field Type Description Required
requiredDuringSchedulingIgnoredDuringExecution NodeSelector No
preferredDuringSchedulingIgnoredDuringExecution PreferredSchedulingTerm[] No

NodeSelector

Field Type Description Required
nodeSelectorTerms NodeSelectorTerm[] No

NodeSelectorRequirement

Field Type Description Required
key string No
operator string No
values string[] No

NodeSelectorTerm

Field Type Description Required
matchExpressions NodeSelectorRequirement[] No
matchFields NodeSelectorRequirement[] No

ObjectFieldSelector

Field Type Description Required
apiVersion string No
fieldPath string No

ObjectMeta

Field Type Description Required
name string

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

No
namespace string No

ObjectMetricSource

Field Type Description Required
target CrossVersionObjectReference No
metricName string No
targetValue Quantity No
selector LabelSelector No
averageValue Quantity No

PodAffinity

Field Type Description Required
requiredDuringSchedulingIgnoredDuringExecution PodAffinityTerm[] No
preferredDuringSchedulingIgnoredDuringExecution WeightedPodAffinityTerm[] No

PodAffinityTerm

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

PodAntiAffinity

Field Type Description Required
requiredDuringSchedulingIgnoredDuringExecution PodAffinityTerm[] No
preferredDuringSchedulingIgnoredDuringExecution WeightedPodAffinityTerm[] No

PodDisruptionBudgetSpec

Mirrors k8s.io.api.policy.v1beta1.PodDisruptionBudget for unmarshaling.

Field Type Description Required
minAvailable uint32 No
selector LabelSelector No
maxUnavailable uint32 No

PodsMetricSource

Field Type Description Required
metricName string No
targetAverageValue Quantity No
selector LabelSelector No

PreferredSchedulingTerm

Field Type Description Required
weight int32 No
preference NodeSelectorTerm No

ReadinessProbe

Mirrors k8s.io.api.core.v1.Probe for unmarshaling.

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

Field Type Description Required
containerName string No
resource string No
divisor Quantity No

ResourceMetricSource

Field Type Description Required
name string No
targetAverageUtilization TypeInterface_kubernetes No
targetAverageValue Quantity No

Resources

Mirrors k8s.io.api.core.v1.ResourceRequirements for unmarshaling.

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

RollingUpdateDeployment

Mirrors k8s.io.api.apps.v1.RollingUpdateDeployment for unmarshaling.

Field Type Description Required
maxUnavailable TypeInterface_kubernetes No
maxSurge TypeInterface_kubernetes No

SecretKeySelector

Field Type Description Required
localObjectReference LocalObjectReference No
key string No
optional bool No

ServicePort

Field Type Description Required
name string No
protocol string No
port int32 No
targetPort TypeInterface_kubernetes No
nodePort int32 No

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

SessionAffinityConfig

Field Type Description Required
clientIP ClientIPConfig No

TCPSocketAction

Mirrors k8s.io.api.core.v1.TCPSocketAction for unmarshaling.

Field Type Description Required
port TypeInterface_kubernetes No
host string No

TypeBoolValueForPB

GOTYPE: *BoolValueForPB

TypeIntOrStringForPB

GOTYPE: *IntOrStringForPB

TypeInterface

GOTYPE: interface{}

TypeInterface2

GOTYPE: interface{}

TypeInterface_kubernetes

GOTYPE: interface{}

TypeMapStringInterface

GOTYPE: map[string]interface{}

TypeMapStringInterface2

This is required because synthetic type definition has file rather than package scope. GOTYPE: map[string]interface{}

WeightedPodAffinityTerm

Field Type Description Required
weight int32 No
podAffinityTerm PodAffinityTerm No

k8s.io.api.core.v1.Toleration

The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>.

Field Type Description Required
key string

Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. +optional

No
operator string

Operator represents a key’s relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. +optional

No
value string

Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. +optional

No
effect string

Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. +optional

No
tolerationSeconds int64

TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. +optional

No

k8s.io.apimachinery.pkg.api.resource.Quantity

Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and Int64() accessors.

The serialization format is:

::= (Note that may be empty, from the “” case in .) ::= 0 | 1 | … | 9 ::= | ::= | . | . | . ::= “+” | “-” ::= | ::= | | ::= Ki | Mi | Gi | Ti | Pi | Ei (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html) ::= m | “” | k | M | G | T | P | E (Note that 1024 = 1Ki but 1000 = 1k; I didn’t choose the capitalization.) ::= “e” | “E”

No matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.

When a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.

Before serializing, Quantity will be put in “canonical form”. This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that: a. No precision is lost b. No fractional digits will be emitted c. The exponent (or suffix) is as large as possible. The sign will be omitted unless the number is negative.

Examples: 1.5 will be serialized as “1500m” 1.5Gi will be serialized as “1536Mi”

Note that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.

Non-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don’t diff.)

This format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation.

+protobuf=true +protobuf.embed=string +protobuf.options.marshal=false +protobuf.options.(gogoproto.goproto_stringer)=false +k8s:deepcopy-gen=true +k8s:openapi-gen=true

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

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