mirror of https://github.com/docker/docs.git
Move HRM config to interlock
This commit is contained in:
parent
081bbacce2
commit
ad99769c85
|
|
@ -1571,8 +1571,6 @@ manuals:
|
||||||
title: UCP configuration file
|
title: UCP configuration file
|
||||||
- path: /datacenter/ucp/3.0/guides/admin/configure/use-node-local-network-in-swarm/
|
- path: /datacenter/ucp/3.0/guides/admin/configure/use-node-local-network-in-swarm/
|
||||||
title: Use a local node network in a swarm
|
title: Use a local node network in a swarm
|
||||||
- path: /datacenter/ucp/3.0/guides/admin/configure/use-domain-names-to-access-services/
|
|
||||||
title: Use domain names to access services
|
|
||||||
- path: /datacenter/ucp/3.0/guides/admin/configure/use-your-own-tls-certificates/
|
- path: /datacenter/ucp/3.0/guides/admin/configure/use-your-own-tls-certificates/
|
||||||
title: Use your own TLS certificates
|
title: Use your own TLS certificates
|
||||||
- path: /datacenter/ucp/3.0/guides/admin/configure/manage-and-deploy-private-images/
|
- path: /datacenter/ucp/3.0/guides/admin/configure/manage-and-deploy-private-images/
|
||||||
|
|
@ -1707,6 +1705,8 @@ manuals:
|
||||||
section:
|
section:
|
||||||
- title: Get started
|
- title: Get started
|
||||||
path: /datacenter/ucp/3.0/guides/interlock/install/
|
path: /datacenter/ucp/3.0/guides/interlock/install/
|
||||||
|
- title: Manual deployment
|
||||||
|
path: /datacenter/ucp/3.0/guides/interlock/install/manual-deployment/
|
||||||
- title: Production
|
- title: Production
|
||||||
path: /datacenter/ucp/3.0/guides/interlock/install/production/
|
path: /datacenter/ucp/3.0/guides/interlock/install/production/
|
||||||
- title: Offline install
|
- title: Offline install
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,3 @@ or not.
|
||||||
|
|
||||||
Having a grant with the `Scheduler` role against the `/` collection takes
|
Having a grant with the `Scheduler` role against the `/` collection takes
|
||||||
precedence over any other grants with `Node Schedule` on subcollections.
|
precedence over any other grants with `Node Schedule` on subcollections.
|
||||||
|
|
||||||
## Where to go next
|
|
||||||
|
|
||||||
* [Use domain names to access your services](use-domain-names-to-access-services.md)
|
|
||||||
|
|
|
||||||
|
|
@ -1,82 +0,0 @@
|
||||||
---
|
|
||||||
title: Enable using domain names to access services
|
|
||||||
description: Docker Universal Control Plane has an HTTP routing mesh that allows you to make your services accessible through a domain name.
|
|
||||||
keywords: ucp, services, http, https, dns, routing
|
|
||||||
---
|
|
||||||
|
|
||||||
Docker has a transport-layer load balancer, also known as an L4 load balancer.
|
|
||||||
This allows you to access your services independently of the node where they are
|
|
||||||
running.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
In this example, the WordPress service is being served on port 8000.
|
|
||||||
Users can access WordPress using the IP address of any node in the cluster
|
|
||||||
and port 8000. If WordPress is not running in that node, the
|
|
||||||
request is redirected to a node that is.
|
|
||||||
|
|
||||||
UCP extends this and provides an HTTP routing mesh for application-layer
|
|
||||||
load balancing. This allows you to access services with HTTP and HTTPS
|
|
||||||
endpoints using a domain name instead of an IP.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
In this example, the WordPress service listens on port 8000 and is attached to
|
|
||||||
the `ucp-hrm` network. There's also a DNS entry mapping `wordpress.example.org`
|
|
||||||
to the IP addresses of the UCP nodes.
|
|
||||||
|
|
||||||
When users access `wordpress.example.org:8000`, the HTTP routing mesh routes
|
|
||||||
the request to the service running WordPress in a way that is transparent to
|
|
||||||
the user.
|
|
||||||
|
|
||||||
## Enable the HTTP routing mesh
|
|
||||||
|
|
||||||
To enable the HTTP routing mesh, Log in as an administrator, go to the
|
|
||||||
UCP web UI, navigate to the **Admin Settings** page, and click the
|
|
||||||
**Routing Mesh** option. Check the **Enable routing mesh** option.
|
|
||||||
|
|
||||||
{: .with-border}
|
|
||||||
|
|
||||||
By default, the HTTP routing mesh service listens on port 80 for HTTP and port
|
|
||||||
8443 for HTTPS. Change the ports if you already have services that are using
|
|
||||||
them.
|
|
||||||
|
|
||||||
## Under the hood
|
|
||||||
|
|
||||||
Once you enable the HTTP routing mesh, UCP deploys:
|
|
||||||
|
|
||||||
| Name | What | Description |
|
|
||||||
|:----------|:--------|:------------------------------------------------------------------------------|
|
|
||||||
| `ucp-hrm` | Service | Receive HTTP and HTTPS requests and send them to the right service |
|
|
||||||
| `ucp-hrm` | Network | The network used to communicate with the services using the HTTP routing mesh |
|
|
||||||
|
|
||||||
You then deploy a service that exposes a port, attach that service to the
|
|
||||||
`ucp-hrm` network, and create a DNS entry to map a domain name to the IP
|
|
||||||
address of the UCP nodes.
|
|
||||||
|
|
||||||
When a user tries to access an HTTP service from that domain name:
|
|
||||||
|
|
||||||
1. The DNS resolution will point them to the IP of one of the UCP nodes
|
|
||||||
2. The HTTP routing mesh looks at the Hostname header in the HTTP request
|
|
||||||
3. If there's a service that maps to that hostname, the request is routed to the
|
|
||||||
port where the service is listening
|
|
||||||
4. If not, the user receives an `HTTP 503, bad gateway` error.
|
|
||||||
|
|
||||||
For services exposing HTTPS things are similar. The HTTP routing mesh doesn't
|
|
||||||
terminate the TLS connection, and instead leverages an extension to TLS called
|
|
||||||
Server Name Indication, that allows a client to announce in clear the domain
|
|
||||||
name it is trying to reach.
|
|
||||||
|
|
||||||
When receiving a connection in the HTTPS port, the routing mesh looks at the
|
|
||||||
Server Name Indication header and routes the request to the right service.
|
|
||||||
The service is responsible for terminating the HTTPS connection. Note that
|
|
||||||
the routing mesh uses the SSL session ID to make sure that a single SSL
|
|
||||||
session always goes to the same task for the service. This is done for
|
|
||||||
performance reasons so that the same SSL session can be maintained across
|
|
||||||
requests.
|
|
||||||
|
|
||||||
|
|
||||||
## Where to go next
|
|
||||||
|
|
||||||
- [Use your own TLS certificates](use-your-own-tls-certificates.md)
|
|
||||||
- [Run only the images you trust](run-only-the-images-you-trust.md)
|
|
||||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
|
@ -0,0 +1,198 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="740px" height="250px" viewBox="0 0 740 250" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 42 (36781) - http://www.bohemiancoding.com/sketch -->
|
||||||
|
<title>use-domain-names-2</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs>
|
||||||
|
<circle id="path-1" cx="4" cy="4" r="4"></circle>
|
||||||
|
<mask id="mask-2" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||||
|
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||||
|
<use xlink:href="#path-1" fill="black"></use>
|
||||||
|
</mask>
|
||||||
|
<circle id="path-3" cx="4" cy="4" r="4"></circle>
|
||||||
|
<mask id="mask-4" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||||
|
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||||
|
<use xlink:href="#path-3" fill="black"></use>
|
||||||
|
</mask>
|
||||||
|
<circle id="path-5" cx="4" cy="4" r="4"></circle>
|
||||||
|
<mask id="mask-6" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||||
|
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||||
|
<use xlink:href="#path-5" fill="black"></use>
|
||||||
|
</mask>
|
||||||
|
<circle id="path-7" cx="4" cy="4" r="4"></circle>
|
||||||
|
<mask id="mask-8" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||||
|
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||||
|
<use xlink:href="#path-7" fill="black"></use>
|
||||||
|
</mask>
|
||||||
|
<circle id="path-9" cx="4" cy="4" r="4"></circle>
|
||||||
|
<mask id="mask-10" maskContentUnits="userSpaceOnUse" maskUnits="objectBoundingBox" x="-2" y="-2" width="12" height="12">
|
||||||
|
<rect x="-2" y="-2" width="12" height="12" fill="white"></rect>
|
||||||
|
<use xlink:href="#path-9" fill="black"></use>
|
||||||
|
</mask>
|
||||||
|
</defs>
|
||||||
|
<g id="ucp-diagrams" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g id="use-domain-names-2">
|
||||||
|
<g id="nodes" transform="translate(108.000000, 104.000000)">
|
||||||
|
<g id="workers" transform="translate(321.000000, 0.000000)">
|
||||||
|
<g id="node-1" transform="translate(107.000000, 0.000000)">
|
||||||
|
<text id="192.168.99.104" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||||
|
<tspan x="13.4824219" y="116">192.168.99.104</tspan>
|
||||||
|
</text>
|
||||||
|
<g id="node">
|
||||||
|
<g id="node-label">
|
||||||
|
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#445D6E"></path>
|
||||||
|
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="6" y="14">worker node</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="app" transform="translate(1.000000, 79.000000)">
|
||||||
|
<rect id="Rectangle-138" fill="#439FD1" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||||
|
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="38.1953125" y="15">UCP </tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g id="app-copy" transform="translate(1.000000, 56.000000)">
|
||||||
|
<rect id="Rectangle-138" fill="#FFB463" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||||
|
<text id="wordpress:8000" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="10.5390625" y="15">wordpress:8000</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<rect id="node-border" stroke="#445D6E" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||||
|
</g>
|
||||||
|
<g id="node-1-copy">
|
||||||
|
<text id="192.168.99.103" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||||
|
<tspan x="13.4824219" y="116">192.168.99.103</tspan>
|
||||||
|
</text>
|
||||||
|
<g id="node">
|
||||||
|
<g id="node-label">
|
||||||
|
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#E0E4E7"></path>
|
||||||
|
<text id="worker-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="6" y="14">worker node</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="app" transform="translate(1.000000, 79.000000)">
|
||||||
|
<rect id="Rectangle-138" fill="#A1CFE8" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||||
|
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="38.1953125" y="15">UCP</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<rect id="node-border" stroke="#E0E4E7" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="managers">
|
||||||
|
<g id="node-1" transform="translate(214.000000, 0.000000)">
|
||||||
|
<text id="192.168.99.102" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||||
|
<tspan x="13.4824219" y="116">192.168.99.102</tspan>
|
||||||
|
</text>
|
||||||
|
<g id="node">
|
||||||
|
<g id="node-label">
|
||||||
|
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#E0E4E7"></path>
|
||||||
|
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="6" y="14">manager node</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="app" transform="translate(1.000000, 79.000000)">
|
||||||
|
<rect id="Rectangle-138" fill="#A1CFE8" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||||
|
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="38.1953125" y="15">UCP</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<rect id="node-border" stroke="#E0E4E7" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||||
|
</g>
|
||||||
|
<g id="node-1-copy-3" transform="translate(107.000000, 0.000000)">
|
||||||
|
<text id="192.168.99.101" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||||
|
<tspan x="13.4824219" y="116">192.168.99.101</tspan>
|
||||||
|
</text>
|
||||||
|
<g id="node">
|
||||||
|
<g id="node-label">
|
||||||
|
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#E0E4E7"></path>
|
||||||
|
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="6" y="14">manager node</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="app" transform="translate(1.000000, 79.000000)">
|
||||||
|
<rect id="Rectangle-138" fill="#A1CFE8" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||||
|
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="38.1953125" y="15">UCP</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<rect id="node-border" stroke="#E0E4E7" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||||
|
</g>
|
||||||
|
<g id="node-1-copy-2">
|
||||||
|
<text id="192.168.99.100-copy-4" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500" fill="#82949E">
|
||||||
|
<tspan x="13.4824219" y="116">192.168.99.100</tspan>
|
||||||
|
</text>
|
||||||
|
<g id="node">
|
||||||
|
<g id="node-label">
|
||||||
|
<path d="M0,2.00295631 C0,0.896754086 0.897702336,0 1.99174577,0 L71,0 L71,10.6452381 C71,16.5244408 66.2312425,21.2904762 60.3513837,21.2904762 L0,21.2904762 L0,2.00295631 Z" id="Rectangle-127" fill="#E0E4E7"></path>
|
||||||
|
<text id="manager-node" font-family="OpenSans, Open Sans" font-size="8" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="6" y="14">manager node</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="app" transform="translate(1.000000, 79.000000)">
|
||||||
|
<rect id="Rectangle-138" fill="#A1CFE8" x="0" y="0" width="95" height="22" rx="2"></rect>
|
||||||
|
<text id="UCP" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="38.1953125" y="15">UCP</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<rect id="node-border" stroke="#E0E4E7" stroke-width="2" x="0" y="0" width="97" height="102" rx="2"></rect>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="load-balancer" transform="translate(107.000000, 59.000000)">
|
||||||
|
<g id="lb">
|
||||||
|
<rect id="Rectangle-138" fill="#445D6E" x="0" y="0" width="527" height="22" rx="2"></rect>
|
||||||
|
<text id="HTTP-routing-mesh" font-family="OpenSans, Open Sans" font-size="10" font-weight="normal" fill="#FFFFFF">
|
||||||
|
<tspan x="218.33504" y="15">HTTP routing mesh</tspan>
|
||||||
|
</text>
|
||||||
|
</g>
|
||||||
|
<g id="arrow-copy-2" transform="translate(477.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-477.500000, -32.500000) translate(465.500000, 28.500000)">
|
||||||
|
<path d="M2,4 L24,4" id="Line" stroke="#445D6E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||||
|
<g id="Oval">
|
||||||
|
<use fill="#445D6E" fill-rule="evenodd" xlink:href="#path-1"></use>
|
||||||
|
<use stroke="#F7F8F9" mask="url(#mask-2)" stroke-width="4" xlink:href="#path-1"></use>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="arrow-copy-3" transform="translate(370.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-370.500000, -32.500000) translate(358.500000, 28.500000)">
|
||||||
|
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||||
|
<g id="Oval">
|
||||||
|
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-3"></use>
|
||||||
|
<use stroke="#F7F8F9" mask="url(#mask-4)" stroke-width="4" xlink:href="#path-3"></use>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="arrow-copy-4" transform="translate(263.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-263.500000, -32.500000) translate(251.500000, 28.500000)">
|
||||||
|
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||||
|
<g id="Oval">
|
||||||
|
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-5"></use>
|
||||||
|
<use stroke="#F7F8F9" mask="url(#mask-6)" stroke-width="4" xlink:href="#path-5"></use>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="arrow-copy-5" transform="translate(156.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-156.500000, -32.500000) translate(144.500000, 28.500000)">
|
||||||
|
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||||
|
<g id="Oval">
|
||||||
|
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-7"></use>
|
||||||
|
<use stroke="#F7F8F9" mask="url(#mask-8)" stroke-width="4" xlink:href="#path-7"></use>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="arrow-copy-6" transform="translate(49.500000, 32.500000) scale(1, -1) rotate(-90.000000) translate(-49.500000, -32.500000) translate(37.500000, 28.500000)">
|
||||||
|
<path d="M2,4 L24,4" id="Line" stroke="#E0E4E7" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||||
|
<g id="Oval">
|
||||||
|
<use fill="#E0E4E7" fill-rule="evenodd" xlink:href="#path-9"></use>
|
||||||
|
<use stroke="#F7F8F9" mask="url(#mask-10)" stroke-width="4" xlink:href="#path-9"></use>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="user" transform="translate(306.000000, 4.000000)" fill="#82949E">
|
||||||
|
<text id="wordpress.example.or" font-family="OpenSans-Semibold, Open Sans" font-size="10" font-weight="500">
|
||||||
|
<tspan x="0.0424804688" y="42">wordpress.example.org:80</tspan>
|
||||||
|
</text>
|
||||||
|
<path d="M64,13 C67.59125,13 70.5,10.083125 70.5,6.5 C70.5,2.90875 67.59125,0 64,0 C60.40875,0 57.5,2.90875 57.5,6.5 C57.5,10.083125 60.40875,13 64,13 L64,13 Z M64,16.25 C59.669375,16.25 51,18.419375 51,22.75 L51,26 L77,26 L77,22.75 C77,18.419375 68.330625,16.25 64,16.25 L64,16.25 Z" id="Shape"></path>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
|
@ -14,9 +14,13 @@ application traffic.
|
||||||
- [Introduction](intro/index.md)
|
- [Introduction](intro/index.md)
|
||||||
- [What is Interlock](intro/index.md)
|
- [What is Interlock](intro/index.md)
|
||||||
- [Architecture](intro/architecture.md)
|
- [Architecture](intro/architecture.md)
|
||||||
- [Deployment](install/)
|
|
||||||
- [Requirements](install/index.md#requirements)
|
## Deployment
|
||||||
- [Installation](install/index.md#deployment)
|
|
||||||
|
- [Get started](install/index.md)
|
||||||
|
- [Deploy Interlock manually](install/manual-deployment.md)
|
||||||
|
- [Deploy Interlock offline](install/offline.md)
|
||||||
|
- [Deploy Interlock for production](install/production.md)
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,82 +1,42 @@
|
||||||
---
|
---
|
||||||
title: Get started with Interlock
|
title: Get started with Interlock
|
||||||
description: Learn about Interlock, an application routing and load balancing system
|
description: earn about Interlock, an application routing and load balancing system
|
||||||
for Docker Swarm.
|
for Docker Swarm.
|
||||||
keywords: ucp, interlock, load balancing
|
keywords: ucp, interlock, load balancing
|
||||||
---
|
---
|
||||||
|
|
||||||
|
Docker Enterprise Edition has a routing mesh that allows you to make your
|
||||||
|
services available to the outside world using a domain name. This is also
|
||||||
|
known as a layer 7 load balancer.
|
||||||
|
|
||||||
## Requirements
|

|
||||||
|
|
||||||
- [Docker](https://www.docker.com) version 17.06+ is required to use Interlock
|
In this example, the WordPress service is being served on port 8000.
|
||||||
- Docker must be running in [Swarm mode](https://docs.docker.com/engine/swarm/)
|
Users can access WordPress using the IP address of any node in the cluster
|
||||||
- Internet access (see [Offline Installation](offline.md) for installing without internet access)
|
and port 8000. If WordPress is not running in that node, the
|
||||||
|
request is redirected to a node that is.
|
||||||
|
|
||||||
## Deployment
|
Docker EE extends this and provides a routing mesh for application-layer
|
||||||
Interlock uses a configuration file for the core service. The following is an example config
|
load balancing. This allows you to access services with HTTP and HTTPS
|
||||||
to get started. In order to utilize the deployment and recovery features in Swarm we will
|
endpoints using a domain name instead of an IP.
|
||||||
create a Docker Config object:
|
|
||||||
|
|
||||||
```bash
|

|
||||||
$> cat << EOF | docker config create service.interlock.conf -
|
|
||||||
ListenAddr = ":8080"
|
|
||||||
DockerURL = "unix:///var/run/docker.sock"
|
|
||||||
PollInterval = "3s"
|
|
||||||
|
|
||||||
[Extensions]
|
In this example, the WordPress service listens on port 8000, but it is made
|
||||||
[Extensions.default]
|
available to the outside world as `wordpress.example.org`.
|
||||||
Image = "interlockpreview/interlock-extension-nginx:2.0.0-preview"
|
|
||||||
Args = ["-D"]
|
|
||||||
ProxyImage = "nginx:alpine"
|
|
||||||
ProxyArgs = []
|
|
||||||
ProxyConfigPath = "/etc/nginx/nginx.conf"
|
|
||||||
ServiceCluster = ""
|
|
||||||
PublishMode = "ingress"
|
|
||||||
PublishedPort = 80
|
|
||||||
TargetPort = 80
|
|
||||||
PublishedSSLPort = 443
|
|
||||||
TargetSSLPort = 443
|
|
||||||
[Extensions.default.Config]
|
|
||||||
User = "nginx"
|
|
||||||
PidPath = "/var/run/proxy.pid"
|
|
||||||
WorkerProcesses = 1
|
|
||||||
RlimitNoFile = 65535
|
|
||||||
MaxConnections = 2048
|
|
||||||
EOF
|
|
||||||
oqkvv1asncf6p2axhx41vylgt
|
|
||||||
```
|
|
||||||
|
|
||||||
Next we will create a dedicated network for Interlock and the extensions:
|
When users access `wordpress.example.org`, the HTTP routing mesh routes
|
||||||
|
the request to the service running WordPress in a way that is transparent to
|
||||||
|
them.
|
||||||
|
|
||||||
```bash
|
## Enable the routing mesh
|
||||||
$> docker network create -d overlay interlock
|
|
||||||
```
|
|
||||||
|
|
||||||
Now we can create the Interlock service. Note the requirement to constrain to a manager. The
|
To enable the HTTP routing mesh, Log in as an administrator, go to the
|
||||||
Interlock core service must have access to a Swarm manager, however the extension and proxy services
|
UCP web UI, navigate to the **Admin Settings** page, and click the
|
||||||
are recommended to run on workers. See the [Production](production.md) section for more information
|
**Routing Mesh** option. Check the **Enable routing mesh** option.
|
||||||
on setting up for an production environment.
|
|
||||||
|
|
||||||
```bash
|
{: .with-border}
|
||||||
$> docker service create \
|
|
||||||
--name interlock \
|
|
||||||
--mount src=/var/run/docker.sock,dst=/var/run/docker.sock,type=bind \
|
|
||||||
--network interlock \
|
|
||||||
--constraint node.role==manager \
|
|
||||||
--config src=service.interlock.conf,target=/config.toml \
|
|
||||||
interlockpreview/interlock:2.0.0-preview -D run -c /config.toml
|
|
||||||
sjpgq7h621exno6svdnsvpv9z
|
|
||||||
```
|
|
||||||
|
|
||||||
There should be three (3) services created. One for the Interlock service,
|
By default, the routing mesh service listens on port 80 for HTTP and port
|
||||||
one for the extension service and one for the proxy service:
|
8443 for HTTPS. Change the ports if you already have services that are using
|
||||||
|
them.
|
||||||
```bash
|
|
||||||
$> docker service ls
|
|
||||||
ID NAME MODE REPLICAS IMAGE PORTS
|
|
||||||
lheajcskcbby modest_raman replicated 1/1 nginx:alpine *:80->80/tcp *:443->443/tcp
|
|
||||||
oxjvqc6gxf91 keen_clarke replicated 1/1 interlockpreview/interlock-extension-nginx:2.0.0-preview
|
|
||||||
sjpgq7h621ex interlock replicated 1/1 interlockpreview/interlock:2.0.0-preview
|
|
||||||
```
|
|
||||||
|
|
||||||
The Interlock traffic layer is now deployed. Continue with the [Deploying Applications](/usage/index.md) to publish applications.
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,82 @@
|
||||||
|
---
|
||||||
|
title: Deploy Interlock manually
|
||||||
|
description: Learn about Interlock, an application routing and load balancing system
|
||||||
|
for Docker Swarm.
|
||||||
|
keywords: ucp, interlock, load balancing
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
- [Docker](https://www.docker.com) version 17.06+ is required to use Interlock
|
||||||
|
- Docker must be running in [Swarm mode](https://docs.docker.com/engine/swarm/)
|
||||||
|
- Internet access (see [Offline Installation](offline.md) for installing without internet access)
|
||||||
|
|
||||||
|
## Deployment
|
||||||
|
Interlock uses a configuration file for the core service. The following is an example config
|
||||||
|
to get started. In order to utilize the deployment and recovery features in Swarm we will
|
||||||
|
create a Docker Config object:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$> cat << EOF | docker config create service.interlock.conf -
|
||||||
|
ListenAddr = ":8080"
|
||||||
|
DockerURL = "unix:///var/run/docker.sock"
|
||||||
|
PollInterval = "3s"
|
||||||
|
|
||||||
|
[Extensions]
|
||||||
|
[Extensions.default]
|
||||||
|
Image = "interlockpreview/interlock-extension-nginx:2.0.0-preview"
|
||||||
|
Args = ["-D"]
|
||||||
|
ProxyImage = "nginx:alpine"
|
||||||
|
ProxyArgs = []
|
||||||
|
ProxyConfigPath = "/etc/nginx/nginx.conf"
|
||||||
|
ServiceCluster = ""
|
||||||
|
PublishMode = "ingress"
|
||||||
|
PublishedPort = 80
|
||||||
|
TargetPort = 80
|
||||||
|
PublishedSSLPort = 443
|
||||||
|
TargetSSLPort = 443
|
||||||
|
[Extensions.default.Config]
|
||||||
|
User = "nginx"
|
||||||
|
PidPath = "/var/run/proxy.pid"
|
||||||
|
WorkerProcesses = 1
|
||||||
|
RlimitNoFile = 65535
|
||||||
|
MaxConnections = 2048
|
||||||
|
EOF
|
||||||
|
oqkvv1asncf6p2axhx41vylgt
|
||||||
|
```
|
||||||
|
|
||||||
|
Next we will create a dedicated network for Interlock and the extensions:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$> docker network create -d overlay interlock
|
||||||
|
```
|
||||||
|
|
||||||
|
Now we can create the Interlock service. Note the requirement to constrain to a manager. The
|
||||||
|
Interlock core service must have access to a Swarm manager, however the extension and proxy services
|
||||||
|
are recommended to run on workers. See the [Production](production.md) section for more information
|
||||||
|
on setting up for an production environment.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$> docker service create \
|
||||||
|
--name interlock \
|
||||||
|
--mount src=/var/run/docker.sock,dst=/var/run/docker.sock,type=bind \
|
||||||
|
--network interlock \
|
||||||
|
--constraint node.role==manager \
|
||||||
|
--config src=service.interlock.conf,target=/config.toml \
|
||||||
|
interlockpreview/interlock:2.0.0-preview -D run -c /config.toml
|
||||||
|
sjpgq7h621exno6svdnsvpv9z
|
||||||
|
```
|
||||||
|
|
||||||
|
There should be three (3) services created. One for the Interlock service,
|
||||||
|
one for the extension service and one for the proxy service:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$> docker service ls
|
||||||
|
ID NAME MODE REPLICAS IMAGE PORTS
|
||||||
|
lheajcskcbby modest_raman replicated 1/1 nginx:alpine *:80->80/tcp *:443->443/tcp
|
||||||
|
oxjvqc6gxf91 keen_clarke replicated 1/1 interlockpreview/interlock-extension-nginx:2.0.0-preview
|
||||||
|
sjpgq7h621ex interlock replicated 1/1 interlockpreview/interlock:2.0.0-preview
|
||||||
|
```
|
||||||
|
|
||||||
|
The Interlock traffic layer is now deployed. Continue with the [Deploying Applications](/usage/index.md) to publish applications.
|
||||||
|
|
@ -14,9 +14,8 @@ to users at `http://wordpress.example.org`.
|
||||||
|
|
||||||
## Enable the HTTP routing mesh
|
## Enable the HTTP routing mesh
|
||||||
|
|
||||||
Before you start, make sure an administrator user has
|
Before you start, make sure an administrator user has enabled the HTTP routing
|
||||||
[enabled the HTTP routing mesh service](../../admin/configure/use-domain-names-to-access-services.md).
|
mesh service You also need permissions to attach services to the `ucp-hrm` network.
|
||||||
You also need permissions to attach services to the `ucp-hrm` network.
|
|
||||||
|
|
||||||
## Deploy WordPress
|
## Deploy WordPress
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue