在DigitalOcean上使用Rigger部署Deis

来自菜鸟教程
跳转至:导航、​搜索

Deis的一篇文章

介绍

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

本指南使用 Deis 项目的新工具 Rigger 引导您完成新的和改进的 Deis 供应流程。

预览

如果您没有太多时间,这个加速的 终端录制 (只有大约一分钟的时间!)显示了我们将在本文的其余部分进行的操作:

[1]

先决条件

Rigger 旨在处理自己的依赖管理,但在使用它配置 Deis 集群之前,您需要设置一些东西。 要在家中遵循本指南,您需要:

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

zipmakegit 实用程序需要安装在您使用 Rigger 配置 Deis 集群的任何工作站上。

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

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

通过文章使用 git 实用程序来下载 Rigger 和示例应用程序。 Rigger 配置脚本使用 zipmake 实用程序。

如果您运行的是 Mac OS X,您还需要同意 Xcode 许可协议才能使用 git:

sudo xcodebuild -license

注: 本文是针对Deis 1.12.0 版本编写的。


第 1 步 — 安装 Rigger

要安装 Rigger,首先使用 git 下载它:

git clone https://github.com/deis/rigger.git

切换到创建的目录:

cd rigger

然后,执行以下命令:

./rigger

首次运行时,您将看到以下内容:

OutputDownloading rerun from GitHub...

在输出的末尾,您将看到可用命令的列表:

OutputAvailable commands in module, "rigger":
checkout: "checkout the Deis repo with version: $VERSION into directory: $DEIS_ROOT"
configure: "initialize a rigger varsfile to use with future commands"
   [ --advanced]: "configure all the nitty gritty details of the infrastructure and Deis deployment"
   [ --provider <>]: "which cloud provider to use to provision a Deis cluster"
   [ --version <>]: "choose what version of Deis to deploy"
create-registry: "Create a local dev registry"
deploy: "Install and Deploy Deis"
destroy: "destroy all infrastructure created by the provision step"
provision: "provision new infrastructure and deploy Deis to it"
   [ --cleanup]: "destroy cluster after action"
setup-clients: "download and stage deisctl and deis clients for your own use"
shellinit: "show the current sourceable environment variables (useful for eval-ing)"
   [ --file <>]: "use a specific file"
shell-reset: "an eval-able output that unsets variables that have been injected by rigger"
   [ --file <>]: "use a specific file"
test: "run a test suite on the provisioned Deis cluster"
   [ --type <smoke>]: "provide a type of test to run"
upgrade: "Tests upgrade path for Deis"
   [ --to <master>]: "Define version of Deis to upgrade to"
   [ --cleanup]: "destroy cluster after action"
    --upgrade-style <graceful>: "choose the style of upgrade you'd like to perform"

第 2 步 — 配置 Deis 部署

要将 Deis 部署配置为使用 DigitalOcean 作为提供者和特定版本的 Deis,我们需要做的就是调用:

./rigger configure --provider "digitalocean" --version "1.12.0"

然后 Rigger 会问你几个问题。 它看起来像这样:

Output-> What DigitalOcean token should I use? DO_TOKEN (no default)
[enter or paste your DigitalOcean token here]
You chose: ******

-> Which private SSH key should be used? SSH_PRIVATE_KEY_FILE [ /Users/sgoings/.ssh/id_dsa ]
1) /Users/sgoings/.ssh/id_dsa
2) ...
#? [enter a number]
You chose: 1) /Users/sgoings/.ssh/id_dsa

... output snipped ...

Enter passphrase for /Users/sgoings/.ssh/id_dsa: [enter your ssh passphrase]

Rigger has been configured on this system using ${HOME}/.rigger/<id>/vars
To use the configuration outside of rigger, you can run:

  source "${HOME}/.rigger/<id>/vars"

你已经完成了最困难的部分!

第 3 步 — 利润!

或者更准确地说:运行 rigger 在 DigitalOcean 上配置基础设施,然后部署 Deis!

我们需要做的就是执行:

