mirror of https://github.com/hashicorp/consul
Delete old use case pages w/ redirect to new
parent
6ecd9acf11
commit
29a6d814c2
|
@ -5,6 +5,8 @@
|
||||||
|
|
||||||
# Consul Redirects
|
# 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!
|
/api.html /api-docs 301!
|
||||||
/docs/agent/acl-rules.html /docs/acl/acl-rules 301!
|
/docs/agent/acl-rules.html /docs/acl/acl-rules 301!
|
||||||
/docs/agent/acl-rules /docs/acl/acl-rules 301!
|
/docs/agent/acl-rules /docs/acl/acl-rules 301!
|
||||||
|
|
|
@ -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>
|
|
||||||
</>
|
|
||||||
)
|
|
||||||
}
|
|
|
@ -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;
|
|
||||||
}
|
|
|
@ -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>
|
|
||||||
</>
|
|
||||||
)
|
|
||||||
}
|
|
|
@ -56,7 +56,6 @@
|
||||||
@import './downloads/style.css';
|
@import './downloads/style.css';
|
||||||
@import './community/style.css';
|
@import './community/style.css';
|
||||||
@import './home/style.css';
|
@import './home/style.css';
|
||||||
@import './discovery/style.css';
|
|
||||||
|
|
||||||
/* Print Styles */
|
/* Print Styles */
|
||||||
@import './print.css';
|
@import './print.css';
|
||||||
|
|
Loading…
Reference in New Issue