mirror of https://github.com/docker/docs.git
Merge pull request #9352 from DawnWood-Docker/cluster-docs
adding new cluster doc for azure
This commit is contained in:
commit
c6daeba7d8
|
|
@ -1300,6 +1300,8 @@ manuals:
|
||||||
title: Release notes
|
title: Release notes
|
||||||
- path: /cluster/aws/
|
- path: /cluster/aws/
|
||||||
title: Docker Cluster on AWS
|
title: Docker Cluster on AWS
|
||||||
|
- path: /cluster/azure/
|
||||||
|
title: Docker Cluster on Azure
|
||||||
- path: /cluster/cluster-file/
|
- path: /cluster/cluster-file/
|
||||||
title: Cluster file structure
|
title: Cluster file structure
|
||||||
- path: /cluster/reference/envvars/
|
- path: /cluster/reference/envvars/
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
@ -79,7 +79,7 @@ a CLI plugin for automated deployment and configuration, and third-party ecosyst
|
||||||
| Platform | Docker Enterprise support |
|
| Platform | Docker Enterprise support |
|
||||||
:----------------------------------------------------------------------------------------|:-------------------------:|
|
:----------------------------------------------------------------------------------------|:-------------------------:|
|
||||||
| [Amazon Web Services](..\cluster\aws.md) | {{ page.green-check }} |
|
| [Amazon Web Services](..\cluster\aws.md) | {{ page.green-check }} |
|
||||||
| Microsoft Azure | {{ page.green-check }} |
|
| [Azure](..\cluster\azure.md) | {{ page.green-check }} |
|
||||||
| VMware | coming soon |
|
| VMware | coming soon |
|
||||||
|
|
||||||
## Docker Enterprise release cycles
|
## Docker Enterprise release cycles
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue