Configuration affecting Istio control plane installation version and shape.
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)
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.
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.
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.
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.
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
matchExpressions is a list of label selector requirements. The requirements are ANDed.
+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.
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.