在 DigitalOcean 上使用 Rigger 部署 Deis

一篇来自Deis

简介

Deis是一个开源的私有平台即服务(PaaS),它简化了在自己的服务器上部署和管理应用程序的过程。通过利用Docker和CoreOS等技术,Deis在您选择的托管提供商上提供了类似于Heroku的工作流程和扩展功能。Deis支持可以在Docker容器中运行的应用程序,并且Deis可以在任何支持CoreOS的平台上运行。

本指南使用DEIS项目的名为Rigger的新工具,指导您完成新的和改进的DEIS配置过程。

预览

如果你的时间不多,这个加速的终端录制(只有一分钟左右长!)展示了我们将在本文的其余部分中介绍的内容:

asciicast

前提条件

Riger被设计为处理自己的依赖项管理,但在使用它配置DEIS集群之前,您需要设置一些设置。要在家中遵循本指南,您需要:

本教程中的所有命令都可以在本地Mac或Linux工作站上运行(测试了OS X>10.10和Debian/Ubuntu)。它们也可以在液滴上运行,但这并不是必需的。

需要在任何工作站上安装zipmakegit实用程序,才能使用Riger配置Deis集群。

例如,如果您使用的是Ubuntu系统,请使用以下命令安装它们:

1sudo apt-get update
2sudo apt-get install zip make git

本文中使用了git实用程序来下载rigger和一个示例应用程序。Rigger配置脚本使用zipmake实用程序。

如果您运行的是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客户端(deisdeisctl)下载到${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变得轻而易举。

Published At
Categories with 技术
comments powered by Disqus