diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ef01d83fb5..3ecbb57643 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -49,7 +49,7 @@ env:
CARGO_INCREMENTAL: 0
CARGO_NET_RETRY: 10
RUSTFLAGS: "-D warnings -A deprecated"
- RUSTUP_MAX_RETRIES: 10
+ RUSTUP_MAX_RETRIES: 11
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref }}
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000..13566b81b0
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/linkerd2-proxy.iml b/.idea/linkerd2-proxy.iml
new file mode 100644
index 0000000000..d6ebd48059
--- /dev/null
+++ b/.idea/linkerd2-proxy.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000..a38bd29c15
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000..35eb1ddfbb
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/linkerd/app/admin/src/stack.rs b/linkerd/app/admin/src/stack.rs
index 3c4874afd9..c5b772b1d6 100644
--- a/linkerd/app/admin/src/stack.rs
+++ b/linkerd/app/admin/src/stack.rs
@@ -268,8 +268,6 @@ impl Param for Permitted {
fn param(&self) -> metrics::EndpointLabels {
metrics::InboundEndpointLabels {
tls: self.http.tcp.tls.clone(),
- authority: None,
- target_addr: self.http.tcp.addr.into(),
policy: self.permit.labels.clone(),
}
.into()
diff --git a/linkerd/app/core/src/metrics.rs b/linkerd/app/core/src/metrics.rs
index 3fd374031b..fd0f434938 100644
--- a/linkerd/app/core/src/metrics.rs
+++ b/linkerd/app/core/src/metrics.rs
@@ -19,7 +19,6 @@ pub use linkerd_metrics::*;
use linkerd_proxy_server_policy as policy;
use std::{
fmt::{self, Write},
- net::SocketAddr,
sync::Arc,
time::Duration,
};
@@ -66,8 +65,6 @@ pub enum EndpointLabels {
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct InboundEndpointLabels {
pub tls: tls::ConditionalServerTls,
- pub authority: Option,
- pub target_addr: SocketAddr,
pub policy: RouteAuthzLabels,
}
@@ -99,9 +96,7 @@ pub struct RouteAuthzLabels {
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct OutboundEndpointLabels {
pub server_id: tls::ConditionalClientTls,
- pub authority: Option,
pub labels: Option,
- pub target_addr: SocketAddr,
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
@@ -139,6 +134,22 @@ where
}
Some(out)
}
+pub fn prefix_outbound_endpoint_labels<'i, I>(prefix: &str, mut labels_iter: I) -> Option
+where
+ I: Iterator- ,
+{
+ let (k0, v0) = labels_iter.next()?;
+ let mut out = format!("{}_{}=\"{}\"", prefix, k0, v0);
+
+ for (k, v) in labels_iter {
+ if k == "pod" || k == "pod_template_hash" {
+ continue;
+ }
+
+ write!(out, ",{}_{}=\"{}\"", prefix, k, v).expect("label concat must succeed");
+ }
+ Some(out)
+}
// === impl Metrics ===
@@ -291,17 +302,7 @@ impl FmtLabels for EndpointLabels {
impl FmtLabels for InboundEndpointLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- if let Some(a) = self.authority.as_ref() {
- Authority(a).fmt_labels(f)?;
- write!(f, ",")?;
- }
-
- (
- (TargetAddr(self.target_addr), TlsAccept::from(&self.tls)),
- &self.policy,
- )
- .fmt_labels(f)?;
-
+ ((TlsAccept::from(&self.tls)), &self.policy).fmt_labels(f)?;
Ok(())
}
}
@@ -359,14 +360,8 @@ impl FmtLabels for RouteAuthzLabels {
impl FmtLabels for OutboundEndpointLabels {
fn fmt_labels(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- if let Some(a) = self.authority.as_ref() {
- Authority(a).fmt_labels(f)?;
- write!(f, ",")?;
- }
-
- let ta = TargetAddr(self.target_addr);
let tls = TlsConnect::from(&self.server_id);
- (ta, tls).fmt_labels(f)?;
+ (tls).fmt_labels(f)?;
if let Some(labels) = self.labels.as_ref() {
write!(f, ",{}", labels)?;
diff --git a/linkerd/app/inbound/src/http/router.rs b/linkerd/app/inbound/src/http/router.rs
index 76274a4abb..11d8700a0d 100644
--- a/linkerd/app/inbound/src/http/router.rs
+++ b/linkerd/app/inbound/src/http/router.rs
@@ -383,8 +383,6 @@ impl Param for Logical {
fn param(&self) -> metrics::EndpointLabels {
metrics::InboundEndpointLabels {
tls: self.tls.clone(),
- authority: self.logical.as_ref().map(|d| d.as_http_authority()),
- target_addr: self.addr.into(),
policy: self.permit.labels.clone(),
}
.into()
diff --git a/linkerd/app/inbound/src/http/tests.rs b/linkerd/app/inbound/src/http/tests.rs
index f5c9351240..d43b590664 100644
--- a/linkerd/app/inbound/src/http/tests.rs
+++ b/linkerd/app/inbound/src/http/tests.rs
@@ -522,8 +522,6 @@ async fn grpc_response_class() {
.get_response_total(
&metrics::EndpointLabels::Inbound(metrics::InboundEndpointLabels {
tls: Target::meshed_h2().1,
- authority: Some("foo.svc.cluster.local:5550".parse().unwrap()),
- target_addr: "127.0.0.1:80".parse().unwrap(),
policy: metrics::RouteAuthzLabels {
route: metrics::RouteLabels {
server: metrics::ServerLabel(Arc::new(policy::Meta::Resource {
diff --git a/linkerd/app/integration/src/tests/discovery.rs b/linkerd/app/integration/src/tests/discovery.rs
index 67caf75c73..cba50e513a 100644
--- a/linkerd/app/integration/src/tests/discovery.rs
+++ b/linkerd/app/integration/src/tests/discovery.rs
@@ -454,14 +454,12 @@ mod http2 {
// Simulate the first server falling over without discovery
// knowing about it...
tracing::info!(%alpha.addr, "Stopping");
- let alpha_addr = alpha.addr;
alpha.join().await;
// Wait until the proxy has seen the `alpha` disconnect...
metrics::metric("tcp_close_total")
.label("peer", "dst")
.label("direction", "outbound")
- .label("target_addr", alpha_addr.to_string())
.value(1u64)
.assert_in(&metrics)
.await;
diff --git a/linkerd/app/integration/src/tests/telemetry.rs b/linkerd/app/integration/src/tests/telemetry.rs
index 3b466a0a0c..39eb75fc6c 100644
--- a/linkerd/app/integration/src/tests/telemetry.rs
+++ b/linkerd/app/integration/src/tests/telemetry.rs
@@ -56,10 +56,8 @@ impl Fixture {
let client = client::new(proxy.inbound, "tele.test.svc.cluster.local");
let tcp_dst_labels = metrics::labels().label("direction", "inbound");
- let tcp_src_labels = tcp_dst_labels.clone().label("target_addr", orig_dst);
- let labels = tcp_dst_labels
- .clone()
- .label("authority", "tele.test.svc.cluster.local");
+ let tcp_src_labels = tcp_dst_labels.clone();
+ let labels = tcp_dst_labels.clone();
let tcp_src_labels = tcp_src_labels.label("peer", "src");
let tcp_dst_labels = tcp_dst_labels.label("peer", "dst");
Fixture {
@@ -96,9 +94,7 @@ impl Fixture {
let metrics = client::http1(proxy.admin, "localhost");
let client = client::new(proxy.outbound, "tele.test.svc.cluster.local");
- let tcp_labels = metrics::labels()
- .label("direction", "outbound")
- .label("target_addr", orig_dst);
+ let tcp_labels = metrics::labels().label("direction", "outbound");
let labels = tcp_labels.clone();
let tcp_src_labels = tcp_labels.clone().label("peer", "src");
let tcp_dst_labels = tcp_labels.label("peer", "dst");
@@ -193,8 +189,7 @@ impl TcpFixture {
.label("direction", "outbound")
.label("peer", "src")
.label("tls", "no_identity")
- .label("no_tls_reason", "loopback")
- .label("target_addr", orig_dst);
+ .label("no_tls_reason", "loopback");
let dst_labels = metrics::labels()
.label("direction", "outbound")
.label("peer", "dst");
@@ -218,7 +213,6 @@ async fn admin_request_count() {
let metrics = fixture.metrics;
let metric = metrics::metric("request_total")
.label("direction", "inbound")
- .label("target_addr", metrics.target_addr())
.value(1usize);
// We can't assert that the metric is not present, since `GET /metrics`
@@ -233,7 +227,6 @@ async fn admin_transport_metrics() {
let metrics = fixture.metrics;
let labels = metrics::labels()
.label("direction", "inbound")
- .label("target_addr", metrics.target_addr())
.label("peer", "src");
let mut open_total = labels.metric("tcp_open_total").value(1usize);
@@ -308,14 +301,11 @@ async fn test_http_count(metric: &str, fixture: impl Future