首页 > 安全资讯 >

DockerUniversalControlPlane(UCP)——提供企业级的容器云的解决方案

16-08-06

DockerUniversalControlPlane(UCP)——提供企业级的容器云的解决方案。

我所关注的Docker技术还只是在裸机环境下部署docker,或者通过Swarm将多个裸机组成集群等,而且多有的操作都是建立在命令行上面,CLI是专业人士的最爱,普通用户更喜欢使用可视化的管理界面,当然我们目前还没有怎么提出Docker云,我觉得如果升级到Docker云,我们就需要以一个类似OpenStack Horizon的可视化管理界面,将Docker镜像、网络、volumn、容器(生命周期、监控等),宿主机集群管理全部一体化的统一管理。

接下来,我有一个好消息,一个坏消息,先听哪一个?

好消息是上述的可视化管理界面肯定有了,就是本博客主要介绍的Docker Universal Control Plane(UCP),

Docker Universal Control Plane(UCP)是Docker公司在2015年底巴塞罗那的开发者大会上发布的,这是一个跟单信用证,是一个新的Docker支付服务的组合的一部分,旨在帮助运维团队轻松地设置一个集群,使开发人员可以快速部署Dockerized应用。他们构建Docker DataCenter的其中重要的组成部分。

 

 

坏消息是他需要商业的许可授权。

我们先看一下相关的管理界面是什么样子

 

 

系统架构

UCP是一个基于Docker的集群管理工具,也即集群中每个节点都应该安装Docker Engine。

UCP集群包含两种节点:

- Controller: 管理集群,并持久化集群配置

- Node:运行容器

 

ucp-architect

 

在一个节点上安装UPC时,它就是一个Controller节点。在Controller上会启动10个容器。

名称描述

ucp-proxyTLS代理,用于保护访问本地Docker Engine的安全

ucp-controllerUCP应用,使用kv store持久化存储配置

ucp-swarm-manager提供集群能力,使用kv store选择primary主机和记录集群成员

ucp-swarm-join提供Heartbeat功能,用于在kv store上记录心跳,表示此节点正常有效。如果节点宕机了,heartbeat停止,节点将从集群中移除

ucp-auth-api被UCP和UTR用来身份识别和授权的核心API

ucp-auth-worker按计划执行LDAP同步,清除ucp-auth-store中的数据

ucp-auth-store为用户、组织和团队存储授权配置和数据

ucp-auth-kv用于存储UCP配置,仅供UCP内部使用,不用于其它目的

ucp-cluster-root-ca颁发证书的CA,在添加节点或使用客户端管理包时使用

ucp-cluster-client-ca授权用户捆绑的CA,仅在没有外部根CA的环境中安装UCP时使用

当一个节点以Node加入UCP集群时,它将启动两个容器:ucp-proxy和ucp-swarm-join

系统需求

下面我们看看如何部署,部署起来比较简单,基本上就是先下载环境的依赖包,然后下载涉及的镜像运行容器即可。

系统需求

2.00 GB of RAM

3.00 GB of available disk space

A static IP address

One of the supported operating systems installed:

RHEL 7.0, 7.1, or 7.2

Ubuntu 14.04 LTS

CentOS 7.1

SUSE Linux Enterprise 12

Linux kernel version 3.10 or higher

CS Docker Engine version 1.10 or higher 如果用户环境有比较严格的端口开放权限,还需要对以下端口进行有效开放。

HostsDirectionPortPurpose

controllers, nodesinTCP 443 (configurable)Web app and CLI client access to UCP.

controllers, nodesinTCP 2375Heartbeat for nodes, to ensure they are running.

controllersinTCP 2376 (configurable)Swarm manager accepts requests from UCP controller.

controllers, nodesin, outUDP 4789Overlay networking.

controllers, nodesin, outTCP + UDP 7946Overlay networking.

controllers, nodesinTCP 12376Proxy for TLS, provides access to UCP, Swarm, and Engine.

controllerinTCP 12379Internal node configuration, cluster configuration, and HA.

controllerinTCP 12380Internal node configuration, cluster configuration, and HA.

controllerinTCP 12381Proxy for TLS, provides access to UCP.

