From aaf90c9dfc5234887b1b21ea5ce849bb8dde7bbd Mon Sep 17 00:00:00 2001 From: Jim Galasyn Date: Thu, 14 Sep 2017 18:10:06 -0700 Subject: [PATCH] WIP: Add topic on stacks and collections (#4623) Add topic on stacks and collections --- _data/toc.yaml | 2 + .../use-collections-on-stacks.md | 14 -- .../images/deploy-stack-to-collection.png | Bin 0 -> 57702 bytes .../services/deploy-stack-to-collection.md | 121 ++++++++++++++++++ 4 files changed, 123 insertions(+), 14 deletions(-) delete mode 100644 datacenter/ucp/2.2/guides/access-control/use-collections-on-stacks.md create mode 100644 datacenter/ucp/2.2/guides/images/deploy-stack-to-collection.png create mode 100644 datacenter/ucp/2.2/guides/user/services/deploy-stack-to-collection.md diff --git a/_data/toc.yaml b/_data/toc.yaml index e0f13f9e19..1c3e0d25a7 100644 --- a/_data/toc.yaml +++ b/_data/toc.yaml @@ -1510,6 +1510,8 @@ manuals: title: Deploy an app from the UI - path: /datacenter/ucp/2.2/guides/user/services/deploy-app-cli/ title: Deploy an app from the CLI + - path: /datacenter/ucp/2.2/guides/user/services/deploy-stack-to-collection/ + title: Deploy application resources to a collection - sectiontitle: Secrets section: - path: /datacenter/ucp/2.2/guides/user/secrets/ diff --git a/datacenter/ucp/2.2/guides/access-control/use-collections-on-stacks.md b/datacenter/ucp/2.2/guides/access-control/use-collections-on-stacks.md deleted file mode 100644 index 14cfe59e37..0000000000 --- a/datacenter/ucp/2.2/guides/access-control/use-collections-on-stacks.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: Use collections to manage access to stacks -description: Learn how to manage user access to a stack by using collections -keywords: UCP, authentication, user management, stack, collection, role ---- - - A stack is a group of resources identified by a label. You can place the - resources in a stack on multiple collections. Resources are placed in the - user's default collection unless if an explicit `com.docker.ucp.access.label` - is specified within the stack/compose file. - - ## Where to go next - - - [Create and manage teams](create-and-manage-teams.md) diff --git a/datacenter/ucp/2.2/guides/images/deploy-stack-to-collection.png b/datacenter/ucp/2.2/guides/images/deploy-stack-to-collection.png new file mode 100644 index 0000000000000000000000000000000000000000..06e70f9c064c04fb2d84e44a24508e35a1f443d9 GIT binary patch literal 57702 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

QPgOL1{sc-I5m@QI^a%7@ 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 TqWbax@K5=U#_haYW>5YPcxZ~R literal 0 HcmV?d00001 diff --git a/datacenter/ucp/2.2/guides/user/services/deploy-stack-to-collection.md b/datacenter/ucp/2.2/guides/user/services/deploy-stack-to-collection.md new file mode 100644 index 0000000000..b06ae7b13f --- /dev/null +++ b/datacenter/ucp/2.2/guides/user/services/deploy-stack-to-collection.md @@ -0,0 +1,121 @@ +--- +title: Deploy application resources to a collection +description: Learn how to manage user access to application resources by using collections. +keywords: UCP, authentication, user management, stack, collection, role, application, resources +--- + +Docker Universal Control Plane enforces role-based access control when you +deploy services. By default, you don't need to do anything, because UCP deploys +your services to a default collection, unless you specify another one. You can +customize the default collection in your UCP profile page. +[Learn more about access control and collections](../../access-control/manage-access-with-collections.md). + +UCP defines a collection by its path. For example, a user's default collection +has the path `/Shared/Private/`. To deploy a service to a collection +that you specify, assign the collection's path to the *access label* of the +service. The access label is named `com.docker.ucp.access.label`. + +When UCP deploys a service, it doesn't automatically create the collections +that correspond with your access labels. An administrator must create these +collections and [grant users access to them](grant-permissions.md). Deployment +fails if UCP can't find a specified collection or if the user doesn't have +access to it. + +## Deploy a service to a collection by using the CLI + +Here's an example of a `docker service create` command that deploys a service +to a `/Shared/database` collection: + +```bash +$ docker service create \ + --name redis_2 \ + --label com.docker.ucp.access.label="/Shared/database" + redis:3.0.6 + ``` + +## Deploy services to a collection by using a Compose file + +You can also specify a target collection for a service in a Compose file. +In the service definition, add a `labels:` dictionary, and assign the +collection's path to the `com.docker.ucp.access.label` key. + +If you don't specify access labels in the Compose file, resources are placed in +the user's default collection when the stack is deployed. + +You can place a stack's resources into multiple collections, but most of the +time, you won't need to do this. + +Here's an example of a Compose file that specifies two services, WordPress and +MySQL, and gives them the access label `/Shared/wordpress`: + +```none +version: '3.1' + +services: + + wordpress: + image: wordpress + ports: + - 8080:80 + environment: + WORDPRESS_DB_PASSWORD: example + deploy: + labels: + com.docker.ucp.access.label: /Shared/wordpress + mysql: + image: mysql:5.7 + environment: + MYSQL_ROOT_PASSWORD: example + deploy: + labels: + com.docker.ucp.access.label: /Shared/wordpress + +``` + +To deploy the application: + +1. In the UCP web UI, navigate to the **Stacks** page and click **Create Stack**. +2. Name the app "wordpress". +3. From the **Mode** dropdown, select **Services**. +4. Copy and paste the previous compose file into the **Compose.yml** editor. +5. Click **Create** to deploy the application, and click **Done** when the + deployment completes. + +If the `/Shared/wordpress` collection doesn't exist, or if you don't have +a grant for accessing it, UCP reports an error. + +To confirm that the service deployed to the `/Shared/wordpress` collection: + +1. In the **Stacks** page, click **wordpress**. +2. In the details pane, click **Inspect Resource** and select **Services**. +3. On the **Services** page, click **wordpress_mysql**. In the details pane, + make sure that the **Collection** is `/Shared/wordpress`. + +![](../../images/deploy-stack-to-collection.png){: .with-border} + +## Compose files with legacy access labels + +If your Compose file has access labels for versions earlier than UCP 2.2.0, +you have three options: + +- **Keep the existing access labels.** In this case, UCP deploys resources + to the `/Shared/Legacy/` collection. An administrator must create + the legacy collection and grant permissions before you can deploy to it. + +- **Deploy to the default collection.** To specify the user's default + collection instead of a legacy collection, remove the + `com.docker.ucp.access.label` keys from the Compose file. In this case, + UCP deploys resources automatically to the default collection, and no + administrator action is required. + +- **Update the collection.** Change the access label to refer to a new + collection. Be sure to use path notation. For example, + `com.docker.ucp.access.label: /Shared/database` deploys to a child of the + built-in `/Shared` collection. An administrator must create the child + collection and grant permissions before you can deploy to it. + +## Where to go next + +- [Manage access to resources by using collections](../../access-control/manage-access-with-collections.md) +- [Set metadata on a service (-l, –label)](/engine/reference/commandline/service_create/#set-metadata-on-a-service--l-label) +- [Docker object labels](/engine/userguide/labels-custom-metadata.md)