• Installation Options (istioctl)
    • AutoInjectionFeatureSpec
    • AutoInjectionFeatureSpec.Components
    • CNIComponentSpec
    • CNIFeatureSpec
    • CNIFeatureSpec.Components
    • CertManagerComponentSpec
    • CitadelComponentSpec
    • ConfigManagementFeatureSpec
    • ConfigManagementFeatureSpec.Components
    • CoreDNSComponentSpec
    • CoreDNSFeatureSpec
    • CoreDNSFeatureSpec.Components
    • DeploymentStrategy
    • EgressGatewayComponentSpec
    • ExecAction
    • GalleyComponentSpec
    • GatewayFeatureSpec
    • GatewayFeatureSpec.Components
    • HTTPGetAction
    • HTTPHeader
    • IngressGatewayComponentSpec
    • InstallStatus
    • InstallStatus.Status
    • InstallStatus.VersionStatus
    • IstioControlPlane
    • IstioControlPlaneSpec
    • KubernetesResourcesSpec
    • NodeAgentComponentSpec
    • ObjectMeta
    • PilotComponentSpec
    • PodDisruptionBudgetSpec
    • PolicyComponentSpec
    • PolicyFeatureSpec
    • PolicyFeatureSpec.Components
    • ProxyComponentSpec
    • ReadinessProbe
    • Resources
    • RollingUpdateDeployment
    • SecurityFeatureSpec
    • SecurityFeatureSpec.Components
    • SidecarInjectorComponentSpec
    • TCPSocketAction
    • TelemetryComponentSpec
    • TelemetryFeatureSpec
    • TelemetryFeatureSpec.Components
    • TrafficManagementFeatureSpec
    • TrafficManagementFeatureSpec.Components
    • TypeBoolValueForPB
    • TypeIntOrStringForPB
    • TypeInterface
    • TypeMapStringInterface
    • k8s.io.api.autoscaling.v2beta1.HorizontalPodAutoscalerSpec
    • k8s.io.api.core.v1.Affinity
    • k8s.io.api.core.v1.EnvVar
    • k8s.io.api.core.v1.ServiceSpec
    • k8s.io.api.core.v1.Toleration
    • k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector
    • k8sObjectOverlay
    • k8sObjectOverlay.PathValue

    Installation Options (istioctl)

    IstioControlPlane is a schema for both defining and customizing Istio control plane installations.Running the operator with an empty user defined InstallSpec results in an control plane with default values, using thedefault charts.

    The simplest install specialization is to point the user InstallSpec profile to a different values file, forexample an Istio minimal control plane, which will use the values associated with the minimal control plane profile forIstio.

    Deeper customization is possible at three levels:

    • New APIs defined in this file

    Feature API: this API groups an Istio install by features and allows enabling/disabling the features, selecting basecontrol plane profiles, as well as some additional high level settings that are feature specific. Each feature containsone or more components, which correspond to Istio components (Pods) in the cluster.

    k8s API: this API is a pass through to k8s resource settings for Istio k8s resources. It allows customizing Istio k8sresources like Affinity, Resource requests/limits, PodDisruptionBudgetSpec, Selectors etc. in a more consistent andk8s specific way compared to values.yaml. See KubernetesResourcesSpec in this file for details.

    • values.yaml

    The entirety of values.yaml settings is accessible through InstallSpec (see CommonComponentSpec/Values).This API will gradually be deprecated and values there will be moved either into CRDs that are used to directlyconfigure components or, in the case of k8s settings, will be replaced by the new API above.

    • k8s resource overlays

    Once a manifest is rendered from InstallSpec, a further customization can be applied by specifying k8s resourceoverlays. The concept is similar to kustomize, where JSON patches are applied for object paths. This allowscustomization at the lowest level and eliminates the need to create ad-hoc template parameters, or edit templates.

    Here are a few example uses:

    • Default Istio install
    1. spec:
    • Default minimal profile install
    1. spec:
    2. profile: minimal
    • Default install with telemetry disabled
    1. spec:
    2. telemetry:
    3. enabled: false
    • Default install with each feature installed to different namespace and security components in separate namespaces
    1. spec:
    2. traffic_management:
    3. components:
    4. namespace: istio-traffic-management
    5. policy:
    6. components:
    7. namespace: istio-policy
    8. telemetry:
    9. components:
    10. namespace: istio-telemetry
    11. config_management:
    12. components:
    13. namespace: istio-config-management
    14. security:
    15. components:
    16. citadel:
    17. namespace: istio-citadel
    18. cert_manager:
    19. namespace: istio-cert-manager
    20. node_agent:
    21. namespace: istio-node-agent
    • Default install with specialized k8s settings for pilot
    1. spec:
    2. traffic_management:
    3. components:
    4. pilot:
    5. k8s:
    6. resources:
    7. limits:
    8. cpu: 444m
    9. memory: 333Mi
    10. requests:
    11. cpu: 222m
    12. memory: 111Mi
    13. readinessProbe:
    14. failureThreshold: 44
    15. initialDelaySeconds: 11
    16. periodSeconds: 22
    17. successThreshold: 33
    • Default install with values.yaml customizations for proxy
    1. spec:
    2. traffic_management:
    3. components:
    4. proxy:
    5. values:
    6. - global.proxy.enableCoreDump: true
    7. - global.proxy.dnsRefreshRate: 10s
    • Default install with modification to container flag in galley
    1. spec:
    2. configuration_management:
    3. components:
    4. galley:
    5. k8s:
    6. overlays:
    7. - apiVersion: extensions/v1beta1
    8. kind: Deployment
    9. name: istio-galley
    10. patches:
    11. - path: spec.template.spec.containers.[name:galley].command.[--livenessProbeInterval]
    12. value: --livenessProbeInterval=123s

    AutoInjectionFeatureSpec

    Configuration options for auto injection feature.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBSelects whether auto injection feature is installed. Must be set for any sub-component to be installed.No
    componentsComponentsNo

    AutoInjectionFeatureSpec.Components

    FieldTypeDescriptionRequired
    namespacestringNamespace that auto injections components are installed into.No
    injectorSidecarInjectorComponentSpecNo

    CNIComponentSpec

    Configuration options for cni component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    CNIFeatureSpec

    Configuration options for cni feature.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBSelects whether CNI feature is installed. Must be set for any sub-component to be installed.No
    componentsComponentsNo

    CNIFeatureSpec.Components

    FieldTypeDescriptionRequired
    namespacestringNamespace that cni components are installed into.No
    cniCNIComponentSpecNo

    CertManagerComponentSpec

    Configuration options for certificate manager component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    CitadelComponentSpec

    Configuration options for Citadel component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    ConfigManagementFeatureSpec

    Configuration options for configuration management feature.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBSelects whether config management feature is installed. Must be set for any sub-component to be installed.No
    componentsComponentsNo

    ConfigManagementFeatureSpec.Components

    FieldTypeDescriptionRequired
    namespacestringNamespace that security components are installed into.No
    galleyGalleyComponentSpecNo

    CoreDNSComponentSpec

    Configuration options for CoreDNS component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    CoreDNSFeatureSpec

    Configuration options for CoreDNS feature.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBSelects whether CoreDNS feature is installed. Must be set for any sub-component to be installed.No
    componentsComponentsNo

    CoreDNSFeatureSpec.Components

    FieldTypeDescriptionRequired
    namespacestringNamespace that CoreDNS components are installed into.No
    coreDNSCoreDNSComponentSpecNo

    DeploymentStrategy

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

    FieldTypeDescriptionRequired
    typestringNo
    rollingUpdateRollingUpdateDeploymentNo

    EgressGatewayComponentSpec

    Configuration options for egress gateways.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    ExecAction

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

    FieldTypeDescriptionRequired
    commandstring[]No

    GalleyComponentSpec

    Configuration options for galley component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    GatewayFeatureSpec

    Configuration options for gateway feature.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBSelects whether gateway feature is installed. Must be set for any sub-component to be installed.No
    componentsComponentsNo

    GatewayFeatureSpec.Components

    FieldTypeDescriptionRequired
    namespacestringNamespace that auto injections components are installed into.No
    ingressGatewayIngressGatewayComponentSpecIngress/egress gateway configuration.No
    egressGatewayEgressGatewayComponentSpecNo

    HTTPGetAction

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

    FieldTypeDescriptionRequired
    pathstringNo
    portTypeIntOrStringForPBNo
    hoststringNo
    schemestringNo
    httpHeadersHTTPHeader[]No

    HTTPHeader

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

    FieldTypeDescriptionRequired
    namestringNo
    valuestringNo

    IngressGatewayComponentSpec

    Configuration options for ingress gateways.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    InstallStatus

    Observed state of IstioControlPlane.

    FieldTypeDescriptionRequired
    statusmap<string, VersionStatus>No

    InstallStatus.Status

    NameDescription
    NONE
    UPDATING
    HEALTHY
    ERROR
    RECONCILING

    InstallStatus.VersionStatus

    FieldTypeDescriptionRequired
    versionstringNo
    statusStatusNo
    statusStringstringNo
    errorstringNo

    IstioControlPlane

    IstioControlPlane is a CustomResourceDefinition (CRD) describing an Istio control plane.

    FieldTypeDescriptionRequired
    specIstioControlPlaneSpecSpec defines the desired state of IstioControlPlane.No
    statusInstallStatusStatus reports the status of the Istio control plane.No
    kindstringNo
    apiVersionstringNo
    placeholderstringGOFIELD:v11.ObjectMeta json:"metadata,omitempty" protobuf:"bytes,7,opt,name=metadata"GOFIELD:v11.TypeMeta json:",inline"No

    IstioControlPlaneSpec

    IstioControlPlaneSpec defines the desired state of IstioControlPlane.The spec is a used to define a customization of the default profile values that are supplied with each Istio release.It is grouped at the top level by feature, where behavior of Istio functional areas is specified.Each feature contains components, where k8s resource level defaults can be overridden.Because the spec is a customization API, specifying an empty InstallSpec results in a default Istio control plane.

    FieldTypeDescriptionRequired
    defaultNamespacestringDefault namespace if feature or component namespaces are not set.No
    trafficManagementTrafficManagementFeatureSpecSelection and configuration of core Istio features.No
    policyPolicyFeatureSpecNo
    telemetryTelemetryFeatureSpecNo
    securitySecurityFeatureSpecNo
    configManagementConfigManagementFeatureSpecNo
    autoInjectionAutoInjectionFeatureSpecNo
    gatewaysGatewayFeatureSpecNo
    cniCNIFeatureSpecNo
    coreDNSCoreDNSFeatureSpecNo
    valuesTypeMapStringInterfaceOverrides for default global values.yaml.No
    unvalidatedValuesTypeMapStringInterfaceUnvalidated overrides for default global values.yaml.No
    profilestringPath 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
    installPackagePathstringPath for the install package. e.g.- /tmp/istio-installer/nightly (local file path)No
    hubstringRoot for docker image paths e.g. docker.io/istio-release.Releases are published to docker hub under ‘istio’ project.Daily builds from prow are on gcr.io, and nightly builds from circle on docker.io/istionightlyNo
    tagstringVersion tag for docker images e.g. 1.0.6No

    KubernetesResourcesSpec

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

    FieldTypeDescriptionRequired
    affinityAffinityk8s affinity.https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinityNo
    envEnvVar[]Deployment environment variables.https://kubernetes.io/docs/tasks/inject-data-application/define-environment-variable-container/No
    hpaSpecHorizontalPodAutoscalerSpeck8s HorizontalPodAutoscaler settings.https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/No
    imagePullPolicystringk8s imagePullPolicy.https://kubernetes.io/docs/concepts/containers/images/No
    nodeSelectormap<string, string>k8s nodeSelector.https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselectorNo
    podDisruptionBudgetPodDisruptionBudgetSpeck8s PodDisruptionBudget settings.https://kubernetes.io/docs/concepts/workloads/pods/disruptions/#how-disruption-budgets-workNo
    podAnnotationsmap<string, string>k8s pod annotations.https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/No
    priorityClassNamestringk8s priority_class_name. Default for all resources unless overridden.https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclassNo
    readinessProbeReadinessProbek8s readinessProbe settings.https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/k8s.io.api.core.v1.Probe readiness_probe = 9;No
    replicaCountuint32k8s Deployment replicas setting.https://kubernetes.io/docs/concepts/workloads/controllers/deployment/No
    resourcesResourcesk8s resources settings.https://kubernetes.io/docs/concepts/configuration/manage-compute-resources-container/#resource-requests-and-limits-of-pod-and-containerNo
    serviceServiceSpeck8s Service settings.https://kubernetes.io/docs/concepts/services-networking/service/No
    strategyDeploymentStrategyk8s deployment strategy.https://kubernetes.io/docs/concepts/workloads/controllers/deployment/No
    tolerationsToleration[]k8s tolerationhttps://kubernetes.io/docs/concepts/configuration/taint-and-toleration/No
    overlaysk8sObjectOverlay[]Overlays for k8s resources in rendered manifests.No

    NodeAgentComponentSpec

    Configuration options for node agent component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    ObjectMeta

    FieldTypeDescriptionRequired
    namestringFrom k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMetaNo
    namespacestringNo

    PilotComponentSpec

    Configuration options for the pilot component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    PodDisruptionBudgetSpec

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

    FieldTypeDescriptionRequired
    minAvailableuint32No
    selectorLabelSelectorNo
    maxUnavailableuint32No

    PolicyComponentSpec

    Configuration options for the policy enforcement component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    PolicyFeatureSpec

    Configuration options for the policy feature.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBSelects whether policy is installed.Must be enabled to enable any sub-component.No
    componentsComponentsNo

    PolicyFeatureSpec.Components

    Component specific config.

    FieldTypeDescriptionRequired
    namespacestringNamespace that all policy components are installed into.No
    policyPolicyComponentSpecNo

    ProxyComponentSpec

    Configuration options for the proxy.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    ReadinessProbe

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

    FieldTypeDescriptionRequired
    execExecActionNo
    httpGetHTTPGetActionNo
    tcpSocketTCPSocketActionNo
    initialDelaySecondsint32No
    timeoutSecondsint32No
    periodSecondsint32No
    successThresholdint32No
    failureThresholdint32No

    Resources

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

    FieldTypeDescriptionRequired
    limitsmap<string, string>No
    requestsmap<string, string>No

    RollingUpdateDeployment

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

    FieldTypeDescriptionRequired
    maxUnavailableTypeIntOrStringForPBNo
    maxSurgeTypeIntOrStringForPBNo

    SecurityFeatureSpec

    Configuration options for security feature.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBSelects whether security feature is installed. Must be set for any sub-component to be installed.No
    componentsComponentsNo

    SecurityFeatureSpec.Components

    FieldTypeDescriptionRequired
    namespacestringNamespace that security components are installed into.No
    citadelCitadelComponentSpecNo
    certManagerCertManagerComponentSpecNo
    nodeAgentNodeAgentComponentSpecNo

    SidecarInjectorComponentSpec

    Configuration options for the sidecar injector component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    TCPSocketAction

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

    FieldTypeDescriptionRequired
    portTypeIntOrStringForPBNo
    hoststringNo

    TelemetryComponentSpec

    Configuration options for the telemetry component.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBNo
    namespacestringNo
    k8sKubernetesResourcesSpecNo

    TelemetryFeatureSpec

    Configuration options for the telemetry feature.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBSelects whether telemetry is installed.Must be enabled to enable any sub-component.No
    componentsComponentsNo

    TelemetryFeatureSpec.Components

    Component specific config.

    FieldTypeDescriptionRequired
    namespacestringNamespace that all telemetry components are installed into.No
    telemetryTelemetryComponentSpecNo

    TrafficManagementFeatureSpec

    Configuration options for traffic management.

    FieldTypeDescriptionRequired
    enabledTypeBoolValueForPBSelects whether traffic management is installed.Must be enabled to enable any sub-component.No
    componentsComponentsNo

    TrafficManagementFeatureSpec.Components

    Component specific config.

    FieldTypeDescriptionRequired
    namespacestringNamespace that all traffic management components are installed into.No
    pilotPilotComponentSpecNo
    proxyProxyComponentSpecNo

    TypeBoolValueForPB

    GOTYPE: *BoolValueForPB

    TypeIntOrStringForPB

    GOTYPE: *IntOrStringForPB

    TypeInterface

    GOTYPE: interface{}

    TypeMapStringInterface

    GOTYPE: map[string]interface{}

    k8s.io.api.autoscaling.v2beta1.HorizontalPodAutoscalerSpec

    HorizontalPodAutoscalerSpec describes the desired functionality of the HorizontalPodAutoscaler.

    FieldTypeDescriptionRequired
    scaleTargetRefCrossVersionObjectReferencescaleTargetRef points to the target resource to scale, and is used to the pods for which metricsshould be collected, as well as to actually change the replica count.No
    minReplicasint32minReplicas is the lower limit for the number of replicas to which the autoscalercan scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if thealpha feature gate HPAScaleToZero is enabled and at least one Object or Externalmetric is configured. Scaling is active as long as at least one metric value isavailable.+optionalNo
    maxReplicasint32maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up.It cannot be less that minReplicas.No
    metricsMetricSpec[]metrics contains the specifications for which to use to calculate thedesired replica count (the maximum replica count across all metrics willbe used). The desired replica count is calculated multiplying theratio between the target value and the current value by the currentnumber of pods. Ergo, metrics used must decrease as the pod count isincreased, and vice-versa. See the individual metric source types formore information about how each type of metric must respond.+optionalNo

    k8s.io.api.core.v1.Affinity

    Affinity is a group of affinity scheduling rules.

    FieldTypeDescriptionRequired
    nodeAffinityNodeAffinityDescribes node affinity scheduling rules for the pod.+optionalNo
    podAffinityPodAffinityDescribes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).+optionalNo
    podAntiAffinityPodAntiAffinityDescribes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).+optionalNo

    k8s.io.api.core.v1.EnvVar

    EnvVar represents an environment variable present in a Container.

    FieldTypeDescriptionRequired
    namestringName of the environment variable. Must be a C_IDENTIFIER.No
    valuestringVariable references $(VAR_NAME) are expandedusing the previous defined environment variables in the container andany service environment variables. If a variable cannot be resolved,the reference in the input string will be unchanged. The $(VAR_NAME)syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escapedreferences will never be expanded, regardless of whether the variableexists or not.Defaults to “”.+optionalNo
    valueFromEnvVarSourceSource for the environment variable’s value. Cannot be used if value is not empty.+optionalNo

    k8s.io.api.core.v1.ServiceSpec

    ServiceSpec describes the attributes that a user creates on a service.

    FieldTypeDescriptionRequired
    portsServicePort[]The list of ports that are exposed by this service.More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies+patchMergeKey=port+patchStrategy=merge+listType=map+listMapKey=port+listMapKey=protocolNo
    selectormap<string, string>Route service traffic to pods with label keys and values matching thisselector. If empty or not present, the service is assumed to have anexternal process managing its endpoints, which Kubernetes will notmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.Ignored if type is ExternalName.More info: https://kubernetes.io/docs/concepts/services-networking/service/+optionalNo
    clusterIPstringclusterIP is the IP address of the service and is usually assignedrandomly by the master. If an address is specified manually and is not inuse by others, it will be allocated to the service; otherwise, creationof the service will fail. This field can not be changed through updates.Valid values are “None”, empty string (“”), or a valid IP address. “None”can be specified for headless services when proxying is not required.Only applies to types ClusterIP, NodePort, and LoadBalancer. Ignored iftype is ExternalName.More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies+optionalNo
    typestringtype determines how the Service is exposed. Defaults to ClusterIP. Validoptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.“ExternalName” maps to the specified externalName.“ClusterIP” allocates a cluster-internal IP address for load-balancing toendpoints. Endpoints are determined by the selector or if that is notspecified, by manual construction of an Endpoints object. If clusterIP is“None”, no virtual IP is allocated and the endpoints are published as aset of endpoints rather than a stable IP.“NodePort” builds on ClusterIP and allocates a port on every node whichroutes to the clusterIP.“LoadBalancer” builds on NodePort and creates anexternal load-balancer (if supported in the current cloud) which routesto the clusterIP.More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types+optionalNo
    externalIPsstring[]externalIPs is a list of IP addresses for which nodes in the clusterwill also accept traffic for this service. These IPs are not managed byKubernetes. The user is responsible for ensuring that traffic arrivesat a node with this IP. A common example is external load-balancersthat are not part of the Kubernetes system.+optionalNo
    sessionAffinitystringSupports “ClientIP” and “None”. Used to maintain session affinity.Enable client IP based session affinity.Must be ClientIP or None.Defaults to None.More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies+optionalNo
    loadBalancerIPstringOnly applies to Service Type: LoadBalancerLoadBalancer will get created with the IP specified in this field.This feature depends on whether the underlying cloud-provider supports specifyingthe loadBalancerIP when a load balancer is created.This field will be ignored if the cloud-provider does not support the feature.+optionalNo
    loadBalancerSourceRangesstring[]If specified and supported by the platform, this will restrict traffic through the cloud-providerload-balancer will be restricted to the specified client IPs. This field will be ignored if thecloud-provider does not support the feature.”More info: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/+optionalNo
    externalNamestringexternalName is the external reference that kubedns or equivalent willreturn as a CNAME record for this service. No proxying will be involved.Must be a valid RFC-1123 hostname (https://tools.ietf.org/html/rfc1123)and requires Type to be ExternalName.+optionalNo
    externalTrafficPolicystringexternalTrafficPolicy denotes if this Service desires to route externaltraffic to node-local or cluster-wide endpoints. “Local” preserves theclient source IP and avoids a second hop for LoadBalancer and Nodeporttype services, but risks potentially imbalanced traffic spreading.“Cluster” obscures the client source IP and may cause a second hop toanother node, but should have good overall load-spreading.+optionalNo
    healthCheckNodePortint32healthCheckNodePort specifies the healthcheck nodePort for the service.If not specified, HealthCheckNodePort is created by the service apibackend with the allocated nodePort. Will use user-specified nodePort valueif specified by the client. Only effects when Type is set to LoadBalancerand ExternalTrafficPolicy is set to Local.+optionalNo
    publishNotReadyAddressesboolpublishNotReadyAddresses, when set to true, indicates that DNS implementationsmust publish the notReadyAddresses of subsets for the Endpoints associated withthe Service. The default value is false.The primary use case for setting this field is to use a StatefulSet’s Headless Serviceto propagate SRV records for its Pods without respect to their readiness for purposeof peer discovery.+optionalNo
    sessionAffinityConfigSessionAffinityConfigsessionAffinityConfig contains the configurations of session affinity.+optionalNo
    ipFamilystringipFamily specifies whether this Service has a preference for a particular IP family (e.g. IPv4 vs.IPv6). If a specific IP family is requested, the clusterIP field will be allocated from that family, if it isavailable in the cluster. If no IP family is requested, the cluster’s primary IP family will be used.Other IP fields (loadBalancerIP, loadBalancerSourceRanges, externalIPs) and controllers whichallocate external load-balancers should use the same IP family. Endpoints for this Service will be ofthis family. This field is immutable after creation. Assigning a ServiceIPFamily not available in thecluster (e.g. IPv6 in IPv4 only cluster) is an error condition and will fail during clusterIP assignment.+optionalNo

    k8s.io.api.core.v1.Toleration

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

    FieldTypeDescriptionRequired
    keystringKey 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.+optionalNo
    operatorstringOperator 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 cantolerate all taints of a particular category.+optionalNo
    valuestringValue is the taint value the toleration matches to.If the operator is Exists, the value should be empty, otherwise just a regular string.+optionalNo
    effectstringEffect indicates the taint effect to match. Empty means match all taint effects.When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.+optionalNo
    tolerationSecondsint64TolerationSeconds represents the period of time the toleration (which must beof 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 andnegative values will be treated as 0 (evict immediately) by the system.+optionalNo

    k8s.io.apimachinery.pkg.apis.meta.v1.LabelSelector

    A label selector is a label query over a set of resources. The result of matchLabels andmatchExpressions are ANDed. An empty label selector matches all objects. A nulllabel selector matches no objects.

    FieldTypeDescriptionRequired
    matchLabelsmap<string, string>matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabelsmap is equivalent to an element of matchExpressions, whose key field is “key”, theoperator is “In”, and the values array contains only “value”. The requirements are ANDed.+optionalNo
    matchExpressionsLabelSelectorRequirement[]matchExpressions is a list of label selector requirements. The requirements are ANDed.+optionalNo

    k8sObjectOverlay

    Patch for an existing k8s resource.

    FieldTypeDescriptionRequired
    apiVersionstringResource API version.No
    kindstringResource kind.No
    namestringName of resource.Namespace is always the component namespace.No
    patchesPathValue[]List of patches to apply to resource.No

    k8sObjectOverlay.PathValue

    FieldTypeDescriptionRequired
    pathstringPath of the form a.b:c.e.:fWhere b:c is a list element selector of the form key:value and :f is a list selector of the form :value.All path intermediate nodes must exist.No
    valueTypeInterfaceValue 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