controllerinTCP 12382Manages TLS and requests from swarm manager.

controllerinTCP 12383Used by the authentication storage backend.

controllerinTCP 12384Used by authentication storage backend for replication across controllers.

controllerinTCP 12385The port where the authentication API is exposed.

controllerinTCP 12386Used by the authentication worker.

安装过程

本次测试的环境:Ubuntu 14.04 LTS

1、以root用户登录,或者以由sudo授权的其他用户登录

2、添加docker的CS包的Key

$ curl -s 'https://sks-keyservers.net/pks/lookup?op=get&search=0xee6d536cf7dc86e2d7d56f59a178ac6c6238f52e' | sudo apt-key add --import

3、安装HTTPS 包,后面我们启动UCP管理界面,需要HTTPS

$ sudo apt-get update && sudo apt-get install apt-transport-https

4、安装虚拟驱动(更新LTS核心库后需要重启一下OS)

$ sudo apt-get install -y linux-image-extra-virtual

5、添加repository

$ echo "deb https://packages.docker.com/1.11/apt/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list

6、安装 Docker Engine 及其依赖

$ sudo apt-get update && sudo apt-get install docker-engine

7、 确认Docker daemon在运行

$ sudo docker info

8、安装UCP(输入UCP的管理IP即可)

docker run --rm -it --name ucp \

-v /var/run/docker.sock:/var/run/docker.sock \

docker/ucp install -i \

--host-address <$UCP_PUBLIC_IP>

该过程可能根据网络下载相关镜像,需要用户输入UCP 管理密码,为SAN设置别名,有时候可能还会出现无法获得docker/ucp-swarm:1.1.1镜像,你可以手动先下载,docker pull .....,然后再重新执行上述命令即可。

root@controller:~# docker run --rm -it --name ucp \

> -v /var/run/docker.sock:/var/run/docker.sock \

> docker/ucp install -i \

> --host-address 192.168.12.130

Unable to find image 'docker/ucp:latest' locally

latest: Pulling from docker/ucp

d0ca440e8637: Pull complete

61351977b3a5: Pull complete

2885d5b10a43: Pull complete

Digest: sha256:b4fc969bc5d7581e750123cb8f16393e388a101d7a2ef18297815cc6800d161e

Status: Downloaded newer image for docker/ucp:latest

INFO[0000] Verifying your system is compatible with UCP

INFO[0000] Your engine version 1.11.2 is compatible

WARN[0000] Your system does not have enough memory. UCP suggests a minimum of 2 .00 GB, but you only have 1.95 GB. You may have unexpected errors.

Please choose your initial UCP admin password:

Confirm your initial password:

INFO[0033] Pulling required images... (this may take a while)

WARN[0222] None of the hostnames we'll be using in the UCP certificates [controller 127.0.0.1 172.17.0.1 192.168.12.130] contain a domain component. Your generated certs may fail TLS validation unless you only use one of these shortnames or IPs to connect. You can use the --san flag to add more aliases

You may enter additional aliases (SANs) now or press enter to proceed with the above list.

Additional aliases: ucp-aliase

INFO[0309] Installing UCP with host address 192.168.12.130 - If this is incorrect, please specify an alternative address with the '--host-address' flag

INFO[0000] Checking that required ports are available and accessible

INFO[0002] Generating UCP Cluster Root CA

INFO[0027] Generating UCP Client Root CA

INFO[0039] Deploying UCP Containers

INFO[0053] New configuration established. Signalling the daemon to load it...

INFO[0054] Successfully delivered signal to daemon

INFO[0054] UCP instance ID: JAIF:SI2Y:NVOR:DRXO:K45R:4KHI:5VWL:JVRM:PCYZ:GYZ6:OBUZ:ZQK6

INFO[0054] UCP Server SSL: SHA-256 Fingerprint=2F:52:02:6A:E4:20:90:8D:87:D0:76:EB:5B:BB:2B:42:CA:35:EE:98:E8:EA:3A:B8:28:0E:81:20:CA:09:C2:DC

INFO[0054] Login as "admin"/(your admin password) to UCP at https://192.168.12.130:443

查看镜像

root@controller:~# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

