Update constraint label topic (#130)

* Update constraint label topic

* Incorporate feedback
This commit is contained in:
Jim Galasyn 2017-07-12 11:47:58 -07:00
parent 38166fc4ba
commit a98f8b5f76
5 changed files with 76 additions and 13 deletions

View File

@ -31,14 +31,12 @@ details pane, click **Configure**.
In the **Edit Node** page, scroll down to the **Labels** section. In the **Edit Node** page, scroll down to the **Labels** section.
Click **Add Label**, and add a label that has a key set to `nodel.labels.disk` Click **Add Label**, and add a label with the key `disk` and a value of `ssd`.
and a value of `ssd`.
![](../../images/add-labels-to-cluster-nodes-2.png){: .with-border} ![](../../images/add-labels-to-cluster-nodes-2.png){: .with-border}
When you're done, click **Save** and dismiss the **Edit Node** page. Click **Save** and dismiss the **Edit Node** page. In the node's details
In the node's details pane, click **Labels** to view the labels that are pane, click **Labels** to view the labels that are applied to the node.
applied to the node.
You can also do this from the CLI by running: You can also do this from the CLI by running:
@ -46,20 +44,85 @@ You can also do this from the CLI by running:
$ docker node update --label-add <key>=<value> <node-id> $ docker node update --label-add <key>=<value> <node-id>
``` ```
## Add a constraint to a service ## Deploy a service with constraints
When deploying a service, you can specify constraints, so that the service gets When deploying a service, you can specify constraints, so that the service gets
scheduled only on a node that has a label that fulfills all of the constraints scheduled only on a node that has a label that fulfills all of the constraints
you specify. you specify.
In this example, when users deploy a service, they can add constraints for the In this example, when users deploy a service, they can add a constraint for the
service to be scheduled on nodes that have SSD storage. service to be scheduled only on nodes that have SSD storage.
You can add deployment constraints to your docker-stack.yml file or when you're Navigate to the **Stacks** page. Name the new stack "wordpress", and in the
creating a stack: **Mode** dropdown, check **Services**.
![](../../images/use-contraints-in-stack-deployement.png)
In the **Compose.yml** editor, paste the following stack file.
```
version: "3.1"
services:
db:
image: mysql:5.7
deploy:
placement:
constraints:
- node.labels.disk == ssd
restart_policy:
condition: on-failure
networks:
- wordpress-net
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
deploy:
replicas: 1
placement:
constraints:
- node.labels.disk == ssd
restart_policy:
condition: on-failure
max_attempts: 3
networks:
- wordpress-net
ports:
- "8000:80"
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
networks:
wordpress-net:
```
Click **Create** to deploy the stack, and when the stack deploys,
click **Done**.
![](../../images/use-constraints-in-stack-deployment.png)
Navigate to the **Nodes** page, and click the node that has the
`disk` label. In the details pane, click the **Inspect Resource**
dropdown and select **Containers**.
![](../../images/use-constraints-in-stack-deployment-2.png)
Dismiss the filter and navigate to the **Nodes** page. Click a node that
doesn't have the `disk` label. In the details pane, click the
**Inspect Resource** dropdown and select **Containers**. There are no
WordPress containers scheduled on the node. Dismiss the filter.
## Add a constraint to a service by using the UCP web UI
You can declare the deployment constraints in your docker-stack.yml file or
when you're creating a stack. Also, you can apply them when you're creating
a service.
Or you can apply them when you're creating a service.
To check if a service has deployment constraints, navigate to the To check if a service has deployment constraints, navigate to the
**Services** page and choose the service that you want to check. **Services** page and choose the service that you want to check.
In the details pane, click **Constraints** to list the constraint labels. In the details pane, click **Constraints** to list the constraint labels.
@ -69,7 +132,7 @@ To edit the labels on the service, click **Configure** and select
![](../../images/add-constraint-to-service.png) ![](../../images/add-constraint-to-service.png)
From here, you can add or remove deployment constraints, too. You can add or remove deployment constraints on this page.
## Where to go next ## Where to go next

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 KiB