Delete old use case pages w/ redirect to new

This commit is contained in:
Brandon Romano 2020-05-06 21:13:55 -07:00
parent 0401721cd5
commit ca7503314d
5 changed files with 2 additions and 967 deletions

View File

@ -5,6 +5,8 @@
# Consul Redirects
/discovery.html /use-cases/service-discovery-and-health-checking 301!
/mesh.html /use-cases/multi-platform-service-mesh 301!
/api.html /api-docs 301!
/docs/agent/acl-rules.html /docs/acl/acl-rules 301!
/docs/agent/acl-rules /docs/acl/acl-rules 301!

View File

@ -1,480 +0,0 @@
import CallToAction from '@hashicorp/react-call-to-action'
import CaseStudySlider from '@hashicorp/react-case-study-slider'
import CodeBlock from '@hashicorp/react-code-block'
export default function ServiceDiscovery() {
return (
<>
<div className="consul-connect">
<CallToAction
heading="Service discovery made easy"
content="Service registry, integrated health checks, and DNS and HTTP interfaces enable any service to discover and be discovered by other services"
brand="consul"
links={[
{ text: 'Download', url: '/downloads' },
{
text: 'Explore Docs',
url:
'https://learn.hashicorp.com/consul/getting-started/services',
},
]}
/>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="intro">
<h2 class="g-type-display-2">Features</h2>
</div>
<div class="g-text-asset large">
<div>
<div>
<h3 class="g-type-display-3">Service Registry</h3>
<p class="g-type-body">
Consul provides a registry of all the running nodes and
services, along with their current health status. This
allows operators to understand the environment, and
applications and automation tools to interact with dynamic
infrastructure using an HTTP API.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="https://learn.hashicorp.com/consul/getting-started/services"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div>
<picture>
<source
type="image/webp"
srcSet="
/img/consul-connect/ui-health-checks/ui-health-checks_230.webp 230w,
/img/consul-connect/ui-health-checks/ui-health-checks_690.webp 690w,
/img/consul-connect/ui-health-checks/ui-health-checks_1290.webp 1290w"
/>
<source
type="image/jpg"
srcSet="
/img/consul-connect/ui-health-checks/ui-health-checks_230.jpg 230w,
/img/consul-connect/ui-health-checks/ui-health-checks_690.jpg 690w,
/img/consul-connect/ui-health-checks/ui-health-checks_1290.jpg 1290w"
/>
<img
src="/img/consul-connect/ui-health-checks/ui-health-checks_1290.jpg"
alt="Service Registry"
/>
</picture>
</div>
</div>
</div>
</section>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="g-text-asset reverse">
<div>
<div>
<h3 class="g-type-display-3">DNS Query Interface</h3>
<p class="g-type-body">
Consul enables service discovery using a built-in DNS
server. This allows existing applications to easily
integrate, as almost all applications support using DNS to
resolve IP addresses. Using DNS instead of a static IP
address allows services to scale up/down and route around
failures easily.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="https://learn.hashicorp.com/consul/getting-started/services#querying-services"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div class="code-sample">
<div>
<span></span>
<CodeBlock
prefix="terminal"
code={`
$ dig web-frontend.service.consul. ANY
; <<>> DiG 9.8.3-P1 <<>> web-frontend.service.consul. ANY
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29981
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;web-frontend.service.consul. IN ANY
;; ANSWER SECTION:
web-frontend.service.consul. 0 IN A 10.0.3.83
web-frontend.service.consul. 0 IN A 10.0.1.109
`}
/>
</div>
</div>
</div>
</div>
</section>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="g-text-asset">
<div>
<div>
<h3 class="g-type-display-3">HTTP API with Edge Triggers</h3>
<p class="g-type-body">
Consul provides an HTTP API to query the service registry
for nodes, services, and health check information. The API
also supports blocking queries, or long-polling for any
changes. This allows automation tools to react to services
being registered or health status changes to change
configurations or traffic routing in real time.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="https://learn.hashicorp.com/consul/getting-started/services#http-api"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div class="code-sample">
<div>
<span></span>
<CodeBlock
prefix="terminal"
code={`
$ curl http://localhost:8500/v1/health/service/web?index=11&wait=30s
{
...
"Node": "10-0-1-109",
"CheckID": "service:web",
"Name": "Service 'web' check",
"Status": <code class='keyword'>"critical"</code>,
"ServiceID": "web",
"ServiceName": "web",
"CreateIndex": 10,
"ModifyIndex": 20
...
}
`}
/>
</div>
</div>
</div>
</div>
</section>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="g-text-asset reverse">
<div>
<div>
<h3 class="g-type-display-3">Multi Datacenter</h3>
<p class="g-type-body">
Consul supports multiple datacenters out of the box with no
complicated configuration. Look up services in other
datacenters or keep the request local. Advanced features
like Prepared Queries enable automatic failover to other
datacenters.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="https://learn.hashicorp.com/consul/security-networking/datacenters"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div class="code-sample">
<div>
<span></span>
<div class="code">
<CodeBlock
prefix="terminal"
code={`
$ curl http://localhost:8500/v1/catalog/datacenters
[
"dc1",
"dc2"
]
$ curl http://localhost:8500/v1/catalog/nodes?dc=dc2
[
{
"ID": "7081dcdf-fdc0-0432-f2e8-a357d36084e1",
"Node": "10-0-1-109",
"Address": "10.0.1.109",
"Datacenter": "<code class='keyword'>dc2</code>",
"TaggedAddresses": {
"lan": "10.0.1.109",
"wan": "10.0.1.109"
},
"CreateIndex": 112,
"ModifyIndex": 125
},
...
`}
/>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="g-text-asset large">
<div>
<div>
<h3 class="g-type-display-3">Health Checks</h3>
<p class="g-type-body">
Pairing service discovery with health checking prevents
routing requests to unhealthy hosts and enables services to
easily provide circuit breakers.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="https://learn.hashicorp.com/consul/getting-started/services"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div>
<picture>
<source
type="image/webp"
srcSet="
/img/consul-connect/ui-health-checks/ui-health-checks_230.webp 230w,
/img/consul-connect/ui-health-checks/ui-health-checks_690.webp 690w,
/img/consul-connect/ui-health-checks/ui-health-checks_1290.webp 1290w"
/>
<source
type="image/jpg"
srcSet="
/img/consul-connect/ui-health-checks/ui-health-checks_230.jpg 230w,
/img/consul-connect/ui-health-checks/ui-health-checks_690.jpg 690w,
/img/consul-connect/ui-health-checks/ui-health-checks_1290.jpg 1290w"
/>
<img
src="/img/consul-connect/ui-health-checks/ui-health-checks_1290.jpg"
alt="Health Checks"
/>
</picture>
</div>
</div>
</div>
</section>
<section className="large-padding bg-dark">
<div className="g-grid-container">
<div class="intro">
<h2 class="g-type-display-2">Use Cases</h2>
</div>
<CaseStudySlider
dark
data={{
brand: 'consul',
caseStudies: [
{
company: {
monochromeLogo: {
url:
'https://www.datocms-assets.com/2885/1586530899-twitchextrudedwordmarkblackops.png',
alt: 'Logo dark',
format: 'png',
},
whiteLogo: {
url:
'https://www.datocms-assets.com/2885/1586530633-twitch-wordmark-white.svg',
alt: 'Logo white',
format: 'png',
},
},
headline:
'Twitch - Driving Towards a Modern Infrastructure',
description:
'In this talk from HashiConf 2015, Tarrant Rollins discusses how Twitch uses HashiCorp Consul to overcome legacy infrastructure and solve complex problems.',
caseStudyLink:
'https://www.hashicorp.com/resources/twitch-driving-towards-a-modern-infrastructure',
caseStudyResource: {
image: {
url:
'/img/consul-connect/case-studies/case-study_01.jpg',
alt: 'Twitch - Modern Infrastructure',
format: 'jpg',
},
},
buttonLabel: 'Watch Video',
},
{
company: {
monochromeLogo: {
url:
'https://www.datocms-assets.com/2885/1522341143-jet-black.svg',
alt: 'Logo dark',
format: 'svg',
},
whiteLogo: {
url:
'https://www.datocms-assets.com/2885/1522341147-jet-white.svg',
alt: 'Logo white',
format: 'svg',
},
},
headline:
'Jet.com - Nomad Auto-Proxy with Consul-Template and NGINX',
description:
'Justen Walker explains how Jet.com uses HashiCorp Consul and Nomad to allow hundreds of developers to have self-service access, despite relying on NGINX static configs—and with a remarkably small DevOps team.',
caseStudyLink:
'https://www.hashicorp.com/resources/jet-com-nomad-auto-proxy-consul-template-nginx',
caseStudyResource: {
image: {
url:
'/img/consul-connect/case-studies/case-study_02.jpg',
alt: 'Jet - Nomad Auto-Proxy',
format: 'jpg',
},
},
buttonLabel: 'Watch Video',
},
],
}}
/>
</div>
</section>
<section class="g-section g-cta-section large-padding">
<div>
<h2 class="g-type-display-2">Ready to get started?</h2>
<a href="/downloads.html" class="button download white">
<svg
xmlns="http://www.w3.org/2000/svg"
width="20"
height="22"
viewBox="0 0 20 22"
>
<path d="M9.292 15.706a1 1 0 0 0 1.416 0l3.999-3.999a1 1 0 1 0-1.414-1.414L11 12.586V1a1 1 0 1 0-2 0v11.586l-2.293-2.293a1 1 0 1 0-1.414 1.414l3.999 3.999zM20 16v3c0 1.654-1.346 3-3 3H3c-1.654 0-3-1.346-3-3v-3a1 1 0 1 1 2 0v3c0 .551.448 1 1 1h14c.552 0 1-.449 1-1v-3a1 1 0 1 1 2 0z" />
</svg>
Download
</a>
<a
href="https://learn.hashicorp.com/consul/getting-started/services"
class="button secondary white"
>
Explore docs
</a>
</div>
</section>
</div>
</>
)
}

View File

@ -1,51 +0,0 @@
.intro {
text-align: center;
margin-bottom: 64px;
}
.g-section.border-top {
border-top: 1px solid #e5e6eb;
}
.g-cta-section.g-section {
align-items: center;
background: var(--consul);
display: flex;
justify-content: center;
padding-left: 15px;
padding-right: 15px;
position: relative;
text-align: center;
overflow: hidden;
&:after {
content: '';
background: url('/img/consul-connect/mesh.svg') top center;
background-size: cover;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
opacity: 0.2;
transform: scale(1.3, 1.3);
}
& > div {
z-index: 1;
}
& h2 {
color: var(--white);
margin-top: 0;
}
& .button + .button {
margin-left: 18px;
}
}
.bg-dark {
background: #252937 !important;
color: #fff;
}

View File

@ -1,435 +0,0 @@
import CallToAction from '@hashicorp/react-call-to-action'
import CodeBlock from '@hashicorp/react-code-block'
export default function ServiceMesh() {
return (
<>
<div className="consul-connect">
<CallToAction
heading="Service Mesh made easy"
content="Service discovery, identity-based authorization, and L7 traffic management abstracted from application code with proxies in the service mesh pattern"
brand="consul"
links={[
{ text: 'Download', url: '/downloads' },
{
text: 'Explore Docs',
url:
'https://learn.hashicorp.com/consul/getting-started/services',
},
]}
/>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="intro">
<h2 class="g-type-display-2">Features</h2>
</div>
<div class="g-text-asset reverse">
<div>
<div>
<h3 class="g-type-display-3">Layer 7 Traffic Management</h3>
<p class="g-type-body">
Service-to-service communication policy at Layer 7 can be
managed centrally, enabling advanced traffic management
patterns such as service failover, path-based routing, and
traffic shifting that can be applied across public and
private clouds, platforms, and networks.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="/docs/connect/l7-traffic-management.html"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div class="code-sample">
<div>
<span></span>
<CodeBlock
prefix="terminal"
code={`
Kind = "service-splitter"
Name = "billing-api"
Splits = [
{
Weight = 10
ServiceSubset = "v2"
},
{
Weight = 90
ServiceSubset = "v1"
},
]
`}
/>
</div>
</div>
</div>
</div>
</section>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="g-text-asset large">
<div>
<div>
<h3 class="g-type-display-3">Layer 7 Observability</h3>
<p class="g-type-body">
Centrally managed service observability at Layer 7 including
detailed metrics on all service-to-service communication
such as connections, bytes transferred, retries, timeouts,
open circuits, and request rates, response codes.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="/docs/connect/observability.html"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div>
<picture>
<source
type="image/png"
srcSet="/img/consul-connect/mesh-observability/metrics_300.png 300w, /img/consul-connect/mesh-observability/metrics_976.png 976w, /img/consul-connect/mesh-observability/metrics_1200.png 1200w"
/>
<img
src="/img/consul-connect/mesh-observability/metrics_1200.png"
alt="Metrics dashboard"
/>
</picture>
</div>
</div>
</div>
</section>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="g-text-asset reverse">
<div>
<div>
<h3 class="g-type-display-3">
Secure services across any runtime platform
</h3>
<p class="g-type-body">
Secure communication between legacy and modern workloads.
Sidecar proxies allow applications to be integrated without
code changes and Layer 4 support provides nearly universal
protocol compatibility.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="/docs/connect/proxies.html"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div>
<picture>
<source
type="image/webp"
srcSet="
/img/consul-connect/grid_3/grid_3_300.webp 300w,
/img/consul-connect/grid_3/grid_3_976.webp 976w,
/img/consul-connect/grid_3/grid_3_1256.webp 1256w"
/>
<source
type="image/png"
srcSet="
/img/consul-connect/grid_3/grid_3_300.png 300w,
/img/consul-connect/grid_3/grid_3_976.png 976w,
/img/consul-connect/grid_3/grid_3_1256.png 1256w"
/>
<img
src="/img/consul-connect/grid_3/grid_3_1256.png"
alt="Secure services across any runtime platform"
/>
</picture>
</div>
</div>
</div>
</section>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="g-text-asset">
<div>
<div>
<h3 class="g-type-display-3">
Certificate-Based Service Identity
</h3>
<p class="g-type-body">
TLS certificates are used to identify services and secure
communications. Certificates use the SPIFFE format for
interoperability with other platforms. Consul can be a
certificate authority to simplify deployment, or integrate
with external signing authorities like Vault.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="/docs/connect/ca.html"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div class="logos">
<div>
<img src="/img/consul-connect/logos/vault.png" alt="Vault" />
<img
src="/img/consul-connect/logos/spiffe.png"
alt="Spiffe"
/>
</div>
</div>
</div>
</div>
</section>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="g-text-asset reverse">
<div>
<div>
<h3 class="g-type-display-3">Encrypted communication</h3>
<p class="g-type-body">
All traffic between services is encrypted and authenticated
with mutual TLS. Using TLS provides a strong guarantee of
the identity of services communicating, and ensures all data
in transit is encrypted.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="/docs/connect/security.html"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div class="code-sample">
<div>
<span></span>
<CodeBlock
prefix="terminal"
code={`
$ consul connect proxy -service web \\
-service-addr 127.0.0.1:8000
-listen 10.0.1.109:7200
==> Consul Connect proxy starting...
Configuration mode: Flags
Service: web
Public listener: 10.0.1.109:7200 => 127.0.0.1:8000
...
$ tshark -V \\
-Y "ssl.handshake.certificate" \\
-O "ssl" \\
-f "dst port 7200"
Frame 39: 899 bytes on wire (7192 bits), 899 bytes captured (7192 bits) on interface 0
Internet Protocol Version 4, Src: 10.0.1.110, Dst: 10.0.1.109
Transmission Control Protocol, Src Port: 61918, Dst Port: 7200, Seq: 136, Ack: 916, Len: 843
Secure Sockets Layer
TLSv1.2 Record Layer: Handshake Protocol: Certificate
Version: TLS 1.2 (0x0303)
Handshake Protocol: Certificate
RDNSequence item: 1 item (id-at-commonName=Consul CA 7)
RelativeDistinguishedName item (id-at-commonName=Consul CA 7)
Id: 2.5.4.3 (id-at-commonName)
DirectoryString: printableString (1)
printableString: Consul CA 7
`}
/>
</div>
</div>
</div>
</div>
</section>
<section class="g-section border-top large-padding">
<div class="g-container">
<div class="g-text-asset">
<div>
<div>
<h3 class="g-type-display-3">Mesh Gateway</h3>
<p class="g-type-body">
Connect between different cloud regions, VPCs and between
overlay and underlay networks without complex network
tunnels and NAT. Mesh Gateways solve routing at TLS layer
while preserving end-to-end encryption and limiting attack
surface area at the edge of each network.
</p>
<p>
<a
class="learn-more g-type-buttons-and-standalone-links"
href="/docs/connect/mesh_gateway.html"
>
Learn more
<svg
xmlns="http://www.w3.org/2000/svg"
width="6"
height="10"
viewBox="0 0 6 10"
>
<g
fill="none"
fillRule="evenodd"
transform="translate(-6 -3)"
>
<mask id="a" fill="#fff">
<path d="M7.138 3.529a.666.666 0 1 0-.942.942l3.528 3.53-3.529 3.528a.666.666 0 1 0 .943.943l4-4a.666.666 0 0 0 0-.943l-4-4z" />
</mask>
<g fill="#1563FF" mask="url(#a)">
<path d="M0 0h16v16H0z" />
</g>
</g>
</svg>
</a>
</p>
</div>
</div>
<div>
<picture>
<img
src="/img/consul-connect/mesh-gateway/gateway_1200.png"
alt="Mesh gateway diagram"
/>
</picture>
</div>
</div>
</div>
</section>
<section class="g-section g-cta-section large-padding">
<div>
<h2 class="g-type-display-2">Ready to get started?</h2>
<a href="/downloads.html" class="button download white">
<svg
xmlns="http://www.w3.org/2000/svg"
width="20"
height="22"
viewBox="0 0 20 22"
>
<path d="M9.292 15.706a1 1 0 0 0 1.416 0l3.999-3.999a1 1 0 1 0-1.414-1.414L11 12.586V1a1 1 0 1 0-2 0v11.586l-2.293-2.293a1 1 0 1 0-1.414 1.414l3.999 3.999zM20 16v3c0 1.654-1.346 3-3 3H3c-1.654 0-3-1.346-3-3v-3a1 1 0 1 1 2 0v3c0 .551.448 1 1 1h14c.552 0 1-.449 1-1v-3a1 1 0 1 1 2 0z" />
</svg>
Download
</a>
<a
href="https://learn.hashicorp.com/consul/getting-started/services"
class="button secondary white"
>
Explore docs
</a>
</div>
</section>
</div>
</>
)
}

View File

@ -56,7 +56,6 @@
@import './downloads/style.css';
@import './community/style.css';
@import './home/style.css';
@import './discovery/style.css';
/* Print Styles */
@import './print.css';