9aa7639fca7f docker/ucp-controller:1.1.1 "/bin/controller serv" About an hour ago Up About an hour 0.0.0.0:443->8080/tcp ucp-controller

8e7f6be77f3c docker/ucp-auth:1.1.1 "/usr/local/bin/enzi " About an hour ago Up About an hour 0.0.0.0:12386->4443/tcp ucp-auth-worker

3c02b188385a docker/ucp-auth:1.1.1 "/usr/local/bin/enzi " About an hour ago Up About an hour 0.0.0.0:12385->4443/tcp ucp-auth-api

54f10d1148d3 docker/ucp-auth-store:1.1.1 "/usr/local/bin/rethi" About an hour ago Up About an hour 0.0.0.0:12383-12384->12383-12384/tcp ucp-auth-store

2935b1e78372 docker/ucp-cfssl:1.1.1 "/bin/cfssl serve -ad" About an hour ago Up About an hour 8888/tcp, 0.0.0.0:12381->12381/tcp ucp-cluster-root-ca

6fa7f75cda7d docker/ucp-cfssl:1.1.1 "/bin/cfssl serve -ad" About an hour ago Up About an hour 8888/tcp, 0.0.0.0:12382->12382/tcp ucp-client-root-ca

e11c4c9aaeb9 docker/ucp-swarm:1.1.1 "/swarm manage --tlsv" About an hour ago Up About an hour 0.0.0.0:2376->2375/tcp ucp-swarm-manager

cea11e14f29f docker/ucp-swarm:1.1.1 "/swarm join --discov" About an hour ago Up About an hour 2375/tcp ucp-swarm-join

ff88764d2d9c docker/ucp-proxy:1.1.1 "/bin/run" About an hour ago Up About an hour 0.0.0.0:12376->2376/tcp ucp-proxy

a7abb196fbfd docker/ucp-etcd:1.1.1 "/bin/etcd --data-dir" About an hour ago Up About an hour 2380/tcp, 4001/tcp, 7001/tcp, 0.0.0.0:12380->12380/tcp, 0.0.0.0:12379->2379/tcp ucp-kv

9、下载使用许可

前往Docker Store (https://store.docker.com/bundles/docker-datacenter)下载使用许可

 

 

10、直接输入:https://192.168.27.130:443进入管理界面(启动过程可以直接上传试用许可),然后输入相关用户名和密码即可。

 

 

使用帮助

如果熟悉Horizon的朋友应该有亲和度,用户体验基本类似:

首页基本就是整体的资源展示,包含应用数目、容器数目、镜像数目、宿主机集群数目、CPU和内存利用率

应用项:支持直接使用Docker-Compose创建,当然我也正好通过前几个博客所述的使用docker-compose脚本创建SuperMap iCloudmanager for Docker环境

 

 

以下是我的iCloudManager配置和已经启动了一个iServer容器实例

 

 

容器:这里面可以对整个容器云管理所有的容器实例,包括容器的启动、停止、销毁,查看容器的日志、监控以及通过命令控制台进入进行操作。

 

 

接下来我们看看部署容器,通过UCP部署容器有非常好的配置选项,包括对容器所有的操作,如果你对dockerfile不是很感兴趣,使用GUI方式会更加亲切。

 

 

节点:支持对容器云宿主机集群的节点管理,提供添加具有Cluster的控制节点和普通节点模式,查看宿主机的相关信息。

 

 

添加Add Node,可以添加不同角色的子节点

 

 

其他:可以对Volumn、网络(默认支持Bridge、None、Host模式)以及镜像进行管理,同时更重要的一点,加入了类似openStack的租户概念,有user 和team进行资源隔离。

 

 

可以说,有了UCP,这才是Docker云的开始,有了这种低门槛的管理方式,Docker技术的推广更加的方便。

非常高兴的是,使用SuperMap iCloudManager可以直接支持在UCP方式下运行。

另外,去年,我还在刚刚入门容器世界,已经听到关于DAOCloud、灵雀云都是基于Docker技术的,我想他们应该就是做的这些东西,将Docker的技术进行整合,然后以统一的管理方式形成解决方案。

相关文章
最新文章
热点推荐