./rigger provision

警告: 如果您在 Mac OS X 上运行 Rigger,您可能会看到以下错误消息:

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

如果是这样,您需要使用先决条件部分中提到的 sudo xcodebuild -license 命令同意 Xcode 许可证。


在 DigitalOcean 上使用 Rigger 进行 Deis 配置过程大约需要 15 分钟,过程如下:

  1. Terraform会自动下载并安装到${HOME}/.rigger供Rigger使用
  2. Deis客户端(deisdeisctl)下载到${HOME}/.rigger/<id>/bins
  3. Terraform 用于在 DigitalOcean 中配置 3 个 CoreOS Droplet
  4. DEISCTL_TUNNEL 是通过调查新配置的 DigitalOcean Droplets 之一确定的
  5. xip.io 用于设置集群的简单 DNS 入口点
  6. deisctl install platform 被执行
  7. deisctl start platform 被执行

警告: 如果您在 DigitalOcean 上配置基础设施时看到以下错误,请确保您的 DO 访问令牌是读写的:

3 error(s) occurred:

* digitalocean_droplet.deis.1: Error creating droplet: Error creating droplet: API Error: 403 Forbidden
* digitalocean_droplet.deis.0: Error creating droplet: Error creating droplet: API Error: 403 Forbidden
* digitalocean_droplet.deis.2: Error creating droplet: Error creating droplet: API Error: 403 Forbidden

然后您可以再次运行 ./rigger provision


第 4 步 — 游戏时间!

使用 Rigger 创建 Deis 集群后,您应该向其部署应用程序!

首先,回到一些空闲的目录空间:

cd ../

接下来,从 Deis 项目中获取一个示例应用程序:

git clone https://github.com/deis/example-nodejs-express.git

切换到新创建的目录:

cd example-nodejs-express

将所有 rigger 环境变量加载到这个 shell 中:

source "${HOME}/.rigger/<id>/vars"

然后向这个 Deis 集群注册一个管理帐户:

deis auth:register http://deis.${DEIS_TEST_DOMAIN}

系统将提示您输入一些信息以创建帐户:

Outputusername: [ enter a username ]
password: [ enter a password ]
password (confirm): [ enter the same password ]
email: [ enter an email for this user ]
Registered <username>
Logged in as <username>

将您的公钥添加到 Deis 集群:

deis keys:add

您将看到以下内容:

OutputFound the following SSH public keys:
1) deiskey.pub deiskey
2) id_dsa.pub sgoings
0) Enter path to pubfile (or use keys:add <key_path>)
Which would you like to use with Deis? [ enter number ] 

您应该选择与您在 rigger configure 步骤中选择的私钥一起使用的公钥。

添加一个 git 远程指向 Deis 集群:

deis apps:create

您将看到以下内容:

OutputCreating Application... done, created hearty-kingfish
Git remote deis added
remote available at ssh://git@deis.${DEIS_TEST_DOMAIN}:2222/hearty-kingfish.git

现在,推它!

git push deis master

这可能需要一段时间。 您最终应该会在输出的末尾看到以下内容:

Output-----> Launching...
       done, hearty-kingfish:v2 deployed to Deis

       http://hearty-kingfish.${DEIS_TEST_DOMAIN}

       To learn more, use `deis help` or visit http://deis.io

继续在浏览器中加载该 URL! (该应用程序非常简单,它只是打印出:“Powered by Deis”)

第 5 步 — 将其全部击倒!

一旦你对你的新 Deis 集群进行了一些尝试……把它全部拆掉可能是个好主意,是吗? 这很简单。

回到rigger目录:

cd ../rigger

然后,销毁它:

./rigger destroy

结论

在本指南中,您可以看到 Deis 团队将如何让开发人员、运营商和开源贡献者的生活变得更轻松。 现在,使用 Rigger 配置 Deis 集群变得轻而易举,这要归功于引擎盖下的 Terraform 和作为基础设施提供商的闪电般快速的 DigitalOcean 的成功组合。