Merge pull request #9352 from DawnWood-Docker/cluster-docs

adding new cluster doc for azure
This commit is contained in:
Dawn W 2019-09-04 11:33:27 -07:00 committed by GitHub
commit c6daeba7d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 407 additions and 1 deletions

View File

@ -1300,6 +1300,8 @@ manuals:
title: Release notes
- path: /cluster/aws/
title: Docker Cluster on AWS
- path: /cluster/azure/
title: Docker Cluster on Azure
- path: /cluster/cluster-file/
title: Cluster file structure
- path: /cluster/reference/envvars/

404
cluster/azure.md Normal file
View File

@ -0,0 +1,404 @@
---
description: Get started with Docker Cluster on Azure
keywords: documentation, docs, docker, cluster, infrastructure, automation, Azure
title: Get started with Docker Cluster on Azure
---
This topic discusses working with docker clusters in Azure, including how to:
- [Create a cluster](#create-a-cluster)
- [View cluster information](#view-cluster-information)
- [Use context](#use-context)
- [Scale a cluster](#scale-a-cluster)
- [Back up a cluster](#back-up-a-cluster)
- [Upgrade a cluster](#upgrade-a-cluster)
- [Destroy a cluster](#destroy-a-cluster)
## Prerequisites
- Completed installation of [Docker Enterprise 3.0](https://www.docker.com/products/docker-enterprise)
- Sign up for the following items for your Azure account:
- Service Principal UUID
- Service Principal App Secret
- Subscription UUID
- Tenant UUID
More information can be found on obtaining these with either the [Azure CLI](https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?view=azure-cli-latest) or through the [Azure Portal](https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal).
To securely utilize this Azure credential information, we will create a cluster secrets
file which will inject this data into the environment at runtime. For example, create
a file named `my-azure-creds.sh` similar to the following containing your credentials:
```
export ARM_CLIENT_ID='aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
export ARM_CLIENT_SECRET='ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890abcdef='
export ARM_SUBSCRIPTION_ID='ffffffff-gggg-hhhh-iiii-jjjjjjjjjjjj'
export ARM_TENANT_ID='kkkkkkkk-llll-mmmm-nnnn-oooooooooooo'
```
This file should be treated as sensitive data with file permissions set appropriately.
To use this file, we _don't_ source or run this file directly in the shell. Instead,
we reference this file via the CLUSTER_SECRETS_FILE variable in our environment before
running cluster:
```
$ export CLUSTER_SECRETS_FILE=~/.my-secrets/my-azure-creds.sh
$ docker cluster create ....
```
Docker cluster will bindmount this file into its container runtime to inject the
credential data as needed.
## Create a cluster
When you create a docker cluster in Azure, the cluster created has:
- 3 UCP Managers
- 3 Workers
- 3 DTR Replicas
Create a file called `cluster.yml` in your directory and paste this in:
```yaml
variable:
region: "Azure region to deploy"
ucp_password:
type: prompt
provider:
azurerm:
region: ${region}
cluster:
engine:
version: ee-stable-19.03
ucp:
version: docker/ucp:3.2.0
username: admin
password: ${ucp_password}
dtr:
version: docker/dtr:2.7.1
resource:
azurerm_virtual_machine:
managers:
quantity: 3
registry:
quantity: 3
workers:
quantity: 3
azurerm_lb:
ucp:
instances:
- managers
ports:
- "443:443"
- "6443:6443"
```
Provide values for the variable section. For instance:
region: "centralus"
The values will be substituted in the cluster definition. This makes it
easy to define a re-usable cluster definition and then change the variables
to create multiple instances of a cluster.
Run `docker cluster create --file cluster.yml --name quickstart`
$ docker cluster create --file cluster.yml --name quickstart
Please provide a value for ucp_password:
Checking for licenses on Docker Hub
Docker Enterprise Platform 3.0
Planning cluster on azurerm OK
Creating: [===========> ] 19% [ ]
After about 5-10 minutes, depending on amount resources requested, the cluster will be provisioned in the cloud and Docker Enterprise Platform installation will begin:
$ docker cluster create --file cluster.yml --name quickstart
Please provide a value for ucp_password:
Checking for licenses on Docker Hub
Docker Enterprise Platform 3.0
Planning cluster on azurerm OK
Creating: [==========================================================] 100% OK
Installing Docker Enterprise Platform OK
After about 15-20 minutes, Docker Enterprise installation will complete:
$ docker cluster create --file cluster.yml --name quickstart
Please provide a value for ucp_password:
Checking for licenses on Docker Hub
Docker Enterprise Platform 3.0
Planning cluster on azurerm OK
Creating: [==========================================================] 100% OK
Installing Docker Enterprise Platform OK
Installing Docker Enterprise Engine OK
Installing Docker Universal Control Plane OK
Installing Docker Trusted Registry OK
quickstart
Successfully created context "quickstart"
Connect to quickstart at:
https://ucp-e58dd2a77567-y4pl.centralus.cloudapp.azure.com
e58dd2a77567
After all operations complete succesfully, the cluster id will be the last statement
to print. You can login to the URL and begin interacting with the cluster.
## View cluster information
To see an inventory of the current clusters you've created, run `docker cluster ls`
$ docker cluster ls
ID NAME PROVIDER ENDPOINT STATE
e58dd2a77567 quickstart azurerm https://ucp-e58dd2a77567-y4pl.centralus.cloudapp.azure.com running
To see detailed information about an individual cluster, run `docker cluster inspect quickstart`
$ docker cluster inspect quickstart
```yaml
name: quickstart
shortid: e58dd2a77567
variable:
region: centralus
ucp_password: xxxxxxxxxx
provider:
azurerm:
environment: public
region: centralus
version: ~> 1.32.1
cluster:
dtr:
version: docker/dtr:2.7.1
engine:
storage_volume: /dev/disk/azure/scsi1/lun0
url: https://storebits.docker.com/ee/ubuntu/sub-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
version: ee-stable-19.03
kubernetes:
cloud_provider: true
load_balancer: false
nfs_storage: false
subscription:
id: sub-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
license: /data/license/docker-ee.lic
trial: "True"
ucp:
azure_ip_count: "128"
pod_cidr: 172.31.0.0/16
username: admin
version: docker/ucp:3.2.0
resource:
azurerm_lb:
ucp:
_running:
dns_name: ucp-e58dd2a77567-y4pl.centralus.cloudapp.azure.com
path: /data/ssl-certs/
ports:
- 443:443
- 6443:6443
azurerm_virtual_machine:
managers:
data_disk_size: "40"
enable_public_ips: "true"
instance_type: Standard_DS3_v2
os: Ubuntu 18.04
quantity: 3
role: manager
registry:
data_disk_size: "40"
enable_public_ips: "true"
instance_type: Standard_DS3_v2
os: Ubuntu 18.04
quantity: 3
role: dtr
workers:
data_disk_size: "40"
enable_public_ips: "true"
instance_type: Standard_DS3_v2
os: Ubuntu 18.04
quantity: 3
role: worker
```
The information displayed by `docker cluster inspect` can be used as a cluster definition to clone the cluster.
## Use context
Docker cluster creates a context on your local machine. To use this context, and interact with the cluster, run `docker context use quickstart`
$ docker context use quickstart
quickstart
Current context is now "quickstart"
To verify that the client is connected to the cluster, run `docker version`
$ docker version
Client: Docker Engine - Enterprise
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: f660560
Built: Thu Jul 25 20:56:44 2019
OS/Arch: darwin/amd64
Experimental: false
Server: Docker Enterprise 3.0
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: f660560
Built: Thu Jul 25 20:57:45 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
Universal Control Plane:
Version: 3.2.0
ApiVersion: 1.40
Arch: amd64
BuildTime: Wed Jul 17 23:27:40 UTC 2019
GitCommit: 586d782
GoVersion: go1.12.7
MinApiVersion: 1.20
Os: linux
Kubernetes:
Version: 1.14+
buildDate: 2019-06-06T16:18:13Z
compiler: gc
gitCommit: 7cfcb52617bf94c36953159ee9a2bf14c7fcc7ba
gitTreeState: clean
gitVersion: v1.14.3-docker-2
goVersion: go1.12.5
major: 1
minor: 14+
platform: linux/amd64
Calico:
Version: v3.5.7
cni: v3.5.7
kube-controllers: v3.5.7
node: v3.5.7
$ docker context use default
default
Current context is now "default"
## Scale a cluster
Open `cluster.yml`. Change the number of workers to 6:
```yaml
resource:
azurerm_virtual_machine:
managers:
quantity: 3
registry:
quantity: 3
workers:
quantity: 6
```
Since the cluster is already created, the next step is to `update` the cluster's
desired state. Run `docker cluster update quickstart --file cluster.yml`
$ docker cluster update quickstart --file cluster.yml
Docker Enterprise Platform 3.0
Preparing quickstart [OK]
Planning cluster on azure [OK]
Updating: [================== ] 30%
After about 10 minutes the update operation adds the new nodes and joins them to the cluster:
$ docker cluster update quickstart --file examples/docs.yml
Please provide a value for ucp_password
Docker Enterprise Platform 3.0
Preparing quickstart [OK]
Planning cluster on azure [OK]
Updating: [==============================================================] 100%
Installing Docker Enterprise Platform Requirements [OK]
Installing Docker Enterprise Engine [OK]
Installing Docker Universal Control Plane [OK]
Installing Docker Trusted Registry [OK]
e58dd2a77567
A quick `docker cluster inspect e58dd2a77567` will show the worker count increased:
```yaml
...
workers:
data_disk_size: "40"
enable_public_ips: "true"
instance_type: Standard_DS3_v2
os: Ubuntu 18.04
quantity: 6
role: worker
```
## Backup a cluster
Before we proceed with more operations on the cluster, let's take a backup of the running cluster. To create a full backup of the cluster, run `docker cluster backup quickstart --file "backup-$(date '+%Y-%m-%d').tar.gz" `
Provide a passphrase to encrypt the UCP backup.
$ docker cluster backup quickstart --file "backup-$(date '+%Y-%m-%d').tar.gz"
Passphrase for UCP backup:
Docker Enterprise Platform 3.0
Create archive file. [OK]
Backup of e58dd2a77567 saved to backup-2019-05-07.tar.gz
Save the backups on external storage for disaster recovery.
To restore a cluster, run `docker cluster restore quickstart --file backup-2019-05-07.tar.gz`
Provide the passphrase from the backup step to decrypt the UCP backup.
## Upgrade a cluster
Open `cluster.yml`. Change the cluster versions:
```yaml
cluster:
dtr:
version: docker/dtr:2.7.0
engine:
version: ee-stable-19.03.01
ucp:
version: docker/ucp:3.2.0
```
Run `docker cluster update quickstart --file cluster.yml `
$ docker cluster update quickstart --file examples/docs.yml
Please provide a value for ucp_password
Docker Enterprise Platform 3.0
Preparing quickstart [OK]
Planning cluster on azure [OK]
Updating: [==============================================================] 100%
Installing Docker Enterprise Platform Requirements [OK]
Upgrading Docker Enterprise Engine [OK]
Upgrading Docker Universal Control Plane [OK]
Upgrading Docker Trusted Registry [OK]
e58dd2a77567
## Destroy a cluster
When the cluster has reached end-of-life, run `docker cluster rm quickstart`
$ docker cluster rm quickstart
Removing quickstart
Removing: [==========================================================] 100% OK
quickstart
e58dd2a77567
## Where to go next
- [Explore the full list of Cluster commands](./reference/index.md)
- [Cluster configuration file reference](./cluster-file/index.md)

View File

@ -79,7 +79,7 @@ a CLI plugin for automated deployment and configuration, and third-party ecosyst
| Platform | Docker Enterprise support |
:----------------------------------------------------------------------------------------|:-------------------------:|
| [Amazon Web Services](..\cluster\aws.md) | {{ page.green-check }} |
| Microsoft Azure | {{ page.green-check }} |
| [Azure](..\cluster\azure.md) | {{ page.green-check }} |
| VMware | coming soon |
## Docker Enterprise release cycles