Delete *.old files (#635)

* Delete old files

* Prevent indexing of the 0.1 site so it doesn't show up in search results.
This commit is contained in:
Martin Taillefer 2017-10-05 17:05:33 -07:00 committed by GitHub
parent ac13ddb86c
commit 5389f5b338
22 changed files with 1 additions and 3052 deletions

View File

@ -1,393 +0,0 @@
---
title: Mixer Service
overview: Mixer's API Surface
order: 1200
draft: true
layout: docs
type: markdown
---
<a name="istio.mixer.v1.Mixer"></a>
### Mixer
Mixer provides three core features:
- *Precondition Checking*. Enables callers to verify a number of preconditions
before responding to an incoming request from a service consumer.
Preconditions can include whether the service consumer is properly
authenticated, is on the services whitelist, passes ACL checks, and more.
- *Telemetry Reporting*. Enables services to report logging and monitoring.
In the future, it will also enable tracing and billing streams intended for
both the service operator as well as for service consumers.
- *Quota Management*. Enables services to allocate and free quota on a number
of dimensions, Quotas are used as a relatively simple resource management tool
to provide some fairness between service consumers when contending for limited
resources. Rate limits are examples of quotas.
<a name="istio.mixer.v1.Mixer.Check"></a>
#### Check
<pre>
rpc Check(<a href="#istio.mixer.v1.CheckRequest">CheckRequest</a>) returns (<a href="#istio.mixer.v1.CheckResponse">CheckResponse</a>)
</pre>
Checks preconditions before performing an operation.
The preconditions enforced depend on the set of supplied attributes and
the active configuration.
<a name="istio.mixer.v1.Mixer.Quota"></a>
#### Quota
<pre>
rpc Quota(<a href="#istio.mixer.v1.QuotaRequest">QuotaRequest</a>) returns (<a href="#istio.mixer.v1.QuotaResponse">QuotaResponse</a>)
</pre>
Quota allocates and releases quota.
<a name="istio.mixer.v1.Mixer.Report"></a>
#### Report
<pre>
rpc Report(<a href="#istio.mixer.v1.ReportRequest">ReportRequest</a>) returns (<a href="#istio.mixer.v1.ReportResponse">ReportResponse</a>)
</pre>
Reports telemetry, such as logs and metrics.
The reported information depends on the set of supplied attributes and the
active configuration.
<a name="istio.mixer.v1.Attributes"></a>
### Attributes
An instance of this message is delivered to Mixer with every
API call.
The general idea is to leverage the stateful gRPC streams from the
Envoy to Mixer to keep to a minimum the 'attribute chatter'.
Only delta attributes are sent over, multiple concurrent attribute
contexts can be used to avoid thrashing, and attribute indices are used to
keep the wire protocol maximally efficient.
Producing this message is the responsibility of Mixer's client
library which is linked into different proxy implementations.
The processing order for this state in Mixer is:
* Any new dictionary is applied
* The requested attribute context is looked up. If no such context has been defined, a
new context is automatically created and initialized to the empty state. When a gRPC
stream is first created, there are no attribute contexts for the stream.
* If resetContext is true, then the attribute context is reset to the
empty state.
* All attributes to deleted are removed from the attribute context.
* All attribute changes are applied to the attribute context.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.Attributes.dictionary"></a>
<tr>
<td><code>dictionary</code></td>
<td>repeated map&lt;int32, string&gt;</td>
<td><p>A dictionary that provides a mapping of shorthand index values to attribute names.</p><p>This is intended to leverage the stateful gRPC stream from the proxy to the mixer. This dictionary is sent over only when a stream to the mixer is first established and when the proxy's configuration changes and different attributes may be produced.</p><p>Once a dictionary has been sent over, it stays in effect until a new dictionary is sent to replace it. The first request sent on a stream must include a dictionary, otherwise the mixer can't process any attribute updates.</p><p>Dictionaries are independent of the attribute context and are thus global to each gRPC stream.</p></td>
</tr>
<a name="istio.mixer.v1.Attributes.attributeContext"></a>
<tr>
<td><code>attributeContext</code></td>
<td>int32</td>
<td><p>The attribute context against which to operate.</p><p>The mixer keeps different contexts live for any proxy gRPC stream. This allows the proxy to maintain multiple concurrent 'bags of attributes' within the mixer.</p><p>If the proxy doesn't want to leverage multiple contexts, it just passes 0 here for every request.</p><p>The proxy is configured to use a maximum number of attribute contexts in order to prevent an explosion of contexts in the mixer's memory space.</p></td>
</tr>
<a name="istio.mixer.v1.Attributes.resetContext"></a>
<tr>
<td><code>resetContext</code></td>
<td>bool</td>
<td><p>When true, resets the current attribute context to the empty state before applying any incoming attributes.</p><p>Resetting contexts is useful to constrain the amount of resources used by the mixer. The proxy needs to intelligently manage a pool of contexts. It may be useful to reset a context when certain big events happen, such as when an HTTP2 connection into the proxy terminates.</p></td>
</tr>
<a name="istio.mixer.v1.Attributes.stringAttributes"></a>
<tr>
<td><code>stringAttributes</code></td>
<td>repeated map&lt;int32, string&gt;</td>
<td>Attributes being updated within the specified attribute context. These maps add and/or overwrite the context's current set of attributes.</td>
</tr>
<a name="istio.mixer.v1.Attributes.int64Attributes"></a>
<tr>
<td><code>int64Attributes</code></td>
<td>repeated map&lt;int32, int64&gt;</td>
<td></td>
</tr>
<a name="istio.mixer.v1.Attributes.doubleAttributes"></a>
<tr>
<td><code>doubleAttributes</code></td>
<td>repeated map&lt;int32, double&gt;</td>
<td></td>
</tr>
<a name="istio.mixer.v1.Attributes.boolAttributes"></a>
<tr>
<td><code>boolAttributes</code></td>
<td>repeated map&lt;int32, bool&gt;</td>
<td></td>
</tr>
<a name="istio.mixer.v1.Attributes.timestampAttributes"></a>
<tr>
<td><code>timestampAttributes</code></td>
<td>repeated map&lt;int32, <a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#timestamp">Timestamp</a>&gt;</td>
<td></td>
</tr>
<a name="istio.mixer.v1.Attributes.durationAttributes"></a>
<tr>
<td><code>durationAttributes</code></td>
<td>repeated map&lt;int32, <a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a>&gt;</td>
<td></td>
</tr>
<a name="istio.mixer.v1.Attributes.bytesAttributes"></a>
<tr>
<td><code>bytesAttributes</code></td>
<td>repeated map&lt;int32, bytes&gt;</td>
<td></td>
</tr>
<a name="istio.mixer.v1.Attributes.stringMapAttributes"></a>
<tr>
<td><code>stringMapAttributes</code></td>
<td>repeated map&lt;int32, <a href="#istio.mixer.v1.StringMap">StringMap</a>&gt;</td>
<td></td>
</tr>
<a name="istio.mixer.v1.Attributes.deletedAttributes"></a>
<tr>
<td><code>deletedAttributes[]</code></td>
<td>repeated int32</td>
<td>Attributes that should be removed from the specified attribute context. Deleting attributes which aren't currently in the attribute context is not considered an error.</td>
</tr>
<a name="istio.mixer.v1.Attributes.timestampAttributesHACK"></a>
<tr>
<td><code>timestampAttributesHACK</code></td>
<td>repeated map&lt;int32, <a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#timestamp">Timestamp</a>&gt;</td>
<td></td>
</tr>
<a name="istio.mixer.v1.Attributes.durationAttributesHACK"></a>
<tr>
<td><code>durationAttributesHACK</code></td>
<td>repeated map&lt;int32, <a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a>&gt;</td>
<td></td>
</tr>
</table>
<a name="istio.mixer.v1.CheckRequest"></a>
### CheckRequest
Used to verify preconditions before performing an action.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.CheckRequest.requestIndex"></a>
<tr>
<td><code>requestIndex</code></td>
<td>int64</td>
<td>Index within the stream for this request, used to match to responses</td>
</tr>
<a name="istio.mixer.v1.CheckRequest.attributeUpdate"></a>
<tr>
<td><code>attributeUpdate</code></td>
<td><a href="#istio.mixer.v1.Attributes">Attributes</a></td>
<td>The attributes to use for this request</td>
</tr>
</table>
<a name="istio.mixer.v1.CheckResponse"></a>
### CheckResponse
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.CheckResponse.requestIndex"></a>
<tr>
<td><code>requestIndex</code></td>
<td>int64</td>
<td>Index of the request this response is associated with</td>
</tr>
<a name="istio.mixer.v1.CheckResponse.attributeUpdate"></a>
<tr>
<td><code>attributeUpdate</code></td>
<td><a href="#istio.mixer.v1.Attributes">Attributes</a></td>
<td>The attributes to use for this response</td>
</tr>
<a name="istio.mixer.v1.CheckResponse.result"></a>
<tr>
<td><code>result</code></td>
<td><a href="./status.html">Status</a></td>
<td>Indicates whether or not the preconditions succeeded</td>
</tr>
<a name="istio.mixer.v1.CheckResponse.expiration"></a>
<tr>
<td><code>expiration</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>The amount of time for which this result can be considered valid, given the same inputs</td>
</tr>
</table>
<a name="istio.mixer.v1.QuotaRequest"></a>
### QuotaRequest
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.QuotaRequest.requestIndex"></a>
<tr>
<td><code>requestIndex</code></td>
<td>int64</td>
<td>Index within the stream for this request, used to match to responses</td>
</tr>
<a name="istio.mixer.v1.QuotaRequest.attributeUpdate"></a>
<tr>
<td><code>attributeUpdate</code></td>
<td><a href="#istio.mixer.v1.Attributes">Attributes</a></td>
<td>The attributes to use for this request</td>
</tr>
<a name="istio.mixer.v1.QuotaRequest.deduplicationId"></a>
<tr>
<td><code>deduplicationId</code></td>
<td>string</td>
<td>Used for deduplicating quota allocation/free calls in the case of failed RPCs and retries. This should be a UUID per call, where the same UUID is used for retries of the same quota allocation call.</td>
</tr>
<a name="istio.mixer.v1.QuotaRequest.quota"></a>
<tr>
<td><code>quota</code></td>
<td>string</td>
<td>The quota to allocate from.</td>
</tr>
<a name="istio.mixer.v1.QuotaRequest.amount"></a>
<tr>
<td><code>amount</code></td>
<td>int64</td>
<td>The amount of quota to allocate.</td>
</tr>
<a name="istio.mixer.v1.QuotaRequest.bestEffort"></a>
<tr>
<td><code>bestEffort</code></td>
<td>bool</td>
<td>If true, allows a response to return less quota than requested. When false, the exact requested amount is returned or 0 if not enough quota was available.</td>
</tr>
</table>
<a name="istio.mixer.v1.QuotaResponse"></a>
### QuotaResponse
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.QuotaResponse.requestIndex"></a>
<tr>
<td><code>requestIndex</code></td>
<td>int64</td>
<td>Index of the request this response is associated with.</td>
</tr>
<a name="istio.mixer.v1.QuotaResponse.attributeUpdate"></a>
<tr>
<td><code>attributeUpdate</code></td>
<td><a href="#istio.mixer.v1.Attributes">Attributes</a></td>
<td>The attributes to use for this response</td>
</tr>
<a name="istio.mixer.v1.QuotaResponse.result"></a>
<tr>
<td><code>result</code></td>
<td><a href="./status.html">Status</a></td>
<td>Indicates whether the quota request was successfully processed.</td>
</tr>
<a name="istio.mixer.v1.QuotaResponse.expiration"></a>
<tr>
<td><code>expiration</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>The amount of time the returned quota can be considered valid, this is 0 for non-expiring quotas.</td>
</tr>
<a name="istio.mixer.v1.QuotaResponse.amount"></a>
<tr>
<td><code>amount</code></td>
<td>int64</td>
<td>The total amount of quota returned, may be less than requested.</td>
</tr>
</table>
<a name="istio.mixer.v1.ReportRequest"></a>
### ReportRequest
Used to report telemetry after performing an action.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.ReportRequest.requestIndex"></a>
<tr>
<td><code>requestIndex</code></td>
<td>int64</td>
<td>Index within the stream for this request, used to match to responses</td>
</tr>
<a name="istio.mixer.v1.ReportRequest.attributeUpdate"></a>
<tr>
<td><code>attributeUpdate</code></td>
<td><a href="#istio.mixer.v1.Attributes">Attributes</a></td>
<td>The attributes to use for this request</td>
</tr>
</table>
<a name="istio.mixer.v1.ReportResponse"></a>
### ReportResponse
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.ReportResponse.requestIndex"></a>
<tr>
<td><code>requestIndex</code></td>
<td>int64</td>
<td>Index of the request this response is associated with</td>
</tr>
<a name="istio.mixer.v1.ReportResponse.attributeUpdate"></a>
<tr>
<td><code>attributeUpdate</code></td>
<td><a href="#istio.mixer.v1.Attributes">Attributes</a></td>
<td>The attributes to use for this response</td>
</tr>
<a name="istio.mixer.v1.ReportResponse.result"></a>
<tr>
<td><code>result</code></td>
<td><a href="./status.html">Status</a></td>
<td>Indicates whether the report was processed or not</td>
</tr>
</table>
<a name="istio.mixer.v1.StringMap"></a>
### StringMap
A map of string to string. The keys in these maps are from the current
dictionary.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.StringMap.map"></a>
<tr>
<td><code>map</code></td>
<td>repeated map&lt;int32, string&gt;</td>
<td></td>
</tr>
</table>

View File

@ -1,27 +0,0 @@
---
title: denier
overview: denier adapter configuration schema
order: 1000
draft: true
layout: docs
type: markdown
---
### Params
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="adapter.denier.Params.status"></a>
<tr>
<td><code>status</code></td>
<td><a href="/docs/reference/api/mixer/status.html">Status</a></td>
<td>The error to return when denying a request.</td>
</tr>
</table>

View File

@ -1,26 +0,0 @@
---
title: genericListChecker
overview: genericListChecker adapter configuration schema
order: 10
draft: true
layout: docs
type: markdown
---
### Params
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="adapter.genericListChecker.Params.listEntries"></a>
<tr>
<td><code>listEntries[]</code></td>
<td>repeated string</td>
<td>The set of entries in the list to check against</td>
</tr>
</table>

View File

@ -1,145 +0,0 @@
---
title: kubernetes
overview: kubernetes adapter configuration schema
order: 30
draft: true
layout: docs
type: markdown
---
<a name="adapter.kubernetes.Params"></a>
### Params
Configuration parameters for the kubernetes adapter. These params
control the manner in which the kubernetes adapter discovers and
generates values related to pod information.
The adapter works by looking up pod information by UIDs (of the
form: "kubernetes://pod.namespace"). It expects that the UIDs will be
supplied in an input map for three distinct traffic classes (source,
target, and origin).
For all valid UIDs supplied, this adapter generates a map of output
values containing information about the related pods. The generated map
is keyed by value names generated by concatenating a pod identifier
prefix with a value name. For example, for the pod corresponding to a
sourceUID and the output value of pod ip, this adapter will output a map
that includes a key of "sourcePodIP" (assuming parameter defaults).
next field id: 19
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="adapter.kubernetes.Params.kubeconfigPath"></a>
<tr>
<td><code>kubeconfigPath</code></td>
<td>string</td>
<td><p>File path to discover kubeconfig. For in-cluster configuration, this should be left unset. For local configuration, this should be set to the path of a kubeconfig file that can be used to reach a kubernetes API server.</p><p>Default: "" (unset)</p></td>
</tr>
<a name="adapter.kubernetes.Params.cacheRefreshDuration"></a>
<tr>
<td><code>cacheRefreshDuration</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td><p>Controls the resync period of the kubernetes cluster info cache. The cache will watch for events and every so often completely resync. This controls how frequently the complete resync occurs.</p><p>Default: 5 minutes</p></td>
</tr>
<a name="adapter.kubernetes.Params.sourceUidInputName"></a>
<tr>
<td><code>sourceUidInputName</code></td>
<td>string</td>
<td><p>Configures how the UID for the source pod for traffic is identified in the input map.</p><p>Default: sourceUID</p></td>
</tr>
<a name="adapter.kubernetes.Params.targetUidInputName"></a>
<tr>
<td><code>targetUidInputName</code></td>
<td>string</td>
<td><p>Configures how the UID for the target pod for traffic is identified in the input map.</p><p>Default: targetUID</p></td>
</tr>
<a name="adapter.kubernetes.Params.originUidInputName"></a>
<tr>
<td><code>originUidInputName</code></td>
<td>string</td>
<td><p>Configures how the UID for the origin pod for traffic is identified in the input map.</p><p>Default: originUID</p></td>
</tr>
<a name="adapter.kubernetes.Params.targetServiceInputName"></a>
<tr>
<td><code>targetServiceInputName</code></td>
<td>string</td>
<td><p>Configures how the identifier for the target service is populated in the input map (if at all). When supplied, this value will be used (after successful normalization) in place of the value derived from the pod cache for the target pod in the generated map of output values.</p><p>Default: targetService</p></td>
</tr>
<a name="adapter.kubernetes.Params.clusterDomainName"></a>
<tr>
<td><code>clusterDomainName</code></td>
<td>string</td>
<td><p>Configures the cluster domain name to use for service name normalization.</p><p>Default: svc.cluster.local</p></td>
</tr>
<a name="adapter.kubernetes.Params.podLabelForService"></a>
<tr>
<td><code>podLabelForService</code></td>
<td>string</td>
<td><p>In order to extract the service associated with a source, target, or origin, this adapter relies on pod labels. In particular, it looks for the value of a specific label, as specified by this parameter.</p><p>Default: app</p></td>
</tr>
<a name="adapter.kubernetes.Params.sourcePrefix"></a>
<tr>
<td><code>sourcePrefix</code></td>
<td>string</td>
<td><p>The prefix used for source pod output value names.</p><p>Default: source</p></td>
</tr>
<a name="adapter.kubernetes.Params.targetPrefix"></a>
<tr>
<td><code>targetPrefix</code></td>
<td>string</td>
<td><p>The prefix used for target pod output value names.</p><p>Default: target</p></td>
</tr>
<a name="adapter.kubernetes.Params.originPrefix"></a>
<tr>
<td><code>originPrefix</code></td>
<td>string</td>
<td><p>The prefix used for origin pod output value names.</p><p>Default: origin</p></td>
</tr>
<a name="adapter.kubernetes.Params.labelsValueName"></a>
<tr>
<td><code>labelsValueName</code></td>
<td>string</td>
<td><p>The value name for the pod labels output value.</p><p>Default: Labels</p></td>
</tr>
<a name="adapter.kubernetes.Params.podNameValueName"></a>
<tr>
<td><code>podNameValueName</code></td>
<td>string</td>
<td><p>The value name for the pod name output value.</p><p>Default: PodName</p></td>
</tr>
<a name="adapter.kubernetes.Params.podIpValueName"></a>
<tr>
<td><code>podIpValueName</code></td>
<td>string</td>
<td><p>The value name for the pod ip address output value.</p><p>Default: PodIP</p></td>
</tr>
<a name="adapter.kubernetes.Params.hostIpValueName"></a>
<tr>
<td><code>hostIpValueName</code></td>
<td>string</td>
<td><p>The value name for the pod host ip address output value.</p><p>Default: HostIP</p></td>
</tr>
<a name="adapter.kubernetes.Params.namespaceValueName"></a>
<tr>
<td><code>namespaceValueName</code></td>
<td>string</td>
<td><p>The value name for the pod namespace output value.</p><p>Default: Namespace</p></td>
</tr>
<a name="adapter.kubernetes.Params.serviceAccountValueName"></a>
<tr>
<td><code>serviceAccountValueName</code></td>
<td>string</td>
<td><p>The value name for the pod service account name output value.</p><p>Default: ServiceAccountName</p></td>
</tr>
<a name="adapter.kubernetes.Params.serviceValueName"></a>
<tr>
<td><code>serviceValueName</code></td>
<td>string</td>
<td><p>The value name for the service output value.</p><p>Default: Service</p></td>
</tr>
</table>

View File

@ -1,51 +0,0 @@
---
title: listchecker
overview: listchecker adapter configuration schema
order: 20
draft: true
layout: docs
type: markdown
---
<a name="adapter.listchecker.Params"></a>
### Params
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="adapter.listchecker.Params.providerUrl"></a>
<tr>
<td><code>providerUrl</code></td>
<td>string</td>
<td>Where to find the list to check against</td>
</tr>
<a name="adapter.listchecker.Params.overrides"></a>
<tr>
<td><code>overrides</code></td>
<td>repeated string</td>
<td>List entries that are consulted first, before the list from the server</td>
</tr>
<a name="adapter.listchecker.Params.blacklist"></a>
<tr>
<td><code>blacklist</code></td>
<td>bool</td>
<td>Whether the list operates as a blacklist or a whitelist.</td>
</tr>
<a name="adapter.listchecker.Params.refreshInterval"></a>
<tr>
<td><code>refreshInterval</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>Determines how often the provider is polled for an updated list</td>
</tr>
<a name="adapter.listchecker.Params.ttl"></a>
<tr>
<td><code>ttl</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>Indicates how long to keep a list before discarding it. Typically, the TTL value should be set to noticeably longer (&gt; 2x) than the refresh interval to ensure continued operation in the face of transient server outages.</td>
</tr>
</table>

View File

@ -1,27 +0,0 @@
---
title: memQuota
overview: memQuota adapter configuration schema
order: 40
draft: true
layout: docs
type: markdown
---
<a name="adapter.memQuota.Params"></a>
### Params
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="adapter.memQuota.Params.minDeduplicationDuration"></a>
<tr>
<td><code>minDeduplicationDuration</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>Minimum number of seconds that deduplication is possible for a given operation.</td>
</tr>
</table>

View File

@ -1,15 +0,0 @@
---
title: prometheus
overview: prometheus adapter configuration schema
order: 50
draft: true
layout: docs
type: markdown
---
<a name="adapter.prometheus.Params"></a>
### Params
NOTE: _No fields in this message type.__

View File

@ -1,51 +0,0 @@
---
title: redisquota
overview: redisquota adapter configuration schema
order: 60
draft: true
layout: docs
type: markdown
---
<a name="adapter.redisquota.Params"></a>
### Params
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="adapter.redisquota.Params.minDeduplicationDuration"></a>
<tr>
<td><code>minDeduplicationDuration</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>Minimum number of seconds that deduplication is possible for a given operation.</td>
</tr>
<a name="adapter.redisquota.Params.redisServerUrl"></a>
<tr>
<td><code>redisServerUrl</code></td>
<td>string</td>
<td>Redis network address</td>
</tr>
<a name="adapter.redisquota.Params.socketType"></a>
<tr>
<td><code>socketType</code></td>
<td>string</td>
<td>Network for communicating with redis, i.e., "tcp"</td>
</tr>
<a name="adapter.redisquota.Params.connectionPoolSize"></a>
<tr>
<td><code>connectionPoolSize</code></td>
<td>int64</td>
<td>Maximum number of idle connections to redis</td>
</tr>
<a name="adapter.redisquota.Params.rateLimitAlgorithm"></a>
<tr>
<td><code>rateLimitAlgorithm</code></td>
<td>string</td>
<td>Algorithm for rate-limiting: either fixed-window or rolling-window. The fixed-window approach can allow 2x peak specified rate, whereas the rolling-window doesn't. The rolling-window algorithm's additional precision comes at the cost of increased redis resource usage.</td>
</tr>
</table>

View File

@ -1,57 +0,0 @@
---
title: statsd
overview: statsd adapter configuration schema
order: 70
draft: true
layout: docs
type: markdown
---
<a name="adapter.statsd.Params"></a>
### Params
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="adapter.statsd.Params.address"></a>
<tr>
<td><code>address</code></td>
<td>string</td>
<td>Address of the statsd server, e.g. localhost:8125</td>
</tr>
<a name="adapter.statsd.Params.prefix"></a>
<tr>
<td><code>prefix</code></td>
<td>string</td>
<td>Metric prefix, do not specify for no prefix</td>
</tr>
<a name="adapter.statsd.Params.flushDuration"></a>
<tr>
<td><code>flushDuration</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>Flush Interval controls the maximum amount of time between sending metrics to the statsd collection server. Metrics are reported when either flushBytes is full or flushInterval time has elapsed since the last report.</td>
</tr>
<a name="adapter.statsd.Params.flushBytes"></a>
<tr>
<td><code>flushBytes</code></td>
<td>int32</td>
<td>Maximum UDP packet size to send; if not specified defaults to 512 bytes. If the statsd server is running on the same (private) network 1432 bytes is recommended for better performance.</td>
</tr>
<a name="adapter.statsd.Params.samplingRate"></a>
<tr>
<td><code>samplingRate</code></td>
<td>float</td>
<td>Chance that any particular metric is sampled when incremented; can take the range [0, 1], defaults to 1 if unspecified.</td>
</tr>
<a name="adapter.statsd.Params.metricNameTemplateStrings"></a>
<tr>
<td><code>metricNameTemplateStrings</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td><p>Map of metric name -&gt; template string; the template will be filled with values from the metric's labels and the resulting string will be used as the statsd metric name. This allows easier creation of statsd metrics like <code>actionName-responseCode</code>. The template strings must conform to go's text/template syntax. For the example of <code>actionName-responseCode</code>, we use the template: <code>\{\{.apiMethod\}\}-\{\{.responseCode\}\}</code></p><p>If a metric's name is not in the map then the exported statsd metric name will be exactly the metric's name.</p></td>
</tr>
</table>

View File

@ -1,49 +0,0 @@
---
title: stdioLogger
overview: stdioLogger adapter configuration schema
order: 80
draft: true
layout: docs
type: markdown
---
<a name="adapter.stdioLogger.Params"></a>
### Params
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="adapter.stdioLogger.Params.logStream"></a>
<tr>
<td><code>logStream</code></td>
<td><a href="#adapter.stdioLogger.Params.Stream">Stream</a></td>
<td>Selects which standard stream to write to for log entries. STDERR is the default Stream.</td>
</tr>
</table>
<a name="adapter.stdioLogger.Params.Stream"></a>
### Stream
Stream is used to select between different logs output sinks.
<table>
<tr>
<th>Value</th>
<th>Description</th>
</tr>
<a name="adapter.stdioLogger.Params.Stream.STDERR"></a>
<tr>
<td>STDERR</td>
<td>STDERR refers to os.Stderr.</td>
</tr>
<a name="adapter.stdioLogger.Params.Stream.STDOUT"></a>
<tr>
<td>STDOUT</td>
<td>STDOUT refers to os.Stdout.</td>
</tr>
</table>

View File

@ -1,87 +0,0 @@
---
title: accessLogs
overview: accessLogs aspect configuration schema
order: 1120
draft: true
layout: docs
type: markdown
---
<a name="aspect.AccessLogsParams"></a>
### AccessLogsParams
Example usage:
kind: access-logs
params:
logName: "accessLog"
log:
logFormat: COMMON
templateExpressions:
originIp: origin.ip
sourceUser: origin.user
timestamp: request.time
method: request.method | ""
url: request.path
protocol: request.scheme
responseCode: response.code
responseSize: response.size
labels:
originIp: origin.ip
sourceUser: origin.user
timestamp: request.time
method: request.method | ""
url: request.path
protocol: request.scheme
responseCode: response.code
responseSize: response.size
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.AccessLogsParams.logName"></a>
<tr>
<td><code>logName</code></td>
<td>string</td>
<td>Identifies a collection of related log entries.</td>
</tr>
<a name="aspect.AccessLogsParams.log"></a>
<tr>
<td><code>log</code></td>
<td><a href="#aspect.AccessLogsParams.AccessLog">AccessLog</a></td>
<td>The log that will be constructed and handed to the aspect at runtime.</td>
</tr>
</table>
<a name="aspect.AccessLogsParams.AccessLog"></a>
### AccessLog
Describes how attributes must be evaluated to produce values for a log message.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.AccessLogsParams.AccessLog.descriptorName"></a>
<tr>
<td><code>descriptorName</code></td>
<td>string</td>
<td>Only used if logFormat is CUSTOM. Links this AccessLog to a LogEntryDescriptor that describes the log's template.</td>
</tr>
<a name="aspect.AccessLogsParams.AccessLog.templateExpressions"></a>
<tr>
<td><code>templateExpressions</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Map of template variable name to expression for the descriptor's logTemplate. At run time each expression will be evaluated, and together they will provide values for the log's template string. Labels and template expressions do not mix: if the result of some expression is needed for both constructing the payload and for dimensioning the log entry, it must be included both in these expressions and in the <code>labels</code> expressions.</td>
</tr>
<a name="aspect.AccessLogsParams.AccessLog.labels"></a>
<tr>
<td><code>labels</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Map of LogEntryDescriptor label name to attribute expression. At run time each expression will be evaluated to determine the value that will be used to fill in the log template. The result of evaluating the expression must match the ValueType of the label in the LogEntryDescriptor.</td>
</tr>
</table>

View File

@ -1,81 +0,0 @@
---
title: applicationLogs
overview: applicationLogs aspect configuration schema
order: 1130
draft: true
layout: docs
type: markdown
---
<a name="aspect.ApplicationLogsParams"></a>
### ApplicationLogsParams
Configures an individual application-logs aspect.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.ApplicationLogsParams.logName"></a>
<tr>
<td><code>logName</code></td>
<td>string</td>
<td>Identifies a collection of related log entries.</td>
</tr>
<a name="aspect.ApplicationLogsParams.logs"></a>
<tr>
<td><code>logs[]</code></td>
<td>repeated <a href="#aspect.ApplicationLogsParams.ApplicationLog">ApplicationLog</a></td>
<td></td>
</tr>
</table>
<a name="aspect.ApplicationLogsParams.ApplicationLog"></a>
### ApplicationLog
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.ApplicationLogsParams.ApplicationLog.descriptorName"></a>
<tr>
<td><code>descriptorName</code></td>
<td>string</td>
<td>Must match the name of some LogEntryDescriptor.</td>
</tr>
<a name="aspect.ApplicationLogsParams.ApplicationLog.severity"></a>
<tr>
<td><code>severity</code></td>
<td>string</td>
<td>The expression to evaluate to determine this log's severity at runtime.</td>
</tr>
<a name="aspect.ApplicationLogsParams.ApplicationLog.timestamp"></a>
<tr>
<td><code>timestamp</code></td>
<td>string</td>
<td>The expression to evaluate to determine this log's timestamp.</td>
</tr>
<a name="aspect.ApplicationLogsParams.ApplicationLog.timeFormat"></a>
<tr>
<td><code>timeFormat</code></td>
<td>string</td>
<td>The golang time layout format string used to print the timestamp</td>
</tr>
<a name="aspect.ApplicationLogsParams.ApplicationLog.templateExpressions"></a>
<tr>
<td><code>templateExpressions</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Map of template variable name to expression for the descriptor's logTemplate. At run time each expression will be evaluated, and together they will provide values for the log's template string. Labels and template expressions do not mix: if the result of some expression is needed for both constructing the payload and for dimensioning the log entry, it must be included both in these expressions and in the <code>labels</code> expressions.</td>
</tr>
<a name="aspect.ApplicationLogsParams.ApplicationLog.labels"></a>
<tr>
<td><code>labels</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Map of LogEntryDescriptor label name to attribute expression. At run time each expression will be evaluated to determine the value that will be used to fill in the log template. The result of evaluating the expression must match the ValueType of the label in the LogEntryDescriptor.</td>
</tr>
</table>

View File

@ -1,65 +0,0 @@
---
title: attributes
overview: attributes aspect configuration schema
order: 1140
draft: true
layout: docs
type: markdown
---
<a name="aspect.AttributesGeneratorParams"></a>
### AttributesGeneratorParams
Configures an AttributesGenerator aspect.
The following config specifies two adapters (mixerInfo and k8sPodInfo)
that will be used to generate attributes for use within in Mixer:
aspects:
- kind: attributes
adapter: mixerInfo
params:
attributeBindings:
mixerVersion: version
mixerBuildId: buildID
mixerBuildStatus: buildStatus
- kind: attributes
adapter: k8sPodInfo
params:
inputExpressions:
srcIP: source.ip | "unknown"
dstIP: destination.ip | "unknown"
attributeBindings:
sourceName: srcName
destinationName: dstName
The mixerInfo adapter takes no input arguments and produces three output
values (version, buildID, and buildStatus). Those three output values are
mapped into three attributes (mixerVersion, mixerBuildId, and
mixerBuildStatus) via the attributeBindings.
Similarly, the k8sPodInfo adapter takes two inputs (srcIp and tgtIp). Their
values are generated from the expressions that reference mixer attributes.
The adapter produces two outputs (srcName and tgtName) that are mapped into
mixer attributes (sourceName and destinationName) by the attributeBindings.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.AttributesGeneratorParams.inputExpressions"></a>
<tr>
<td><code>inputExpressions</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Map of input params name to attribute expressions. At runtime, each expression will be evaluated to determine the input value provided to the aspect.</td>
</tr>
<a name="aspect.AttributesGeneratorParams.attributeBindings"></a>
<tr>
<td><code>attributeBindings</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Map of attribute descriptor names to the names of values produced by an adapter. This map will be used to translate from adapter outputs into mixer attributes.</td>
</tr>
</table>

View File

@ -1,16 +0,0 @@
---
title: denials
overview: denials aspect configuration schema
order: 1150
draft: true
layout: docs
type: markdown
---
<a name="aspect.DenialsParams"></a>
### DenialsParams
Configures a denials aspect.
NOTE: _No fields in this message type.__

View File

@ -1,12 +0,0 @@
---
title: Aspects
overview: Generated documentation for Mixer's aspects.
order: 2000
draft: true
layout: docs
type: markdown
---
{% include section-index.html %}

View File

@ -1,40 +0,0 @@
---
title: lists
overview: lists aspect configuration schema
order: 1160
draft: true
layout: docs
type: markdown
---
<a name="aspect.ListsParams"></a>
### ListsParams
Configures a lists aspect.
Example:
kind: lists
params:
blacklist: true
checkExpression: source.ip
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.ListsParams.blacklist"></a>
<tr>
<td><code>blacklist</code></td>
<td>bool</td>
<td>blacklist determines if this behaves like a blacklist default is whitelist</td>
</tr>
<a name="aspect.ListsParams.checkExpression"></a>
<tr>
<td><code>checkExpression</code></td>
<td>string</td>
<td>checkExpression is the expression evaluated at runtime to derive the value that is checked against the list</td>
</tr>
</table>

View File

@ -1,86 +0,0 @@
---
title: metrics
overview: metrics aspect configuration schema
order: 1170
draft: true
layout: docs
type: markdown
---
<a name="aspect.MetricsParams"></a>
### MetricsParams
Configures a metric aspect.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.MetricsParams.metrics"></a>
<tr>
<td><code>metrics[]</code></td>
<td>repeated <a href="#aspect.MetricsParams.Metric">Metric</a></td>
<td>The set of metrics that will be populated and handed to aspects at run time.</td>
</tr>
</table>
<a name="aspect.MetricsParams.Metric"></a>
### Metric
Describes how attributes must be evaluated to produce values for the named metric. Suppose the following
MetricDescriptor exists in the global configuration:
```yaml
metricDescriptor:
name: "responseCode"
kind: COUNTER
value: I64
labels:
name: apiMethod
valueType: STRING
labels:
name: responseCode
valueType: I64
```
To actually report metrics at run time a mapping from attributes to a metric's labels must be provided in
the form of a metric:
```yaml
metric:
descriptorName: "responseCode" # must match metricDescriptor.name
value: $requestCount # Istio expression syntax for the attribute named "requestCount"
labels:
# either the attribute named 'apiMethod' or the literal string 'unknown'; must eval to a string
apiMethod: $apiMethod | "unknown"
# either the attribute named 'responseCode' or the literal int64 500; must eval to an int64
responseCode: $responseCode | 500
```
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.MetricsParams.Metric.descriptorName"></a>
<tr>
<td><code>descriptorName</code></td>
<td>string</td>
<td>Must match the name of some metricDescriptor in the global config.</td>
</tr>
<a name="aspect.MetricsParams.Metric.value"></a>
<tr>
<td><code>value</code></td>
<td>string</td>
<td>Attribute expression to evaluate to determine the value for this metric; the result of the evaluation must match the value ValueType of the metricDescriptor.</td>
</tr>
<a name="aspect.MetricsParams.Metric.labels"></a>
<tr>
<td><code>labels</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Map of metricDescriptor label name to attribute expression. At run time each expression will be evaluated to determine the value provided to the aspect. The result of evaluating the expression must match the ValueType of the label in the metricDescriptor.</td>
</tr>
</table>

View File

@ -1,63 +0,0 @@
---
title: quotas
overview: quotas aspect configuration schema
order: 1180
draft: true
layout: docs
type: markdown
---
<a name="aspect.QuotasParams"></a>
### QuotasParams
Configures a quotas aspect.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.QuotasParams.quotas"></a>
<tr>
<td><code>quotas[]</code></td>
<td>repeated <a href="#aspect.QuotasParams.Quota">Quota</a></td>
<td>The set of quotas that will be populated and handed to aspects at run time.</td>
</tr>
</table>
<a name="aspect.QuotasParams.Quota"></a>
### Quota
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="aspect.QuotasParams.Quota.descriptorName"></a>
<tr>
<td><code>descriptorName</code></td>
<td>string</td>
<td>Must match the name of some quotaDescriptor in the global config.</td>
</tr>
<a name="aspect.QuotasParams.Quota.labels"></a>
<tr>
<td><code>labels</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Map of quotaDescriptor label name to attribute expression. At run time each expression will be evaluated to determine the value provided to the aspect. The result of evaluating the expression must match the ValueType of the label in the quotaDescriptor.</td>
</tr>
<a name="aspect.QuotasParams.Quota.maxAmount"></a>
<tr>
<td><code>maxAmount</code></td>
<td>int64</td>
<td>The upper limit for this quota.</td>
</tr>
<a name="aspect.QuotasParams.Quota.expiration"></a>
<tr>
<td><code>expiration</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>The amount of time allocated quota remains valid before it is automatically released. This is only meaningful for quotas annotated as rate limits, otherwise the value must be zero.</td>
</tr>
</table>

View File

@ -1,972 +0,0 @@
---
title: Mixer
overview: Mixer's configuration schema
order: 1190
draft: true
layout: docs
type: markdown
---
<a name="istio.mixer.v1.config.Adapter"></a>
### Adapter
Adapter allows the operator to configure a specific adapter implementation.
Each adapter implementation defines its own `params` proto. Note that unlike
[Aspect](#istio.mixer.v1.config.Aspect), the type of `params` varies with `impl`
and not with `kind`.
In the following example we define a `metrics` adapter using the Mixer's prepackaged
prometheus adapter. This adapter doesn't require any parameters.
```yaml
kind: metrics
name: prometheus-adapter
impl: prometheus
params:
```
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.Adapter.name"></a>
<tr>
<td><code>name</code></td>
<td>string</td>
<td>Required, must be unique per <code>kind</code>. Used by <a href="#istio.mixer.v1.config.Aspect">Aspect</a> to refer to this adapter. The name "default" is special: when an Aspect does not specify a name, the Adapter named "default" of the same <code>kind</code> is used to execute the intention described by the <a href="#istio.mixer.v1.config.AspectRule">AspectRule</a>s.</td>
</tr>
<a name="istio.mixer.v1.config.Adapter.kind"></a>
<tr>
<td><code>kind</code></td>
<td>string</td>
<td>Required. The aspect this implementation with these params will implement; a single adapter implementation may implement many aspects, but an <code>Adapter</code> entry is required per kind.</td>
</tr>
<a name="istio.mixer.v1.config.Adapter.impl"></a>
<tr>
<td><code>impl</code></td>
<td>string</td>
<td>Required. The name of a specific adapter implementation. An adapter's implementation name is typically a constant in its code.</td>
</tr>
<a name="istio.mixer.v1.config.Adapter.params"></a>
<tr>
<td><code>params</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct">Struct</a></td>
<td>Optional, depends on adapter implementation. Struct representation of a proto defined by the implementation; this varies depending on <code>impl</code>.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.Aspect"></a>
### Aspect
Aspect describes how an adapter is intended to operate in the context of the
rule it's embedded in. The value for `params` depends on the `kind` of this
aspect: each kind of aspect defines its own `params` proto.
The following example instructs Mixer to populate a metric named "responseTime"
that was declared to have three labels: srcConsumerId, destinationResponseStatusCode,
and destinationServiceName. For each label and the metric's `value` we provide
an expression over Istio's attributes. Mixer evaluates these expressions for
each request.
```yaml
kind: metrics
params:
metrics:
- descriptorName: responseTime # tie this metric to a descriptor of the same name
value: response.time # from the set of canonical attributes
labels:
srcConsumerId: source.user | source.uid
destinationResponseStatusCode: response.code
destinationServiceName: destination.service
```
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.Aspect.kind"></a>
<tr>
<td><code>kind</code></td>
<td>string</td>
<td>Required. The kind of aspect this intent is targeting.</td>
</tr>
<a name="istio.mixer.v1.config.Aspect.adapter"></a>
<tr>
<td><code>adapter</code></td>
<td>string</td>
<td>Optional. The name of the adapter this Aspect targets. If no name is provided, Mixer will use the adapter of the target kind named "default".</td>
</tr>
<a name="istio.mixer.v1.config.Aspect.params"></a>
<tr>
<td><code>params</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct">Struct</a></td>
<td>Required. Struct representation of a proto defined by each aspect kind.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.AspectRule"></a>
### AspectRule
An AspectRule is a selector and a set of intentions to be executed when the
selector is `true`. The selectors of the this rule's child AspectRules are only
evaluated if this rule's selector is true.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.AspectRule.selector"></a>
<tr>
<td><code>selector</code></td>
<td>string</td>
<td><p>Required. Selector is an attribute based predicate. When Mixer receives a request it evaluates all selectors in scope and executes the rules for all selectors that evaluated to true.</p><p>A few example selectors:</p>
<ul>
<li>an empty selector evaluates to <code>true</code></li>
<li><code>true</code>, a boolean literal; a rule with this selector will always be executed</li>
<li><code>destination.service == ratings*</code> selects any request targeting a service whose name starts with "ratings"</li>
<li><code>attr1 == &quot;20&quot; &amp;&amp; attr2 == &quot;30&quot;</code> logical AND, OR, and NOT are also available</li>
</ul></td>
</tr>
<a name="istio.mixer.v1.config.AspectRule.aspects"></a>
<tr>
<td><code>aspects[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.Aspect">Aspect</a></td>
<td>The aspects that apply when selector evaluates to <code>true</code>.</td>
</tr>
<a name="istio.mixer.v1.config.AspectRule.rules"></a>
<tr>
<td><code>rules[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.AspectRule">AspectRule</a></td>
<td>Nested aspect rules; their selectors are evaluated if this selector predicate evaluates to <code>true</code>.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.AttributeManifest"></a>
### AttributeManifest
AttributeManifest describes a set of Attributes produced by some component
of an Istio deployment.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.AttributeManifest.revision"></a>
<tr>
<td><code>revision</code></td>
<td>string</td>
<td>Optional. The revision of this document. Assigned by server.</td>
</tr>
<a name="istio.mixer.v1.config.AttributeManifest.name"></a>
<tr>
<td><code>name</code></td>
<td>string</td>
<td>Required. Name of the component producing these attributes. This can be the proxy (with the canonical name "istio-proxy") or the name of an <code>attributes</code> kind adapter in Mixer.</td>
</tr>
<a name="istio.mixer.v1.config.AttributeManifest.attributes"></a>
<tr>
<td><code>attributes</code></td>
<td>repeated map&lt;string, <a href="#istio.mixer.v1.config.AttributeManifest.AttributeInfo">AttributeInfo</a>&gt;</td>
<td><p>The set of attributes this Istio component will be responsible for producing at runtime. We map from attribute name to the attribute's specification. The name of an attribute, which is how attributes are referred to in aspect configuration, must conform to:</p>
<pre><code>Name = IDENT { SEPARATOR IDENT };
</code></pre><p>Where <code>IDENT</code> must match the regular expression <code>a-z+</code> and <code>SEPARATOR</code> must match the regular expression
<code>[\.-]</code>.</p><p>Attribute names must be unique within a single Istio deployment. The set of canonical attributes are described <a href="./attribute-vocabulary.html">here</a>. Attributes not in that list should be named with a
component-specific suffix such as request.count-my.component</p></td>
</tr>
</table>
<a name="istio.mixer.v1.config.AttributeManifest.AttributeInfo"></a>
### AttributeInfo
AttributeInfo describes the schema of an Istio `Attribute`.
<a name="rpcIstio.mixer.v1.configIstio.mixer.v1.config.AttributeManifest.AttributeInfoDescriptionSubsectionSubsection"></a>
#### Istio Attributes
Istio uses `attributes` to describe runtime activities of Istio services.
An Istio attribute carries a specific piece of information about an activity,
such as the error code of an API request, the latency of an API request, or the
original IP address of a TCP connection. The attributes are often generated
and consumed by different services. For example, a frontend service can
generate an authenticated user attribute and pass it to a backend service for
access control purpose.
To simplify the system and improve developer experience, Istio uses
shared attribute definitions across all components. For example, the same
authenticated user attribute will be used for logging, monitoring, analytics,
billing, access control, auditing. Many Istio components provide their
functionality by collecting, generating, and operating on attributes.
For example, the proxy collects the error code attribute, and the logging
stores it into a log.
<a name="rpcIstio.mixer.v1.configIstio.mixer.v1.config.AttributeManifest.AttributeInfoDescriptionSubsectionSubsection_1"></a>
#### Design
Each Istio attribute must conform to an `AttributeInfo` in an
`AttributeManifest` in the current Istio deployment at runtime. An
`AttributeInfo` is used to define an attribute's
metadata: the type of its value and a detailed description that explains
the semantics of the attribute type. Each attribute's name is globally unique;
in other words an attribute name can only appear once across all manifests.
The runtime presentation of an attribute is intentionally left out of this
specification, because passing attribute using JSON, XML, or Protocol Buffers
does not change the semantics of the attribute. Different implementations
can choose different representations based on their needs.
<a name="rpcIstio.mixer.v1.configIstio.mixer.v1.config.AttributeManifest.AttributeInfoDescriptionSubsectionSubsection_2"></a>
#### HTTP Mapping
Because many systems already have REST APIs, it makes sense to define a
standard HTTP mapping for Istio attributes that are compatible with typical
REST APIs. The design is to map one attribute to one HTTP header, the
attribute name and value becomes the HTTP header name and value. The actual
encoding scheme will be decided later.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.AttributeManifest.AttributeInfo.description"></a>
<tr>
<td><code>description</code></td>
<td>string</td>
<td>Optional. A human-readable description of the attribute's purpose.</td>
</tr>
<a name="istio.mixer.v1.config.AttributeManifest.AttributeInfo.valueType"></a>
<tr>
<td><code>valueType</code></td>
<td><a href="#istio.mixer.v1.config.descriptor.ValueType">ValueType</a></td>
<td>Required. The type of data carried by this attribute.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.DnsName"></a>
### DnsName
DnsName holds a valid domain name.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.DnsName.value"></a>
<tr>
<td><code>value</code></td>
<td>string</td>
<td></td>
</tr>
</table>
<a name="istio.mixer.v1.config.EmailAddress"></a>
### EmailAddress
EmailAddress holds a properly formatted email address.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.EmailAddress.value"></a>
<tr>
<td><code>value</code></td>
<td>string</td>
<td></td>
</tr>
</table>
<a name="istio.mixer.v1.config.GlobalConfig"></a>
### GlobalConfig
WARNING: GlobalConfig is deprecated, see the Config API's
swagger spec.
GlobalConfig defines configuration elements that are available for the rest
of the config. It is used to configure adapters and make them available in
AspectRules.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.GlobalConfig.revision"></a>
<tr>
<td><code>revision</code></td>
<td>string</td>
<td>Optional.</td>
</tr>
<a name="istio.mixer.v1.config.GlobalConfig.adapters"></a>
<tr>
<td><code>adapters[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.Adapter">Adapter</a></td>
<td></td>
</tr>
<a name="istio.mixer.v1.config.GlobalConfig.manifests"></a>
<tr>
<td><code>manifests[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.AttributeManifest">AttributeManifest</a></td>
<td></td>
</tr>
<a name="istio.mixer.v1.config.GlobalConfig.logs"></a>
<tr>
<td><code>logs[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.descriptor.LogEntryDescriptor">LogEntryDescriptor</a></td>
<td></td>
</tr>
<a name="istio.mixer.v1.config.GlobalConfig.metrics"></a>
<tr>
<td><code>metrics[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.descriptor.MetricDescriptor">MetricDescriptor</a></td>
<td></td>
</tr>
<a name="istio.mixer.v1.config.GlobalConfig.monitoredResources"></a>
<tr>
<td><code>monitoredResources[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.descriptor.MonitoredResourceDescriptor">MonitoredResourceDescriptor</a></td>
<td></td>
</tr>
<a name="istio.mixer.v1.config.GlobalConfig.principals"></a>
<tr>
<td><code>principals[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.descriptor.PrincipalDescriptor">PrincipalDescriptor</a></td>
<td></td>
</tr>
<a name="istio.mixer.v1.config.GlobalConfig.quotas"></a>
<tr>
<td><code>quotas[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.descriptor.QuotaDescriptor">QuotaDescriptor</a></td>
<td></td>
</tr>
</table>
<a name="istio.mixer.v1.config.IpAddress"></a>
### IpAddress
IpAddress holds an IPv4 or IPv6 address.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.IpAddress.value"></a>
<tr>
<td><code>value</code></td>
<td>bytes</td>
<td></td>
</tr>
</table>
<a name="istio.mixer.v1.config.ServiceConfig"></a>
### ServiceConfig
WARNING: ServiceConfig is deprecated, see the Config API's
swagger spec.
Configures a set of services.
The following example configures a metric that will be recorded for all services:
```yaml
subject: "namespace:ns1"
revision: "1011"
rules:
- selector: destination.service == "*"
aspects:
- kind: metrics
params:
metrics: # defines metric collection across the board.
- descriptorName: responseTimeByStatusCode
value: response.time
labels:
statusCode: response.code
```
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.ServiceConfig.subject"></a>
<tr>
<td><code>subject</code></td>
<td>string</td>
<td>Optional. Subject is unique for a config type. 2 config with the same subject will overwrite each other</td>
</tr>
<a name="istio.mixer.v1.config.ServiceConfig.revision"></a>
<tr>
<td><code>revision</code></td>
<td>string</td>
<td>Optional. revision of this config. This is assigned by the server</td>
</tr>
<a name="istio.mixer.v1.config.ServiceConfig.rules"></a>
<tr>
<td><code>rules[]</code></td>
<td>repeated <a href="#istio.mixer.v1.config.AspectRule">AspectRule</a></td>
<td></td>
</tr>
</table>
<a name="istio.mixer.v1.config.Uri"></a>
### Uri
Uri represents a properly formed URI.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.Uri.value"></a>
<tr>
<td><code>value</code></td>
<td>string</td>
<td></td>
</tr>
</table>
<a name="rpcIstio.mixer.v1.configDescriptor"></a>
## Package istio.mixer.v1.config.descriptor
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor"></a>
### LogEntryDescriptor
Defines the format of a single log entry.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.name"></a>
<tr>
<td><code>name</code></td>
<td>string</td>
<td>Required. The name of this descriptor.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.displayName"></a>
<tr>
<td><code>displayName</code></td>
<td>string</td>
<td>Optional. A concise name for the log entry type, which can be displayed in user interfaces. Use sentence case without an ending period, for example "Request count".</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.description"></a>
<tr>
<td><code>description</code></td>
<td>string</td>
<td>Optional. A description of the log entry type, which can be used in documentation.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.payloadFormat"></a>
<tr>
<td><code>payloadFormat</code></td>
<td><a href="#istio.mixer.v1.config.descriptor.LogEntryDescriptor.PayloadFormat">PayloadFormat</a></td>
<td>Required. Format of the value of the payload attribute.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.logTemplate"></a>
<tr>
<td><code>logTemplate</code></td>
<td>string</td>
<td><p>Required. The template that will be populated with labels at runtime to generate a log message; the labels describe the parameters for this template.</p><p>The template strings must conform to go's text/template syntax.</p></td>
</tr>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.labels"></a>
<tr>
<td><code>labels</code></td>
<td>repeated map&lt;string, <a href="#istio.mixer.v1.config.descriptor.ValueType">ValueType</a>&gt;</td>
<td>Labels describe the parameters of this log's template string. The log definition allows the user to map attribute expressions to actual values for these labels at run time; the result of the evaluation must be of the type described by the kind for each label.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.PayloadFormat"></a>
### PayloadFormat
PayloadFormat details the currently supported logging payload formats.
TEXT is the default payload format.
<table>
<tr>
<th>Value</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.PayloadFormat.PAYLOADFORMATUNSPECIFIED"></a>
<tr>
<td>PAYLOADFORMATUNSPECIFIED</td>
<td>Invalid, default value.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.PayloadFormat.TEXT"></a>
<tr>
<td>TEXT</td>
<td>Indicates a payload format of raw text.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.LogEntryDescriptor.PayloadFormat.JSON"></a>
<tr>
<td>JSON</td>
<td>Indicates that the payload is a serialized JSON object.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor"></a>
### MetricDescriptor
Defines a metric type and its schema.
A metric is dimensioned by a set of labels whose values are derived at runtime
from attributes. A given metric holds a unique value for potentially any
combination of these dimensions.
The following is an example descriptor for a metric capturing the number of
RPCs served, dimensioned by the method being called and response code returned
by the server:
```yaml
metrics:
name: "responseCode"
kind: COUNTER
value: INT64
labels:
apiMethod: STRING
responseCode: INT64
```
To actually report metrics at run time a mapping from attributes to a metric's
labels must be provided. This is provided in the aspect config; using our above
descriptor we might describe the metric as:
```yaml
metric:
descriptor: "responseCode" # must match metricDescriptor.name
value: request.count # expression syntax for the attribute named "request.count"
labels:
# either the attribute named 'api.method' or the literal string 'unknown'; must eval to a string
apiMethod: api.method | "unknown"
# either the attribute named 'response.code' or the literal int64 500; must eval to an int64
responseCode: response.code | 500
```
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.name"></a>
<tr>
<td><code>name</code></td>
<td>string</td>
<td>Required. The name of this descriptor. This is used to refer to this descriptor in other contexts.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.displayName"></a>
<tr>
<td><code>displayName</code></td>
<td>string</td>
<td>Optional. A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example "Request count".</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.description"></a>
<tr>
<td><code>description</code></td>
<td>string</td>
<td>Optional. A description of the metric, which should be used as the documentation for the metric.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.kind"></a>
<tr>
<td><code>kind</code></td>
<td><a href="#istio.mixer.v1.config.descriptor.MetricDescriptor.MetricKind">MetricKind</a></td>
<td>Required. Whether the metric records instantaneous values, changes to a value, etc.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.value"></a>
<tr>
<td><code>value</code></td>
<td><a href="#istio.mixer.v1.config.descriptor.ValueType">ValueType</a></td>
<td>Required. The type of data this metric records.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.labels"></a>
<tr>
<td><code>labels</code></td>
<td>repeated map&lt;string, <a href="#istio.mixer.v1.config.descriptor.ValueType">ValueType</a>&gt;</td>
<td>Labels that dimension the data recorded by this metric. The metric definition allows the user to map attribute expressions to actual values for these labels at run time; the result of the evaluation must be of the type described by the kind for each label.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.buckets"></a>
<tr>
<td><code>buckets</code></td>
<td><a href="#istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition">BucketsDefinition</a></td>
<td>For metrics with a metric kind of DISTRIBUTION, this provides a mechanism for configuring the buckets that will be used to store the aggregated values. This field must be provided for metrics declared to be of type DISTRIBUTION. This field will be ignored for non-distribution metric kinds.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition"></a>
### BucketsDefinition
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.linearBuckets"></a>
<tr>
<td><code>linearBuckets</code></td>
<td><a href="#istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Linear">Linear</a> (oneof )</td>
<td>The linear buckets.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.exponentialBuckets"></a>
<tr>
<td><code>exponentialBuckets</code></td>
<td><a href="#istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Exponential">Exponential</a> (oneof )</td>
<td>The exponential buckets.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.explicitBuckets"></a>
<tr>
<td><code>explicitBuckets</code></td>
<td><a href="#istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Explicit">Explicit</a> (oneof )</td>
<td>The explicit buckets.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Explicit"></a>
### Explicit
Specifies a set of buckets with arbitrary widths.
There are `size(bounds) + 1` (= `N`) buckets. Bucket `i` has the following
boundaries:
* Upper bound (`0 <= i < N-1`): `bounds[i]`
* Lower bound (`1 <= i < N`): `bounds[i - 1]`
The `bounds` field must contain at least one element. If `bounds` has
only one element, then there are no finite buckets, and that single
element is the common boundary of the overflow and underflow buckets.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Explicit.bounds"></a>
<tr>
<td><code>bounds[]</code></td>
<td>repeated double</td>
<td>The values must be monotonically increasing.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Exponential"></a>
### Exponential
Specifies an exponential sequence of buckets that have a width that is
proportional to the value of the lower bound. Each bucket represents a
constant relative uncertainty on a specific value in the bucket.
There are `numFiniteBuckets + 2` (= `N`) buckets. The two additional
buckets are the underflow and overflow buckets.
Bucket `i` has the following boundaries:
* Upper bound (0 <= i < N-1): `scale * (growthFactor ^ i)`
* Lower bound (1 <= i < N): `scale * (growthFactor ^ (i - 1))`
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Exponential.numFiniteBuckets"></a>
<tr>
<td><code>numFiniteBuckets</code></td>
<td>int32</td>
<td>Must be greater than 0.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Exponential.growthFactor"></a>
<tr>
<td><code>growthFactor</code></td>
<td>double</td>
<td>Must be greater than 1.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Exponential.scale"></a>
<tr>
<td><code>scale</code></td>
<td>double</td>
<td>Must be greater than 0.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Linear"></a>
### Linear
Specifies a linear sequence of buckets that all have the same width
(except overflow and underflow). Each bucket represents a constant
absolute uncertainty on the specific value in the bucket.
There are `numFiniteBuckets + 2` (= `N`) buckets. The two additional
buckets are the underflow and overflow buckets.
Bucket `i` has the following boundaries:
* Upper bound (`0 <= i < N-1`): `offset + (width * i)`
* Lower bound (`1 <= i < N`): `offset + (width * (i - 1))`
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Linear.numFiniteBuckets"></a>
<tr>
<td><code>numFiniteBuckets</code></td>
<td>int32</td>
<td>Must be greater than 0.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Linear.width"></a>
<tr>
<td><code>width</code></td>
<td>double</td>
<td>Must be greater than 0.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.BucketsDefinition.Linear.offset"></a>
<tr>
<td><code>offset</code></td>
<td>double</td>
<td>Lower bound of the first bucket.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.MetricKind"></a>
### MetricKind
The kind of measurement. It describes how the data is recorded.
<table>
<tr>
<th>Value</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.MetricKind.METRICKINDUNSPECIFIED"></a>
<tr>
<td>METRICKINDUNSPECIFIED</td>
<td>Do not use this default value.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.MetricKind.GAUGE"></a>
<tr>
<td>GAUGE</td>
<td>An instantaneous measurement of a value. For example, the number of VMs.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.MetricKind.COUNTER"></a>
<tr>
<td>COUNTER</td>
<td>A count of occurrences over an interval, always a positive integer. For example, the number of API requests.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MetricDescriptor.MetricKind.DISTRIBUTION"></a>
<tr>
<td>DISTRIBUTION</td>
<td><p>Summary statistics for a population of values. At the moment, only histograms representing the distribution of those values across a set of buckets
are supported (configured via the buckets field).</p><p>Values for DISTRIBUTIONs will be reported in singular form. It will be up to Mixer adapters and backend systems to transform single reported values into the distribution form as needed (and as supported).</p></td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.MonitoredResourceDescriptor"></a>
### MonitoredResourceDescriptor
An object that describes the schema of a `MonitoredResource`. A
`MonitoredResource` is used to define a type of resources for
monitoring purpose. For example, the monitored resource "VM" refers
to virtual machines, which requires 3 attributes "owner", "zone",
"name" to uniquely identify a specific instance. When reporting
a metric against a monitored resource, the metric attributes will
be used to associate the right value with the right instance,
such as memory usage of a VM.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.MonitoredResourceDescriptor.name"></a>
<tr>
<td><code>name</code></td>
<td>string</td>
<td>Required. The name of this descriptor.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MonitoredResourceDescriptor.description"></a>
<tr>
<td><code>description</code></td>
<td>string</td>
<td>Optional. A detailed description of the monitored resource descriptor that might be used in documentation.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.MonitoredResourceDescriptor.labels"></a>
<tr>
<td><code>labels</code></td>
<td>repeated map&lt;string, <a href="#istio.mixer.v1.config.descriptor.ValueType">ValueType</a>&gt;</td>
<td>Labels represent the dimensions that uniquely identify this monitored resource. At runtime expressions will be evaluated to provide values for each label. Label names are mapped to expressions as part of aspect configuration.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.PrincipalDescriptor"></a>
### PrincipalDescriptor
Defines a a security principal.
A principal is described by a set of attributes.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.PrincipalDescriptor.name"></a>
<tr>
<td><code>name</code></td>
<td>string</td>
<td>Required. The name of this descriptor.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.PrincipalDescriptor.labels"></a>
<tr>
<td><code>labels</code></td>
<td>repeated map&lt;string, <a href="#istio.mixer.v1.config.descriptor.ValueType">ValueType</a>&gt;</td>
<td>Labels represent the dimensions that uniquely identify this security principal. At runtime expressions will be evaluated to provide values for each label. Label names are mapped to expressions as part of aspect configuration.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.QuotaDescriptor"></a>
### QuotaDescriptor
Configuration state for a particular quota.
Quotas are similar to metrics, except that they are mutated through method
calls and there are limits on the allowed values.
The descriptor below lets you define a quota and indicate the maximum
amount values of this quota are allowed to hold.
A given quota is described by a set of attributes. These attributes represent
the different dimensions to associate with the quota. A given quota holds a
unique value for potentially any combination of these attributes.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.QuotaDescriptor.name"></a>
<tr>
<td><code>name</code></td>
<td>string</td>
<td>Required. The name of this descriptor.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.QuotaDescriptor.displayName"></a>
<tr>
<td><code>displayName</code></td>
<td>string</td>
<td>Optional. A concise name for the quota which can be displayed in user interfaces.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.QuotaDescriptor.description"></a>
<tr>
<td><code>description</code></td>
<td>string</td>
<td>Optional. A description of the quota which can be used in documentation.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.QuotaDescriptor.labels"></a>
<tr>
<td><code>labels</code></td>
<td>repeated map&lt;string, <a href="#istio.mixer.v1.config.descriptor.ValueType">ValueType</a>&gt;</td>
<td>The set of labels that are necessary to describe a specific value cell for a quota of this type.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.QuotaDescriptor.rateLimit"></a>
<tr>
<td><code>rateLimit</code></td>
<td>bool</td>
<td>Indicates whether the quota represents a rate limit or represents a resource quota.</td>
</tr>
</table>
<a name="istio.mixer.v1.config.descriptor.ValueType"></a>
### ValueType
ValueType describes the types that values in the Istio system can take. These
are used to describe the type of Attributes at run time, describe the type of
the result of evaluating an expression, and to describe the runtime type of
fields of other descriptors.
<table>
<tr>
<th>Value</th>
<th>Description</th>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.VALUETYPEUNSPECIFIED"></a>
<tr>
<td>VALUETYPEUNSPECIFIED</td>
<td>Invalid, default value.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.STRING"></a>
<tr>
<td>STRING</td>
<td>An undiscriminated variable-length string.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.INT64"></a>
<tr>
<td>INT64</td>
<td>An undiscriminated 64-bit signed integer.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.DOUBLE"></a>
<tr>
<td>DOUBLE</td>
<td>An undiscriminated 64-bit floating-point value.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.BOOL"></a>
<tr>
<td>BOOL</td>
<td>An undiscriminated boolean value.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.TIMESTAMP"></a>
<tr>
<td>TIMESTAMP</td>
<td>A point in time.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.IPADDRESS"></a>
<tr>
<td>IPADDRESS</td>
<td>An IP address.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.EMAILADDRESS"></a>
<tr>
<td>EMAILADDRESS</td>
<td>An email address.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.URI"></a>
<tr>
<td>URI</td>
<td>A URI.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.DNSNAME"></a>
<tr>
<td>DNSNAME</td>
<td>A DNS name.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.DURATION"></a>
<tr>
<td>DURATION</td>
<td>A span between two points in time.</td>
</tr>
<a name="istio.mixer.v1.config.descriptor.ValueType.STRINGMAP"></a>
<tr>
<td>STRINGMAP</td>
<td>A map string -&gt; string, typically used by headers.</td>
</tr>
</table>

View File

@ -1,273 +0,0 @@
---
title: Destination Policies
overview: Client-side traffic management policies configuration schema
order: 30
draft: true
layout: docs
type: markdown
---
<a name="istio.proxy.v1.config.DestinationPolicy"></a>
### DestinationPolicy
DestinationPolicy defines client/caller-side policies that determine how
to handle traffic bound to a particular destination service. The policy
specifies configuration for load balancing and circuit breakers. For
example, a simple load balancing policy for the reviews service would
look as follows:
destination: reviews.default.svc.cluster.local
policy:
- loadBalancing:
name: RANDOM
Policies are applicable per individual service versions. ONLY
ONE policy can be defined per service version. Policy CANNOT be empty.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.DestinationPolicy.destination"></a>
<tr>
<td><code>destination</code></td>
<td>string</td>
<td>REQUIRED. Service name for which the service version is defined. The value MUST BE a fully-qualified domain name, e.g. <em>my-service.default.svc.cluster.local</em>.</td>
</tr>
<a name="istio.proxy.v1.config.DestinationPolicy.policy"></a>
<tr>
<td><code>policy[]</code></td>
<td>repeated <a href="#istio.proxy.v1.config.DestinationVersionPolicy">DestinationVersionPolicy</a></td>
<td>REQUIRED. List of policies, one per service version.</td>
</tr>
</table>
<a name="istio.proxy.v1.config.DestinationVersionPolicy"></a>
#### DestinationVersionPolicy
A destination policy can be restricted to a particular version of a
service or applied to all versions. The tags field in the
DestinationVersionPolicy allow restricting the scope of a
DestinationPolicy. For example, the following load balancing policy
applies to version v1 of the reviews service running in the prod
environment:
destination: reviews.default.svc.cluster.local
policy:
- tags:
env: prod
version: v1
loadBalancing:
name: RANDOM
If tags are omitted, the policy applies for all versions of the
service. Policy CANNOT BE empty.
*Note:* Destination policies will be applied only if the corresponding
tagged instances are explicitly routed to. In other words, for every
destination policy defined, at least one route rule must refer to the
service version indicated in the destination policy.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.DestinationVersionPolicy.tags"></a>
<tr>
<td><code>tags</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Optional set of tags that identify a particular version of the destination service. If omitted, the policy will apply to all versions of the service.</td>
</tr>
<a name="istio.proxy.v1.config.DestinationVersionPolicy.loadBalancing"></a>
<tr>
<td><code>loadBalancing</code></td>
<td><a href="#istio.proxy.v1.config.LoadBalancing">LoadBalancing</a></td>
<td>Load balancing policy.</td>
</tr>
<a name="istio.proxy.v1.config.DestinationVersionPolicy.circuitBreaker"></a>
<tr>
<td><code>circuitBreaker</code></td>
<td><a href="#istio.proxy.v1.config.CircuitBreaker">CircuitBreaker</a></td>
<td>Circuit breaker policy.</td>
</tr>
</table>
<a name="istio.proxy.v1.config.LoadBalancing"></a>
### LoadBalancing
Load balancing policy to use when forwarding traffic. These policies
directly correlate to [load balancer
types](https://envoyproxy.github.io/envoy/intro/arch_overview/load_balancing.html)
supported by Envoy. Example,
destination: reviews.default.svc.cluster.local
policy:
- loadBalancing:
name: RANDOM
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.LoadBalancing.name"></a>
<tr>
<td><code>name</code></td>
<td><a href="#istio.proxy.v1.config.LoadBalancing.SimpleLBPolicy">SimpleLBPolicy</a></td>
<td>Load balancing policy name (as defined in SimpleLBPolicy below)</td>
</tr>
</table>
<a name="istio.proxy.v1.config.LoadBalancing.SimpleLBPolicy"></a>
#### SimpleLBPolicy
Load balancing algorithms supported by Envoy proxy.
<table>
<tr>
<th>Value</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.LoadBalancing.SimpleLBPolicy.ROUND_ROBIN"></a>
<tr>
<td>ROUND_ROBIN</td>
<td>Simple round robin policy.</td>
</tr>
<a name="istio.proxy.v1.config.LoadBalancing.SimpleLBPolicy.LEAST_CONN"></a>
<tr>
<td>LEAST_CONN</td>
<td>The least request load balancer uses an O(1) algorithm which selects two random healthy hosts and picks the host which has fewer active requests.</td>
</tr>
<a name="istio.proxy.v1.config.LoadBalancing.SimpleLBPolicy.RANDOM"></a>
<tr>
<td>RANDOM</td>
<td>The random load balancer selects a random healthy host. The random load balancer generally performs better than round robin if no health checking policy is configured.</td>
</tr>
</table>
<a name="istio.proxy.v1.config.CircuitBreaker"></a>
### CircuitBreaker
Circuit breaker configuration for Envoy. The circuit breaker
implementation is fine-grained in that it tracks the success/failure
rates of individual hosts in the load balancing pool. Hosts that
continually return errors for API calls are ejected from the pool for a
pre-defined period of time. See Envoy's
[circuit breaker](https://envoyproxy.github.io/envoy/intro/arch_overview/circuit_breaking.html)
and [outlier detection](https://envoyproxy.github.io/envoy/intro/arch_overview/outlier.html)
for more details.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.CircuitBreaker.simpleCb"></a>
<tr>
<td><code>simpleCb</code></td>
<td><a href="#istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy">SimpleCircuitBreakerPolicy</a></td>
<td></td>
</tr>
</table>
<a name="istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy"></a>
#### SimpleCircuitBreakerPolicy
A simple circuit breaker can be set based on a number of criteria such as
connection and request limits. For example, the following destination
policy sets a limit of 100 connections to "reviews" service version
"v1" backends.
destination: reviews.default.svc.cluster.local
policy:
- tags:
version: v1
circuitBreaker:
simpleCb:
maxConnections: 100
The following destination policy sets a limit of 100 connections and
1000 concurrent requests, with no more than 10 req/connection to
"reviews" service version "v1" backends. In addition, it configures
hosts to be scanned every 5 minutes, such that any host that fails 7
consecutive times with 5XX error code will be ejected for 15 minutes.
destination: reviews.default.svc.cluster.local
policy:
- tags:
version: v1
circuitBreaker:
simpleCb:
maxConnections: 100
httpMaxRequests: 1000
httpMaxRequestsPerConnection: 10
httpConsecutiveErrors: 7
sleepWindow: 15m
httpDetectionInterval: 5m
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy.maxConnections"></a>
<tr>
<td><code>maxConnections</code></td>
<td>int32</td>
<td>Maximum number of connections to a backend.</td>
</tr>
<a name="istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy.httpMaxPendingRequests"></a>
<tr>
<td><code>httpMaxPendingRequests</code></td>
<td>int32</td>
<td>Maximum number of pending requests to a backend. Default 1024</td>
</tr>
<a name="istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy.httpMaxRequests"></a>
<tr>
<td><code>httpMaxRequests</code></td>
<td>int32</td>
<td>Maximum number of requests to a backend. Default 1024</td>
</tr>
<a name="istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy.sleepWindow"></a>
<tr>
<td><code>sleepWindow</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>Minimum time the circuit will be closed. format: 1h/1m/1s/1ms. MUST BE &gt;=1ms. Default is 30s.</td>
</tr>
<a name="istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy.httpConsecutiveErrors"></a>
<tr>
<td><code>httpConsecutiveErrors</code></td>
<td>int32</td>
<td>Number of 5XX errors before circuit is opened. Defaults to 5.</td>
</tr>
<a name="istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy.httpDetectionInterval"></a>
<tr>
<td><code>httpDetectionInterval</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>Time interval between ejection sweep analysis. format: 1h/1m/1s/1ms. MUST BE &gt;=1ms. Default is 10s.</td>
</tr>
<a name="istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy.httpMaxRequestsPerConnection"></a>
<tr>
<td><code>httpMaxRequestsPerConnection</code></td>
<td>int32</td>
<td>Maximum number of requests per connection to a backend. Setting this parameter to 1 disables keep alive.</td>
</tr>
<a name="istio.proxy.v1.config.CircuitBreaker.SimpleCircuitBreakerPolicy.httpMaxEjectionPercent"></a>
<tr>
<td><code>httpMaxEjectionPercent</code></td>
<td>int32</td>
<td>Maximum % of hosts in the load balancing pool for the destination service that can be ejected by the circuit breaker. Defaults to 10%.</td>
</tr>
</table>

View File

@ -1,516 +0,0 @@
---
title: Routing Rules
overview: Traffic routing rule configuration schema
order: 20
draft: true
layout: docs
type: markdown
---
<a name="istio.proxy.v1.config.RouteRule"></a>
### RouteRule
Route rule provides a custom routing policy based on the source and
destination service versions and connection/request metadata. The rule
must provide a set of conditions for each protocol (TCP, UDP, HTTP) that
the destination service exposes on its ports.
The rule applies only to the ports on the destination service for which
it provides protocol-specific match condition, e.g. if the rule does not
specify TCP condition, the rule does not apply to TCP traffic towards
the destination service.
For example, a simple rule to send 100% of incoming traffic for a
"reviews" service to version "v1" can be specified as follows:
destination: reviews.default.svc.cluster.local
route:
- tags:
version: v1
weight: 100
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.RouteRule.destination"></a>
<tr>
<td><code>destination</code></td>
<td>string</td>
<td>REQUIRED: Destination uniquely identifies the destination associated with this routing rule. This field is applicable for hostname-based resolution for HTTP traffic as well as IP-based resolution for TCP/UDP traffic. The value MUST BE a fully-qualified domain name, e.g. "my-service.default.svc.cluster.local".</td>
</tr>
<a name="istio.proxy.v1.config.RouteRule.precedence"></a>
<tr>
<td><code>precedence</code></td>
<td>int32</td>
<td>RECOMMENDED. Precedence is used to disambiguate the order of application of rules for the same destination service. A higher number takes priority. If not specified, the value is assumed to be 0. The order of application for rules with the same precedence is unspecified.</td>
</tr>
<a name="istio.proxy.v1.config.RouteRule.match"></a>
<tr>
<td><code>match</code></td>
<td><a href="#istio.proxy.v1.config.MatchCondition">MatchCondition</a></td>
<td>Match condtions to be satisfied for the route rule to be activated. If match is omitted, the route rule applies only to HTTP traffic.</td>
</tr>
<a name="istio.proxy.v1.config.RouteRule.route"></a>
<tr>
<td><code>route[]</code></td>
<td>repeated <a href="#istio.proxy.v1.config.DestinationWeight">DestinationWeight</a></td>
<td>REQUIRED (route|redirect). A routing rule can either redirect traffic or forward traffic. The forwarding target can be one of several versions of a service (see glossary in beginning of document). Weights associated with the service version determine the proportion of traffic it receives.</td>
</tr>
<a name="istio.proxy.v1.config.RouteRule.redirect"></a>
<tr>
<td><code>redirect</code></td>
<td><a href="#istio.proxy.v1.config.HTTPRedirect">HTTPRedirect</a></td>
<td>REQUIRED (route|redirect). A routing rule can either redirect traffic or forward traffic. The redirect primitive can be used to send a HTTP 302 redirect to a different URI or Authority.</td>
</tr>
<a name="istio.proxy.v1.config.RouteRule.rewrite"></a>
<tr>
<td><code>rewrite</code></td>
<td><a href="#istio.proxy.v1.config.HTTPRewrite">HTTPRewrite</a></td>
<td>Rewrite HTTP URIs and Authority headers. Rewrite cannot be used with Redirect primitive. Rewrite will be performed before forwarding.</td>
</tr>
<a name="istio.proxy.v1.config.RouteRule.httpReqTimeout"></a>
<tr>
<td><code>httpReqTimeout</code></td>
<td><a href="#istio.proxy.v1.config.HTTPTimeout">HTTPTimeout</a></td>
<td>Timeout policy for HTTP requests.</td>
</tr>
<a name="istio.proxy.v1.config.RouteRule.httpReqRetries"></a>
<tr>
<td><code>httpReqRetries</code></td>
<td><a href="#istio.proxy.v1.config.HTTPRetry">HTTPRetry</a></td>
<td>Retry policy for HTTP requests.</td>
</tr>
<a name="istio.proxy.v1.config.RouteRule.httpFault"></a>
<tr>
<td><code>httpFault</code></td>
<td><a href="#istio.proxy.v1.config.HTTPFaultInjection">HTTPFaultInjection</a></td>
<td>Fault injection policy to apply on HTTP traffic</td>
</tr>
</table>
<a name="istio.proxy.v1.config.MatchCondition"></a>
### MatchCondition
Match condition specifies a set of criteria to be met in order for the
route rule to be applied to the connection or HTTP request. The
condition provides distinct set of conditions for each protocol with the
intention that conditions apply only to the service ports that match the
protocol. For example, the following route rule restricts the rule to
match only requests originating from "reviews:v2", accessing ratings
service where the URL path starts with /ratings/v2/ and the request
contains a "cookie" with value "user=jason",
destination: ratings.default.svc.cluster.local
match:
source: reviews.default.svc.cluster.local
sourceTags:
version: v2
httpHeaders:
cookie:
regex: "^(.*?;)?(user=jason)(;.*)?$"
uri:
prefix: "/ratings/v2/"
MatchCondition CANNOT BE empty. At least one of source, sourceTags or
httpHeaders must be specified.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.MatchCondition.source"></a>
<tr>
<td><code>source</code></td>
<td>string</td>
<td>Identifies the service initiating a connection or a request by its name. If specified, name MUST BE a fully qualified domain name such as foo.bar.com</td>
</tr>
<a name="istio.proxy.v1.config.MatchCondition.sourceTags"></a>
<tr>
<td><code>sourceTags</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>One or more tags that uniquely identify the source service version. In Kubernetes, tags correspond to the labels associated with pods.</td>
</tr>
<a name="istio.proxy.v1.config.MatchCondition.httpHeaders"></a>
<tr>
<td><code>httpHeaders</code></td>
<td>repeated map&lt;string, <a href="#istio.proxy.v1.config.StringMatch">StringMatch</a>&gt;</td>
<td><p>Set of HTTP match conditions based on HTTP/1.1, HTTP/2, GRPC request metadata, such as <em>uri</em>, <em>scheme</em>, <em>authority</em>. The header keys must be lowercase and use hyphen as the separator, e.g. <em>x-request-id</em>.</p><p><em>Note 1:</em> The keys <em>uri</em>, <em>scheme</em>, <em>method</em>, and <em>authority</em> correspond to URI, protocol scheme (e.g., HTTP, HTTPS), HTTP method (e.g., GET, POST), and the HTTP Host header respectively.</p><p><em>Note 2:</em> <em>uri</em> can be used to perform URL matches. For URL matches (Uri_), only prefix and exact (see StringMatch) matches are supported. For other HTTP headers, exact, prefix and ECMA style regular expression matches are supported.</p></td>
</tr>
</table>
<a name="istio.proxy.v1.config.StringMatch"></a>
#### StringMatch
Describes how to match a given string in HTTP headers. Match is case-sensitive.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.StringMatch.exact"></a>
<tr>
<td><code>exact</code></td>
<td>string (oneof )</td>
<td>exact string match</td>
</tr>
<a name="istio.proxy.v1.config.StringMatch.prefix"></a>
<tr>
<td><code>prefix</code></td>
<td>string (oneof )</td>
<td>prefix-based match</td>
</tr>
<a name="istio.proxy.v1.config.StringMatch.regex"></a>
<tr>
<td><code>regex</code></td>
<td>string (oneof )</td>
<td>ECMAscript style regex-based match</td>
</tr>
</table>
<a name="istio.proxy.v1.config.DestinationWeight"></a>
### DestinationWeight
Each routing rule is associated with one or more service versions (see
glossary in beginning of document). Weights associated with the version
determine the proportion of traffic it receives. For example, the
following rule will route 25% of traffic for the "reviews" service to
instances with the "v2" tag and the remaining traffic (i.e., 75%) to
"v1".
destination: reviews.default.svc.cluster.local
route:
- tags:
version: v2
weight: 25
- tags:
version: v1
weight: 75
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.DestinationWeight.destination"></a>
<tr>
<td><code>destination</code></td>
<td>string</td>
<td>Destination uniquely identifies the destination service. If not specified, the value is inherited from the parent route rule. Value must be in fully qualified domain name format (e.g., "my-service.default.svc.cluster.local").</td>
</tr>
<a name="istio.proxy.v1.config.DestinationWeight.tags"></a>
<tr>
<td><code>tags</code></td>
<td>repeated map&lt;string, string&gt;</td>
<td>Service version identifier for the destination service.</td>
</tr>
<a name="istio.proxy.v1.config.DestinationWeight.weight"></a>
<tr>
<td><code>weight</code></td>
<td>int32</td>
<td>REQUIRED. The proportion of traffic to be forwarded to the service version. (0-100). Sum of weights across destinations SHOULD BE == 100. If there is only destination in a rule, the weight value is assumed to be 100.</td>
</tr>
</table>
<a name="istio.proxy.v1.config.HTTPRedirect"></a>
### HTTPRedirect
HTTPRedirect can be used to send a 302 redirect response to the caller,
where the Authority/Host and the URI in the response can be swapped with
the specified values. For example, the following route rule redirects
requests for /v1/getProductRatings API on the ratings service to
/v1/bookRatings provided by the bookratings service.
destination: ratings.default.svc.cluster.local
match:
httpHeaders:
uri:
exact: /v1/getProductRatings
redirect:
uri: /v1/bookRatings
authority: bookratings.default.svc.cluster.local
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.HTTPRedirect.uri"></a>
<tr>
<td><code>uri</code></td>
<td>string</td>
<td>On a redirect, overwrite the Path portion of the URL with this value. Note that the entire path will be replaced, irrespective of the request URI being matched as an exact path or prefix.</td>
</tr>
<a name="istio.proxy.v1.config.HTTPRedirect.authority"></a>
<tr>
<td><code>authority</code></td>
<td>string</td>
<td>On a redirect, overwrite the Authority/Host portion of the URL with this value</td>
</tr>
</table>
<a name="istio.proxy.v1.config.HTTPRewrite"></a>
### HTTPRewrite
HTTPRewrite can be used to rewrite specific parts of a HTTP request
before forwarding the request to the destination. Rewrite primitive can
be used only with the DestinationWeights. The following example
demonstrates how to rewrite the URL prefix for api call (/ratings) to
ratings service before making the actual API call.
destination: ratings.default.svc.cluster.local
match:
httpHeaders:
uri:
prefix: /ratings
rewrite:
uri: /v1/bookRatings
route:
- tags:
version: v1
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.HTTPRewrite.uri"></a>
<tr>
<td><code>uri</code></td>
<td>string</td>
<td>rewrite the Path (or the prefix) portion of the URI with this value. If the original URI was matched based on prefix, the value provided in this field will replace the corresponding matched prefix.</td>
</tr>
<a name="istio.proxy.v1.config.HTTPRewrite.authority"></a>
<tr>
<td><code>authority</code></td>
<td>string</td>
<td>rewrite the Authority/Host header with this value.</td>
</tr>
</table>
<a name="istio.proxy.v1.config.HTTPTimeout"></a>
### HTTPTimeout
Describes HTTP request timeout. For example, the following rule sets a
10 second timeout for calls to the ratings:v1 service
destination: ratings.default.svc.cluster.local
route:
- tags:
version: v1
httpReqTimeout:
simpleTimeout:
timeout: 10s
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.HTTPTimeout.simpleTimeout"></a>
<tr>
<td><code>simpleTimeout</code></td>
<td><a href="#istio.proxy.v1.config.HTTPTimeout.SimpleTimeoutPolicy">SimpleTimeoutPolicy</a></td>
<td></td>
</tr>
</table>
<a name="istio.proxy.v1.config.HTTPTimeout.SimpleTimeoutPolicy"></a>
#### SimpleTimeoutPolicy
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.HTTPTimeout.SimpleTimeoutPolicy.timeout"></a>
<tr>
<td><code>timeout</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>REQUIRED. Timeout for a HTTP request. Includes retries as well. Default 15s. format: 1h/1m/1s/1ms. MUST BE &gt;=1ms. It is possible to control timeout per request by supplying the timeout value via x-envoy-upstream-rq-timeout-ms HTTP header.</td>
</tr>
</table>
<a name="istio.proxy.v1.config.HTTPRetry"></a>
### HTTPRetry
Describes the retry policy to use when a HTTP request fails. For
example, the following rule sets the maximum number of retries to 3 when
calling ratings:v1 service, with a 2s timeout per retry attempt.
destination: ratings.default.svc.cluster.local
route:
- tags:
version: v1
httpReqRetries:
simpleRetry:
attempts: 3
perTryTimeout: 2s
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.HTTPRetry.simpleRetry"></a>
<tr>
<td><code>simpleRetry</code></td>
<td><a href="#istio.proxy.v1.config.HTTPRetry.SimpleRetryPolicy">SimpleRetryPolicy</a></td>
<td></td>
</tr>
</table>
<a name="istio.proxy.v1.config.HTTPRetry.SimpleRetryPolicy"></a>
#### SimpleRetryPolicy
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.HTTPRetry.SimpleRetryPolicy.attempts"></a>
<tr>
<td><code>attempts</code></td>
<td>int32</td>
<td>REQUIRED. Number of retries for a given request. The interval between retries will be determined automatically (25ms+). Actual number of retries attempted depends on the httpReqTimeout.</td>
</tr>
<a name="istio.proxy.v1.config.HTTPRetry.SimpleRetryPolicy.perTryTimeout"></a>
<tr>
<td><code>perTryTimeout</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>Timeout per retry attempt for a given request. format: 1h/1m/1s/1ms. MUST BE &gt;=1ms.</td>
</tr>
</table>
<a name="istio.proxy.v1.config.HTTPFaultInjection"></a>
### HTTPFaultInjection
HTTPFaultInjection can be used to specify one or more faults to inject
while forwarding http requests to the destination specified in the route
rule. Fault specification is part of a route rule. Faults include
aborting the Http request from downstream service, and/or delaying
proxying of requests. A fault rule MUST HAVE delay or abort or both.
*Note:* Delay and abort faults are independent of one another, even if
both are specified simultaneously.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.HTTPFaultInjection.delay"></a>
<tr>
<td><code>delay</code></td>
<td><a href="#istio.proxy.v1.config.HTTPFaultInjection.Delay">Delay</a></td>
<td>Delay requests before forwarding, emulating various failures such as network issues, overloaded upstream service, etc.</td>
</tr>
<a name="istio.proxy.v1.config.HTTPFaultInjection.abort"></a>
<tr>
<td><code>abort</code></td>
<td><a href="#istio.proxy.v1.config.HTTPFaultInjection.Abort">Abort</a></td>
<td>Abort Http request attempts and return error codes back to downstream service, giving the impression that the upstream service is faulty.</td>
</tr>
</table>
<a name="istio.proxy.v1.config.HTTPFaultInjection.Abort"></a>
#### Abort
Abort specification is used to prematurely abort a request with a
pre-specified error code. The following example will return an HTTP
400 error code for 10% of the requests to the "ratings" service "v1".
destination: ratings.default.svc.cluster.local
route:
- tags:
version: v1
httpFault:
abort:
percent: 10
httpStatus: 400
The HttpStatus_ field is used to indicate the HTTP status code to
return to the caller. The optional Percent_ field, a value between 0
and 100, is used to only abort a certain percentage of requests. If
not specified, all requests are aborted.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.HTTPFaultInjection.Abort.percent"></a>
<tr>
<td><code>percent</code></td>
<td>float</td>
<td>percentage of requests to be aborted with the error code provided (0-100).</td>
</tr>
<a name="istio.proxy.v1.config.HTTPFaultInjection.Abort.httpStatus"></a>
<tr>
<td><code>httpStatus</code></td>
<td>int32</td>
<td>REQUIRED. HTTP status code to use to abort the Http request.</td>
</tr>
</table>
<a name="istio.proxy.v1.config.HTTPFaultInjection.Delay"></a>
#### Delay
Delay specification is used to inject latency into the request
forwarding path. The following example will introduce a 5 second delay
in 10% of the requests to the "v1" version of the "reviews"
service.
destination: reviews.default.svc.cluster.local
route:
- tags:
version: v1
httpFault:
delay:
percent: 10
fixedDelay: 5s
The FixedDelay_ field is used to indicate the amount of delay in
seconds. An optional Percent_ field, a value between 0 and 100, can
be used to only delay a certain percentage of requests. If left
unspecified, all request will be delayed.
<table>
<tr>
<th>Field</th>
<th>Type</th>
<th>Description</th>
</tr>
<a name="istio.proxy.v1.config.HTTPFaultInjection.Delay.percent"></a>
<tr>
<td><code>percent</code></td>
<td>float</td>
<td>percentage of requests on which the delay will be injected (0-100)</td>
</tr>
<a name="istio.proxy.v1.config.HTTPFaultInjection.Delay.fixedDelay"></a>
<tr>
<td><code>fixedDelay</code></td>
<td><a href="https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#duration">Duration</a></td>
<td>REQUIRED. Add a fixed delay before forwarding the request. Format: 1h/1m/1s/1ms. MUST be &gt;=1ms.</td>
</tr>
</table>

View File

@ -6,4 +6,5 @@ User-agent: *
{% for node in site.pages %}{% if node.noindex %}{% assign isset = true %}Disallow: {{ node.url }}
{% endif %}{% endfor %}{% if isset != true %}Disallow:
{% endif %}
Disallow: /v-0.1
Sitemap: https://istio.io/sitemap.xml