These commits are when the Protocol Buffers files have changed: (only the last 100 relevant commits are shown)
| Commit: | fcb86ce | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
feat(load-balancing): update API for 429-aware load balancing (#559) * feat(load-balancing): update API for 429-aware load balancing Signed-off-by: Alex Leong <alex@buoyant.io> * update Signed-off-by: Alex Leong <alex@buoyant.io> * move ejection config to failure accrual Signed-off-by: Alex Leong <alex@buoyant.io> --------- Signed-off-by: Alex Leong <alex@buoyant.io>
The documentation is generated from this commit.
| Commit: | 7c584d4 | |
|---|---|---|
| Author: | Alejandro Martinez Ruiz | |
| Committer: | GitHub | |
feat(outbound): add load balancing and circuit breaking proto surface (#556) * fix: set build_transport in gen.rs The tonic-prost-build configure call was missing an explicit build_transport(true). While this is the default value, being explicit keeps the builder chain consistent with build_client and build_server, and prevents surprises if the default changes. Signed-off-by: Alejandro Martinez Ruiz <amr@buoyant.io> * feat(outbound): restructure FailureAccrual for multiple accrual policies Replace the single-field oneof wrapper with direct optional fields, allowing consecutive-failure and success-rate policies to coexist. The consecutive_failures field retains field number 1, so the wire encoding is identical to the old oneof layout and existing proxies continue to work without changes. Add a SuccessRate nested message at field 2 with threshold, decay, and min_requests parameters. When absent, success-rate accrual is disabled. Signed-off-by: Alejandro Martinez Ruiz <amr@buoyant.io> * feat(outbound): add LoadBiasConfig and load_bias fields Introduce a LoadBiasConfig message for 429-aware load balancing. When set on Http1, Http2, or Grpc protocol variants, the proxy injects artificial latency penalties on rate-limited endpoints so the P2C balancer prefers healthier alternatives. Signed-off-by: Alejandro Martinez Ruiz <amr@buoyant.io> * feat(outbound): add RetryAfterConfig and retry_after fields Introduce a RetryAfterConfig message for Retry-After header handling. When set on Http1, Http2, or Grpc protocol variants, the proxy honors Retry-After headers from 429 responses and clamps durations to the configured maximum. Added as field 4 on each HTTP protocol variant. The single max_duration field caps the Retry-After value the proxy will honor, falling back to a built-in default when absent. Signed-off-by: Alejandro Martinez Ruiz <amr@buoyant.io> * feat(outbound): add EjectionConfig to BalanceP2c Add pool-level ejection protection to the P2C load balancer configuration. When set this prevents circuit breakers from ejecting all endpoints in a load-balancing pool by enforcing a minimum number of ready endpoints. Signed-off-by: Alejandro Martinez Ruiz <amr@buoyant.io> * build: regenerate Rust and Go bindings Full regeneration from updated outbound.proto after the FailureAccrual restructure, the additions of LoadBiasConfig, RetryAfterConfig and EjectionConfig messages, and load_bias, retry_after and ejection fields. Signed-off-by: Alejandro Martinez Ruiz <amr@buoyant.io> --------- Signed-off-by: Alejandro Martinez Ruiz <amr@buoyant.io>
| Commit: | 2e424bd | |
|---|---|---|
| Author: | Alejandro Martinez Ruiz | |
| Committer: | Alejandro Martinez Ruiz | |
feat(outbound): add success-rate, load-bias, and retry-after config Introduce three new proto messages: * SuccessRate: tracks the observed success proportion via an EWMA decay window so that once the rate drops below threshold (and at least min_requests have been observed), the breaker trips. * LoadBiasConfig: lets the proxy inject a penalty into the P2C load metric for endpoints that return 429, 503, or other 5xx responses, steering traffic toward healthier backends. * RetryAfterConfig: caps how long the proxy waits when it receives a Retry-After header. Restructure FailureAccrual from a oneof into optional fields so that both consecutive_failures and success_rate can coexist on the same backend. Each HTTP/gRPC protocol variant gains load_bias and retry_after fields. Signed-off-by: Alejandro Martinez Ruiz <amr@buoyant.io>
| Commit: | f127bae | |
|---|---|---|
| Author: | Scott Fleener | |
Update observe request
| Commit: | 3d69440 | |
|---|---|---|
| Author: | Scott Fleener | |
Replace stream
| Commit: | 55bf416 | |
|---|---|---|
| Author: | Scott Fleener | |
Add traces to watch response
| Commit: | a9d0e4f | |
|---|---|---|
| Author: | Scott Fleener | |
Add instrument service
| Commit: | e1f9077 | |
|---|---|---|
| Author: | Scott Fleener | |
chore(deps): Update tonic to 0.14
| Commit: | 127f69b | |
|---|---|---|
| Author: | Scott Fleener | |
| Committer: | Scott Fleener | |
chore(deps): Update tonic to 0.14
| Commit: | 9d15379 | |
|---|---|---|
| Author: | Zahari Dichev | |
| Committer: | GitHub | |
refactor(policy)!: use filters instead of explicit errors in TCP and TLS protocols (#405) This change removes the RouteError and Invalid types from the routes and backends of TLS and TCP protocols and moves to using filters. Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | 2be6843 | |
|---|---|---|
| Author: | Alejandro Pedraza | |
| Committer: | GitHub | |
feat(inbound): add HTTP local rate limiting (#388) This adds an entry for `HttpLocalRateLimit` under `ProxyProtocol.Detect`, `ProxyProtocol.Http1` and `ProxyProtocol.Http2` leaving the door open to add analogous support for protocols besides HTTP later on.
| Commit: | 2a2290c | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
feat(destination): add resource metadata to responses (#396) The destination service does no include resource coordinates, so the proxy must "guess" them by parsing hostnames, which is not particularly reliable or efficient. This change updates the destination API so that profile responses may include resource reference to (1) parent Services, (2) ServiceProfile resources and (3) backend Services. Furthermore, the WeightedAddr type is updated to include a resource reference so that Pod coordinates may be referenced. This metadata is not required to be set (for backwards compatibility).
| Commit: | 3c666ec | |
|---|---|---|
| Author: | Alejandro Pedraza | |
| Committer: | Alejandro Pedraza | |
Add metadata
| Commit: | 903aeaf | |
|---|---|---|
| Author: | Alejandro Pedraza | |
| Committer: | Alejandro Pedraza | |
Add support for HTTP local rate limiting v0.14.0 This adds an entry for `HttpLocalRateLimit` under `ProxyProtocol.Detect`, `ProxyProtocol.Http1` and `ProxyProtocol.Http2` leaving the door open to add analogous support for protocols besides HTTP later on.
| Commit: | c5648ae | |
|---|---|---|
| Author: | Zahari Dichev | |
| Committer: | GitHub | |
outbound: make RouteError optional (#392) #383 introduced support for route and backend level errors. This commit changes the structure of these types in order to make the route error optional (protobuf enums are non-optional values unless an experimental feature is specified). Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | 7c5fd84 | |
|---|---|---|
| Author: | Zahari Dichev | |
| Committer: | GitHub | |
outbound: Add error type to TCP and TLS routes (#387) This PR adds explicit error types to TLS and TCP routes and backends. They serve two distinct purposes: - a route level error is to be used when we want to fail all traffic that goes through a particular route (i.e. blocked by default traffic) - a backend level error is to be used when we want to fail traffic for just a single backend on a route (i.e. in situations when we have more than one backends but some of them have caused `InvalidKind` reasons). This behavior is governed by the Gateway API GEP described here: https://gateway-api.sigs.k8s.io/geps/gep-1364/ Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | c9914c2 | |
|---|---|---|
| Author: | Zahari Dichev | |
| Committer: | GitHub | |
Add TLS protocol support (#383) This change adds support for TLS in the `ProxyProtocol` enum. For the time being we can only use SNIs to do do TLS routing. Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | a738763 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
feat(outbound)!: Add retry and timeout route policies (#357) This commit adds support for retry and timeout route policies to the outbound policy API to both HTTP and GRPC route types. This change also bumps the release version to v0.14.0 in preparation for the next release. The pre-existing requestTimeout fields are deprecated. The RouteBackend requestTimeout is no longer honored, while the route requestTimeout should correspond to the 'request' timeout policy.
| Commit: | db9dab0 | |
|---|---|---|
| Author: | Zahari Dichev | |
tls scetch Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | fe670ae | |
|---|---|---|
| Author: | Oliver Gould | |
feat(destination): Add ResourceVersions to Get resolutions
| Commit: | f07d4b6 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
feat(destination): Add http2 client params to endpoints (#331) This change updates the Destination API so that its WeightedAddr type, which represents an individual network endpoint, with HTTP/2 client parameters. This enables the control plane to alter keep-alive and flow control settings on a per-endpoint basis.
| Commit: | 2da43c5 | |
|---|---|---|
| Author: | Zahari Dichev | |
| Committer: | GitHub | |
destination: add `UriLikeIdentity` and server_name (#285) Changes the `TlsIdentity` type in the destination API such that: - we add an extra `UriLikeIdentity` identity type that should contain identities that are in URI format (e.g. SPIFFE) - we add a `server_name` to the `TlsIdentity` type. This allows us to differentiate between an SNI value and a TLS Id value. This is mainly needed because in certain identity systems (SPIFFE/SPIRE) the TLS SAN can be in URI form. A URI cannot be used as a SNI extension in a `ClientHello`, so an alternative SNI value needs to be provided. This brings the need to distinguish between these two concepts. For context: https://github.com/linkerd/linkerd2-proxy/pull/2506 Signed-off-by: Zahari Dichev <zaharidichev@gmail.com> Co-authored-by: Oliver Gould <ver@buoyant.io>
| Commit: | 6d3da90 | |
|---|---|---|
| Author: | Zahari Dichev | |
add autoregistration api skeleton Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | 7c82fb1 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
rust: Update to tonic v0.10 and prost v0.12 (#269)
| Commit: | 1fa4bc4 | |
|---|---|---|
| Author: | Zahari Dichev | |
add uri like identity Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | 364c0d6 | |
|---|---|---|
| Author: | Eliza Weisman | |
| Committer: | Eliza Weisman | |
rm bonus slash from doc comment
| Commit: | 7790fa0 | |
|---|---|---|
| Author: | Eliza Weisman | |
remove `RetryBudget` from `GrpcRoute`
| Commit: | 9063254 | |
|---|---|---|
| Author: | Eliza Weisman | |
un-camelCase `request_timeout` fields When the `request_timeout` fields were added to the outbound API, they were accidentally added with camelCase names rather than snake_case. This is inconsistent with the rest of the protobuf, so this PR fixes that.
| Commit: | 9d244d4 | |
|---|---|---|
| Author: | Eliza Weisman | |
| Committer: | GitHub | |
remove bonus newline
| Commit: | 0e2d93a | |
|---|---|---|
| Author: | Eliza Weisman | |
move `RetryPolicy` to `HTTPRoute.rule` After thinking a bit about the previous approach, it occurred to me that it didn't make a whole lot of sense to have the per-request retry limit be on the `RouteBackend`. We may (and generally, we *should*) retry a failed request by sending it to a different backend than the one that failed the request, so the per-request retry limit must be determined when a rule is matched to the request, not when a backend is selected for an individual "try". This has the implication that the controller should probably not allow the `RetryFilter` CRD to be placed on a backend; it may only be placed on a route rule.
| Commit: | b5d2aae | |
|---|---|---|
| Author: | Eliza Weisman | |
un-remove ws
| Commit: | 45b7296 | |
|---|---|---|
| Author: | Eliza Weisman | |
| Committer: | Eliza Weisman | |
outbound: add HTTP retry policy configuration This branch adds fields for configuring HTTP retries to the `OutboundPolicies` API. In particular, it adds `RetryBudget` messages to the `ProxyProtocol.Http1`, `ProxyProtocol.Http2`, and `ProxyProtocol.Grpc` messages, and it adds a new `RetryPolicy` message to the `HttpRoute.RouteBackend` message. The same `RetryBudget` message use by ServiceProfiles is reused here, while the `RetryPolicy` message is added specifically for the `OutboundPolicies` proto, and consists of a list of retryable status ranges, and a maximum number of retries allowed. The `RetryPolicy` field is placed only on `RouteBackend`, although it will be configured by the `HTTPRetryFilter` CRD which can be attached at the level of a HTTPRoute `rule` or a `backend` within a `rule`. If the `HTTPRetryFilter` is configured at the route-rule level, the controller will apply that configuration to each backend. This makes the representation in the proxy API simpler than if the field could be placed on both the `HttpRoute.Rule` and `HttpRoute.RouteBackend` messages in the proto, and means that the proxy is not responsible for resolving conflicts when both a route-rule and a specific backend within that rule have `HTTPRetryFilter` CRDs attached.
| Commit: | f1598b4 | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Add response_header_modifier outbound http filter (#251) The `responseHeaderModifier` filter is an Extended level feature: https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io%2fv1beta1.HTTPRouteFilter We add this filter to the outbound proxy-api. Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 58c5242 | |
|---|---|---|
| Author: | Eliza Weisman | |
| Committer: | GitHub | |
outbound: add request timeout fields (#243) This branch adds fields to the `OutboundPolicies` API messages for configuring request timeouts. The `HttpRoute.Rule` and `GrpcRoute.Rule` messages now contain a `requestTimeout` field, which contains a `Duration` for a request timeout for that rule. In addition, the `RouteBackend` messages also contain a `requestTimeout` field, which configures a duration for requests dispatched to that specific backend. All new fields have comments describing their intended semantics. These fields are primarily intended to support the new timeout fields added to the HTTPRoute CRD in GEP-1742 (see linkerd/linkerd2#10969). The HTTPRoute timeout configuration are an additional field on the `rule` fields in a route that contains optional `request` and `backendRequest` timeouts. This means that a single request timeout and backend request timeout is set for all backends on an individual route rule. The proxy API additions in this PR are somewhat more flexible than the current HTTPRoute CRD, as each `RouteBackend` has its *own* field for the `backendRequest` timeout. This means that in theory, independent `backendRequest` timeout values could be configured for each individual backend. HTTPRoute doesn't currently support this, but it felt like a good idea to add this flexibility in the proxy API regardless, to support future use cases.
| Commit: | 75c6b65 | |
|---|---|---|
| Author: | Alex Leong | |
Add timeouts to outbound proto Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | ad750d8 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
outbound: Add 'port' to resource metadata (#227) The gateway API supports port references, especially when referencing a Service. This metadata should be included with the rest of these resource references.
| Commit: | afca924 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
outbound: Add Metadata to OutboundPolicy responses. (#226) The metadata field refers to the resource for which discovery was performed, typically a Kubernetes Service.
| Commit: | 541f280 | |
|---|---|---|
| Author: | Oliver Gould | |
outbound: Add Metadata to OutboundPolicy responses. The metadata field refers to the resource for which discovery was performed, typically a Kubernetes Service.
| Commit: | afd13fc | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Add circuit breaker proto to outbound (#223) Add support for consecutive failure based failure accrual to the outbound policy API. Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 140f781 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | Oliver Gould | |
outbound: Include failure statuses for routes To support circuit breaking (and, later, retries), this change introduces `failure_statuses` fields into both the HttpRoute and GrpcRoute response types. HTTP statuses are represented as ranges so it's convenient to express 5XX. gRPC status codes aren't partitioned into logical ranges like HTTP status codes are.
| Commit: | 9efe50f | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Introduce the OutboundPolicies API (#165) To support Gateway API-style HTTP routing in the outbound proxy, this change introduces a new `OutboundPolicies` API so that proxies may discover outbound configurations. This API is intended to, eventually, replace the `GetProfile` endpoint on the `Destination` API. Further enhancements to this API will be necessary to replace all of the functionality currently provided by the ServiceProfile API.
| Commit: | b2f7219 | |
|---|---|---|
| Author: | Eliza Weisman | |
| Committer: | GitHub | |
dst: add `Opaque` hint to `destination.ProtocolHint ` (#197) This indicates that the destination will handle the connection as an opaque TCP byte stream, and that HTTP/2 upgrades should not be performed. If the `opaque_transport` flag is also set for this destination, then the proxy should not send a session protocol in its transport header. See linkerd/linkerd2#9888 for details.
| Commit: | 960e484 | |
|---|---|---|
| Author: | Alex Leong | |
WIP Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 52b959f | |
|---|---|---|
| Author: | Alex Leong | |
add client policy api Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | dc10ca9 | |
|---|---|---|
| Author: | Kevin Leimkuhler | |
Add initial ClientPolicy protobuf definitions Signed-off-by: Kevin Leimkuhler <kleimkuhler@icloud.com>
| Commit: | 9762c9f | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
Add HTTP route types (#118) In order to use a Gateway-style API to power inbound policy to support per-route authorization policies, we want to add route information to inbound policy responses. Signed-off-by: Oliver Gould <ver@buoyant.io>
| Commit: | 7ec7798 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
Add a `Metadata` protobuf module (#123) As we introduce HTTP routes (for inbound policy), we need the control plane to describe resources references for metrics, and other diagonstics in the proxy. Currently, the control plane uses a free-form map of strings, but the proxy only references a specific set of keys, which is not clearly documented via the gRPC API. This change replaces the `Authz` type's `labels` map with a `Metadata` type. Controllers should set both fields for at least one stable version. Signed-off-by: Oliver Gould <ver@buoyant.io>
| Commit: | 4eaa2a1 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
Add the `io.linkerd.proxy.inbound` API (#58) The `io.linkerd.proxy.inbound` package provides the `InboundServerPolicies` service to support discovering inbound proxy configurations to support access policies.
| Commit: | 453ac1e | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
Add an IPNetwork type (#57) The `io.linkerd.proxy.net` package provides numeric IP address types for use in proxy API communication. This change extends this module to support IP network types as well (i.e. IP address and a prefix length). In Rust, we provide convenience translations to the `ipnet::IpNet` type.
| Commit: | 5d60650 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
dst: Indicate endpoint support for opaque transport (#53) The proxy supports reading a connection header for opaque traffic. The inbound proxy reads this header from connections that target the proxy's inbound port; but outbound proxies have no means to know whether a given traffic target supports this header and on what port it expects the connection header. (While it's almost always 4143, it's theoretically configurable.) This change adds an optional field to an endpoint's `ProtocolHint` that should be set when the target endpoint supports transporting opaque traffic via the connection header.
| Commit: | d260ea2 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
v0.1.15: Add an `endpoint` field to profile responses (#51) This release adds an `endpoint` field to `DestinationProfile` responses, which the controller may set to indicate that the target is known to be an individual endpoint and not a service address.
| Commit: | 3337aeb | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
destination: Add opaque_protocol and fully_qualified_name to profile response (#44) The profile API can be used to bootstrap dynamic protocol detection. This change adds an `opaque_protocol` flag to the `DestinationProfile`, which indicates that the proxy should skip protocol detection. HTTP routes will not be used, but `dst_overrides` will. `fully_qualified_name` provides returns the name of the resolved service. This is useful when resolutions are performed on IP addresses.
| Commit: | d041c03 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
Apply clang-format to protobuf (#49) This change applies clang-format to the protobuf files (as used by the vscode-proto3 extension). We should follow this up with a CI check that enforces formatting, but this change is a starting point so that future changes won't have arbitrary formatting changes.
| Commit: | e39c77e | |
|---|---|---|
| Author: | Oliver Gould | |
touchup
| Commit: | 49f88de | |
|---|---|---|
| Author: | Oliver Gould | |
api bump
| Commit: | 2bf1f18 | |
|---|---|---|
| Author: | Oliver Gould | |
Mark some deprecations; extend configuration surface
| Commit: | dd71a6f | |
|---|---|---|
| Author: | Oliver Gould | |
touchups
| Commit: | 940a39a | |
|---|---|---|
| Author: | Oliver Gould | |
fmt
| Commit: | 1542235 | |
|---|---|---|
| Author: | Oliver Gould | |
Uncomment target
| Commit: | ced2c16 | |
|---|---|---|
| Author: | Oliver Gould | |
Add a Strategy API endpoint
| Commit: | 23316fc | |
|---|---|---|
| Author: | Oliver Gould | |
DetectFromClient => Client
| Commit: | 0a959f7 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | Oliver Gould | |
destination: Add detection & proxy strategies When a proxy requests a service profile--especially by IP address--the profile can preempt the proxy's protocol detection and endpoint resolution.
| Commit: | 85f24e8 | |
|---|---|---|
| Author: | Zahari Dichev | |
| Committer: | GitHub | |
Auth override (#38) Add auth override Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | 75a7b3b | |
|---|---|---|
| Author: | Zahari Dichev | |
Wrap in an object Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | e752f27 | |
|---|---|---|
| Author: | Zahari Dichev | |
Add auth override Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | f5107db | |
|---|---|---|
| Author: | Zahari Dichev | |
Add authority override Signed-off-by: Zahari Dichev <zaharidichev@gmail.com>
| Commit: | 25042f4 | |
|---|---|---|
| Author: | Kevin Leimkuhler | |
| Committer: | GitHub | |
Add headers and trailers to TapEvents (#33) ### Motivation In order to include headers and trailers in `TapEvent`s, the API must be updated to allow a new field to be set in the proxy. This field should be set by the proxies and read by the control plane. ### Solution A new message `http_types.Headers` has been added to `http_types.proto`. This message allows repeated fields of `name` and `value` pairs where `name` can non-unique. Because header values can be encoded in various ways, `value` is `bytes` while `name` is `string` Signed-off-by: Kevin Leimkuhler <kleimkuhler@icloud.com>
| Commit: | e4c034e | |
|---|---|---|
| Author: | Alex Leong | |
Add header support Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | ddbc3a4 | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Add per-route traffic split to API (#31) * Add traffic split to profiles API Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 228b972 | |
|---|---|---|
| Author: | Oliver Gould | |
Introduce route delegates
| Commit: | e6d3bcd | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
Introduce the Identity service (#25) In order to support provisioning of short-lived identity certificates at runtime, the `io.linkerd.proxy.identity.Identity` gRPC service provides an API that proxies may use to submit Certificate Signing Requests to a new linkerd-identity controller. Furthermore, this renames the Destination service's `proxy_id` field to the more ambiguous `context_token` (because we no longer intend to encode the proxy ID here); and this change removes the `K8sPodIdentity` strategy in favor of a new, simpler `DnsLikeIdenitity` type. Note that this branch may fail to build when running against newer prost/tower-grpc versions (that use prost 0.5+).
| Commit: | df0375a | |
|---|---|---|
| Author: | Alex Leong | |
Tap body prototype Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 36f54ad | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Add client_id to GetProfile method (#22) Related to https://github.com/linkerd/linkerd2/issues/2077 Add a proxy_id parameter to the Get and GetProfile methods. This identifies the proxy which is making the request. The server may use this as context. Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 944fef9 | |
|---|---|---|
| Author: | Alex Leong | |
Add header match conditions Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | d0ea16a | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Add timeouts to service profiles (#19) Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | e5d09ec | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | Sean McArthur | |
Add timeouts to service profiles Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | d2b1425 | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | Sean McArthur | |
Remove default timeout Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | a4c007c | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Add retryability to destination profiles (#16) Add retryability to destination profiles. Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 875092a | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | Sean McArthur | |
RFC: Add retryability to destination profiles Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | f00731c | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
Add route labels to tap (#17) With this change, Tap queries can now include route label selectors; and Tap events may include route labels.
| Commit: | 9f5c622 | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Add metrics labels to routes (#13) Add a map of labels/values to the route object in the destination profile API. The proxy should attach these labels to requests and responses which match the route. This can be used to have the proxy expose per-route metrics data. Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 862814f | |
|---|---|---|
| Author: | Alex Leong | |
Add metrics labels to routes Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 7869afb | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Don't use a oneof for range struct (#12) Using a oneof in the range struct makes it impossible to set both a maximum and a minimum. Remove the oneof to allow both fields to be set. Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 1a82147 | |
|---|---|---|
| Author: | Alex Leong | |
| Committer: | GitHub | |
Add service profile API (#9) Add destination profile API to destination service. Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 4ca7972 | |
|---|---|---|
| Author: | Alex Leong | |
Update protobuf to v1.1.0 Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 90cb672 | |
|---|---|---|
| Author: | Alex Leong | |
Remove description field Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 27145c9 | |
|---|---|---|
| Author: | Alex Leong | |
Rename RequestPolicy and ResponsePolicy to RequestClass and ResponseClass Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 9894254 | |
|---|---|---|
| Author: | Alex Leong | |
Update API to use response policies that include descriptions Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | b3ec236 | |
|---|---|---|
| Author: | Alex Leong | |
Factor profile into its own service Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | 936df48 | |
|---|---|---|
| Author: | Alex Leong | |
Fix errors Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | ebc1445 | |
|---|---|---|
| Author: | Alex Leong | |
Add service profile to destination API Signed-off-by: Alex Leong <alex@buoyant.io>
| Commit: | a9f0b9f | |
|---|---|---|
| Author: | Sean McArthur | |
| Committer: | GitHub | |
add ProtocolHint in Destination updates (#6) This hint will be enable the proxy to try to coerce HTTP/1 messages over a single HTTP2 connection, since it is known the other side is also a linkerd proxy. Ref https://github.com/linkerd/linkerd2/issues/1360 Signed-off-by: Sean McArthur <sean@seanmonstar.com>
| Commit: | c185809 | |
|---|---|---|
| Author: | Kevin Lingerfelt | |
| Committer: | GitHub | |
Replace references to conduit (#5) Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>
| Commit: | a245fac | |
|---|---|---|
| Author: | Oliver Gould | |
Migrate conduit-proxy-controller-grpc to linkerd2-proxy-api Reorganizes the proxy's gRPC interfaces under the `io.linkerd.proxy` package namespace. The `linkerd2-proxy-api` crate (in the rs/ directory) provides bindings for Rust. Generated Go bindings are stored in the go directory so that clients may simply depend on this repo. A `Makefile` is provided to automate builds.
| Commit: | aeac829 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
tap: Support `tls` labeling (#1244) The proxy's metrics are instrumented with a `tls` label that describes the state of TLS for each connection and associated messges. This same level of detail is useful to get in `tap` output as well. This change updates Tap in the following ways: * `TapEvent` protobuf updated: * Added `source_meta` field including source labels * `proxy_direction` enum indicates which proxy server was used. * The proxy adds a `tls` label to both source and destination meta indicating the state of each peer's connection * The CLI uses the `proxy_direction` field to determine which `tls` label should be rendered.
| Commit: | f2394d3 | |
|---|---|---|
| Author: | Kevin Lingerfelt | |
| Committer: | GitHub | |
Use parent name instead of pod name in identity string (#1236) * Use parent name instead of pod name in identity string * Update protobuf comment Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>
| Commit: | d6cfabb | |
|---|---|---|
| Author: | Brian Smith | |
| Committer: | GitHub | |
Proxy: Use new destination service TLS identity scheme. (#1222) Signed-off-by: Brian Smith <brian@briansmith.org>
| Commit: | ae41f67 | |
|---|---|---|
| Author: | Kevin Lingerfelt | |
| Committer: | GitHub | |
Update dest service with a different tls identity strategy (#1215) * Update dest service with a different tls identity strategy * Send controller namespace as separate field Signed-off-by: Kevin Lingerfelt <kl@buoyant.io>
| Commit: | 3b722a8 | |
|---|---|---|
| Author: | Oliver Gould | |
| Committer: | GitHub | |
proto: Use explicit `go_package` option (#1120) protobuf has a `go_package` option that can be used to explicitly name Go packages such that they can be imported without additional rewrites. This allows us to store proto files without additional, redundant directories (which were used for packaging hints, previously). This change adds an explicit `go_package` to all .proto files and updates `bin/protoc-go.sh` to ensure these packages are output into $GOPATH (so that the go_package can be absolute). This removes the need to manually rewrite imports in bin/protoc-go.sh.
| Commit: | 7382c88 | |
|---|---|---|
| Author: | Eliza Weisman | |
| Committer: | GitHub | |
proto: Add TLS identity to WeightedAddr message (#1041) Required for #1008. This PR adds the `TlsIdentity` message to the Destination service proto, to describe what strategy the proxy should use for verifying an endpoint's TLS certificates. It also adds a `TlsIdentity` field to the `WeightedAddr` message. Currently, there is one possible variant for `TlsIdentity`, `KubernetesPodName`, which consists of the Kubernetes pod name of the endpoint, the namespace of the endpoint, and the namespace of that pod's Conduit control plane. The proxy should attempt to connect over TLS if the control plane namespace matches its own control plane namespace. The pod name and namespace are used to verify the endpoint's TLS certificate. See https://github.com/runconduit/conduit/issues/386#issuecomment-392948046. This change was initially part of #1008, but I factored it out to make the diff smaller. Signed-off-by: Eliza Weisman <eliza@buoyant.io>