一篇来自Deis
简介
Deis是一个开源的私有平台即服务(PaaS),它简化了在自己的服务器上部署和管理应用程序的过程。通过利用Docker和CoreOS等技术,Deis在您选择的托管提供商上提供了类似于Heroku的工作流程和扩展功能。Deis支持可以在Docker容器中运行的应用程序,并且Deis可以在任何支持CoreOS的平台上运行。
本指南使用DEIS项目的名为Rigger的新工具,指导您完成新的和改进的DEIS配置过程。
预览
如果你的时间不多,这个加速的终端录制(只有一分钟左右长!)展示了我们将在本文的其余部分中介绍的内容:
前提条件
Riger被设计为处理自己的依赖项管理,但在使用它配置DEIS集群之前,您需要设置一些设置。要在家中遵循本指南,您需要:
- DigitalOcean个人访问令牌访问DigitalOcean接口(遵循如何生成个人访问Token)( 令牌必须是读写的** )]
- SSH密钥对(遵循如何在DigitalOcean Droplets)中使用SSH密钥
本教程中的所有命令都可以在本地Mac或Linux工作站上运行(测试了OS X>10.10和Debian/Ubuntu)。它们也可以在液滴上运行,但这并不是必需的。
需要在任何工作站上安装zip
、make
和git
实用程序,才能使用Riger配置Deis集群。
例如,如果您使用的是Ubuntu系统,请使用以下命令安装它们:
1sudo apt-get update
2sudo apt-get install zip make git
本文中使用了git
实用程序来下载rigger和一个示例应用程序。Rigger配置脚本使用zip
和make
实用程序。
如果您运行的是Mac OS X,则还需要同意Xcode许可协议才能使用Git:
1sudo xcodebuild -license
<$>[注] 注: 本文是为Deis 1.12.0版本编写的。 <$>
第一步-安装索具
若要安装rigger,请先使用git
下载:
1git clone https://github.com/deis/rigger.git
更改到创建的目录:
1cd rigger
然后,执行以下命令:
1./rigger
当它第一次运行时,您将看到以下内容:
1[secondary_label Output]
2Downloading rerun from GitHub...
在输出的末尾,您将看到可用命令的列表:
1[secondary_label Output]
2Available commands in module, "rigger":
3checkout: "checkout the Deis repo with version: $VERSION into directory: $DEIS_ROOT"
4configure: "initialize a rigger varsfile to use with future commands"
5 [ --advanced]: "configure all the nitty gritty details of the infrastructure and Deis deployment"
6 [ --provider <>]: "which cloud provider to use to provision a Deis cluster"
7 [ --version <>]: "choose what version of Deis to deploy"
8create-registry: "Create a local dev registry"
9deploy: "Install and Deploy Deis"
10destroy: "destroy all infrastructure created by the provision step"
11provision: "provision new infrastructure and deploy Deis to it"
12 [ --cleanup]: "destroy cluster after action"
13setup-clients: "download and stage deisctl and deis clients for your own use"
14shellinit: "show the current sourceable environment variables (useful for eval-ing)"
15 [ --file <>]: "use a specific file"
16shell-reset: "an eval-able output that unsets variables that have been injected by rigger"
17 [ --file <>]: "use a specific file"
18test: "run a test suite on the provisioned Deis cluster"
19 [ --type <smoke>]: "provide a type of test to run"
20upgrade: "Tests upgrade path for Deis"
21 [ --to <master>]: "Define version of Deis to upgrade to"
22 [ --cleanup]: "destroy cluster after action"
23 --upgrade-style <graceful>: "choose the style of upgrade you'd like to perform"
第二步-配置Deis部署
要将DEIS部署配置为使用DigitalOcean作为提供程序和特定版本的DEIS,我们只需调用:
1./rigger configure --provider "digitalocean" --version "1.12.0"
然后Rigger会问你几个问题。它看起来像这样:
1[secondary_label Output]
2-> What DigitalOcean token should I use? DO_TOKEN (no default)
3[enter or paste your DigitalOcean token here]
4You chose: ******
5
6-> Which private SSH key should be used? SSH_PRIVATE_KEY_FILE [ /Users/sgoings/.ssh/id_dsa ]
71) /Users/sgoings/.ssh/id_dsa
82) ...
9#? [enter a number]
10You chose: 1) /Users/sgoings/.ssh/id_dsa
11
12... output snipped ...
13
14Enter passphrase for /Users/sgoings/.ssh/id_dsa: [enter your ssh passphrase]
15
16Rigger has been configured on this system using ${HOME}/.rigger/<id>/vars
17To use the configuration outside of rigger, you can run:
18
19 source "${HOME}/.rigger/<id>/vars"
你们已经完成了最难的部分!
第三步-盈利!
或者更准确地说:运行rigger
在DigitalOcean上配置基础设施,然后部署Deis!
我们所需要做的就是执行:
1./rigger provision
<$>[警告] 警告: 如果您在Mac OS X上运行rigger,您可能会看到以下错误消息:
1Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.
如果是这样的话,您需要按照前提条件部分中提到的sudo xcode建筑-许可
命令来同意Xcode许可。
<$>
在DigitalOcean上使用Riger配置DeIS的过程大约需要15分钟,流程如下:
1.TerraForm会自动下载并安装到${HOME}/.rigger
中,供Rigger使用
2.Deis客户端(deis
和deisctl
)下载到${home}/.rigger/<id>/bins
3.TerraForm用于在数字海洋中提供3个核心操作系统液滴
4.通过调查新提供的DigitalOcean液滴之一来确定DEISCTL_TUNNEL
5.xip.io用于设置到集群的简单dns入口点
6.执行deisctl安装平台
7.执行deisctl启动平台
<$>[警告] 警告: 如果您在DigitalOcean上部署基础设施时看到以下错误,请确保您的DO访问令牌为读写:
13 error(s) occurred:
2
3* digitalocean_droplet.deis.1: Error creating droplet: Error creating droplet: API Error: 403 Forbidden
4* digitalocean_droplet.deis.0: Error creating droplet: Error creating droplet: API Error: 403 Forbidden
5* digitalocean_droplet.deis.2: Error creating droplet: Error creating droplet: API Error: 403 Forbidden
然后,您可以再次运行./rigger设置
。
<$>
第四步-播放时间!
在使用Rigger创建了Deis集群之后,您应该在其中部署一个应用程序!
首先,返回一些空闲目录空间:
1cd ../
接下来,从Deis项目中获取一个示例应用程序:
1git clone https://github.com/deis/example-nodejs-express.git
切换到新创建的目录:
1cd example-nodejs-express
将所有rigger
环境变量加载到该外壳中:
1source "${HOME}/.rigger/<id>/vars"
然后向此DEIS群集注册管理帐户:
1deis auth:register http://deis.${DEIS_TEST_DOMAIN}
系统将提示您输入一些信息以创建帐户:
1[secondary_label Output]
2username: [ enter a username ]
3password: [ enter a password ]
4password (confirm): [ enter the same password ]
5email: [ enter an email for this user ]
6Registered <username>
7Logged in as <username>
将公钥添加到Deis集群:
1deis keys:add
您将看到以下内容:
1[secondary_label Output]
2Found the following SSH public keys:
31) deiskey.pub deiskey
42) id_dsa.pub sgoings
50) Enter path to pubfile (or use keys:add <key_path>)
6Which would you like to use with Deis? [ enter number ]
您应该选择与您在rigger配置
步骤中选择的私钥一起使用的公钥。
添加GIT遥控器以指向DEIS群集:
1deis apps:create
您将看到以下内容:
1[secondary_label Output]
2Creating Application... done, created hearty-kingfish
3Git remote deis added
4remote available at ssh://git@deis.${DEIS_TEST_DOMAIN}:2222/hearty-kingfish.git
现在,用力推!
1git push deis master
这可能需要一段时间。您最终应该会在输出的末尾看到以下内容:
1[secondary_label Output]
2-----> Launching...
3 done, hearty-kingfish:v2 deployed to Deis
4
5 http://hearty-kingfish.${DEIS_TEST_DOMAIN}
6
7 To learn more, use `deis help` or visit http://deis.io
继续并在您的浏览器中加载该URL!(这款应用程序非常简单,它只需打印出:)
第五步--击倒一切!
一旦你玩了一下你的新Deis集群...把它都拆了可能是个好主意,对吧?这很简单。
返回rigger
目录:
1cd ../rigger
然后,摧毁它:
1./rigger destroy
结论
在本指南中,您能够看到Deis团队将如何让开发人员、运营商和开源贡献者的生活变得更轻松。由引擎盖下的http://deis.io))和作为基础设施提供商的闪电般快速的DigitalOcean的成功结合,调配DEIS群集现在借助Rigger变得轻而易举。