From 8f7d62d35c9837a29537b484d5b92db44b821250 Mon Sep 17 00:00:00 2001 From: Melisa Griffin Date: Fri, 3 Mar 2023 20:38:17 +0000 Subject: [PATCH] backport of commit ae1dfb80a2f9e4c834a83377e9e59241365c5da3 --- .changelog/16251.txt | 3 - .changelog/16266.txt | 3 - .changelog/16292.txt | 3 - .changelog/16298.txt | 3 - .changelog/16412.txt | 3 - .changelog/16428.txt | 3 - .changelog/16495.txt | 3 + .changelog/16497.txt | 3 + .changelog/16498.txt | 3 + .changelog/16499.txt | 3 + .changelog/16508.txt | 3 + .changelog/16512.txt | 3 + .github/CONTRIBUTING.md | 3 +- .github/ISSUE_TEMPLATE/bug_report.md | 30 +- .github/ISSUE_TEMPLATE/feature_request.md | 6 +- .github/ISSUE_TEMPLATE/ui_issues.md | 25 +- .github/pull_request_template.md | 13 +- .github/workflows/backport-assistant.yml | 27 + ...t-1.15.x.yaml => nightly-test-1.11.x.yaml} | 6 +- .github/workflows/website-checker.yml | 51 + GNUmakefile | 10 +- Vagrantfile | 66 + agent/agent.go | 20 +- agent/agent_test.go | 2 +- agent/auto-config/auto_config.go | 2 +- agent/auto-config/auto_config_test.go | 4 +- agent/auto-config/config_translate.go | 6 +- agent/auto-config/config_translate_test.go | 4 +- agent/auto-config/mock_test.go | 2 +- agent/auto-config/persist.go | 2 +- agent/auto-config/tls.go | 4 +- agent/cache-types/mock_PeeringLister_test.go | 2 +- .../mock_TrustBundleLister_test.go | 2 +- .../mock_TrustBundleReader_test.go | 2 +- agent/cache-types/peerings.go | 2 +- agent/cache-types/peerings_test.go | 2 +- agent/cache-types/trust_bundle.go | 2 +- agent/cache-types/trust_bundle_test.go | 2 +- agent/cache-types/trust_bundles.go | 2 +- agent/cache-types/trust_bundles_test.go | 2 +- agent/config/builder.go | 1 + agent/config/runtime.go | 4 + agent/config/runtime_test.go | 15 +- .../TestRuntimeConfig_Sanitize.golden | 1 + agent/connect/ca/provider_vault.go | 6 +- agent/connect/ca/provider_vault_auth.go | 15 +- agent/connect/ca/provider_vault_auth_aws.go | 2 +- agent/connect/ca/provider_vault_auth_azure.go | 142 - agent/connect/ca/provider_vault_auth_gcp.go | 2 +- agent/connect/ca/provider_vault_auth_jwt.go | 50 - agent/connect/ca/provider_vault_auth_test.go | 201 -- agent/connect/ca/provider_vault_test.go | 4 +- agent/consul/auto_config_endpoint.go | 6 +- agent/consul/auto_config_endpoint_test.go | 8 +- .../autopilotevents/ready_servers_events.go | 2 +- .../ready_servers_events_test.go | 2 +- agent/consul/client_test.go | 5 +- agent/consul/discoverychain/compile.go | 1 + agent/consul/fsm/commands_oss.go | 2 +- agent/consul/fsm/snapshot_oss.go | 2 +- agent/consul/fsm/snapshot_test.go | 4 +- agent/consul/internal_endpoint_test.go | 2 +- agent/consul/leader_peering.go | 4 +- agent/consul/leader_peering_test.go | 2 +- agent/consul/multilimiter/multilimiter.go | 38 +- .../consul/multilimiter/multilimiter_test.go | 76 +- agent/consul/operator_backend.go | 3 +- agent/consul/operator_backend_test.go | 16 +- agent/consul/peering_backend.go | 2 +- agent/consul/peering_backend_oss_test.go | 2 +- agent/consul/peering_backend_test.go | 4 +- agent/consul/prepared_query_endpoint_test.go | 2 +- agent/consul/rpc_test.go | 5 +- agent/consul/server.go | 2 +- agent/consul/state/acl.go | 2 +- agent/consul/state/acl_test.go | 2 +- agent/consul/state/catalog_events.go | 6 +- agent/consul/state/catalog_events_test.go | 4 +- agent/consul/state/config_entry_events.go | 4 +- .../consul/state/config_entry_events_test.go | 2 +- agent/consul/state/connect_ca_events.go | 2 +- agent/consul/state/connect_ca_test.go | 2 +- agent/consul/state/events.go | 2 +- agent/consul/state/events_test.go | 2 +- agent/consul/state/memdb.go | 2 +- agent/consul/state/peering.go | 2 +- agent/consul/state/peering_oss.go | 2 +- agent/consul/state/peering_oss_test.go | 2 +- agent/consul/state/peering_test.go | 4 +- agent/consul/state/schema_test.go | 2 +- agent/consul/state/state_store_test.go | 2 +- agent/consul/state/store_integration_test.go | 2 +- agent/consul/stream/event.go | 2 +- agent/consul/stream/event_publisher_test.go | 2 +- agent/consul/subscribe_backend_test.go | 19 +- .../usagemetrics/usagemetrics_oss_test.go | 2 +- .../builtin/aws-lambda/aws_lambda_test.go | 2 +- .../builtin/http/localratelimit/copied.go | 58 - .../builtin/http/localratelimit/ratelimit.go | 198 -- .../http/localratelimit/ratelimit_test.go | 160 - .../envoyextensions/registered_extensions.go | 6 +- .../services/peerstream/replication.go | 8 +- .../services/peerstream/server.go | 4 +- .../services/peerstream/server_test.go | 4 +- .../services/peerstream/stream_resources.go | 4 +- .../services/peerstream/stream_test.go | 12 +- .../peerstream/subscription_blocking.go | 2 +- .../peerstream/subscription_manager.go | 8 +- .../peerstream/subscription_manager_test.go | 10 +- .../services/peerstream/subscription_state.go | 2 +- .../peerstream/subscription_state_test.go | 2 +- .../services/peerstream/subscription_view.go | 4 +- .../peerstream/subscription_view_test.go | 4 +- .../services/peerstream/testing.go | 2 +- .../serverdiscovery/watch_servers_test.go | 2 +- agent/grpc-external/stats_test.go | 2 +- agent/grpc-internal/balancer/balancer.go | 40 +- agent/grpc-internal/balancer/balancer_test.go | 41 +- agent/grpc-internal/balancer/registry.go | 69 - agent/grpc-internal/client.go | 34 +- agent/grpc-internal/client_test.go | 38 +- agent/grpc-internal/handler_test.go | 6 +- .../services/subscribe/logger.go | 2 +- .../services/subscribe/subscribe.go | 2 +- .../services/subscribe/subscribe_test.go | 8 +- agent/grpc-internal/stats_test.go | 2 +- .../testutil/testservice/simple.pb.binary.go | 2 +- .../testutil/testservice/simple.pb.go | 125 +- .../testutil/testservice/simple_grpc.pb.go | 4 +- agent/http.go | 2 +- agent/operator_endpoint.go | 2 +- agent/peering_endpoint.go | 2 +- agent/peering_endpoint_oss_test.go | 2 +- agent/peering_endpoint_test.go | 2 +- agent/pool/pool.go | 2 +- agent/proxycfg-glue/config_entry.go | 6 +- agent/proxycfg-glue/config_entry_test.go | 4 +- .../exported_peered_services_test.go | 2 +- agent/proxycfg-glue/glue.go | 2 +- agent/proxycfg-glue/health_test.go | 2 +- agent/proxycfg-glue/intentions.go | 2 +- agent/proxycfg-glue/intentions_ent_test.go | 2 +- agent/proxycfg-glue/intentions_oss.go | 2 +- agent/proxycfg-glue/intentions_test.go | 2 +- agent/proxycfg-glue/peering_list.go | 2 +- agent/proxycfg-glue/peering_list_test.go | 2 +- agent/proxycfg-glue/service_list.go | 4 +- agent/proxycfg-glue/service_list_test.go | 2 +- agent/proxycfg-glue/trust_bundle.go | 2 +- agent/proxycfg-glue/trust_bundle_test.go | 2 +- agent/proxycfg-sources/local/sync.go | 14 + agent/proxycfg/api_gateway.go | 2 +- agent/proxycfg/connect_proxy.go | 2 +- agent/proxycfg/ingress_gateway.go | 2 +- agent/proxycfg/manager.go | 2 +- agent/proxycfg/manager_test.go | 2 +- agent/proxycfg/mesh_gateway.go | 2 +- agent/proxycfg/proxycfg.deepcopy.go | 2 +- agent/proxycfg/snapshot.go | 2 +- agent/proxycfg/snapshot_test.go | 2 +- agent/proxycfg/state.go | 32 +- agent/proxycfg/state_test.go | 26 +- agent/proxycfg/terminating_gateway.go | 7 +- agent/proxycfg/testing.go | 2 +- agent/proxycfg/testing_ingress_gateway.go | 6 + agent/proxycfg/testing_mesh_gateway.go | 4 +- agent/proxycfg/testing_peering.go | 2 +- agent/proxycfg/testing_upstreams.go | 14 +- agent/proxycfg/upstreams.go | 2 +- agent/proxycfg_test.go | 138 + agent/rpc/operator/service.go | 3 +- agent/rpc/operator/service_test.go | 3 +- agent/rpc/peering/service.go | 4 +- agent/rpc/peering/service_oss_test.go | 2 +- agent/rpc/peering/service_test.go | 8 +- agent/rpc/peering/testing.go | 2 +- agent/rpcclient/health/health.go | 2 +- agent/rpcclient/health/streaming_test.go | 2 +- agent/rpcclient/health/view.go | 28 +- agent/rpcclient/health/view_test.go | 44 +- agent/setup.go | 23 +- agent/structs/config_entry_discoverychain.go | 21 + agent/structs/config_entry_routes.go | 4 +- agent/structs/config_entry_routes_test.go | 22 + agent/structs/discovery_chain.go | 1 + agent/structs/structs_ext_test.go | 2 +- agent/submatview/handler.go | 2 +- agent/submatview/local_materializer.go | 2 +- agent/submatview/local_materializer_test.go | 2 +- agent/submatview/materializer.go | 2 +- agent/submatview/rpc_materializer.go | 2 +- agent/submatview/store_integration_test.go | 2 +- agent/submatview/store_test.go | 6 +- agent/submatview/streaming_test.go | 6 +- agent/testagent.go | 3 + agent/ui_endpoint_test.go | 2 +- agent/xds/clusters.go | 262 +- agent/xds/delta_envoy_extender_oss_test.go | 21 - agent/xds/delta_test.go | 18 - agent/xds/endpoints.go | 71 +- agent/xds/golden_test.go | 33 +- agent/xds/listeners.go | 13 +- agent/xds/rbac.go | 2 +- agent/xds/rbac_test.go | 2 +- agent/xds/routes.go | 25 +- ...cal-ratelimit-applyto-filter.latest.golden | 127 - ...cal-ratelimit-applyto-filter.latest.golden | 75 - ...cal-ratelimit-applyto-filter.latest.golden | 256 -- ...cal-ratelimit-applyto-filter.latest.golden | 5 - ...and-inline-certificate.envoy-1-21-x.golden | 55 - ...route-and-inline-certificate.latest.golden | 68 +- ...and-failover-to-cluster-peer.latest.golden | 261 +- ...roxy-with-chain-and-failover.latest.golden | 262 +- ...and-redirect-to-cluster-peer.latest.golden | 167 +- ...ough-local-gateway-triggered.latest.golden | 340 +- ...ilover-through-local-gateway.latest.golden | 340 +- ...ugh-remote-gateway-triggered.latest.golden | 340 +- ...lover-through-remote-gateway.latest.golden | 340 +- ...ough-local-gateway-triggered.latest.golden | 262 +- ...ilover-through-local-gateway.latest.golden | 262 +- ...ugh-remote-gateway-triggered.latest.golden | 262 +- ...lover-through-remote-gateway.latest.golden | 262 +- ...and-failover-to-cluster-peer.latest.golden | 175 +- ...ress-with-chain-and-failover.latest.golden | 176 +- ...ough-local-gateway-triggered.latest.golden | 248 +- ...ilover-through-local-gateway.latest.golden | 248 +- ...ugh-remote-gateway-triggered.latest.golden | 248 +- ...lover-through-remote-gateway.latest.golden | 248 +- ...ough-local-gateway-triggered.latest.golden | 176 +- ...ilover-through-local-gateway.latest.golden | 176 +- ...ugh-remote-gateway-triggered.latest.golden | 176 +- ...lover-through-remote-gateway.latest.golden | 176 +- ...route-and-inline-certificate.latest.golden | 6 +- ...and-failover-to-cluster-peer.latest.golden | 112 +- ...roxy-with-chain-and-failover.latest.golden | 116 +- ...ough-local-gateway-triggered.latest.golden | 152 +- ...ilover-through-local-gateway.latest.golden | 116 +- ...ugh-remote-gateway-triggered.latest.golden | 152 +- ...lover-through-remote-gateway.latest.golden | 116 +- ...ough-local-gateway-triggered.latest.golden | 116 +- ...ilover-through-local-gateway.latest.golden | 116 +- ...ugh-remote-gateway-triggered.latest.golden | 116 +- ...lover-through-remote-gateway.latest.golden | 116 +- ...and-failover-to-cluster-peer.latest.golden | 76 +- ...ress-with-chain-and-failover.latest.golden | 80 +- ...ough-local-gateway-triggered.latest.golden | 116 +- ...ilover-through-local-gateway.latest.golden | 80 +- ...ugh-remote-gateway-triggered.latest.golden | 116 +- ...lover-through-remote-gateway.latest.golden | 80 +- ...ough-local-gateway-triggered.latest.golden | 80 +- ...ilover-through-local-gateway.latest.golden | 80 +- ...ugh-remote-gateway-triggered.latest.golden | 80 +- ...lover-through-remote-gateway.latest.golden | 80 +- .../api-gateway-tcp-listeners.latest.golden | 5 - ...route-and-inline-certificate.latest.golden | 68 +- ...route-and-inline-certificate.latest.golden | 6 +- ...and-failover-to-cluster-peer.latest.golden | 31 +- ...oxy-with-chain-and-overrides.latest.golden | 3 +- ...and-redirect-to-cluster-peer.latest.golden | 31 +- ...roxy-with-chain-external-sni.latest.golden | 31 +- .../connect-proxy-with-chain.latest.golden | 31 +- ...gress-grpc-multiple-services.latest.golden | 46 +- ...gress-http-multiple-services.latest.golden | 6 +- ...-sds-listener-level-wildcard.latest.golden | 46 +- ...ress-with-sds-listener-level.latest.golden | 46 +- ...-sds-service-level-mixed-tls.latest.golden | 54 +- ...gress-with-sds-service-level.latest.golden | 54 +- ...route-and-inline-certificate.latest.golden | 6 +- .../validateupstream_test.go | 2 +- api/config_entry.go | 5 +- api/config_entry_discoverychain.go | 1 + buf.work.yaml | 5 - build-support/scripts/protobuf.sh | 22 +- command/connect/envoy/envoy.go | 69 +- command/connect/envoy/envoy_test.go | 33 +- .../upstreams/troubleshoot_upstreams.go | 2 +- connect/tls_test.go | 2 +- go.mod | 2 +- .../tools/proto-gen-rpc-glue/e2e/source.pb.go | 2 +- .../postprocess/main.go | 36 +- .../ratelimit/ratelimit.pb.binary.go | 2 +- .../annotations/ratelimit/ratelimit.pb.go | 167 +- proto-public/buf.gen.yaml | 8 +- proto-public/buf.yaml | 1 - proto-public/pbacl/acl.pb.binary.go | 2 +- proto-public/pbacl/acl.pb.go | 218 +- proto-public/pbacl/acl.proto | 10 +- proto-public/pbacl/acl_grpc.pb.go | 4 +- proto-public/pbconnectca/ca.pb.binary.go | 2 +- proto-public/pbconnectca/ca.pb.go | 230 +- proto-public/pbconnectca/ca.proto | 10 +- proto-public/pbconnectca/ca_grpc.pb.go | 4 +- .../pbdataplane/dataplane.pb.binary.go | 2 +- proto-public/pbdataplane/dataplane.pb.go | 360 +- proto-public/pbdataplane/dataplane.proto | 10 +- proto-public/pbdataplane/dataplane_grpc.pb.go | 4 +- proto-public/pbdns/dns.pb.binary.go | 2 +- proto-public/pbdns/dns.pb.go | 150 +- proto-public/pbdns/dns.proto | 6 +- proto-public/pbdns/dns_grpc.pb.go | 4 +- .../serverdiscovery.pb.binary.go | 2 +- .../pbserverdiscovery/serverdiscovery.pb.go | 172 +- .../pbserverdiscovery/serverdiscovery.proto | 6 +- .../serverdiscovery_grpc.pb.go | 4 +- proto/buf.gen.yaml | 10 +- proto/{private => }/pbacl/acl.go | 0 proto/{private => }/pbacl/acl.pb.binary.go | 2 +- proto/pbacl/acl.pb.go | 167 + proto/{private => }/pbacl/acl.proto | 0 proto/{private => }/pbautoconf/auto_config.go | 0 .../pbautoconf/auto_config.pb.binary.go | 2 +- .../pbautoconf/auto_config.pb.go | 181 +- .../pbautoconf/auto_config.proto | 4 +- .../pbautoconf/auto_config_oss.go | 0 proto/{private => }/pbcommon/common.gen.go | 0 proto/{private => }/pbcommon/common.go | 0 .../pbcommon/common.pb.binary.go | 2 +- proto/{private => }/pbcommon/common.pb.go | 309 +- proto/{private => }/pbcommon/common.proto | 0 proto/{private => }/pbcommon/common_oss.go | 0 .../pbcommon/convert_pbstruct.go | 0 .../pbcommon/convert_pbstruct_test.go | 0 .../pbconfig/config.pb.binary.go | 2 +- proto/{private => }/pbconfig/config.pb.go | 385 ++- proto/{private => }/pbconfig/config.proto | 0 .../pbconfigentry/config_entry.gen.go | 2 + .../pbconfigentry/config_entry.go | 2 +- .../pbconfigentry/config_entry.pb.binary.go | 2 +- .../pbconfigentry/config_entry.pb.go | 2967 +++++++++-------- .../pbconfigentry/config_entry.proto | 4 +- proto/{private => }/pbconnect/connect.gen.go | 0 proto/{private => }/pbconnect/connect.go | 2 +- .../pbconnect/connect.pb.binary.go | 2 +- proto/{private => }/pbconnect/connect.pb.go | 305 +- proto/{private => }/pbconnect/connect.proto | 2 +- .../{private => }/pboperator/operator.gen.go | 0 .../pboperator/operator.pb.binary.go | 2 +- proto/pboperator/operator.pb.go | 247 ++ proto/{private => }/pboperator/operator.proto | 6 +- .../pboperator/operator_grpc.pb.go | 4 +- proto/{private => }/pbpeering/peering.gen.go | 0 proto/{private => }/pbpeering/peering.go | 0 .../pbpeering/peering.pb.binary.go | 2 +- proto/{private => }/pbpeering/peering.pb.go | 1127 +++---- proto/{private => }/pbpeering/peering.proto | 34 +- .../pbpeering/peering.rpcglue.pb.go | 0 .../pbpeering/peering_grpc.pb.go | 4 +- proto/{private => }/pbpeering/peering_oss.go | 0 proto/{private => }/pbpeerstream/convert.go | 2 +- .../{private => }/pbpeerstream/peerstream.go | 0 .../pbpeerstream/peerstream.pb.binary.go | 2 +- .../pbpeerstream/peerstream.pb.go | 448 +-- .../pbpeerstream/peerstream.proto | 16 +- .../pbpeerstream/peerstream_grpc.pb.go | 4 +- proto/{private => }/pbpeerstream/types.go | 0 proto/{private => }/pbservice/convert.go | 2 +- proto/{private => }/pbservice/convert_oss.go | 2 +- .../pbservice/convert_oss_test.go | 0 proto/{private => }/pbservice/convert_test.go | 0 .../pbservice/healthcheck.gen.go | 0 .../pbservice/healthcheck.pb.binary.go | 2 +- .../{private => }/pbservice/healthcheck.pb.go | 503 ++- .../{private => }/pbservice/healthcheck.proto | 2 +- proto/{private => }/pbservice/ids.go | 0 proto/{private => }/pbservice/ids_test.go | 2 +- proto/{private => }/pbservice/node.gen.go | 0 .../{private => }/pbservice/node.pb.binary.go | 2 +- proto/{private => }/pbservice/node.pb.go | 351 +- proto/{private => }/pbservice/node.proto | 6 +- proto/{private => }/pbservice/service.gen.go | 0 .../pbservice/service.pb.binary.go | 2 +- proto/{private => }/pbservice/service.pb.go | 647 ++-- proto/{private => }/pbservice/service.proto | 4 +- .../pbstatus/status.pb.binary.go | 2 +- proto/pbstatus/status.pb.go | 211 ++ proto/{private => }/pbstatus/status.proto | 0 proto/{private => }/pbsubscribe/subscribe.go | 0 .../pbsubscribe/subscribe.pb.binary.go | 2 +- .../{private => }/pbsubscribe/subscribe.pb.go | 418 +-- .../{private => }/pbsubscribe/subscribe.proto | 14 +- .../pbsubscribe/subscribe_grpc.pb.go | 4 +- proto/private/pbacl/acl.pb.go | 168 - proto/private/pboperator/operator.pb.go | 247 -- proto/private/pbstatus/status.pb.go | 212 -- proto/{private => }/prototest/testing.go | 0 sdk/testutil/retry/retry.go | 56 +- sdk/testutil/retry/retry_test.go | 52 - .../case-api-gateway-tcp-conflicted/setup.sh | 3 +- .../case-api-gateway-tcp-simple/setup.sh | 3 +- .../case-api-gateway-tcp-simple/verify.bats | 2 +- .../primary/verify.bats | 21 +- .../primary/verify.bats | 12 +- .../primary/verify.bats | 14 +- .../verify.bats | 6 +- .../envoy/case-envoyext-ratelimit/capture.sh | 4 - .../case-envoyext-ratelimit/service_s2.hcl | 5 - .../envoy/case-envoyext-ratelimit/setup.sh | 46 - .../envoy/case-envoyext-ratelimit/vars.sh | 3 - .../envoy/case-envoyext-ratelimit/verify.bats | 57 - .../primary/verify.bats | 12 +- .../capture.sh | 1 + .../service_s3.hcl} | 7 +- .../case-terminating-gateway-subsets/setup.sh | 1 + .../case-terminating-gateway-subsets/vars.sh | 1 + .../verify.bats | 4 + test/integration/connect/envoy/helpers.bash | 51 +- .../consul-container/libs/assert/service.go | 8 +- .../consul-container/libs/cluster/cluster.go | 12 +- .../libs/cluster/container.go | 2 +- .../libs/topology/peering_topology.go | 13 +- .../test/basic/connect_service_test.go | 45 +- .../consul-container/test/common.go | 68 - .../test/observability/access_logs_test.go | 6 +- .../rotate_server_and_ca_then_fail_test.go | 6 +- .../test/ratelimit/ratelimit_test.go | 55 +- ..._test.go => troubleshoot_upstream_test.go} | 2 +- .../test/upgrade/acl_node_test.go | 2 +- .../test/upgrade/ingress_gateway_test.go | 324 -- .../resolver_default_subset_test.go | 8 +- .../upgrade/peering_control_plane_mgw_test.go | 2 +- .../test/upgrade/peering_http_test.go | 12 +- tlsutil/config.go | 2 +- .../consul/token/selector/index.hbs | 18 +- .../consul/lock-session/form/index.hbs | 47 +- .../consul/lock-session/list/index.hbs | 34 +- .../lock-session/notifications/index.hbs | 18 +- .../app/templates/dc/nodes/show/sessions.hbs | 28 +- .../components/consul/nspace/form/index.hbs | 39 +- .../app/templates/dc/nspaces/index.hbs | 26 +- .../consul/partition/form/index.hbs | 43 +- .../consul/partition/selector/index.hbs | 128 +- .../app/templates/dc/partitions/index.hbs | 12 +- .../consul/peer/address/list/index.hbs | 2 +- .../consul/peer/address/list/index.scss | 3 - .../consul/peer/bento-box/index.hbs | 2 +- .../components/consul/peer/components.scss | 42 +- .../peer/form/generate/actions/index.hbs | 13 +- .../consul/peer/form/generate/index.hbs | 12 +- .../components/consul/peer/form/index.scss | 17 +- .../peer/form/initiate/actions/index.hbs | 9 +- .../consul/peer/form/initiate/index.hbs | 12 +- .../consul/peer/form/token/actions/index.hbs | 28 +- .../peer/form/token/fieldsets/index.hbs | 12 +- .../app/components/consul/peer/index.scss | 1 - .../app/templates/dc/peers/index.hbs | 43 +- .../app/templates/dc/peers/show/addresses.hbs | 34 +- .../app/templates/dc/peers/show/exported.hbs | 34 +- .../app/templates/dc/peers/show/imported.hbs | 35 +- .../app/components/anchors/index.scss | 4 +- .../app/components/anchors/skin.scss | 4 +- .../app/components/app-view/index.scss | 5 +- .../app/components/app-view/skin.scss | 8 +- .../consul-ui/app/components/app/index.scss | 2 +- .../app/components/auth-form/index.hbs | 84 +- .../app/components/auth-form/skin.scss | 4 +- .../app/components/auth-modal/layout.scss | 2 +- .../app/components/auth-profile/index.scss | 4 +- .../consul-ui/app/components/badge/index.scss | 4 +- .../app/components/breadcrumbs/skin.scss | 8 +- .../app/components/buttons/index.scss | 17 + .../app/components/buttons/skin.scss | 34 +- .../consul-ui/app/components/card/skin.scss | 6 +- .../app/components/code-editor/layout.scss | 2 +- .../app/components/code-editor/skin.scss | 32 +- .../app/components/composite-row/index.scss | 4 +- .../confirmation-dialog/layout.scss | 3 +- .../components/confirmation-dialog/skin.scss | 4 +- .../components/consul/acl/disabled/index.hbs | 20 +- .../components/consul/auth-method/index.scss | 10 +- .../consul/discovery-chain/index.hbs | 151 +- .../consul/discovery-chain/skin.scss | 22 +- .../consul/exposed-path/list/index.scss | 2 +- .../consul/external-source/index.hbs | 2 +- .../consul/health-check/list/skin.scss | 24 +- .../consul/instance-checks/index.scss | 8 +- .../consul/intention/components.scss | 8 +- .../consul/intention/form/fieldsets/index.hbs | 61 +- .../consul/intention/form/index.hbs | 115 +- .../consul/intention/list/skin.scss | 2 +- .../notice/custom-resource/index.hbs | 30 +- .../intention/notice/permissions/index.hbs | 27 +- .../intention/permission/form/index.hbs | 31 +- .../intention/permission/form/skin.scss | 2 +- .../app/components/consul/kind/index.hbs | 182 +- .../app/components/consul/kind/index.js | 14 + .../app/components/consul/kv/form/index.hbs | 75 +- .../app/components/consul/loader/skin.scss | 2 +- .../consul/node/agentless-notice/index.hbs | 44 +- .../consul/node/agentless-notice/index.scss | 2 +- .../components/consul/peer/info/index.scss | 4 +- .../components/consul/server/card/skin.scss | 17 +- .../components/consul/server/list/index.scss | 4 +- .../components/consul/service/list/index.hbs | 2 +- .../consul/service/search-bar/index.hbs | 2 +- .../consul/tomography/graph/index.scss | 18 +- .../app/components/copy-button/skin.scss | 16 +- .../app/components/copyable-code/index.scss | 14 +- .../components/delete-confirmation/index.hbs | 17 +- .../app/components/disclosure-menu/README.mdx | 2 +- .../app/components/empty-state/README.mdx | 32 +- .../app/components/empty-state/index.hbs | 11 +- .../app/components/empty-state/index.scss | 3 + .../app/components/empty-state/skin.scss | 4 +- .../app/components/error-state/index.hbs | 54 +- .../expanded-single-select/skin.scss | 6 +- .../app/components/filter-bar/skin.scss | 8 +- .../app/components/form-elements/index.scss | 12 +- .../app/components/form-elements/skin.scss | 16 +- .../app/components/freetext-filter/skin.scss | 14 +- .../components/hashicorp-consul/index.scss | 16 +- .../components/horizontal-kv-list/README.mdx | 4 +- .../components/horizontal-kv-list/debug.scss | 6 +- .../app/components/icon-definition/index.scss | 12 +- .../app/components/informed-action/skin.scss | 28 +- .../app/components/inline-alert/skin.scss | 10 +- .../app/components/inline-code/skin.scss | 6 +- .../app/components/list-collection/skin.scss | 6 +- .../app/components/list-row/skin.scss | 21 +- .../main-header-horizontal/skin.scss | 2 +- .../components/main-nav-horizontal/index.scss | 2 +- .../main-nav-horizontal/layout.scss | 2 + .../components/main-nav-horizontal/skin.scss | 16 +- .../components/main-nav-vertical/README.mdx | 2 +- .../components/main-nav-vertical/debug.scss | 2 +- .../components/main-nav-vertical/skin.scss | 60 +- .../app/components/menu-panel/skin.scss | 8 +- .../app/components/modal-dialog/index.hbs | 12 +- .../app/components/modal-dialog/layout.scss | 2 + .../app/components/modal-dialog/skin.scss | 33 +- .../components/more-popover-menu/index.scss | 8 +- .../consul-ui/app/components/notice/skin.scss | 42 +- .../app/components/oidc-select/index.hbs | 20 +- .../app/components/oidc-select/index.scss | 4 +- .../app/components/overlay/none.scss | 4 +- .../app/components/overlay/square-tail.scss | 4 +- .../components/paged-collection/README.mdx | 4 +- .../consul-ui/app/components/panel/README.mdx | 67 +- .../app/components/panel/index.css.js | 10 +- .../consul-ui/app/components/panel/skin.scss | 10 +- .../app/components/peerings/badge/index.scss | 28 +- .../app/components/policy-selector/index.hbs | 67 +- .../app/components/popover-select/index.scss | 12 +- .../app/components/progress/skin.scss | 2 +- .../app/components/radio-card/skin.scss | 14 +- .../app/components/role-selector/index.hbs | 76 +- .../app/components/role-selector/index.js | 6 - .../app/components/search-bar/index.scss | 8 +- .../app/components/skip-links/skin.scss | 6 +- .../app/components/sliding-toggle/skin.scss | 8 +- .../app/components/tab-nav/skin.scss | 12 +- .../consul-ui/app/components/table/index.scss | 6 +- .../app/components/table/layout.scss | 2 +- .../consul-ui/app/components/table/skin.scss | 10 +- .../app/components/tabular-details/skin.scss | 8 +- .../app/components/tabular-dl/skin.scss | 10 +- .../app/components/tag-list/index.scss | 2 +- .../consul-ui/app/components/tile/index.scss | 13 +- .../app/components/toggle-button/skin.scss | 4 +- .../app/components/tooltip-panel/skin.scss | 6 +- .../app/components/tooltip/index.scss | 8 +- .../topology-metrics/card/index.scss | 20 +- .../topology-metrics/popover/index.scss | 8 +- .../topology-metrics/series/skin.scss | 18 +- .../app/components/topology-metrics/skin.scss | 36 +- .../topology-metrics/stats/index.scss | 4 +- .../topology-metrics/status/index.scss | 4 +- .../app/filter/predicates/service.js | 1 + .../app/mixins/with-blocking-actions.js | 8 +- .../consul-ui/app/models/service-instance.js | 10 +- .../consul-ui/app/modifiers/aria-menu.mdx | 4 +- .../consul-ui/app/modifiers/css-prop.mdx | 4 +- ui/packages/consul-ui/app/styles/app.scss | 6 +- .../app/styles/base/color/README.mdx | 81 + .../app/styles/base/color/base-variables.scss | 190 ++ .../app/styles/base/color/hex-variables.scss | 178 + .../app/styles/base/color/index.scss | 5 + .../base/color/lemon/frame-placeholders.scss | 0 .../app/styles/base/color/lemon/index.scss | 5 + .../lemon/themes/dark-high-contrast.scss | 17 + .../styles/base/color/lemon/themes/dark.scss | 17 + .../lemon/themes/light-high-contrast.scss | 17 + .../styles/base/color/lemon/themes/light.scss | 17 + .../color/magenta/frame-placeholders.scss | 13 + .../app/styles/base/color/magenta/index.scss | 6 + .../magenta/themes/dark-high-contrast.scss | 18 + .../base/color/magenta/themes/dark.scss | 18 + .../magenta/themes/light-high-contrast.scss | 18 + .../base/color/magenta/themes/light.scss | 18 + .../styles/base/color/semantic-variables.scss | 27 +- .../color/strawberry/frame-placeholders.scss | 13 + .../styles/base/color/strawberry/index.scss | 6 + .../strawberry/themes/dark-high-contrast.scss | 18 + .../base/color/strawberry/themes/dark.scss | 18 + .../themes/light-high-contrast.scss | 18 + .../base/color/strawberry/themes/light.scss | 18 + .../styles/base/color/theme-placeholders.scss | 91 + .../base/color/ui/frame-placeholders.scss | 174 +- .../app/styles/base/color/ui/index.scss | 5 + .../color/ui/themes/dark-high-contrast.scss | 99 + .../app/styles/base/color/ui/themes/dark.scss | 99 + .../color/ui/themes/light-high-contrast.scss | 99 + .../styles/base/color/ui/themes/light.scss | 99 + .../base/color/vault/frame-placeholders.scss | 0 .../app/styles/base/color/vault/index.scss | 6 + .../vault/themes/dark-high-contrast.scss | 3 + .../styles/base/color/vault/themes/dark.scss | 3 + .../vault/themes/light-high-contrast.scss | 3 + .../styles/base/color/vault/themes/light.scss | 3 + .../base/decoration/base-variables.scss | 9 + .../app/styles/base/icons/README.mdx | 10 +- .../styles/base/icons/base-placeholders.scss | 10 +- .../app/styles/base/icons/icons/index.scss | 1 + .../base/icons/icons/vault/keyframes.scss | 6 +- .../app/styles/base/icons/overrides.scss | 2 +- .../app/styles/base/reset/system.scss | 26 +- ui/packages/consul-ui/app/styles/debug.scss | 21 +- ui/packages/consul-ui/app/styles/icons.scss | 20 +- ui/packages/consul-ui/app/styles/layout.scss | 1 - .../consul-ui/app/styles/layouts/index.scss | 2 +- .../app/styles/routes/dc/acls/index.scss | 3 + .../app/styles/routes/dc/kv/index.scss | 2 +- .../styles/routes/dc/overview/license.scss | 18 +- .../routes/dc/overview/serverstatus.scss | 41 +- .../app/styles/routes/dc/services/index.scss | 2 +- ui/packages/consul-ui/app/styles/themes.scss | 19 +- .../consul-ui/app/styles/typography.scss | 1 + .../consul-ui/app/styles/variables/skin.scss | 30 +- .../templates/dc/acls/auth-methods/index.hbs | 20 +- .../app/templates/dc/acls/policies/-form.hbs | 89 +- .../app/templates/dc/acls/policies/edit.hbs | 21 +- .../app/templates/dc/acls/policies/index.hbs | 26 +- .../app/templates/dc/acls/roles/-form.hbs | 154 +- .../app/templates/dc/acls/roles/index.hbs | 26 +- .../app/templates/dc/acls/tokens/-form.hbs | 71 +- .../app/templates/dc/acls/tokens/edit.hbs | 51 +- .../app/templates/dc/acls/tokens/index.hbs | 24 +- .../app/templates/dc/intentions/index.hbs | 26 +- .../consul-ui/app/templates/dc/kv/index.hbs | 35 +- .../app/templates/dc/nodes/index.hbs | 34 +- .../templates/dc/nodes/show/healthchecks.hbs | 20 +- .../app/templates/dc/services/index.hbs | 26 +- .../dc/services/instance/healthchecks.hbs | 20 +- .../dc/services/instance/upstreams.hbs | 32 +- .../dc/services/show/intentions/index.hbs | 26 +- .../templates/dc/services/show/topology.hbs | 94 +- .../app/templates/dc/show/license.hbs | 22 +- .../app/templates/dc/show/serverstatus.hbs | 9 +- .../consul-ui/app/templates/settings.hbs | 16 +- .../mock-api/v1/internal/ui/exported-services | 2 +- .../mock-api/v1/internal/ui/services | 2 +- ui/packages/consul-ui/package.json | 4 +- .../acceptance/dc/intentions/delete.feature | 2 +- .../tests/acceptance/dc/kvs/delete.feature | 2 +- .../acceptance/dc/services/index.feature | 10 +- .../dc/services/show/intentions/index.feature | 2 +- .../dc/services/show/services.feature | 1 + .../components/delete-confirmation-test.js | 4 +- .../tests/lib/page-object/createDeletable.js | 3 +- .../consul-ui/tests/pages/dc/acls/edit.js | 2 +- .../tests/pages/dc/acls/tokens/edit.js | 2 +- .../consul-ui/translations/common/en-us.yaml | 1 + .../consul-ui/translations/routes/en-us.yaml | 92 +- ui/yarn.lock | 190 +- version/VERSION | 2 +- .../content/commands/troubleshoot/proxy.mdx | 3 - .../commands/troubleshoot/upstreams.mdx | 2 - website/content/docs/agent/index.mdx | 2 +- website/content/docs/agent/limits/index.mdx | 20 +- .../docs/agent/limits/init-rate-limits.mdx | 12 +- .../limits/set-global-traffic-rate-limits.mdx | 18 +- .../usage/route-to-peered-services.mdx | 4 +- .../docs/connect/cluster-peering/index.mdx | 2 +- .../config-entries/service-resolver.mdx | 6 + .../api-gateway/configuration/http-route.mdx | 3 +- .../proxies/envoy-extensions/index.mdx | 1 - .../proxies/envoy-extensions/usage/lambda.mdx | 2 +- .../content/docs/connect/proxies/envoy.mdx | 6 +- .../docs/k8s/annotations-and-labels.mdx | 4 +- .../usage/establish-peering.mdx | 2 +- .../docs/k8s/connect/ingress-gateways.mdx | 6 - website/content/docs/k8s/crds/index.mdx | 4 +- .../docs/release-notes/consul-k8s/v0_47_x.mdx | 2 +- .../docs/release-notes/consul/v1_15_x.mdx | 1 - .../services/discovery/dns-static-lookups.mdx | 2 +- website/redirects.js | 14 +- 685 files changed, 14338 insertions(+), 14161 deletions(-) delete mode 100644 .changelog/16251.txt delete mode 100644 .changelog/16266.txt delete mode 100644 .changelog/16292.txt delete mode 100644 .changelog/16298.txt delete mode 100644 .changelog/16412.txt delete mode 100644 .changelog/16428.txt create mode 100644 .changelog/16495.txt create mode 100644 .changelog/16497.txt create mode 100644 .changelog/16498.txt create mode 100644 .changelog/16499.txt create mode 100644 .changelog/16508.txt create mode 100644 .changelog/16512.txt rename .github/workflows/{nightly-test-1.15.x.yaml => nightly-test-1.11.x.yaml} (98%) create mode 100644 .github/workflows/website-checker.yml create mode 100644 Vagrantfile delete mode 100644 agent/connect/ca/provider_vault_auth_azure.go delete mode 100644 agent/connect/ca/provider_vault_auth_jwt.go delete mode 100644 agent/envoyextensions/builtin/http/localratelimit/copied.go delete mode 100644 agent/envoyextensions/builtin/http/localratelimit/ratelimit.go delete mode 100644 agent/envoyextensions/builtin/http/localratelimit/ratelimit_test.go delete mode 100644 agent/grpc-internal/balancer/registry.go create mode 100644 agent/proxycfg_test.go delete mode 100644 agent/xds/testdata/builtin_extension/clusters/http-local-ratelimit-applyto-filter.latest.golden delete mode 100644 agent/xds/testdata/builtin_extension/endpoints/http-local-ratelimit-applyto-filter.latest.golden delete mode 100644 agent/xds/testdata/builtin_extension/listeners/http-local-ratelimit-applyto-filter.latest.golden delete mode 100644 agent/xds/testdata/builtin_extension/routes/http-local-ratelimit-applyto-filter.latest.golden delete mode 100644 agent/xds/testdata/clusters/api-gateway-with-tcp-route-and-inline-certificate.envoy-1-21-x.golden delete mode 100644 agent/xds/testdata/listeners/api-gateway-tcp-listeners.latest.golden delete mode 100644 buf.work.yaml rename proto/{private => }/pbacl/acl.go (100%) rename proto/{private => }/pbacl/acl.pb.binary.go (91%) create mode 100644 proto/pbacl/acl.pb.go rename proto/{private => }/pbacl/acl.proto (100%) rename proto/{private => }/pbautoconf/auto_config.go (100%) rename proto/{private => }/pbautoconf/auto_config.pb.binary.go (93%) rename proto/{private => }/pbautoconf/auto_config.pb.go (50%) rename proto/{private => }/pbautoconf/auto_config.proto (95%) rename proto/{private => }/pbautoconf/auto_config_oss.go (100%) rename proto/{private => }/pbcommon/common.gen.go (100%) rename proto/{private => }/pbcommon/common.go (100%) rename proto/{private => }/pbcommon/common.pb.binary.go (98%) rename proto/{private => }/pbcommon/common.pb.go (63%) rename proto/{private => }/pbcommon/common.proto (100%) rename proto/{private => }/pbcommon/common_oss.go (100%) rename proto/{private => }/pbcommon/convert_pbstruct.go (100%) rename proto/{private => }/pbcommon/convert_pbstruct_test.go (100%) rename proto/{private => }/pbconfig/config.pb.binary.go (98%) rename proto/{private => }/pbconfig/config.pb.go (56%) rename proto/{private => }/pbconfig/config.proto (100%) rename proto/{private => }/pbconfigentry/config_entry.gen.go (99%) rename proto/{private => }/pbconfigentry/config_entry.go (99%) rename proto/{private => }/pbconfigentry/config_entry.pb.binary.go (99%) rename proto/{private => }/pbconfigentry/config_entry.pb.go (64%) rename proto/{private => }/pbconfigentry/config_entry.proto (99%) rename proto/{private => }/pbconnect/connect.gen.go (100%) rename proto/{private => }/pbconnect/connect.go (97%) rename proto/{private => }/pbconnect/connect.pb.binary.go (95%) rename proto/{private => }/pbconnect/connect.pb.go (60%) rename proto/{private => }/pbconnect/connect.proto (99%) rename proto/{private => }/pboperator/operator.gen.go (100%) rename proto/{private => }/pboperator/operator.pb.binary.go (94%) create mode 100644 proto/pboperator/operator.pb.go rename proto/{private => }/pboperator/operator.proto (76%) rename proto/{private => }/pboperator/operator_grpc.pb.go (97%) rename proto/{private => }/pbpeering/peering.gen.go (100%) rename proto/{private => }/pbpeering/peering.go (100%) rename proto/{private => }/pbpeering/peering.pb.binary.go (99%) rename proto/{private => }/pbpeering/peering.pb.go (66%) rename proto/{private => }/pbpeering/peering.proto (93%) rename proto/{private => }/pbpeering/peering.rpcglue.pb.go (100%) rename proto/{private => }/pbpeering/peering_grpc.pb.go (99%) rename proto/{private => }/pbpeering/peering_oss.go (100%) rename proto/{private => }/pbpeerstream/convert.go (93%) rename proto/{private => }/pbpeerstream/peerstream.go (100%) rename proto/{private => }/pbpeerstream/peerstream.pb.binary.go (98%) rename proto/{private => }/pbpeerstream/peerstream.pb.go (59%) rename proto/{private => }/pbpeerstream/peerstream.proto (92%) rename proto/{private => }/pbpeerstream/peerstream_grpc.pb.go (98%) rename proto/{private => }/pbpeerstream/types.go (100%) rename proto/{private => }/pbservice/convert.go (99%) rename proto/{private => }/pbservice/convert_oss.go (86%) rename proto/{private => }/pbservice/convert_oss_test.go (100%) rename proto/{private => }/pbservice/convert_test.go (100%) rename proto/{private => }/pbservice/healthcheck.gen.go (100%) rename proto/{private => }/pbservice/healthcheck.pb.binary.go (96%) rename proto/{private => }/pbservice/healthcheck.pb.go (56%) rename proto/{private => }/pbservice/healthcheck.proto (99%) rename proto/{private => }/pbservice/ids.go (100%) rename proto/{private => }/pbservice/ids_test.go (98%) rename proto/{private => }/pbservice/node.gen.go (100%) rename proto/{private => }/pbservice/node.pb.binary.go (97%) rename proto/{private => }/pbservice/node.pb.go (59%) rename proto/{private => }/pbservice/node.proto (97%) rename proto/{private => }/pbservice/service.gen.go (100%) rename proto/{private => }/pbservice/service.pb.binary.go (98%) rename proto/{private => }/pbservice/service.pb.go (62%) rename proto/{private => }/pbservice/service.proto (99%) rename proto/{private => }/pbstatus/status.pb.binary.go (90%) create mode 100644 proto/pbstatus/status.pb.go rename proto/{private => }/pbstatus/status.proto (100%) rename proto/{private => }/pbsubscribe/subscribe.go (100%) rename proto/{private => }/pbsubscribe/subscribe.pb.binary.go (97%) rename proto/{private => }/pbsubscribe/subscribe.pb.go (61%) rename proto/{private => }/pbsubscribe/subscribe.proto (95%) rename proto/{private => }/pbsubscribe/subscribe_grpc.pb.go (98%) delete mode 100644 proto/private/pbacl/acl.pb.go delete mode 100644 proto/private/pboperator/operator.pb.go delete mode 100644 proto/private/pbstatus/status.pb.go rename proto/{private => }/prototest/testing.go (100%) delete mode 100644 test/integration/connect/envoy/case-envoyext-ratelimit/capture.sh delete mode 100644 test/integration/connect/envoy/case-envoyext-ratelimit/service_s2.hcl delete mode 100644 test/integration/connect/envoy/case-envoyext-ratelimit/setup.sh delete mode 100644 test/integration/connect/envoy/case-envoyext-ratelimit/vars.sh delete mode 100644 test/integration/connect/envoy/case-envoyext-ratelimit/verify.bats rename test/integration/connect/envoy/{case-envoyext-ratelimit/service_s1.hcl => case-terminating-gateway-subsets/service_s3.hcl} (69%) delete mode 100644 test/integration/consul-container/test/common.go rename test/integration/consul-container/test/troubleshoot/{troubleshoot_test.go => troubleshoot_upstream_test.go} (97%) delete mode 100644 test/integration/consul-container/test/upgrade/ingress_gateway_test.go delete mode 100644 ui/packages/consul-peerings/app/components/consul/peer/address/list/index.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/README.mdx create mode 100644 ui/packages/consul-ui/app/styles/base/color/base-variables.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/hex-variables.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/lemon/frame-placeholders.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/lemon/index.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/lemon/themes/dark-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/lemon/themes/dark.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/lemon/themes/light-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/lemon/themes/light.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/magenta/frame-placeholders.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/magenta/index.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/magenta/themes/dark-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/magenta/themes/dark.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/magenta/themes/light-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/magenta/themes/light.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/strawberry/frame-placeholders.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/strawberry/index.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/strawberry/themes/dark-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/strawberry/themes/dark.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/strawberry/themes/light-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/strawberry/themes/light.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/theme-placeholders.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/ui/themes/dark-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/ui/themes/dark.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/ui/themes/light-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/ui/themes/light.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/vault/frame-placeholders.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/vault/index.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/vault/themes/dark-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/vault/themes/dark.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/vault/themes/light-high-contrast.scss create mode 100644 ui/packages/consul-ui/app/styles/base/color/vault/themes/light.scss diff --git a/.changelog/16251.txt b/.changelog/16251.txt deleted file mode 100644 index 7aaf58011e0ac..0000000000000 --- a/.changelog/16251.txt +++ /dev/null @@ -1,3 +0,0 @@ -```release-note:improvement -ui: update from

Permissions

{{#if (gt item.Permissions.length 0) }} @@ -218,23 +217,11 @@

-
  • - +
  • -
  • - +
  • @@ -262,20 +249,22 @@ - - - - + + diff --git a/ui/packages/consul-ui/app/components/consul/intention/form/index.hbs b/ui/packages/consul-ui/app/components/consul/intention/form/index.hbs index cfd3b4db47370..e58b1ffb3f4a2 100644 --- a/ui/packages/consul-ui/app/components/consul/intention/form/index.hbs +++ b/ui/packages/consul-ui/app/components/consul/intention/form/index.hbs @@ -80,20 +80,22 @@ as |item readonly|}}

    - - - - + + {{/let}} @@ -133,10 +135,20 @@ as |item readonly|}} {{#if api.isCreate}} {{#if (and (can 'use partitions') (not (can 'choose partitions' dc=@dc)))}} - - Cross-partition communication not supported - Cross-partition communication is not supported outside of the primary datacenter. You will only be able to select namespaces for source and destination services. - + + +

    + Cross-partition communication not supported +

    +
    + +

    + Cross-partition communication is not supported outside of the primary datacenter. You will only be able to select namespaces for source and destination services. +

    +
    +
    {{/if}} {{#if this.isManagedByCRDs}} @@ -162,30 +174,32 @@ as |item readonly|}} @onchange={{api.change}} />
    - - - + + {{#if (not api.isCreate)}} {{#if (not-eq item.ID 'anonymous') }} - + > + Delete + {{/if}} {{/if}} -
    {{else}} {{#if item.IsManagedByCRD}} - - Intention Custom Resource - This Intention is view only because it is managed through an Intention Custom Resource in your Kubernetes cluster. - - + + +

    + Intention Custom Resource +

    +
    + +

    + This Intention is view only because it is managed through an Intention Custom Resource in your Kubernetes cluster. +

    +
    + +

    + Learn more about CRDs +

    +
    +
    {{/if}} - Intention Custom Resource - Some of your intentions are being managed through an Intention Custom Resource in your Kubernetes cluster. Those managed intentions will be view only in the UI. Any intentions created in the UI will work but will not be synced to the Custom Resource Definition (CRD) datastore. - - \ No newline at end of file + + +

    + Intention Custom Resource +

    +
    + +

    + Some of your intentions are being managed through an Intention Custom Resource in your Kubernetes cluster. Those managed intentions will be view only in the UI. Any intentions created in the UI will work but will not be synced to the Custom Resource Definition (CRD) datastore. +

    +
    + +

    + Learn more about CRDs +

    +
    +
    \ No newline at end of file diff --git a/ui/packages/consul-ui/app/components/consul/intention/notice/permissions/index.hbs b/ui/packages/consul-ui/app/components/consul/intention/notice/permissions/index.hbs index 8afe559e3501e..9e42632ba7392 100644 --- a/ui/packages/consul-ui/app/components/consul/intention/notice/permissions/index.hbs +++ b/ui/packages/consul-ui/app/components/consul/intention/notice/permissions/index.hbs @@ -1,10 +1,17 @@ - - {{t "components.consul.intention.notice.permissions.body"}} - - \ No newline at end of file + + +

    + {{t "components.consul.intention.notice.permissions.body"}} +

    +
    + +

    + + {{t "components.consul.intention.notice.permissions.footer"}} + +

    +
    +
    + diff --git a/ui/packages/consul-ui/app/components/consul/intention/permission/form/index.hbs b/ui/packages/consul-ui/app/components/consul/intention/permission/form/index.hbs index 91cbbbc56577c..f2b09732a2934 100644 --- a/ui/packages/consul-ui/app/components/consul/intention/permission/form/index.hbs +++ b/ui/packages/consul-ui/app/components/consul/intention/permission/form/index.hbs @@ -134,20 +134,23 @@ as |group|> - - - - + + + \ No newline at end of file diff --git a/ui/packages/consul-ui/app/components/consul/intention/permission/form/skin.scss b/ui/packages/consul-ui/app/components/consul/intention/permission/form/skin.scss index 292532f9d6201..1085802d4e918 100644 --- a/ui/packages/consul-ui/app/components/consul/intention/permission/form/skin.scss +++ b/ui/packages/consul-ui/app/components/consul/intention/permission/form/skin.scss @@ -1,6 +1,6 @@ .consul-intention-permission-form { h2 { - border-top: 1px solid var(--token-color-foreground-action); + border-top: 1px solid rgb(var(--tone-blue-500)); @extend %h200; } button.type-submit { diff --git a/ui/packages/consul-ui/app/components/consul/kind/index.hbs b/ui/packages/consul-ui/app/components/consul/kind/index.hbs index e5bfc6d4423cd..58b9815456128 100644 --- a/ui/packages/consul-ui/app/components/consul/kind/index.hbs +++ b/ui/packages/consul-ui/app/components/consul/kind/index.hbs @@ -1,89 +1,99 @@ {{#if item.Kind}} - {{#let (titleize (humanize item.Kind)) as |Name|}} - {{#if withInfo}} -
    -
    - - {{Name}} - -
    -
    - - - {{#if (eq item.Kind 'ingress-gateway')}} - Ingress gateways enable ingress traffic from services outside the Consul service mesh to services inside the Consul service mesh. - {{else if (eq item.Kind 'terminating-gateway')}} - Terminating gateways allow connect-enabled services in Consul service mesh to communicate with services outside the service mesh. - {{else}} - Mesh gateways enable routing of Connect traffic between different Consul datacenters. - {{/if}} - - -
  • - {{#if (eq item.Kind 'ingress-gateway')}} - About Ingress gateways - {{else if (eq item.Kind 'terminating-gateway')}} - About Terminating gateways - {{else}} - About Mesh gateways - {{/if}} -
  • - {{#let (from-entries (array - (array 'ingress-gateway' '/consul/developer-mesh/ingress-gateways') - (array 'terminating-gateway' '/consul/developer-mesh/understand-terminating-gateways') - (array 'mesh-gateway' '/consul/developer-mesh/connect-gateways') - ) - ) as |link|}} - - {{/let}} - {{#let (from-entries (array - (array 'ingress-gateway' '/connect/ingress-gateway') - (array 'terminating-gateway' '/connect/terminating-gateway') - (array 'mesh-gateway' '/connect/mesh-gateway') - ) - ) as |link|}} - -
  • - Other gateway types -
  • - {{#if (not-eq item.Kind 'mesh-gateway')}} - + {{#if withInfo}} +
    +
    + + {{Name}} + +
    +
    + + + {{#if (eq item.Kind 'ingress-gateway')}} + Ingress gateways enable ingress traffic from services outside the Consul service mesh to services inside the Consul service mesh. + {{else if (eq item.Kind 'terminating-gateway')}} + Terminating gateways allow connect-enabled services in Consul service mesh to communicate with services outside the service mesh. + {{else if (eq item.Kind 'api-gateway')}} + API gateways enable ingress traffic from services outside the Consul service mesh to services inside the Consul service mesh. + {{else}} + Mesh gateways enable routing of Connect traffic between different Consul datacenters. + {{/if}} + + +
  • + {{#if (eq item.Kind 'ingress-gateway')}} + About Ingress gateways + {{else if (eq item.Kind 'terminating-gateway')}} + About Terminating gateways + {{else if (eq item.Kind 'api-gateway')}} + About API gateways + {{else}} + About Mesh gateways {{/if}} - {{#if (not-eq item.Kind 'terminating-gateway')}} -
  • - {{/if}} - {{#if (not-eq item.Kind 'ingress-gateway')}} - - {{/if}} - {{/let}} -
    -
    -
    -
    - {{else}} - - {{Name}} - - {{/if}} - {{/let}} + + {{#let (from-entries (array + (array 'ingress-gateway' '/consul/developer-mesh/ingress-gateways') + (array 'terminating-gateway' '/consul/developer-mesh/understand-terminating-gateways') + (array 'mesh-gateway' '/consul/developer-mesh/connect-gateways') + ) + ) as |link|}} + + {{/let}} + {{#let (from-entries (array + (array 'ingress-gateway' '/connect/gateways/ingress-gateway') + (array 'terminating-gateway' '/connect/gateways/terminating-gateway') + (array 'api-gateway' '/connect/gateways/api-gateway') + (array 'mesh-gateway' '/connect/gateways/mesh-gateway') + ) + ) as |link|}} + +
  • + Other gateway types +
  • + {{#if (not-eq item.Kind 'mesh-gateway')}} + + {{/if}} + {{#if (not-eq item.Kind 'terminating-gateway')}} + + {{/if}} + {{#if (not-eq item.Kind 'ingress-gateway')}} + + {{/if}} + {{#if (not-eq item.Kind 'api-gateway')}} + + {{/if}} + {{/let}} +
    +
    +
    +
    + {{else}} + + {{Name}} + + {{/if}} {{/if}} diff --git a/ui/packages/consul-ui/app/components/consul/kind/index.js b/ui/packages/consul-ui/app/components/consul/kind/index.js index 4798652642ba8..63117c19fe411 100644 --- a/ui/packages/consul-ui/app/components/consul/kind/index.js +++ b/ui/packages/consul-ui/app/components/consul/kind/index.js @@ -1,5 +1,19 @@ import Component from '@ember/component'; +import { computed } from '@ember/object'; +import { titleize } from 'ember-cli-string-helpers/helpers/titleize'; +import { humanize } from 'ember-cli-string-helpers/helpers/humanize'; + +const normalizedGatewayLabels = { + 'api-gateway': 'API Gateway', + 'mesh-gateway': 'Mesh Gateway', + 'ingress-gateway': 'Ingress Gateway', + 'terminating-gateway': 'Terminating Gateway', +}; export default Component.extend({ tagName: '', + Name: computed('item.Kind', function () { + const name = normalizedGatewayLabels[this.item.Kind]; + return name ? name : titleize(humanize(this.item.Kind)); + }), }); diff --git a/ui/packages/consul-ui/app/components/consul/kv/form/index.hbs b/ui/packages/consul-ui/app/components/consul/kv/form/index.hbs index 08ed3391235b8..8ca9d738a50dd 100644 --- a/ui/packages/consul-ui/app/components/consul/kv/form/index.hbs +++ b/ui/packages/consul-ui/app/components/consul/kv/form/index.hbs @@ -60,58 +60,29 @@ {{/if}} - - - {{#if api.isCreate}} - {{#if (not disabld)}} - - {{/if}} - - - {{else}} - {{#if (not disabld)}} - - {{/if}} - - {{#if (not disabld)}} - - - - - - - - - {{/if}} - {{/if}} - - + + {{#if api.isCreate}} +{{#if (not disabld)}} + +{{/if}} + + {{else}} +{{#if (not disabld)}} + +{{/if}} + +{{#if (not disabld)}} + + + + + + + + + {{/if}} +{{/if}} + {{/let}} diff --git a/ui/packages/consul-ui/app/components/consul/loader/skin.scss b/ui/packages/consul-ui/app/components/consul/loader/skin.scss index ce4ceed2b04c6..a7a7f432201fb 100644 --- a/ui/packages/consul-ui/app/components/consul/loader/skin.scss +++ b/ui/packages/consul-ui/app/components/consul/loader/skin.scss @@ -1,5 +1,5 @@ %loader circle { - fill: var(--token-color-consul-gradient-faint-stop); + fill: rgb(var(--tone-brand-100)); } %loader circle { animation: loader-animation 1.5s infinite ease-in-out; diff --git a/ui/packages/consul-ui/app/components/consul/node/agentless-notice/index.hbs b/ui/packages/consul-ui/app/components/consul/node/agentless-notice/index.hbs index 2f00ba0d6d84c..6ee6a31777c84 100644 --- a/ui/packages/consul-ui/app/components/consul/node/agentless-notice/index.hbs +++ b/ui/packages/consul-ui/app/components/consul/node/agentless-notice/index.hbs @@ -1,20 +1,28 @@ {{#if isVisible}} - - - {{t 'routes.dc.nodes.index.agentless.notice.header'}} - - - {{t 'routes.dc.nodes.index.agentless.notice.body'}} - - + + +

    + {{t 'routes.dc.nodes.index.agentless.notice.header'}} +

    + +
    + +

    + {{t 'routes.dc.nodes.index.agentless.notice.body'}} +

    +
    + + + +
    {{/if}} diff --git a/ui/packages/consul-ui/app/components/consul/node/agentless-notice/index.scss b/ui/packages/consul-ui/app/components/consul/node/agentless-notice/index.scss index a77be5a232286..fc4b21ac93b01 100644 --- a/ui/packages/consul-ui/app/components/consul/node/agentless-notice/index.scss +++ b/ui/packages/consul-ui/app/components/consul/node/agentless-notice/index.scss @@ -1,4 +1,4 @@ -.agentless-node-notice .hds-alert__title { +.agentless-node-notice header { display: flex; justify-content: space-between; } diff --git a/ui/packages/consul-ui/app/components/consul/peer/info/index.scss b/ui/packages/consul-ui/app/components/consul/peer/info/index.scss index 1c1d15d14a41e..a9d57b1635ade 100644 --- a/ui/packages/consul-ui/app/components/consul/peer/info/index.scss +++ b/ui/packages/consul-ui/app/components/consul/peer/info/index.scss @@ -1,6 +1,6 @@ .consul-peer-info { - background: var(--token-color-surface-faint); - color: var(--token-color-foreground-faint); + background: rgb(var(--gray-100)); + color: rgb(var(--gray-600)); padding: 0px 8px; border-radius: 2px; diff --git a/ui/packages/consul-ui/app/components/consul/server/card/skin.scss b/ui/packages/consul-ui/app/components/consul/server/card/skin.scss index e841794a2e95f..1478ac3facec0 100644 --- a/ui/packages/consul-ui/app/components/consul/server/card/skin.scss +++ b/ui/packages/consul-ui/app/components/consul/server/card/skin.scss @@ -6,7 +6,7 @@ } %consul-server-card .name + dd { @extend %h300; - color: var(--token-color-hashicorp-brand); + color: rgb(var(--tone-gray-999)); animation-name: typo-truncate; } %consul-server-card .health-status + dd { @@ -14,16 +14,16 @@ font-size: var(--typo-size-700); } %consul-server-card.voting-status-non-voter .health-status + dd { - background-color: var(--token-color-surface-strong); - color: var(--token-color-foreground-faint); + background-color: rgb(var(--tone-gray-100)); + color: rgb(var(--tone-gray-600)); } %consul-server-card:not(.voting-status-non-voter) .health-status.healthy + dd { - background-color: var(--token-color-surface-success); - color: var(--token-color-palette-green-400); + background-color: rgb(var(--tone-green-050)); + color: rgb(var(--tone-green-800)); } %consul-server-card:not(.voting-status-non-voter) .health-status:not(.healthy) + dd { - background-color: var(--token-color-surface-critical); - color: var(--token-color-foreground-critical); + background-color: rgb(var(--tone-red-050)); + color: rgb(var(--tone-red-500)); } %consul-server-card .health-status + dd::before { --icon-size: icon-000; @@ -31,7 +31,10 @@ } %consul-server-card .health-status.healthy + dd::before { --icon-name: icon-check; + --icon-color: rgb(var(--tone-green-800)); } %consul-server-card .health-status:not(.healthy) + dd::before { --icon-name: icon-x; + --icon-color: rgb(var(--tone-red-500)); } + diff --git a/ui/packages/consul-ui/app/components/consul/server/list/index.scss b/ui/packages/consul-ui/app/components/consul/server/list/index.scss index c3c3e5a8523f8..0ec7a33ec4c2e 100644 --- a/ui/packages/consul-ui/app/components/consul/server/list/index.scss +++ b/ui/packages/consul-ui/app/components/consul/server/list/index.scss @@ -9,6 +9,6 @@ } %consul-server-list a:hover div { - box-shadow: var(--token-elevation-overlay-box-shadow); - --tone-border: var(--token-color-foreground-faint); + box-shadow: var(--decor-elevation-800); + --tone-border: var(--tone-gray-500); } diff --git a/ui/packages/consul-ui/app/components/consul/service/list/index.hbs b/ui/packages/consul-ui/app/components/consul/service/list/index.hbs index ae06f4e477a16..7991a1124303d 100644 --- a/ui/packages/consul-ui/app/components/consul/service/list/index.hbs +++ b/ui/packages/consul-ui/app/components/consul/service/list/index.hbs @@ -86,4 +86,4 @@ {{/if}} - + \ No newline at end of file diff --git a/ui/packages/consul-ui/app/components/consul/service/search-bar/index.hbs b/ui/packages/consul-ui/app/components/consul/service/search-bar/index.hbs index 5c76cf501ca29..bda5097c9c2b2 100644 --- a/ui/packages/consul-ui/app/components/consul/service/search-bar/index.hbs +++ b/ui/packages/consul-ui/app/components/consul/service/search-bar/index.hbs @@ -102,7 +102,7 @@ {{t 'common.consul.service'}} - {{#each (array 'ingress-gateway' 'terminating-gateway' 'mesh-gateway') as |kind|}} + {{#each (array 'api-gateway' 'ingress-gateway' 'terminating-gateway' 'mesh-gateway') as |kind|}} diff --git a/ui/packages/consul-ui/app/components/consul/tomography/graph/index.scss b/ui/packages/consul-ui/app/components/consul/tomography/graph/index.scss index 93fae93eb2aae..2cb3745197686 100644 --- a/ui/packages/consul-ui/app/components/consul/tomography/graph/index.scss +++ b/ui/packages/consul-ui/app/components/consul/tomography/graph/index.scss @@ -1,36 +1,36 @@ .tomography-graph { .background { - fill: var(--token-color-surface-strong); + fill: rgb(var(--tone-gray-050)); } .axis { fill: none; - stroke: var(--token-color-palette-neutral-300); + stroke: rgb(var(--tone-gray-300)); stroke-dasharray: 4 4; } .border { fill: none; - stroke: var(--token-color-palette-neutral-300); + stroke: rgb(var(--tone-gray-300)); } .point { - stroke: var(--token-color-foreground-disabled); - fill: var(--token-color-consul-foreground); + stroke: rgb(var(--tone-gray-400)); + fill: rgb(var(--tone-magenta-600)); } .lines rect { - fill: var(--token-color-consul-foreground); + fill: rgb(var(--tone-magenta-600)); stroke: transparent; stroke-width: 5px; } .lines rect:hover { - fill: var(--token-color-palette-neutral-300); + fill: rgb(var(--tone-gray-300)); height: 3px; y: -1px; } .tick line { - stroke: var(--token-color-palette-neutral-300); + stroke: rgb(var(--tone-gray-300)); } .tick text { font-size: var(--typo-size-600); text-anchor: start; - color: var(--token-color-foreground-strong); + color: rgb(var(--tone-gray-900)); } } diff --git a/ui/packages/consul-ui/app/components/copy-button/skin.scss b/ui/packages/consul-ui/app/components/copy-button/skin.scss index 18864ed741441..89988852c3b7a 100644 --- a/ui/packages/consul-ui/app/components/copy-button/skin.scss +++ b/ui/packages/consul-ui/app/components/copy-button/skin.scss @@ -1,22 +1,22 @@ %copy-button { - color: var(--token-color-foreground-action); - --icon-color: transparent; + color: rgb(var(--tone-blue-500)); + --icon-color: var(--transparent); } %copy-button::before { @extend %with-copy-action-mask, %as-pseudo; - --icon-color: var(--token-color-foreground-faint); + --icon-color: rgb(var(--tone-gray-500)); } %copy-button::after { - --icon-color: var(--token-color-surface-strong); + --icon-color: rgb(var(--tone-gray-050)); } %copy-button:hover:not(:disabled):not(:active), %copy-button:focus { - color: var(--token-color-foreground-action); - --icon-color: var(--token-color-surface-strong); + color: rgb(var(--tone-blue-500)); + --icon-color: rgb(var(--tone-gray-050)); } %copy-button:hover::before { - --icon-color: var(--token-color-foreground-action); + --icon-color: rgb(var(--tone-blue-500)); } %copy-button:active { - --icon-color: var(--token-color-surface-interactive-active); + --icon-color: rgb(var(--tone-gray-200)); } diff --git a/ui/packages/consul-ui/app/components/copyable-code/index.scss b/ui/packages/consul-ui/app/components/copyable-code/index.scss index a0eb5f3a6bfbd..7fcf82119378c 100644 --- a/ui/packages/consul-ui/app/components/copyable-code/index.scss +++ b/ui/packages/consul-ui/app/components/copyable-code/index.scss @@ -8,7 +8,7 @@ padding-bottom: 3px; border: var(--decor-border-100); - border-color: var(--token-color-surface-interactive-active); + border-color: rgb(var(--tone-gray-200)); border-radius: var(--decor-radius-200); } &.obfuscated { @@ -22,7 +22,7 @@ height: 100%; display: block; content: ''; - background-color: var(--token-color-surface-strong); + background-color: rgb(var(--tone-gray-050)); } .copy-button { position: absolute; @@ -45,12 +45,12 @@ button[aria-expanded]::before { content: ''; --icon-size: icon-000; - --icon-color: var(--token-color-foreground-faint); + --icon-color: rgb(var(--tone-gray-500)); } - button[aria-expanded='true']::before { + button[aria-expanded=true]::before { --icon-name: icon-eye-off; } - button[aria-expanded='false']::before { + button[aria-expanded=false]::before { --icon-name: icon-eye; } pre { @@ -67,7 +67,7 @@ margin: 0; margin-top: 8px; margin-bottom: 13px; - border: 3px dashed var(--token-color-palette-neutral-300); - background-color: var(--token-color-surface-primary); + border: 3px dashed rgb(var(--tone-gray-300)); + background-color: rgb(var(--tone-gray-000)); } } diff --git a/ui/packages/consul-ui/app/components/delete-confirmation/index.hbs b/ui/packages/consul-ui/app/components/delete-confirmation/index.hbs index 35b2de1719c62..df07485948b70 100644 --- a/ui/packages/consul-ui/app/components/delete-confirmation/index.hbs +++ b/ui/packages/consul-ui/app/components/delete-confirmation/index.hbs @@ -1,16 +1,7 @@

    {{message}}

    - - - - \ No newline at end of file + + diff --git a/ui/packages/consul-ui/app/components/disclosure-menu/README.mdx b/ui/packages/consul-ui/app/components/disclosure-menu/README.mdx index dc8d9b3e2b134..9817282a8b84d 100644 --- a/ui/packages/consul-ui/app/components/disclosure-menu/README.mdx +++ b/ui/packages/consul-ui/app/components/disclosure-menu/README.mdx @@ -44,7 +44,7 @@ common usecase of having a floating menu. diff --git a/ui/packages/consul-ui/app/components/empty-state/README.mdx b/ui/packages/consul-ui/app/components/empty-state/README.mdx index ac684fdf99913..2e3d9e466dcaf 100644 --- a/ui/packages/consul-ui/app/components/empty-state/README.mdx +++ b/ui/packages/consul-ui/app/components/empty-state/README.mdx @@ -44,23 +44,23 @@ function.

    -
  • - +
  • -
  • - +
  • diff --git a/ui/packages/consul-ui/app/components/empty-state/index.hbs b/ui/packages/consul-ui/app/components/empty-state/index.hbs index 781f516eb0aa1..fcbeeaa4f10bf 100644 --- a/ui/packages/consul-ui/app/components/empty-state/index.hbs +++ b/ui/packages/consul-ui/app/components/empty-state/index.hbs @@ -17,9 +17,7 @@
    {{yield}} {{#if login}} - @@ -27,7 +25,12 @@ @src={{uri 'settings://consul:token'}} @onchange={{action (mut token) value="data"}} /> - + {{#if token.AccessorID}} + Log in with a different token + {{else}} + Log in + {{/if}} + {{/if}}
    {{/yield-slot}} diff --git a/ui/packages/consul-ui/app/components/empty-state/index.scss b/ui/packages/consul-ui/app/components/empty-state/index.scss index 7322580d694ce..72b821403cf29 100644 --- a/ui/packages/consul-ui/app/components/empty-state/index.scss +++ b/ui/packages/consul-ui/app/components/empty-state/index.scss @@ -16,3 +16,6 @@ %empty-state > ul > li > label > button { @extend %empty-state-anchor; } +%empty-state div > button { + @extend %primary-button; +} diff --git a/ui/packages/consul-ui/app/components/empty-state/skin.scss b/ui/packages/consul-ui/app/components/empty-state/skin.scss index 20583b4226464..22d9fcae4c285 100644 --- a/ui/packages/consul-ui/app/components/empty-state/skin.scss +++ b/ui/packages/consul-ui/app/components/empty-state/skin.scss @@ -1,6 +1,6 @@ %empty-state { - color: var(--token-color-foreground-faint); - background-color: var(--token-color-surface-faint); + color: rgb(var(--tone-gray-500)); + background-color: rgb(var(--tone-gray-010)); } %empty-state-header { border-bottom: none; diff --git a/ui/packages/consul-ui/app/components/error-state/index.hbs b/ui/packages/consul-ui/app/components/error-state/index.hbs index 0496c67403b12..d05bb30b6fbc3 100644 --- a/ui/packages/consul-ui/app/components/error-state/index.hbs +++ b/ui/packages/consul-ui/app/components/error-state/index.hbs @@ -27,25 +27,21 @@

    -
  • - + + @href={{href-to 'index'}} + > + Go back +
  • -
  • - + + @external={{true}} + > + Read the documentation +
  • @@ -72,23 +68,21 @@

    -
  • - + + @external={{true}} + > + Read the documentation +
  • -
  • - + + @external={{true}} + > + Follow the guide +
  • diff --git a/ui/packages/consul-ui/app/components/expanded-single-select/skin.scss b/ui/packages/consul-ui/app/components/expanded-single-select/skin.scss index d6a33d0d53684..76c2f471964eb 100644 --- a/ui/packages/consul-ui/app/components/expanded-single-select/skin.scss +++ b/ui/packages/consul-ui/app/components/expanded-single-select/skin.scss @@ -1,6 +1,6 @@ %expanded-single-select { border: var(--decor-border-100); - border-color: var(--token-color-palette-neutral-300); + border-color: rgb(var(--tone-gray-300)); border-radius: var(--decor-radius-100); } %expanded-single-select label { @@ -9,10 +9,10 @@ %expanded-single-select input[type='radio']:checked + *, %expanded-single-select input[type='radio']:hover + *, %expanded-single-select input[type='radio']:focus + * { - box-shadow: var(--token-elevation-high-box-shadow); + box-shadow: var(--decor-elevation-300); } %expanded-single-select input[type='radio']:checked + *, %expanded-single-select input[type='radio']:hover + *, %expanded-single-select input[type='radio']:focus + * { - background-color: var(--token-color-surface-primary); + background-color: rgb(var(--tone-gray-000)); } diff --git a/ui/packages/consul-ui/app/components/filter-bar/skin.scss b/ui/packages/consul-ui/app/components/filter-bar/skin.scss index ce5a1e93af7de..ba9429903c051 100644 --- a/ui/packages/consul-ui/app/components/filter-bar/skin.scss +++ b/ui/packages/consul-ui/app/components/filter-bar/skin.scss @@ -1,14 +1,14 @@ .filter-bar { & { - background-color: var(--token-color-foreground-high-contrast); + background-color: rgb(var(--tone-gray-010)); border-bottom: var(--decor-border-100); - border-color: var(--token-color-surface-interactive-active); + border-color: rgb(var(--tone-gray-200)); } .filters, .sort { .popover-menu > [type='checkbox']:checked + label button { - color: var(--token-color-foreground-action); - background-color: var(--token-color-foreground-high-contrast); + color: rgb(var(--tone-blue-500)); + background-color: rgb(var(--tone-gray-100)); } } } diff --git a/ui/packages/consul-ui/app/components/form-elements/index.scss b/ui/packages/consul-ui/app/components/form-elements/index.scss index a1bf39ab08d93..3ace8435f55c4 100644 --- a/ui/packages/consul-ui/app/components/form-elements/index.scss +++ b/ui/packages/consul-ui/app/components/form-elements/index.scss @@ -1,7 +1,6 @@ @import './skin'; @import './layout'; -%form h2, -.modal-dialog-body h2 { +%form h2 { @extend %h200; } /* TODO: This is positioning the element */ @@ -42,7 +41,9 @@ label span { @extend %form-element-error; } // TODO: float right here is too specific, this is currently used just for the role/policy selectors -.type-dialog { +label.type-dialog { + @extend %anchor; + cursor: pointer; float: right; } .type-toggle { @@ -68,11 +69,6 @@ span.label { %main-content .type-text { @extend %form-element; } -%main-content .type-select > span, -%main-content .type-password > span, -%main-content label.type-text > span { - line-height: 2.2em; -} %app-view-content form:not(.filter-bar) [role='radiogroup'], %modal-window [role='radiogroup'] { @extend %radio-group; diff --git a/ui/packages/consul-ui/app/components/form-elements/skin.scss b/ui/packages/consul-ui/app/components/form-elements/skin.scss index 1c2dcff297bc8..8528e121d8864 100644 --- a/ui/packages/consul-ui/app/components/form-elements/skin.scss +++ b/ui/packages/consul-ui/app/components/form-elements/skin.scss @@ -1,7 +1,7 @@ %form-element-text-input { -moz-appearance: none; -webkit-appearance: none; - box-shadow: var(--token-surface-inset-box-shadow); + box-shadow: inset var(--decor-elevation-100); border-radius: var(--decor-radius-100); border: var(--decor-border-100); outline: none; @@ -14,22 +14,22 @@ textarea:disabled + .CodeMirror, %form fieldset > p, %form-element-note, %form-element-text-input::placeholder { - color: var(--token-color-foreground-disabled); + color: rgb(var(--tone-gray-400)); } %form-element-error > input, %form-element-error > textarea { - border-color: var(--decor-error, var(--token-color-foreground-critical)) !important; + border-color: var(--decor-error-500, rgb(var(--tone-red-500))) !important; } %form-element-text-input { - color: var(--token-color-foreground-faint); - border-color: var(--token-color-palette-neutral-300); + color: rgb(var(--tone-gray-500)); + border-color: rgb(var(--tone-gray-300)); } %form-element-text-input-hover { - border-color: var(--token-color-foreground-faint); + border-color: rgb(var(--tone-gray-500)); } %form-element-text-input-focus { - border-color: var(--typo-action, var(--token-color-foreground-action)); + border-color: var(--typo-action-500, rgb(var(--tone-blue-500))); } %form-element-label { - color: var(--typo-contrast, inherit); + color: var(--typo-contrast-999, inherit); } diff --git a/ui/packages/consul-ui/app/components/freetext-filter/skin.scss b/ui/packages/consul-ui/app/components/freetext-filter/skin.scss index e78a30837a895..c26ea34d9c6ac 100644 --- a/ui/packages/consul-ui/app/components/freetext-filter/skin.scss +++ b/ui/packages/consul-ui/app/components/freetext-filter/skin.scss @@ -3,13 +3,13 @@ border: var(--decor-border-100); border-radius: var(--decor-radius-100); - background-color: var(--token-color-surface-primary); - border-color: var(--token-color-surface-interactive-active); - color: var(--token-color-foreground-disabled); + background-color: rgb(var(--tone-gray-000)); + border-color: rgb(var(--tone-gray-200)); + color: rgb(var(--tone-gray-400)); } &:hover, &:hover * { - border-color: var(--token-color-foreground-disabled); + border-color: rgb(var(--tone-gray-400)); } & *, &_input::placeholder { @@ -35,14 +35,14 @@ margin-top: -8px; } .popover-menu { - background-color: var(--token-color-surface-strong); - color: var(--token-color-foreground-primary); + background-color: rgb(var(--tone-gray-050)); + color: rgb(var(--tone-gray-800)); } .popover-menu { border-left: 1px solid; border-color: inherit; } .popover-menu > [type='checkbox']:checked + label button { - background-color: var(--token-color-surface-interactive-active); + background-color: rgb(var(--tone-gray-200)); } } diff --git a/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss b/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss index 78e376ae6d696..fe989b06ca07c 100644 --- a/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss +++ b/ui/packages/consul-ui/app/components/hashicorp-consul/index.scss @@ -5,10 +5,8 @@ .dcs-message { padding: 8px 12px; - border-bottom: 1px solid var(--token-color-foreground-disabled); + border-bottom: 1px solid rgb(var(--tone-gray-400)); max-width: fit-content; - background-color: var(--token-color-hashicorp-brand); - color: var(--token-color-palette-neutral-300); } } nav .dcs li.is-primary span, @@ -16,15 +14,15 @@ @extend %menu-panel-badge; } nav .dcs .dc-name { - color: var(--token-color-foreground-faint); + color: rgb(var(--tone-gray-600)); padding: 3.25px 0px; - font-weight: var(--typo-weight-semibold); + font-weight: var(--typo-weight-semibold) } nav .dcs .dc-name span { @extend %pill-200; margin-left: 1rem; - background-color: var(--token-color-palette-neutral-300); - color: var(--token-color-hashicorp-brand); + background-color: rgb(var(--tone-gray-300)); + color: rgb(var(--tone-gray-999)); } nav li.partitions, nav li.nspaces { @@ -44,7 +42,7 @@ } [role='banner'] a svg { - fill: var(--token-color-consul-brand); + fill: rgb(var(--tone-brand-600)); } .docs-link a::after { @extend %with-docs-mask, %as-pseudo; @@ -57,7 +55,7 @@ } .acls-separator span { @extend %led-icon; - color: var(--token-color-foreground-critical); + color: rgb(var(--tone-red-500)); display: inline-block; position: relative; top: 2px; diff --git a/ui/packages/consul-ui/app/components/horizontal-kv-list/README.mdx b/ui/packages/consul-ui/app/components/horizontal-kv-list/README.mdx index 1def2a4b51d76..2cf875988d0b4 100644 --- a/ui/packages/consul-ui/app/components/horizontal-kv-list/README.mdx +++ b/ui/packages/consul-ui/app/components/horizontal-kv-list/README.mdx @@ -202,11 +202,11 @@ dl { } .lock-delay::before { @extend %with-delay-mask, %as-pseudo; - color: var(--token-color-foreground-faint); + color: rgb(var(--tone-gray-700)); } .ttl::before { @extend %with-history-mask, %as-pseudo; - color: var(--token-color-foreground-action); + color: rgb(var(--tone-blue-500)); } .service-identity { @extend %badge; diff --git a/ui/packages/consul-ui/app/components/horizontal-kv-list/debug.scss b/ui/packages/consul-ui/app/components/horizontal-kv-list/debug.scss index 01c1650e326af..22efa4535dce7 100644 --- a/ui/packages/consul-ui/app/components/horizontal-kv-list/debug.scss +++ b/ui/packages/consul-ui/app/components/horizontal-kv-list/debug.scss @@ -1,14 +1,14 @@ -[id^='docfy-demo-preview-horizontal-kv-list'] { +[id^=docfy-demo-preview-horizontal-kv-list] { dl { @extend %horizontal-kv-list; } .lock-delay::before { @extend %with-delay-mask, %as-pseudo; - color: var(--token-color-foreground-faint); + color: rgb(var(--tone-gray-700)); } .ttl::before { @extend %with-history-mask, %as-pseudo; - color: var(--token-color-foreground-action); + color: rgb(var(--tone-blue-500)); } .service-identity { @extend %badge; diff --git a/ui/packages/consul-ui/app/components/icon-definition/index.scss b/ui/packages/consul-ui/app/components/icon-definition/index.scss index 4d3a5d3b5386b..262412ef229d2 100644 --- a/ui/packages/consul-ui/app/components/icon-definition/index.scss +++ b/ui/packages/consul-ui/app/components/icon-definition/index.scss @@ -8,32 +8,32 @@ %icon-definition.passing dt::before, %composite-row-header .passing dd::before { @extend %with-check-circle-fill-mask, %as-pseudo; - color: var(--token-color-foreground-success); + color: rgb(var(--tone-green-500)); } %icon-definition.warning dt::before, %composite-row-header .warning dd::before { @extend %with-alert-triangle-mask, %as-pseudo; - color: var(--token-color-foreground-warning); + color: rgb(var(--tone-orange-500)); } %icon-definition.critical dt::before, %composite-row-header .critical dd::before { @extend %with-cancel-square-fill-mask, %as-pseudo; - color: var(--token-color-foreground-critical); + color: rgb(var(--tone-red-500)); } %icon-definition.empty dt::before, %composite-row-header .empty dd::before { @extend %with-minus-square-fill-mask, %as-pseudo; - color: var(--token-color-foreground-faint); + color: rgb(var(--tone-gray-500)); } %icon-definition.unknown dt::before, %composite-row-header .unknown dd::before { @extend %with-help-circle-outline-mask, %as-pseudo; - color: var(--token-color-foreground-faint); + color: rgb(var(--tone-gray-500)); } %composite-row-header [rel='me'] dd::before { @extend %with-check-circle-fill-mask, %as-pseudo; - color: var(--token-color-foreground-action); + color: rgb(var(--tone-blue-500)); } %icon-definition.node dt::before { diff --git a/ui/packages/consul-ui/app/components/informed-action/skin.scss b/ui/packages/consul-ui/app/components/informed-action/skin.scss index b9dc0875d7706..25b7fba8d8e73 100644 --- a/ui/packages/consul-ui/app/components/informed-action/skin.scss +++ b/ui/packages/consul-ui/app/components/informed-action/skin.scss @@ -2,8 +2,8 @@ & { border-radius: var(--decor-radius-200); border: var(--decor-border-100); - border-color: var(--token-color-palette-neutral-300); - background-color: var(--token-color-surface-primary); + border-color: rgb(var(--tone-gray-300)); + background-color: rgb(var(--tone-gray-000)); } > div { border-top-left-radius: var(--decor-radius-200); @@ -18,57 +18,57 @@ } p { @extend %p2; - color: var(--token-color-hashicorp-brand); + color: rgb(var(--tone-gray-999)); } > ul { list-style: none; } > ul > li > *:hover, > ul > li > *:focus { - background-color: var(--token-color-surface-strong); + background-color: rgb(var(--tone-gray-100)); } /* variants */ &.info { header { - color: var(--token-color-foreground-action-active); + color: rgb(var(--tone-blue-700)); } header::before { @extend %with-info-circle-fill-mask, %as-pseudo; - background-color: var(--token-color-foreground-action); + background-color: rgb(var(--tone-blue-500)); margin-right: 5px; } > div { - background-color: var(--token-color-surface-action); + background-color: rgb(var(--tone-blue-010)); } } &.dangerous { header { - color: var(--token-color-palette-red-400); + color: rgb(var(--tone-red-700)); } header::before { @extend %with-alert-triangle-mask, %as-pseudo; - background-color: var(--token-color-foreground-critical); + background-color: rgb(var(--tone-red-500)); } > div { - background-color: var(--token-color-surface-critical); + background-color: rgb(var(--tone-red-010)); } } &.warning { header { - color: var(--token-color-foreground-warning-on-surface); + color: rgb(var(--tone-orange-700)); } header::before { @extend %with-alert-triangle-mask, %as-pseudo; - background-color: var(--token-color-vault-brand); + background-color: rgb(var(--tone-yellow-500)); margin-right: 5px; } > div { - background-color: var(--token-color-vault-gradient-faint-start); + background-color: rgb(var(--tone-yellow-050)); } } /**/ > ul > .action > * { - color: var(--token-color-foreground-action); + color: rgb(var(--tone-blue-500)); } > ul > .dangerous > * { @extend %frame-red-300; diff --git a/ui/packages/consul-ui/app/components/inline-alert/skin.scss b/ui/packages/consul-ui/app/components/inline-alert/skin.scss index 40bd166503445..a2bf0d9826e63 100644 --- a/ui/packages/consul-ui/app/components/inline-alert/skin.scss +++ b/ui/packages/consul-ui/app/components/inline-alert/skin.scss @@ -12,7 +12,7 @@ color: inherit; } %inline-alert-error { - color: var(--token-color-foreground-critical); + color: rgb(var(--color-failure)); } %inline-alert::before { font-size: 14px; @@ -22,15 +22,15 @@ } %inline-alert-success::before { @extend %with-check-circle-fill-mask; - color: var(--token-color-foreground-success); + color: rgb(var(--tone-green-500)); } %inline-alert-error::before { @extend %with-cancel-square-fill-mask; - color: var(--token-color-foreground-critical); + color: rgb(var(--tone-red-500)); } %inline-alert-warning::before { @extend %with-alert-triangle-mask; - color: var(--token-color-foreground-warning); + color: rgb(var(--tone-orange-500)); /* the warning triangle always looks */ /* too low just because its a triangle */ /* this tweak make it look better */ @@ -38,5 +38,5 @@ } %inline-alert-info::before { @extend %with-info-circle-fill-mask; - color: var(--token-color-foreground-action); + color: rgb(var(--tone-blue-500)); } diff --git a/ui/packages/consul-ui/app/components/inline-code/skin.scss b/ui/packages/consul-ui/app/components/inline-code/skin.scss index 72da1b3482311..3fb061925aed9 100644 --- a/ui/packages/consul-ui/app/components/inline-code/skin.scss +++ b/ui/packages/consul-ui/app/components/inline-code/skin.scss @@ -1,7 +1,7 @@ %block-code, %inline-code { border: 1px solid; - color: var(--token-color-consul-brand); - background-color: var(--token-color-surface-strong); - border-color: var(--token-color-surface-interactive-active); + color: rgb(var(--tone-brand-600)); + background-color: rgb(var(--tone-gray-050)); + border-color: rgb(var(--tone-gray-200)); } diff --git a/ui/packages/consul-ui/app/components/list-collection/skin.scss b/ui/packages/consul-ui/app/components/list-collection/skin.scss index 5da7bfb15ca68..e6e1632c492bd 100644 --- a/ui/packages/consul-ui/app/components/list-collection/skin.scss +++ b/ui/packages/consul-ui/app/components/list-collection/skin.scss @@ -1,11 +1,11 @@ %list-collection > ul { border-top: 1px solid; - border-color: var(--token-color-surface-interactive-active); + border-color: rgb(var(--tone-gray-200)); } %list-collection-partial-button { cursor: pointer; - background-color: var(--token-color-surface-strong); - color: var(--token-color-foreground-action); + background-color: rgb(var(--tone-gray-050)); + color: rgb(var(--tone-blue-500)); } %list-collection-partial-button::after { @extend %with-chevron-up-mask, %as-pseudo; diff --git a/ui/packages/consul-ui/app/components/list-row/skin.scss b/ui/packages/consul-ui/app/components/list-row/skin.scss index 9f71af4074f26..654e6e8947c41 100644 --- a/ui/packages/consul-ui/app/components/list-row/skin.scss +++ b/ui/packages/consul-ui/app/components/list-row/skin.scss @@ -1,30 +1,31 @@ %list-row { list-style-type: none; border: var(--decor-border-100); - border-top-color: transparent; - border-bottom-color: var(--token-color-surface-interactive-active); - border-right-color: transparent; - border-left-color: transparent; + border-top-color: var(--transparent); + border-bottom-color: rgb(var(--tone-gray-200)); + border-right-color: var(--transparent); + border-left-color: var(--transparent); } %list-row-intent { - border-color: var(--token-color-surface-interactive-active); - box-shadow: var(--token-elevation-high-box-shadow); - border-top-color: transparent; + border-color: rgb(var(--tone-gray-200)); + /*TODO: This should use a shared/CSS prop shadow*/ + box-shadow: 0 2px 4px rgb(var(--black) / 10%); + border-top-color: var(--transparent); cursor: pointer; } %list-row-header { - color: var(--token-color-hashicorp-brand); + color: rgb(var(--tone-gray-999)); } %list-row-header * { color: inherit; } %list-row-detail { - color: var(--token-color-foreground-faint); + color: rgb(var(--tone-gray-500)); } %list-row-detail a { color: inherit; } %list-row-detail a:hover { - color: var(--token-color-foreground-action); + color: rgb(var(--color-action)); text-decoration: underline; } diff --git a/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss b/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss index bfb5178e054d5..2b789d42e34ab 100644 --- a/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss +++ b/ui/packages/consul-ui/app/components/main-header-horizontal/skin.scss @@ -1,3 +1,3 @@ %main-header-horizontal::before { - background-color: var(--token-color-hashicorp-brand); + background-color: rgb(var(--tone-gray-000)); } diff --git a/ui/packages/consul-ui/app/components/main-nav-horizontal/index.scss b/ui/packages/consul-ui/app/components/main-nav-horizontal/index.scss index 6ebed8a7dabb5..bcc7a01b37212 100644 --- a/ui/packages/consul-ui/app/components/main-nav-horizontal/index.scss +++ b/ui/packages/consul-ui/app/components/main-nav-horizontal/index.scss @@ -26,6 +26,6 @@ /**/ /* menu-panels in the main navigation are treated slightly differently */ -%main-nav-horizontal .disclosure-menu button + * { +%main-nav-horizontal label + div { @extend %main-nav-horizontal-menu-panel; } diff --git a/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss b/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss index c8fb07dd6a996..ba9a3027fd3cd 100644 --- a/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss +++ b/ui/packages/consul-ui/app/components/main-nav-horizontal/layout.scss @@ -16,6 +16,8 @@ %main-nav-horizontal-menu-panel { z-index: 400; /* TODO: We should probably make menu-panel default to left hand side*/ + left: 0; + right: auto; top: 28px !important; } %main-nav-horizontal-action { diff --git a/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss b/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss index 8dbf1ce63edf5..ab564cbb0479a 100644 --- a/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss +++ b/ui/packages/consul-ui/app/components/main-nav-horizontal/skin.scss @@ -13,28 +13,18 @@ transform: scaleY(-100%); } -%main-nav-horizontal-menu-panel, -%main-nav-horizontal-menu-panel > ul[role='menu'], -%main-nav-horizontal-menu-panel > ul[role='menu'] > li > [role='menuitem'] { - background-color: var(--token-color-hashicorp-brand); - color: var(--token-color-palette-neutral-300); -} - -%main-nav-horizontal-menu-panel > ul[role='menu'] > li > [role='menuitem']:hover { - background-color: var(--token-color-palette-neutral-600); -} - %main-nav-horizontal-toggle { display: none; } %main-nav-horizontal-toggle-button::before { --icon-name: icon-menu; - --icon-color: var(--token-color-palette-neutral-300); + --icon-color: rgb(var(--tone-gray-800)); content: ''; cursor: pointer; } %main-nav-horizontal-action, %main-nav-horizontal-action-intent, %main-nav-horizontal-action-active { - color: var(--token-color-palette-neutral-300); + color: rgb(var(--tone-gray-600)); } +/**/ diff --git a/ui/packages/consul-ui/app/components/main-nav-vertical/README.mdx b/ui/packages/consul-ui/app/components/main-nav-vertical/README.mdx index a079e76e41273..12039d3bb45ab 100644 --- a/ui/packages/consul-ui/app/components/main-nav-vertical/README.mdx +++ b/ui/packages/consul-ui/app/components/main-nav-vertical/README.mdx @@ -65,7 +65,7 @@ you need to define a different ancestor for a containing block you can use /* a transform is required to mark this element as the containing block */ /* for hoisting, otherwise the viewport is the containing block */ transform: translate(0, 0); - background-color: var(--token-color-foreground-faint); + background-color: rgb(var(--tone-gray-600)); padding-top: 64px; } ``` diff --git a/ui/packages/consul-ui/app/components/main-nav-vertical/debug.scss b/ui/packages/consul-ui/app/components/main-nav-vertical/debug.scss index 8f25d3282249c..8d8a8e3a348dd 100644 --- a/ui/packages/consul-ui/app/components/main-nav-vertical/debug.scss +++ b/ui/packages/consul-ui/app/components/main-nav-vertical/debug.scss @@ -15,7 +15,7 @@ /* a transform is required to mark this element as the containing block */ /* for hoisting, otherwise the viewport is the containing block */ transform: translate(0, 0); - background-color: var(--token-color-foreground-faint); + background-color: rgb(var(--tone-gray-600)); padding-top: 64px; } // TODO: Reduce the need for these debug overrides diff --git a/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss b/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss index 4564ff17a5cee..e1930d8bf72ac 100644 --- a/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss +++ b/ui/packages/consul-ui/app/components/main-nav-vertical/skin.scss @@ -2,7 +2,7 @@ @extend %p1; cursor: pointer; border-right: var(--decor-border-400); - border-color: transparent; + border-color: var(--transparent); } %main-nav-vertical-action > a { color: inherit; @@ -20,31 +20,29 @@ text-decoration: none; } %main-nav-vertical { - background-color: var(--token-color-foreground-strong); - color: var(--token-color-foreground-faint); + background-color: rgb(var(--tone-gray-050)); + color: rgb(var(--tone-gray-700)); } %main-nav-vertical li:not([role='separator']) > span { - color: var(--token-color-palette-neutral-300); + color: rgb(var(--tone-gray-300)); } -%main-nav-vertical [role='separator'], -%main-nav-vertical-hoisted [role='separator'] { - color: var(--token-color-palette-neutral-400); - background-color: var(--token-color-foreground-strong); +%main-nav-vertical [role='separator'] { + color: rgb(var(--tone-gray-600)); } %main-nav-vertical-action { - color: var(--token-color-palette-neutral-300); + color: rgb(var(--tone-gray-800)); } %main-nav-vertical-item, %main-nav-vertical-action-intent, %main-nav-vertical-action-active { - color: var(--token-color-palette-neutral-0); + color: rgb(var(--tone-gray-999)); } %main-nav-vertical-action-active { - background-color: var(--token-color-palette-neutral-500); - border-color: var(--token-color-palette-neutral-0); + background-color: rgb(var(--tone-gray-150)); + border-color: rgb(var(--tone-gray-999)); } %main-nav-vertical [aria-label]::before { - color: var(--token-color-palette-neutral-400); + color: rgb(var(--tone-gray-700)); content: attr(aria-label); display: block; margin-top: -0.5rem; @@ -52,42 +50,18 @@ } %main-nav-vertical-popover-menu-trigger { border: var(--decor-border-100); - border-color: var(--token-color-foreground-faint); + border-color: rgb(var(--tone-gray-500)); border-radius: var(--decor-radius-100); font-weight: inherit; - background-color: var(--token-color-foreground-strong); - color: var(--token-color-palette-neutral-200); -} - -%main-nav-vertical-popover-menu-trigger:hover, -%main-nav-vertical-popover-menu-trigger:focus { - color: var(--token-color-palette-neutral-300); - background-color: var(--token-color-foreground-strong); -} - -%main-nav-vertical ul[role='menu'] li a[role='menuitem'] { - color: var(--token-color-palette-neutral-300); - background-color: var(--token-color-foreground-strong); -} - -%main-nav-vertical ul[role='menu']li a[role='menuitem']:hover { - background-color: var(--token-color-palette-neutral-600); + background-color: rgb(var(--tone-gray-050)); + color: rgb(var(--tone-gray-999)); } - %main-nav-vertical-popover-menu-trigger[aria-expanded='true'] { border-bottom-left-radius: var(--decor-radius-000); border-bottom-right-radius: var(--decor-radius-000); } - -%main-nav-horizontal %panel, -%main-nav-horizontal %panel-separator, -%main-nav-vertical %panel, -%main-nav-vertical %panel-separator { - border-color: var(--token-color-foreground-faint); -} - %main-nav-vertical-popover-menu-trigger::after { @extend %with-chevron-down-mask, %as-pseudo; width: 16px; @@ -101,10 +75,4 @@ border-top-left-radius: var(--decor-radius-000); border-top-right-radius: var(--decor-radius-000); border-top: var(--decor-border-000); - color: var(--token-color-palette-neutral-300); - background-color: var(--token-color-foreground-strong); -} - -%main-nav-vertical-hoisted ul[role='menu'] { - background-color: var(--token-color-hashicorp-brand); } diff --git a/ui/packages/consul-ui/app/components/menu-panel/skin.scss b/ui/packages/consul-ui/app/components/menu-panel/skin.scss index e47b2df0f4bde..e1aa9075131be 100644 --- a/ui/packages/consul-ui/app/components/menu-panel/skin.scss +++ b/ui/packages/consul-ui/app/components/menu-panel/skin.scss @@ -6,7 +6,7 @@ } %menu-panel-header + ul { border-top: var(--decor-border-100); - border-color: var(--token-form--base-border-color-default); + border-color: rgb(var(--tone-border, var(--tone-gray-300))); } /* if the first item is a separator and it */ /* contains text don't add a line */ @@ -17,15 +17,15 @@ @extend %p3; text-transform: uppercase; font-weight: var(--typo-weight-medium); - color: var(--token-color-foreground-faint); + color: rgb(var(--tone-gray-600)); } %menu-panel-item { list-style-type: none; } %menu-panel-badge { @extend %pill; - color: var(--token-color-surface-primary); - background-color: var(--token-color-foreground-faint); + color: rgb(var(--tone-gray-000)); + background-color: rgb(var(--tone-gray-500)); } %menu-panel-body .informed-action { border: 0 !important; diff --git a/ui/packages/consul-ui/app/components/modal-dialog/index.hbs b/ui/packages/consul-ui/app/components/modal-dialog/index.hbs index b7205ad680c2e..6cb2f944f9ef8 100644 --- a/ui/packages/consul-ui/app/components/modal-dialog/index.hbs +++ b/ui/packages/consul-ui/app/components/modal-dialog/index.hbs @@ -20,14 +20,12 @@ role="document" > -
    - - - -
    + {{compute (fn route.t 'documentation.body' + (hash + htmlSafe=true + ) + )}} diff --git a/ui/packages/consul-ui/app/templates/dc/show/serverstatus.hbs b/ui/packages/consul-ui/app/templates/dc/show/serverstatus.hbs index 6e8adf899862c..dd2472ec80ded 100644 --- a/ui/packages/consul-ui/app/templates/dc/show/serverstatus.hbs +++ b/ui/packages/consul-ui/app/templates/dc/show/serverstatus.hbs @@ -87,15 +87,12 @@ as |item|}} >
    + {{compute (fn route.t 'tolerance.link' (hash + htmlSafe=true + ))}}

    {{compute (fn route.t 'tolerance.header')}}

    -
    - - Local Storage - These settings are immediately saved to local storage and persisted through browser usage. - + + +

    Local Storage

    +
    + +

    + These settings are immediately saved to local storage and persisted through browser usage. +

    +
    +
    {{#if (not (env 'CONSUL_UI_DISABLE_REALTIME'))}} diff --git a/ui/packages/consul-ui/mock-api/v1/internal/ui/exported-services b/ui/packages/consul-ui/mock-api/v1/internal/ui/exported-services index 8bfe712541b40..f138a28d9f636 100644 --- a/ui/packages/consul-ui/mock-api/v1/internal/ui/exported-services +++ b/ui/packages/consul-ui/mock-api/v1/internal/ui/exported-services @@ -3,7 +3,7 @@ ${[0].map( () => { let prevKind; let name; - const gateways = ['mesh-gateway', 'ingress-gateway', 'terminating-gateway']; + const gateways = ['mesh-gateway', 'ingress-gateway', 'terminating-gateway', 'api-gateway']; return ` [ ${ diff --git a/ui/packages/consul-ui/mock-api/v1/internal/ui/services b/ui/packages/consul-ui/mock-api/v1/internal/ui/services index f44e59d179c57..e29f7feefb7cb 100644 --- a/ui/packages/consul-ui/mock-api/v1/internal/ui/services +++ b/ui/packages/consul-ui/mock-api/v1/internal/ui/services @@ -2,7 +2,7 @@ ${[0].map( () => { let prevKind; let name; - const gateways = ['mesh-gateway', 'ingress-gateway', 'terminating-gateway']; + const gateways = ['mesh-gateway', 'ingress-gateway', 'terminating-gateway', 'api-gateway']; return ` [ ${ diff --git a/ui/packages/consul-ui/package.json b/ui/packages/consul-ui/package.json index 5786593c178f3..445d12235dfc2 100644 --- a/ui/packages/consul-ui/package.json +++ b/ui/packages/consul-ui/package.json @@ -67,10 +67,10 @@ "@ember/test-helpers": "^2.2.5", "@glimmer/component": "^1.0.4", "@glimmer/tracking": "^1.0.4", - "@hashicorp/design-system-components": "^1.6.0", + "@hashicorp/design-system-components": "^1.0.4", "@hashicorp/design-system-tokens": "^1.0.0", "@hashicorp/ember-cli-api-double": "^4.0.0", - "@hashicorp/ember-flight-icons": "^3.0.2", + "@hashicorp/ember-flight-icons": "^3.0.0", "@html-next/vertical-collection": "^4.0.0", "@lit/reactive-element": "^1.2.1", "@xstate/fsm": "^1.4.0", diff --git a/ui/packages/consul-ui/tests/acceptance/dc/intentions/delete.feature b/ui/packages/consul-ui/tests/acceptance/dc/intentions/delete.feature index 84b2e295af820..85424e943ccd0 100644 --- a/ui/packages/consul-ui/tests/acceptance/dc/intentions/delete.feature +++ b/ui/packages/consul-ui/tests/acceptance/dc/intentions/delete.feature @@ -21,7 +21,7 @@ Feature: dc / intentions / deleting: Deleting items with confirmations, success --- And I click actions on the intentionList.intentions And I click delete on the intentionList.intentions - And I click confirmInlineDelete on the intentionList.intentions + And I click confirmDelete on the intentionList.intentions Then a DELETE request was made to "/v1/connect/intentions/exact?source=default%2Fdefault%2Fname&destination=default%2Fdefault%2Fdestination&dc=datacenter" And "[data-notification]" has the "notification-delete" class And "[data-notification]" has the "success" class diff --git a/ui/packages/consul-ui/tests/acceptance/dc/kvs/delete.feature b/ui/packages/consul-ui/tests/acceptance/dc/kvs/delete.feature index 203daa90d0945..d22bfad39e26b 100644 --- a/ui/packages/consul-ui/tests/acceptance/dc/kvs/delete.feature +++ b/ui/packages/consul-ui/tests/acceptance/dc/kvs/delete.feature @@ -13,7 +13,7 @@ Feature: dc / kvs / deleting: Deleting items with confirmations, success and err --- And I click actions on the kvs And I click delete on the kvs - And I click confirmInlineDelete on the kvs + And I click confirmDelete on the kvs Then a DELETE request was made to "/v1/kv/key-name?dc=datacenter&ns=@!namespace" And "[data-notification]" has the "notification-delete" class And "[data-notification]" has the "success" class diff --git a/ui/packages/consul-ui/tests/acceptance/dc/services/index.feature b/ui/packages/consul-ui/tests/acceptance/dc/services/index.feature index ecfbc803230af..df0ebc2dde39d 100644 --- a/ui/packages/consul-ui/tests/acceptance/dc/services/index.feature +++ b/ui/packages/consul-ui/tests/acceptance/dc/services/index.feature @@ -71,7 +71,7 @@ Feature: dc / services / index: List Services --- Scenario: Viewing the service list page with gateways Given 1 datacenter model with the value "dc-1" - And 3 service models from yaml + And 4 service models from yaml --- - Name: Service-0-proxy Kind: 'connect-proxy' @@ -88,6 +88,11 @@ Feature: dc / services / index: List Services ChecksPassing: 0 ChecksWarning: 0 ChecksCritical: 1 + - Name: Service-3-api-gateway + Kind: 'api-gateway' + ChecksPassing: 0 + ChecksWarning: 0 + ChecksCritical: 1 --- When I visit the services page for yaml @@ -96,11 +101,12 @@ Feature: dc / services / index: List Services --- Then the url should be /dc-1/services And the title should be "Services - Consul" - Then I see 2 service models + Then I see 3 service models And I see kind on the services like yaml --- - ingress-gateway - terminating-gateway + - api-gateway --- Scenario: View a Service in mesh Given 1 datacenter model with the value "dc-1" diff --git a/ui/packages/consul-ui/tests/acceptance/dc/services/show/intentions/index.feature b/ui/packages/consul-ui/tests/acceptance/dc/services/show/intentions/index.feature index 25a58b1a7bfbc..0148fa6f9d2e5 100644 --- a/ui/packages/consul-ui/tests/acceptance/dc/services/show/intentions/index.feature +++ b/ui/packages/consul-ui/tests/acceptance/dc/services/show/intentions/index.feature @@ -48,7 +48,7 @@ Feature: dc / services / show / intentions / index: Intentions per service Scenario: I can delete intentions And I click actions on the intentionList.intentions component And I click delete on the intentionList.intentions component - And I click confirmInlineDelete on the intentionList.intentions + And I click confirmDelete on the intentionList.intentions Then a DELETE request was made to "/v1/connect/intentions/exact?source=default%2Fdefault%2Fname&destination=default%2Fdefault%2Fdestination&dc=dc1" And "[data-notification]" has the "notification-delete" class And "[data-notification]" has the "success" class diff --git a/ui/packages/consul-ui/tests/acceptance/dc/services/show/services.feature b/ui/packages/consul-ui/tests/acceptance/dc/services/show/services.feature index 3b19a69959344..b6819558d845e 100644 --- a/ui/packages/consul-ui/tests/acceptance/dc/services/show/services.feature +++ b/ui/packages/consul-ui/tests/acceptance/dc/services/show/services.feature @@ -50,6 +50,7 @@ Feature: dc / services / show / services | Name | Kind | | service | ~ | | ingress-gateway | ingress-gateway | + | api-gateway | api-gateway | | mesh-gateway | mesh-gateway | --------------------------------------------- diff --git a/ui/packages/consul-ui/tests/integration/components/delete-confirmation-test.js b/ui/packages/consul-ui/tests/integration/components/delete-confirmation-test.js index 8d779bd2c70dc..a040c0fe459fe 100644 --- a/ui/packages/consul-ui/tests/integration/components/delete-confirmation-test.js +++ b/ui/packages/consul-ui/tests/integration/components/delete-confirmation-test.js @@ -12,13 +12,13 @@ module('Integration | Component | delete confirmation', function (hooks) { await render(hbs`{{delete-confirmation}}`); - assert.dom('[data-test-delete]').exists({ count: 1 }); + assert.dom('.type-delete').exists({ count: 1 }); // Template block usage: await render(hbs` {{#delete-confirmation}}{{/delete-confirmation}} `); - assert.dom('[data-test-delete]').exists({ count: 1 }); + assert.dom('.type-delete').exists({ count: 1 }); }); }); diff --git a/ui/packages/consul-ui/tests/lib/page-object/createDeletable.js b/ui/packages/consul-ui/tests/lib/page-object/createDeletable.js index ded4e2cf980ca..c5a24b0726b6e 100644 --- a/ui/packages/consul-ui/tests/lib/page-object/createDeletable.js +++ b/ui/packages/consul-ui/tests/lib/page-object/createDeletable.js @@ -7,8 +7,7 @@ export default function (clickable) { ...obj, ...{ delete: clickable(scope + '[data-test-delete]'), - confirmDelete: clickable(scope + '[data-test-delete]'), - confirmInlineDelete: clickable(scope + 'button.type-delete'), + confirmDelete: clickable(scope + 'button.type-delete'), }, }; }; diff --git a/ui/packages/consul-ui/tests/pages/dc/acls/edit.js b/ui/packages/consul-ui/tests/pages/dc/acls/edit.js index 7c670458d46ae..4880b9ffef4fa 100644 --- a/ui/packages/consul-ui/tests/pages/dc/acls/edit.js +++ b/ui/packages/consul-ui/tests/pages/dc/acls/edit.js @@ -4,7 +4,7 @@ export default function (visitable, submitable, deletable, cancelable, clickable deletable({ visit: visitable(['/:dc/acls/:acl', '/:dc/acls/create']), use: clickable('[data-test-use]'), - confirmUse: clickable('[data-test-confirm-use]'), + confirmUse: clickable('button.type-delete'), }) ), 'main' diff --git a/ui/packages/consul-ui/tests/pages/dc/acls/tokens/edit.js b/ui/packages/consul-ui/tests/pages/dc/acls/tokens/edit.js index 897aa9ea330dc..91f19b41d5749 100644 --- a/ui/packages/consul-ui/tests/pages/dc/acls/tokens/edit.js +++ b/ui/packages/consul-ui/tests/pages/dc/acls/tokens/edit.js @@ -13,7 +13,7 @@ export default function ( ...cancelable({}, 'main form > div'), ...deletable({}, 'main form > div'), use: clickable('[data-test-use]'), - confirmUse: clickable('[data-test-confirm-use]'), + confirmUse: clickable('button.type-delete'), clone: clickable('[data-test-clone]'), policies: policySelector(), roles: roleSelector(), diff --git a/ui/packages/consul-ui/translations/common/en-us.yaml b/ui/packages/consul-ui/translations/common/en-us.yaml index 5c584540eda67..18180f2073a14 100644 --- a/ui/packages/consul-ui/translations/common/en-us.yaml +++ b/ui/packages/consul-ui/translations/common/en-us.yaml @@ -32,6 +32,7 @@ consul: ingress-gateway: Ingress Gateway terminating-gateway: Terminating Gateway mesh-gateway: Mesh Gateway + api-gateway: API Gateway status: Health Status service.meta: Service Meta node.meta: Node Meta diff --git a/ui/packages/consul-ui/translations/routes/en-us.yaml b/ui/packages/consul-ui/translations/routes/en-us.yaml index fd2d797c92f9c..f9cd5ad10df15 100644 --- a/ui/packages/consul-ui/translations/routes/en-us.yaml +++ b/ui/packages/consul-ui/translations/routes/en-us.yaml @@ -5,8 +5,8 @@ dc: title: Server status unassigned: Unassigned Zones tolerance: - link-text: Learn how to improve fault tolerance - link: /architecture/improving-consul-resilience#strategies-to-increase-fault-tolerance + link: | + Learn how to improve fault tolerance header: Server fault tolerance immediate: header: Immediate @@ -34,16 +34,25 @@ dc:

    documentation: title: Learn More - links: - license-expiration: - text: License expiration - link: '/enterprise/license/faq#q-is-there-a-grace-period-when-licenses-expire' - renewing-license: - text: Renewing a license - link: '/enterprise/license/faq#q-how-can-i-renew-a-license' - applying-new-license: - text: Applying a new license - link: '/tutorials/nomad/hashicorp-enterprise-license?in=consul/enterprise' + body: | + + nodes: index: agentless: @@ -245,14 +254,21 @@ dc:

    critical-serf-notice: header: Failing serf check - body: This instance has a failing serf node check. The health statuses shown on this page are the statuses as they were known before the node became unreachable. + body: | +

    + This instance has a failing serf node check. The health statuses shown on this page are the statuses as they were known before the node became unreachable. +

    upstreams: tproxy-mode: header: Transparent proxy mode - body: The upstreams listed on this page have been defined in a proxy registration. There may be more upstreams, though, as "transparent" mode is enabled on this proxy. - footer: - link: "/connect/transparent-proxy" - text: Read the documentation + body: | +

    + The upstreams listed on this page have been defined in a proxy registration. There may be more upstreams, though, as "transparent" mode is enabled on this proxy. +

    + footer: | +

    + Read the documentation +

    empty: |

    This Service Instance has no Upstreams{items, select, @@ -272,39 +288,45 @@ dc: default-allow: header: Restrict which services can connect body: Your current ACL settings allow all services to connect to each other. Either create a deny intention between all services, or set your default ACL policy to deny to improve your security posture and make this topology view reflect the actual upstreams and downstreams of this service. - footer: - link-text: Create a wildcard deny Intention - icon: plus + footer: | +

    + Create a wildcard deny Intention +

    wildcard-intention: header: Restrict which services can connect body: There is currently a wildcard Intention that allows all services to connect to each other. Change the action of that Intention to deny to improve your security posture and have this topology view reflect the actual upstreams and downstreams of this service. - footer: - link-text: Edit wildcard intentions - icon: edit + footer: | +

    + Edit wildcard intentions +

    not-defined-intention: header: Add upstream to allow traffic body: An Intention was defined that allows traffic between services, but those services are unable to communicate. Define an explicit upstream in the service definition or enable transparent proxy to fix this. - footer: - link: '{CONSUL_DOCS_URL}/connect/registration/service-registration#upstreams' - link-text: Learn how to add upstreams + footer: | +

    + Learn how to add upstreams +

    no-dependencies: header: No dependencies body: The service you are viewing currently has no dependencies. You will only see metrics for the current service until dependencies are added. - footer: - link: '{CONSUL_DOCS_URL}/connect/registration/service-registration#upstream-configuration-reference' - link-text: Read the documentation + footer: | +

    + Read the documentation +

    acls-disabled: header: Restrict which services can connect body: Your current ACL settings allow all services to connect to each other. Either create a deny intention between all services, or enable ACLs and set your default ACL policy to deny to improve your security posture and make this topology view reflect the actual upstreams and downstreams of this service. - footer: - link: '{ CONSUL_DOCS_URL }/security/acl/acl-system#configuring-acls' - link-text: Read the documentation + footer: | +

    + Read the documentation +

    no-intentions: header: Add Intention to allow traffic body: There is an upstream registered for this service, but that upstream cannot receive traffic without creating an allow intention. - footer: - link-text: Edit Intentions - icon: edit + footer: | +

    + Edit Intentions +

    intentions: index: empty: diff --git a/ui/yarn.lock b/ui/yarn.lock index dd29b32ed1e26..6eee746a73ea1 100644 --- a/ui/yarn.lock +++ b/ui/yarn.lock @@ -3044,15 +3044,6 @@ ember-cli-version-checker "^5.1.2" semver "^7.3.5" -"@embroider/addon-shim@^1.0.0": - version "1.8.4" - resolved "https://registry.yarnpkg.com/@embroider/addon-shim/-/addon-shim-1.8.4.tgz#0e7f32c5506bf0f3eb0840506e31c36c7053763c" - integrity sha512-sFhfWC0vI18KxVenmswQ/ShIvBg4juL8ubI+Q3NTSdkCTeaPQ/DIOUF6oR5DCQ8eO/TkIaw+kdG3FkTY6yNJqA== - dependencies: - "@embroider/shared-internals" "^2.0.0" - broccoli-funnel "^3.0.8" - semver "^7.3.8" - "@embroider/addon-shim@^1.5.0": version "1.8.3" resolved "https://registry.yarnpkg.com/@embroider/addon-shim/-/addon-shim-1.8.3.tgz#2368510b8ce42d50d02cb3289c32e260dfa34bd9" @@ -3273,20 +3264,6 @@ semver "^7.3.5" typescript-memoize "^1.0.1" -"@embroider/shared-internals@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@embroider/shared-internals/-/shared-internals-2.0.0.tgz#d8205ec6944362aeecfbb51143db352430ced316" - integrity sha512-qZ2/xky9mWm5YC6noOa6AiAwgISEQ78YTZNv4SNu2PFgEK/H+Ha/3ddngzGSsnXkVnIHZyxIBzhxETonQYHY9g== - dependencies: - babel-import-util "^1.1.0" - ember-rfc176-data "^0.3.17" - fs-extra "^9.1.0" - js-string-escape "^1.0.1" - lodash "^4.17.21" - resolve-package-path "^4.0.1" - semver "^7.3.5" - typescript-memoize "^1.0.1" - "@embroider/util@^0.39.1 || ^0.40.0 || ^0.41.0": version "0.41.0" resolved "https://registry.yarnpkg.com/@embroider/util/-/util-0.41.0.tgz#5324cb4742aa4ed8d613c4f88a466f73e4e6acc1" @@ -3539,25 +3516,19 @@ faker "^4.1.0" js-yaml "^3.13.1" -"@hashicorp/design-system-components@^1.6.0": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@hashicorp/design-system-components/-/design-system-components-1.6.1.tgz#da04f1199cdce78dcf6591c3678377b87bd67424" - integrity sha512-nfuY5KLK3kQWRfrFOIEEoSSca6LwZ9Zss13glHHyAIFt/gJ1pjSpcYj2XTukdjfAvx70qwQbHPPaAUXZ00vtoA== +"@hashicorp/design-system-components@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@hashicorp/design-system-components/-/design-system-components-1.0.4.tgz#e258cad1a41b00db3363db25bfdafaa598326b98" + integrity sha512-aaOncgPH4yDEvQuFfOa/cwAOttxwbaEdaENEl+88EOi/HLUe0mdS2HgpC96w3sWhedE/xylCgSHz0DemIj5dJQ== dependencies: - "@hashicorp/design-system-tokens" "^1.4.0" - "@hashicorp/ember-flight-icons" "^3.0.2" - dialog-polyfill "^0.5.6" - ember-auto-import "^2.4.2" - ember-cached-decorator-polyfill "^0.1.4" + "@hashicorp/design-system-tokens" "^1.0.0" + "@hashicorp/ember-flight-icons" "^2.0.12" + ember-auto-import "^2.4.1" ember-cli-babel "^7.26.11" - ember-cli-htmlbars "^6.1.0" + ember-cli-htmlbars "^6.0.1" ember-cli-sass "^10.0.1" - ember-composable-helpers "^4.4.1" - ember-focus-trap "^1.0.1" ember-keyboard "^8.1.0" ember-named-blocks-polyfill "^0.2.5" - ember-style-modifier "^0.8.0" - ember-truth-helpers "^3.0.0" sass "^1.43.4" "@hashicorp/design-system-tokens@^1.0.0": @@ -3565,11 +3536,6 @@ resolved "https://registry.yarnpkg.com/@hashicorp/design-system-tokens/-/design-system-tokens-1.0.0.tgz#06ab55873ef444b0958a5192db310278c6501f0b" integrity sha512-akziX9jiHnQ8KfJA6s8l+98Ukz30C5Lw7BpSPeTduOmdOlJv1uP7w4TV0hC6VIDMDrJrxIF5Y/HnpSCdQGlxQA== -"@hashicorp/design-system-tokens@^1.4.0": - version "1.4.0" - resolved "https://registry.yarnpkg.com/@hashicorp/design-system-tokens/-/design-system-tokens-1.4.0.tgz#2d42bd7d9250b01f77618663b3b92004be840af7" - integrity sha512-xZI5lom+qPi5B4qUDgXcuTc+A8/NQdXXBoIfB7NUnY/GRp4kOkxNkgScPj8fvAFvUuLdiCAQhpLU54z1A/Q3cA== - "@hashicorp/ember-cli-api-double@^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/@hashicorp/ember-cli-api-double/-/ember-cli-api-double-4.0.0.tgz#fd6181229c589b4db93f1784d022db064c61ec76" @@ -3585,20 +3551,34 @@ pretender "^3.2.0" recursive-readdir-sync "^1.0.6" -"@hashicorp/ember-flight-icons@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@hashicorp/ember-flight-icons/-/ember-flight-icons-3.0.2.tgz#8d884c07842a6c88df18ca680d7883a59222a2ba" - integrity sha512-WomQg1hw/IHA1N9hC77WbTNazVXqu2RdRoaVCGT99NTXQ4S7Bw7vhHheR4JAgt10ksMZFI3X/bJVHxFfjUCkSQ== +"@hashicorp/ember-flight-icons@^2.0.12": + version "2.0.12" + resolved "https://registry.yarnpkg.com/@hashicorp/ember-flight-icons/-/ember-flight-icons-2.0.12.tgz#788adf7a4fedc468d612d35b604255df948f4012" + integrity sha512-8fHPGaSpMkr5dLWaruwbq9INwZCi2EyTof/TR/dL8PN4UbCuY+KXNqG0lLIKNGFFTj09B1cO303m5GUfKKDGKQ== dependencies: - "@hashicorp/flight-icons" "^2.12.0" - ember-auto-import "^2.4.2" + "@hashicorp/flight-icons" "^2.10.0" ember-cli-babel "^7.26.11" - ember-cli-htmlbars "^6.1.0" + ember-cli-htmlbars "^6.0.1" -"@hashicorp/flight-icons@^2.12.0": - version "2.12.0" - resolved "https://registry.yarnpkg.com/@hashicorp/flight-icons/-/flight-icons-2.12.0.tgz#48bc21f21678668ffe9147b181a2991d8b151fc7" - integrity sha512-PhjTTHCjoq4EJirifbxLxnxXnCRf1NUAYZ1WnFW8i0yOmmax6fgjsJRPlf0VIGsR8R7isFpjuy6gJ5c7mNhE0w== +"@hashicorp/ember-flight-icons@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@hashicorp/ember-flight-icons/-/ember-flight-icons-3.0.0.tgz#fddeb8adfb036aa3573c55b7236b34172b49cba9" + integrity sha512-+QrV38Ix9dWLwMzdVcMcSmFfeSVGvWvB+3OVBq3ltOTmnoLPIAx8LT9UDZUZ1wa65ciO+a1YzLMmwWnQgX/r9Q== + dependencies: + "@hashicorp/flight-icons" "^2.11.0" + ember-auto-import "^2.4.1" + ember-cli-babel "^7.26.11" + ember-cli-htmlbars "^6.0.1" + +"@hashicorp/flight-icons@^2.10.0": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@hashicorp/flight-icons/-/flight-icons-2.10.0.tgz#24b03043bacda16e505200e6591dfef896ddacf1" + integrity sha512-jYUA0M6Tz+4RAudil+GW/fHbhZPcKCiIZZAguBDviqbLneMkMgPOBgbXWCGWsEQ1fJzP2cXbUaio8L0aQZPWQw== + +"@hashicorp/flight-icons@^2.11.0": + version "2.11.0" + resolved "https://registry.yarnpkg.com/@hashicorp/flight-icons/-/flight-icons-2.11.0.tgz#1500be99a42ee8512e7caece4bdae60ce8790577" + integrity sha512-teFkUY2di63JZ2gsegQgS+3f5YEP+GPuycB1Z2O+weInIrL33Ds0/J+lxFCmi2vkPAeY5xOnsclHYnhU6xOSmA== "@html-next/vertical-collection@^4.0.0": version "4.0.0" @@ -5019,11 +4999,6 @@ babel-import-util@^1.1.0: resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-1.2.2.tgz#1027560e143a4a68b1758e71d4fadc661614e495" integrity sha512-8HgkHWt5WawRFukO30TuaL9EiDUOdvyKtDwLma4uBNeUSDbOO0/hiPfavrOWxSS6J6TKXfukWHZ3wiqZhJ8ONQ== -babel-import-util@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/babel-import-util/-/babel-import-util-1.3.0.tgz#dc9251ea39a7747bd586c1c13b8d785a42797f8e" - integrity sha512-PPzUT17eAI18zn6ek1R3sB4Krc/MbnmT1MkZQFmyhjoaEGBVwNABhfVU9+EKcDSKrrOm9OIpGhjxukx1GCiy1g== - babel-loader@^8.0.6, babel-loader@^8.1.0: version "8.2.2" resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.2.tgz#9363ce84c10c9a40e6c753748e1441b60c8a0b81" @@ -5100,13 +5075,6 @@ babel-plugin-ember-template-compilation@^1.0.0: magic-string "^0.25.7" string.prototype.matchall "^4.0.5" -babel-plugin-ember-template-compilation@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/babel-plugin-ember-template-compilation/-/babel-plugin-ember-template-compilation-2.0.0.tgz#41d895874ba6119dd461f61993c16d1154bf8a57" - integrity sha512-d+4jaB2ik0rt9TH0K9kOlKJeRBHEb373FgFMcU9ZaJL2zYuVXe19bqy+cWlLpLf1tpOBcBG9QTlFBCoImlOt1g== - dependencies: - babel-import-util "^1.3.0" - babel-plugin-filter-imports@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-filter-imports/-/babel-plugin-filter-imports-4.0.0.tgz#068f8da15236a96a9602c36dc6f4a6eeca70a4f4" @@ -7874,11 +7842,6 @@ dezalgo@^1.0.0: asap "^2.0.0" wrappy "1" -dialog-polyfill@^0.5.6: - version "0.5.6" - resolved "https://registry.yarnpkg.com/dialog-polyfill/-/dialog-polyfill-0.5.6.tgz#7507b4c745a82fcee0fa07ce64d835979719599a" - integrity sha512-ZbVDJI9uvxPAKze6z146rmfUZjBqNEwcnFTVamQzXH+svluiV7swmVIGr7miwADgfgt1G2JQIytypM9fbyhX4w== - didyoumean@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037" @@ -8153,7 +8116,7 @@ ember-auto-import@^1.5.3, ember-auto-import@^1.6.0: walk-sync "^0.3.3" webpack "^4.43.0" -ember-auto-import@^2.2.3, ember-auto-import@^2.4.2: +ember-auto-import@^2.2.3, ember-auto-import@^2.4.1, ember-auto-import@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/ember-auto-import/-/ember-auto-import-2.4.2.tgz#d4d3bc6885a11cf124f606f5c37169bdf76e37ae" integrity sha512-REh+1aJWpTkvN42a/ga41OuRpUsSW7UQfPr2wPtYx56o/xoSNhVBXejy7yV9ObrkN7gogz6fs2xZwih5cOwpYg== @@ -8207,26 +8170,6 @@ ember-basic-dropdown@3.0.21, ember-basic-dropdown@^3.0.16: ember-style-modifier "^0.6.0" ember-truth-helpers "^2.1.0 || ^3.0.0" -ember-cache-primitive-polyfill@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ember-cache-primitive-polyfill/-/ember-cache-primitive-polyfill-1.0.1.tgz#a27075443bd87e5af286c1cd8a7df24e3b9f6715" - integrity sha512-hSPcvIKarA8wad2/b6jDd/eU+OtKmi6uP+iYQbzi5TQpjsqV6b4QdRqrLk7ClSRRKBAtdTuutx+m+X+WlEd2lw== - dependencies: - ember-cli-babel "^7.22.1" - ember-cli-version-checker "^5.1.1" - ember-compatibility-helpers "^1.2.1" - silent-error "^1.1.1" - -ember-cached-decorator-polyfill@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/ember-cached-decorator-polyfill/-/ember-cached-decorator-polyfill-0.1.4.tgz#f1e2c65cc78d0d9c4ac0e047e643af477eb85ace" - integrity sha512-JOK7kBCWsTVCzmCefK4nr9BACDJk0owt9oIUaVt6Q0UtQ4XeAHmoK5kQ/YtDcxQF1ZevHQFdGhsTR3JLaHNJgA== - dependencies: - "@glimmer/tracking" "^1.0.4" - ember-cache-primitive-polyfill "^1.0.1" - ember-cli-babel "^7.21.0" - ember-cli-babel-plugin-helpers "^1.1.1" - ember-can@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/ember-can/-/ember-can-4.2.0.tgz#08bfec3b2b57aad3dc6e4dc36fe9692bd1794dab" @@ -8492,26 +8435,6 @@ ember-cli-htmlbars@^6.0.1: silent-error "^1.1.1" walk-sync "^2.2.0" -ember-cli-htmlbars@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/ember-cli-htmlbars/-/ember-cli-htmlbars-6.2.0.tgz#18ec48ee1c93f9eed862a64eb24a9d14604f1dfc" - integrity sha512-j5EGixjGau23HrqRiW/JjoAovg5UBHfjbyN7wX5ekE90knIEqUUj1z/Mo/cTx/J2VepQ2lE6HdXW9LWQ/WdMtw== - dependencies: - "@ember/edition-utils" "^1.2.0" - babel-plugin-ember-template-compilation "^2.0.0" - babel-plugin-htmlbars-inline-precompile "^5.3.0" - broccoli-debug "^0.6.5" - broccoli-persistent-filter "^3.1.2" - broccoli-plugin "^4.0.3" - ember-cli-version-checker "^5.1.2" - fs-tree-diff "^2.0.1" - hash-for-dep "^1.5.1" - heimdalljs-logger "^0.1.10" - js-string-escape "^1.0.1" - semver "^7.3.4" - silent-error "^1.1.1" - walk-sync "^2.2.0" - ember-cli-inject-live-reload@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/ember-cli-inject-live-reload/-/ember-cli-inject-live-reload-2.0.2.tgz#95edb543b386239d35959e5ea9579f5382976ac7" @@ -8934,16 +8857,6 @@ ember-compatibility-helpers@^1.2.5: fs-extra "^9.1.0" semver "^5.4.1" -ember-composable-helpers@^4.4.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/ember-composable-helpers/-/ember-composable-helpers-4.5.0.tgz#94febbdf4348e64f45f7a6f993f326e32540a61e" - integrity sha512-XjpDLyVPsLCy6kd5dIxZonOECCO6AA5sY5Hr6tYUbJg3s5ghFAiFWaNcYraYC+fL2yPJQAswwpfwGlQORUJZkw== - dependencies: - "@babel/core" "^7.0.0" - broccoli-funnel "2.0.1" - ember-cli-babel "^7.26.3" - resolve "^1.10.0" - ember-composable-helpers@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/ember-composable-helpers/-/ember-composable-helpers-5.0.0.tgz#055bab3a3e234ab2917499b1465e968c253ca885" @@ -9076,14 +8989,6 @@ ember-factory-for-polyfill@^1.3.1: dependencies: ember-cli-version-checker "^2.1.0" -ember-focus-trap@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ember-focus-trap/-/ember-focus-trap-1.0.1.tgz#a99565f6ce55d500b92a0965e79e3ad04219f157" - integrity sha512-ZUyq5ZkIuXp+ng9rCMkqBh36/V95PltL7iljStkma4+651xlAy3Z84L9WOu/uOJyVpNUxii8RJBbAySHV6c+RQ== - dependencies: - "@embroider/addon-shim" "^1.0.0" - focus-trap "^6.7.1" - ember-get-config@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/ember-get-config/-/ember-get-config-0.3.0.tgz#a73a1a87b48d9dde4c66a0e52ed5260b8a48cfbd" @@ -9508,14 +9413,6 @@ ember-style-modifier@^0.6.0: ember-cli-babel "^7.21.0" ember-modifier "^2.1.0" -ember-style-modifier@^0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/ember-style-modifier/-/ember-style-modifier-0.8.0.tgz#ef46b3f288e63e3d850418ea8dc6f7b12edde721" - integrity sha512-I7M+oZ+poYYOP7n521rYv7kkYZbxotL8VbtHYxLQ3tasRZYQJ21qfu3vVjydSjwyE3w7EZRgKngBoMhKSAEZnw== - dependencies: - ember-cli-babel "^7.26.6" - ember-modifier "^3.2.7" - ember-template-lint@^2.0.1: version "2.21.0" resolved "https://registry.yarnpkg.com/ember-template-lint/-/ember-template-lint-2.21.0.tgz#7e120abf309a8810eeed26c52377943faf15a95b" @@ -10635,13 +10532,6 @@ flush-write-stream@^1.0.0: inherits "^2.0.3" readable-stream "^2.3.6" -focus-trap@^6.7.1: - version "6.9.4" - resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-6.9.4.tgz#436da1a1d935c48b97da63cd8f361c6f3aa16444" - integrity sha512-v2NTsZe2FF59Y+sDykKY+XjqZ0cPfhq/hikWVL88BqLivnNiEffAsac6rP6H45ff9wG9LL5ToiDqrLEP9GX9mw== - dependencies: - tabbable "^5.3.3" - focusable-selectors@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/focusable-selectors/-/focusable-selectors-0.3.0.tgz#0cf0c617c0f130b3d421be6787acb95b0b4936c4" @@ -15820,13 +15710,6 @@ semver@^7.3.5: dependencies: lru-cache "^6.0.0" -semver@^7.3.8: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -16654,11 +16537,6 @@ sync-disk-cache@^2.0.0: rimraf "^3.0.0" username-sync "^1.0.2" -tabbable@^5.3.3: - version "5.3.3" - resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-5.3.3.tgz#aac0ff88c73b22d6c3c5a50b1586310006b47fbf" - integrity sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA== - table@^6.0.9: version "6.8.0" resolved "https://registry.yarnpkg.com/table/-/table-6.8.0.tgz#87e28f14fa4321c3377ba286f07b79b281a3b3ca" diff --git a/version/VERSION b/version/VERSION index 1f0d2f335194a..bf222ecb47b41 100644 --- a/version/VERSION +++ b/version/VERSION @@ -1 +1 @@ -1.16.0-dev +1.15.1-dev \ No newline at end of file diff --git a/website/content/commands/troubleshoot/proxy.mdx b/website/content/commands/troubleshoot/proxy.mdx index fcd9552247dd0..d9749c0c254f7 100644 --- a/website/content/commands/troubleshoot/proxy.mdx +++ b/website/content/commands/troubleshoot/proxy.mdx @@ -31,7 +31,6 @@ The following example illustrates how to troubleshoot Consul service mesh config ```shell-session $ consul troubleshoot proxy -upstream-ip 10.4.6.160 - ==> Validation ✓ Certificates are valid ✓ Envoy has 0 rejected configurations @@ -52,7 +51,6 @@ The following example troubleshoots Consul service mesh configuration and networ ```shell-session $ consul-k8s troubleshoot proxy -upstream-envoy-id db - ==> Validation ✓ Certificates are valid ✓ Envoy has 0 rejected configurations @@ -61,7 +59,6 @@ The following example troubleshoots Consul service mesh configuration and networ ✓ Route for upstream "db" found ✓ Cluster "db.default.dc1.internal.e08fa6d6-e91e-dfe0.consul" for upstream "db" found ✓ Healthy endpoints for cluster "db.default.dc1.internal.e08fa6d6-e91e-dfe0.consul" for upstream "db" found - If you are still experiencing issues, you can: -> Check intentions to ensure the upstream allows traffic from this source -> If using transparent proxy, ensure DNS resolution is to the same IP you have verified here diff --git a/website/content/commands/troubleshoot/upstreams.mdx b/website/content/commands/troubleshoot/upstreams.mdx index f04a8beedc089..425ec39e46426 100644 --- a/website/content/commands/troubleshoot/upstreams.mdx +++ b/website/content/commands/troubleshoot/upstreams.mdx @@ -27,10 +27,8 @@ Display all transparent proxy upstreams in Consul service mesh from the current ```shell-session $ consul troubleshoot upstreams ==> Upstreams (explicit upstreams only) (0) - ==> Upstreams IPs (transparent proxy only) (1) [10.4.6.160 240.0.0.3] true map[backend.default.dc1.internal.e08fa6d6-e91e-dfe0-f6e1-ba097a828e31.consul backend2.default.dc1.internal.e08fa6d6-e91e-dfe0-f6e1-ba097a828e31.consul] - If you cannot find the upstream address or cluster for a transparent proxy upstream: - Check intentions: Tproxy upstreams are configured based on intentions. Make sure you have configured intentions to allow traffic to your upstream. - To check that the right cluster is being dialed, run a DNS lookup for the upstream you are dialing. For example, run `dig backend.svc.consul` to return the IP address for the `backend` service. If the address you get from that is missing from the upstream IPs, it means that your proxy may be misconfigured. diff --git a/website/content/docs/agent/index.mdx b/website/content/docs/agent/index.mdx index 80cfb7f043064..d1860b10a5087 100644 --- a/website/content/docs/agent/index.mdx +++ b/website/content/docs/agent/index.mdx @@ -62,7 +62,7 @@ its consequences during outage situations). Reaping is similar to leaving, causing all associated services to be deregistered. ## Limit traffic rates -You can define a set of rate limiting configurations that help operators protect Consul servers from excessive or peak usage. The configurations enable you to gracefully degrade Consul servers to avoid a global interruption of service. Consul supports global server rate limiting, which lets configure Consul servers to deny requests that exceed the read or write limits. Refer to [Traffic Rate Limits Overview](/consul/docs/agent/limits/limit-traffic-rates). +You can define a set of rate limiting configurations that help operators protect Consul servers from excessive or peak usage. The configurations enable you to gracefully degrade Consul servers to avoid a global interruption of service. You can allocate a set of resources to different Consul users and eliminate the risks that some users consuming too many resources pose to others. Consul supports global server rate limiting, which lets configure Consul servers to deny requests that exceed the read or write limits. Refer to [Traffic Rate Limits Overview](/consul/docs/agent/limits/limit-traffic-rates). ## Requirements diff --git a/website/content/docs/agent/limits/index.mdx b/website/content/docs/agent/limits/index.mdx index ffa259cfd672e..75fb4f1ac0e8e 100644 --- a/website/content/docs/agent/limits/index.mdx +++ b/website/content/docs/agent/limits/index.mdx @@ -5,29 +5,27 @@ description: Rate limiting is a set of Consul server agent configurations that y --- -# Traffic rate limiting overview +# Limit traffic rates overview -This topic provides an overview of the rates limits you can configure for Consul servers. +This topic provides overview information about the traffic rates limits you can configure for Consul servers. ## Introduction -You can configure global RPC rate limits to mitigate the risks to Consul servers when clients send excessive read or write requests to Consul resources. A _read request_ is defined as any request that does not modify Consul internal state. A _write request_ is defined as any request that modifies Consul internal state. Rate limits for read and write requests are configured separately. +You can configure global RPC rate limits to mitigate the risks to Consul servers when clients send excessive read or write requests to Consul resources. A read request is defined as any request that does not modify Consul internal state. A write request is defined as any request that modifies Consul internal state. Read and write requests are limited separately. ## Rate limit modes - -You can set one of the following modes to determine how Consul servers react when exceeding request limits. +You can set one of the following modes, which determine how Consul servers react when the request limits are exceeded. -- **Enforcing mode**: The rate limiter denies requests to a server once they exceed the configured rate. In this mode, Consul generates metrics and logs to help you understand your network's load and configure limits accordingly. -- **Permissive mode**: The rate limiter allows requests to a server once they exceed the configured rate. In this mode, Consul generates metrics and logs to help you understand your Consul load and configure limits accordingly. Use this mode to help you debug specific issues as you configure limits. -- **Disabled mode**: Disables the rate limiter. This mode allows all requests Consul does not generate logs or metrics. This is the default mode. +- **Enforcing mode**: In this mode, the rate limiter denies requests to a server beyond a configurable rate. Consul generates metrics and logs to help operators understand their Consul load and configure limits accordingly. +- **Permissive mode**: The rate limiter allows requests if the limits are reached and produces metrics and logs to help operators understand their Consul load and configure limits accordingly. This mode is intended to help you configure limits and debug specific issues. +- **Disabled mode**: Disables the rate limiter. All requests are allowed and no logs or metrics are produced. This is the default mode. Refer to [`rate_limits`](/consul/docs/agent/config/config-files#request_limits) for additional configuration information. ## Request denials - When an HTTP request is denied for rate limiting reason, Consul returns one of the following errors: -- **429 Resource Exhausted**: Indicates that a server is not able to perform the request but that another server could potentially fulfill it. This error is most common on stale reads because any server may fulfill stale read requests. To resolve this type of error, we recommend immediately retrying the request to another server. If the request came from a Consul client agent, the agent automatically retries the request up to the limit set in the [`rpc_hold_timeout`](/consul/docs/agent/config/config-files#rpc_hold_timeout) configuration . +- **429 Resource Exhausted**: Indicates that a server is not able to perform the request but that another server could potentially fulfill it. This error is most common on stale reads because any server may fulfill state read requests. To resolve this type of error, we recommend immediately retrying the request to another server. If the request came from a Consul client agent, the agent automatically retries the request up to the limit set in the [`rpc_hold_timeout`](/consul/docs/agent/config/config-files#rpc_hold_timeout) configuration . -- **503 Service Unavailable**: Indicates that server is unable to perform the request and that no other server can fulfill the request, either. This usually occurs on consistent reads or for writes. In this case we recommend retrying according to an exponential backoff schedule. If the request came from a Consul client agent, the agent automatically retries the request according to the [`rpc_hold_timeout`](/consul/docs/agent/config/config-files#rpc_hold_timeout) configuration. +- **503 Service Unavailable**: Indicates that server is unable to perform the request and that no other server can fulfill the request, either. This usually occurs on consistent reads or for writes. In this case we recommend retrying according to an exponential backoff schedule. If the request came from a Consul client agent, the agent automatically retries the request according to the [`rpc_hold_timeout`](/consul/docs/agent/config/config-files#rpc_hold_timeout) configuration. Refer to [Rate limit reached on the server](/consul/docs/troubleshoot/common-errors#rate-limit-reached-on-the-server) for additional information. \ No newline at end of file diff --git a/website/content/docs/agent/limits/init-rate-limits.mdx b/website/content/docs/agent/limits/init-rate-limits.mdx index 7dbabbe6c72ae..3205718453098 100644 --- a/website/content/docs/agent/limits/init-rate-limits.mdx +++ b/website/content/docs/agent/limits/init-rate-limits.mdx @@ -1,26 +1,26 @@ --- layout: docs page_title: Initialize Rate Limit Settings -description: Learn how to determine regular and peak loads in your network so that you can set the initial global rate limit configurations. +description: Learn how to determins regular and peak loads in your network so that you can set the initial global rate limit configurations. --- # Initialize rate limit settings -Because each network has different needs and application, you need to find out what the regular and peak loads in your network are before you set traffic limits. We recommend completing the following steps to benchmark request rates in your environment so that you can implement limits appropriate for your applications. +In order to set limits for traffic, you must first understand regular and peak loads in your network. We recommend completing the following steps to benchmark request rates in your environment so that you can implement limits appropriate for your applications. -1. In the agent configuration file, specify a global rate limit with arbitrary values based on the following conditions: +1. Specify a global rate limit with arbitrary values in the agent configuration file based on the following conditions: - Environment where Consul servers are running - Number of servers and the projected load - Existing metrics expressing requests per second -1. Set the `mode` to `permissive`. In the following example, the configuration allows up to 1000 reads and 500 writes per second for each Consul agent: +1. Set the `mode` to `permissive`. In the following example, Consul agents are allowed up to 1000 reads and 500 writes per second: ```hcl request_limits { mode = "permissive" read_rate = 1000.0 - write_rate = 500.0 + write_rate =500.0 } ``` @@ -29,4 +29,4 @@ Because each network has different needs and application, you need to find out w - `rpc.rate_limit.exceeded` with value `global/read` for label `limit_type` - `rpc.rate_limit.exceeded` with value `global/write` for label `limit_type` -1. If the limits are not reached, set the `mode` configuration to `enforcing`. Otherwise, continue to adjust and iterate until you find your network's unique limits. \ No newline at end of file +1. If the limits are not reached, set the `mode` configuration to `enforcing`. Otherwise adjust and iterate limits. \ No newline at end of file diff --git a/website/content/docs/agent/limits/set-global-traffic-rate-limits.mdx b/website/content/docs/agent/limits/set-global-traffic-rate-limits.mdx index 5d4fc43df02f9..369d1b7b58398 100644 --- a/website/content/docs/agent/limits/set-global-traffic-rate-limits.mdx +++ b/website/content/docs/agent/limits/set-global-traffic-rate-limits.mdx @@ -9,15 +9,13 @@ description: Use global rate limits to prevent excessive rates of requests to Co This topic describes how to configure rate limits for RPC and gRPC traffic to the Consul server. ## Introduction +Rate limits apply to each Consul server separately and are intended to limit the number of read requests or write requests to the server on the RPC and internal gRPC endpoints. -Rate limits apply to each Consul server separately and limit the number of read requests or write requests to the server on the RPC and internal gRPC endpoints. - -Because all requests coming to a Consul server eventually perform an RPC or an internal gRPC request, global rate limits apply to Consul's user interfaces, such as the HTTP API interface, the CLI, and the external gRPC endpoint for services in the service mesh. +Because all requests coming to a Consul server eventually perform an RPC or an internal gRPC request, these limits also apply to other user interfaces, such as the HTTP API interface, the CLI, and the external gRPC endpoint for services in the Consul service mesh. Refer to [Initialize Rate Limit Settings](/consul/docs/agent/limits/init-rate-limits) for additional information about right-sizing your gRPC request configurations. ## Set a global rate limit for a Consul server - Configure the following settings in your Consul server configuration to limit the RPC and gRPC traffic rates. - Set the rate limiter [`mode`](/consul/docs/agent/config/config-files#mode-1) @@ -54,10 +52,9 @@ limits = { ## Access rate limit logs +Consul prints a log line for each rate limit request. The log provides the information necessary for identifying the source of the request and the configured limit. Consul prints the log `DEBUG` log level and can drop the log to avoid affecting the server health. Dropping a log line increments the `rpc.rate_limit.log_dropped` metric. -Consul prints a log line for each rate limit request. The log includes information to identify the source of the request and the server's configured limit. Consul prints to `DEBUG` log level, and can be configured to drop log lines to avoid affecting the server health. Dropping a log line increments the `rpc.rate_limit.log_dropped` metric. - -The following example log shows that RPC request from `127.0.0.1:53562` to `KVS.Apply` exceeded the rate limit: +The following example log shows that RPC request from `127.0.0.1:53562` to `KVS.Apply` exceeded the limit: @@ -69,16 +66,13 @@ limit_type=global/write limit_enforced=false ## Review rate limit metrics - Consul captures the following metrics associated with rate limits: - Type of limit - Operation - Rate limit mode -Call the `agent/metrics` API endpoint to view the metrics associated with rate limits. Refer to [View Metrics](/consul/api-docs/agent#view-metrics) for API usage information. - -In the following example, Consul dropped a call to the `consul` service because it exceeded the limit by one call: +Call the `agent/metrics` API endpoint to view the metrics associated with rate limits. Refer to [View Metrics](/consul/api-docs/agent#view-metrics) for API usage information. In the following example, Consul dropped a call to the `consul` service because it exceeded the limit by one call: ```shell-session $ curl http://127.0.0.1:8500/v1/agent/metrics @@ -111,4 +105,4 @@ $ curl http://127.0.0.1:8500/v1/agent/metrics . . . ``` -Refer to [Telemetry](/consul/docs/agent/telemetry) for additional information. +Refer to [Telemetry]() for additional information. diff --git a/website/content/docs/api-gateway/usage/route-to-peered-services.mdx b/website/content/docs/api-gateway/usage/route-to-peered-services.mdx index 33bc54cdb48d8..fe8ca69732cce 100644 --- a/website/content/docs/api-gateway/usage/route-to-peered-services.mdx +++ b/website/content/docs/api-gateway/usage/route-to-peered-services.mdx @@ -12,8 +12,8 @@ This topic describes how to configure Consul API Gateway to route traffic to ser 1. Consul 1.14 or later 1. Verify that the [requirements](/consul/docs/api-gateway/tech-specs) have been met. 1. Verify that the Consul API Gateway CRDs and controller have been installed and applied. Refer to [Installation](/consul/docs/api-gateway/install) for details. -1. A peering connection must already be established between Consul clusters. Refer to [Cluster Peering on Kubernetes](/consul/docs/connect/cluster-peering/k8s) for instructions. -1. The Consul service that you want to route traffic to must be exported to the cluster containing your `Gateway`. Refer to [Cluster Peering on Kubernetes](/consul/docs/connect/cluster-peering/k8s) for instructions. +1. A peering connection must already be established between Consul clusters. Refer to [Cluster Peering on Kubernetes](/consul/docs/k8s/connect/cluster-peering/tech-specs) for instructions. +1. The Consul service that you want to route traffic to must be exported to the cluster containing your `Gateway`. Refer to [Cluster Peering on Kubernetes](/consul/docs/k8s/connect/cluster-peering/tech-specs) for instructions. 1. A `ServiceResolver` for the Consul service you want to route traffic to must be created in the cluster that contains your `Gateway`. Refer to [Service Resolver Configuration Entry](/consul/docs/connect/config-entries/service-resolver) for instructions. ## Configuration diff --git a/website/content/docs/connect/cluster-peering/index.mdx b/website/content/docs/connect/cluster-peering/index.mdx index aeb940d638c1c..f8e1c18caf3a6 100644 --- a/website/content/docs/connect/cluster-peering/index.mdx +++ b/website/content/docs/connect/cluster-peering/index.mdx @@ -57,7 +57,7 @@ The following resources are available to help you use Consul's cluster peering f **Usage documentation:** -- [Establish cluster peering connections](/consul/docs/connect/cluster-peering/usage/establish-peering) +- [Establish cluster peering connections](/consul/docs/connect/cluster-peering/usage/establish-cluster-peering) - [Manage cluster peering connections](/consul/docs/connect/cluster-peering/usage/manage-connections) - [Manage L7 traffic with cluster peering](/consul/docs/connect/cluster-peering/usage/peering-traffic-management) diff --git a/website/content/docs/connect/config-entries/service-resolver.mdx b/website/content/docs/connect/config-entries/service-resolver.mdx index 9730beb132e93..89147a24af3c2 100644 --- a/website/content/docs/connect/config-entries/service-resolver.mdx +++ b/website/content/docs/connect/config-entries/service-resolver.mdx @@ -440,6 +440,12 @@ spec: description: 'The timeout for establishing new network connections to this service. The default unit of time is `ns`.', }, + { + name: 'RequestTimeout', + type: 'duration: 0s', + description: + 'The timeout for receiving an HTTP response from this service before the connection is terminated. If unspecified or 0, the default of 15s is used. The default unit of time is `ns`.', + }, { name: 'DefaultSubset', type: 'string: ""', diff --git a/website/content/docs/connect/gateways/api-gateway/configuration/http-route.mdx b/website/content/docs/connect/gateways/api-gateway/configuration/http-route.mdx index c492e331e2ae0..7ab1a506d4622 100644 --- a/website/content/docs/connect/gateways/api-gateway/configuration/http-route.mdx +++ b/website/content/docs/connect/gateways/api-gateway/configuration/http-route.mdx @@ -630,7 +630,8 @@ Specifies the Enterprise [admin partition](/consul/docs/enterprise/admin-partiti ### `Rules[].Services[].Weight` -Specifies the proportion of requests forwarded to the specified service. The +Specifies the proportion of requests forwarded to the specified service. If no weight is specified, or if the specified +weight is set to less than or equal to `0`, the weight is normalized to `1`. The proportion is determined by dividing the value of the weight by the sum of all weights in the service list. For non-zero values, there may be some deviation from the exact proportion depending on the precision an implementation diff --git a/website/content/docs/connect/proxies/envoy-extensions/index.mdx b/website/content/docs/connect/proxies/envoy-extensions/index.mdx index b4876c78e45cd..844ab0706c3ac 100644 --- a/website/content/docs/connect/proxies/envoy-extensions/index.mdx +++ b/website/content/docs/connect/proxies/envoy-extensions/index.mdx @@ -15,7 +15,6 @@ Consul supports two methods for modifying Envoy behavior. You can either modify Instead of modifying Consul code, you can configure your services to use Envoy extensions through the `EnvoyExtensions` field. This field is definable in [`proxy-defaults`](/consul/docs/connect/config-entries/proxy-defaults#envoyextensions) and [`service-defaults`](/consul/docs/connect/config-entries/service-defaults#envoyextensions) configuration entries. - ## Supported extensions Envoy extensions enable additional service mesh functionality in Consul by changing how the sidecar proxies behave. Extensions invoke custom code when traffic passes through an Envoy proxy. Consul supports the following extensions: diff --git a/website/content/docs/connect/proxies/envoy-extensions/usage/lambda.mdx b/website/content/docs/connect/proxies/envoy-extensions/usage/lambda.mdx index c06bf3bd220c8..ce1554641969c 100644 --- a/website/content/docs/connect/proxies/envoy-extensions/usage/lambda.mdx +++ b/website/content/docs/connect/proxies/envoy-extensions/usage/lambda.mdx @@ -21,7 +21,7 @@ The Lambda Envoy extension has the following arguments: | `InvocationMode` | Determines if Consul configures the Lambda to be invoked using the synchronous or asynchronous [invocation mode](https://docs.aws.amazon.com/lambda/latest/operatorguide/invocation-modes.html). | | `PayloadPassthrough` | Determines if the body Envoy receives is converted to JSON or directly passed to Lambda. | -Be aware that unlike [manual lambda registration](/consul/docs/lambda/registration/manual#supported-meta-fields), region is inferred from the ARN when specified through an Envoy extension. +Be aware that unlike [manual lambda registration](/consul/docs/lambda/registration/manual#supported-meta-fields), region is inferred from the ARN when specified through an Envoy extension. ## Workflow diff --git a/website/content/docs/connect/proxies/envoy.mdx b/website/content/docs/connect/proxies/envoy.mdx index 61ea0bf738c34..bb27db3b2a317 100644 --- a/website/content/docs/connect/proxies/envoy.mdx +++ b/website/content/docs/connect/proxies/envoy.mdx @@ -45,7 +45,7 @@ Consul supports **four major Envoy releases** at the beginning of each major Con ### Envoy and Consul Dataplane -The Consul dataplane component was introduced in Consul v1.14 as a way to manage Envoy proxies without the use of Consul clients. Each new minor version of Consul is released with a new minor version of Consul dataplane, which packages both Envoy and the `consul-dataplane` binary in a single container image. For backwards compatability reasons, each new minor version of Consul will also support the previous minor version of Consul dataplane to allow for seamless upgrades. In addition, each minor version of Consul will support the next minor version of Consul dataplane to allow for extended dataplane support via newer versions of Envoy. +The Consul dataplane component was introduced in Consul v1.14 as a way to manage Envoy proxies without the use of Consul clients. Each new minor version of Consul is released with a new minor version of Consul dataplane, which packages both Envoy and the `consul-dataplane` binary in a single container image. For backwards compatability reasons, each new minor version of Consul will also support the previous minor version of Consul dataplane to allow for seamless upgrades. In addition, each minor version of Consul will support the next minor version of Consul dataplane to allow for extended dataplane support via newer versions of Envoy. | Consul Version | Consul Dataplane Version (Bundled Envoy Version) | | ------------------- | ------------------------------------------------- | @@ -124,7 +124,7 @@ Connect to a local Consul client agent and run the [`consul connect envoy` comma If you experience issues when bootstrapping Envoy proxies from the CLI, use the `-enable-config-gen-logging` flag to enable debug message logging. These logs can -help you troubleshoot issues that occur during the bootstrapping process. +help you troubleshoot issues that occur during the bootstrapping process. For more information about available flags and parameters, refer to the [`consul connect envoy CLI` reference](/consul/commands/connect/envoy). @@ -336,7 +336,7 @@ defaults that are inherited by all services. - `local_idle_timeout_ms` - In milliseconds, the idle timeout for HTTP requests to the local application instance. Applies to HTTP based protocols only. If not - specified, inherits the Envoy default for route idle timeouts (15s). A value of 0 + specified, inherits the Envoy default for route idle timeouts (15s). A value of 0 disables request timeouts. - `max_inbound_connections` - The maximum number of concurrent inbound connections diff --git a/website/content/docs/k8s/annotations-and-labels.mdx b/website/content/docs/k8s/annotations-and-labels.mdx index d6ea11d4f1dc3..d51b591ac8636 100644 --- a/website/content/docs/k8s/annotations-and-labels.mdx +++ b/website/content/docs/k8s/annotations-and-labels.mdx @@ -75,7 +75,7 @@ The following Kubernetes resource annotations could be used on a pod to control - Unlabeled: Use the unlabeled annotation format to specify a service name, Consul Enterprise namespaces and partitions, and - datacenters. To use [cluster peering](/consul/docs/connect/cluster-peering/k8s) with upstreams, use the following + datacenters. To use [cluster peering](/consul/docs/k8s/connect/cluster-peering/k8s-tech-specs) with upstreams, use the following labeled format. - Service name: Place the service name at the beginning of the annotation to specify the upstream service. You can also append the datacenter where the service is deployed (optional). @@ -98,7 +98,7 @@ The following Kubernetes resource annotations could be used on a pod to control - Admin partitions (requires Consul Enterprise 1.11+): Upstream services may be running in a different partition. You must specify the namespace when specifying a partition. Place the partition name after the namespace. If you specify the name of the datacenter (optional), it must be the local datacenter. Communicating across partitions using this method is only supported within a datacenter. For cross partition communication across datacenters, refer to [cluster - peering](/consul/docs/connect/cluster-peering/k8s). + peering](/consul/docs/k8s/connect/cluster-peering/k8s-tech-specs). ```yaml annotations: "consul.hashicorp.com/connect-service-upstreams":"[service-name].[service-namespace].[service-partition]:[port]:[optional datacenter]" diff --git a/website/content/docs/k8s/connect/cluster-peering/usage/establish-peering.mdx b/website/content/docs/k8s/connect/cluster-peering/usage/establish-peering.mdx index 3c85706cc6262..19e504b95d684 100644 --- a/website/content/docs/k8s/connect/cluster-peering/usage/establish-peering.mdx +++ b/website/content/docs/k8s/connect/cluster-peering/usage/establish-peering.mdx @@ -18,7 +18,7 @@ The overall process for establishing a cluster peering connection consists of th Cluster peering between services cannot be established until all four steps are complete. -For general guidance for establishing cluster peering connections, refer to [Establish cluster peering connections](/consul/docs/connect/cluster-peering/usage/establish-peering). +For general guidance for establishing cluster peering connections, refer to [Establish cluster peering connections](/consul/docs/connect/cluster-peering/usage/establish-cluster-peering). ## Prerequisites diff --git a/website/content/docs/k8s/connect/ingress-gateways.mdx b/website/content/docs/k8s/connect/ingress-gateways.mdx index b971484ecc10f..1d2072ae3a032 100644 --- a/website/content/docs/k8s/connect/ingress-gateways.mdx +++ b/website/content/docs/k8s/connect/ingress-gateways.mdx @@ -62,12 +62,6 @@ Ensure you have the latest consul-helm chart and install Consul via helm using t [guide](/consul/docs/k8s/installation/install#installing-consul) while being sure to provide the yaml configuration as previously discussed. -The following example installs Consul 1.0.4 using the `values.yaml` configuration: - -```shell-session -$ helm install consul -f values.yaml hashicorp/consul --version 1.0.4 --wait --debug -``` - ## Configuring the gateway Now that Consul has been installed with ingress gateways enabled, diff --git a/website/content/docs/k8s/crds/index.mdx b/website/content/docs/k8s/crds/index.mdx index 342fe1aaa4c43..6a68960a04df3 100644 --- a/website/content/docs/k8s/crds/index.mdx +++ b/website/content/docs/k8s/crds/index.mdx @@ -16,8 +16,8 @@ You can specify the following values in the `kind` field. Click on a configurati - [`Mesh`](/consul/docs/connect/config-entries/mesh) - [`ExportedServices`](/consul/docs/connect/config-entries/exported-services) -- [`PeeringAcceptor`](/consul/docs/connect/cluster-peering/k8s#peeringacceptor) -- [`PeeringDialer`](/consul/docs/connect/cluster-peering/k8s#peeringdialer) +- [`PeeringAcceptor`](/consul/docs/k8s/connect/cluster-peering/tech-specs#peeringacceptor) +- [`PeeringDialer`](/consul/docs/k8s/connect/cluster-peering/tech-specs#peeringdialer) - [`ProxyDefaults`](/consul/docs/connect/config-entries/proxy-defaults) - [`ServiceDefaults`](/consul/docs/connect/config-entries/service-defaults) - [`ServiceSplitter`](/consul/docs/connect/config-entries/service-splitter) diff --git a/website/content/docs/release-notes/consul-k8s/v0_47_x.mdx b/website/content/docs/release-notes/consul-k8s/v0_47_x.mdx index 3d266b133505d..8f185bb6f3721 100644 --- a/website/content/docs/release-notes/consul-k8s/v0_47_x.mdx +++ b/website/content/docs/release-notes/consul-k8s/v0_47_x.mdx @@ -9,7 +9,7 @@ description: >- ## Release Highlights -- **Cluster Peering (Beta)**: This release introduces support for Cluster Peering, which allows service connectivity between two independent clusters. Enabling peering will deploy the peering controllers and PeeringAcceptor and PeeringDialer CRDs. The new CRDs are used to establish a peering connection between two clusters. Refer to [Cluster Peering on Kubernetes](/consul/docs/connect/cluster-peering/k8s) for full instructions on using Cluster Peering on Kubernetes. +- **Cluster Peering (Beta)**: This release introduces support for cluster peering, which allows service connectivity between two independent clusters. When you enable cluster peering, Consul deploys the peering controllers and `PeeringAcceptor` and `PeeringDialer` CRDs. The new CRDs are used to establish a peering connection between two clusters. Refer to [Cluster Peering Overview](/consul/docs/connect/cluster-peering) for full instructions on using Cluster Peering on Kubernetes. - **Envoy Proxy Debugging CLI Commands**: This release introduces new commands to quickly identify proxies and troubleshoot Envoy proxies for sidecars and gateways. * Add `consul-k8s proxy list` command for displaying pods running Envoy managed by Consul. diff --git a/website/content/docs/release-notes/consul/v1_15_x.mdx b/website/content/docs/release-notes/consul/v1_15_x.mdx index dbd6392467c93..5d8ffd9dc21cc 100644 --- a/website/content/docs/release-notes/consul/v1_15_x.mdx +++ b/website/content/docs/release-notes/consul/v1_15_x.mdx @@ -84,7 +84,6 @@ The following issues are known to exist in the v1.15.0 release: - For v1.15.0, there is a known issue where search filters produced errors and resulted in lists not showing full results until being interacted with. This is resolved in the upcoming Consul v1.15.1 patch release. - ## Changelogs The changelogs for this major release version and any maintenance versions are listed below. diff --git a/website/content/docs/services/discovery/dns-static-lookups.mdx b/website/content/docs/services/discovery/dns-static-lookups.mdx index 68191104a2a4f..aa2524ec45741 100644 --- a/website/content/docs/services/discovery/dns-static-lookups.mdx +++ b/website/content/docs/services/discovery/dns-static-lookups.mdx @@ -39,7 +39,7 @@ Specify the name of the node, datacenter, and domain using the following FQDN sy The `datacenter` subdomain is optional. By default, the lookup queries the datacenter of the agent. -By default, the domain is `consul`. Refer to [Configure DNS Behaviors]() for information about using alternate domains. +By default, the domain is `consul`. Refer to [Configure DNS Behaviors](/consul/docs/services/discovery/dns-configuration) for information about using alternate domains. ### Node lookup results diff --git a/website/redirects.js b/website/redirects.js index 74caeb5e38853..3e4625016505e 100644 --- a/website/redirects.js +++ b/website/redirects.js @@ -6,14 +6,20 @@ module.exports = [ { - source: '/docs/connect/cluster-peering/create-manage-peering', + source: '/consul/docs/connect/cluster-peering/create-manage-peering', destination: - '/docs/connect/cluster-peering/usage/establish-cluster-peering', + '/consul/docs/connect/cluster-peering/usage/establish-cluster-peering', permanent: true, }, { - source: '/docs/connect/cluster-peering/k8s', - destination: '/docs/k8s/connect/cluster-peering/k8s-tech-specs', + source: '/consul/docs/connect/cluster-peering/usage/establish-peering', + destination: + '/consul/docs/connect/cluster-peering/usage/establish-cluster-peering', + permanent: true, + }, + { + source: '/consul/docs/connect/cluster-peering/k8s', + destination: '/consul/docs/k8s/connect/cluster-peering/tech-specs', permanent: true, }, ]