在DigitalOcean上使用Rigger部署Deis
Deis的一篇文章
介绍
Deis 是一个开源私有平台即服务 (PaaS),可简化在您自己的服务器上部署和管理您的应用程序。 通过利用 Docker 和 CoreOS 等技术,Deis 在您选择的托管服务提供商上提供了类似于 Heroku 的工作流程和扩展功能。 Deis 支持可以在 Docker 容器中运行的应用程序,Deis 可以在任何支持 CoreOS 的平台上运行。
本指南使用 Deis 项目的新工具 Rigger 引导您完成新的和改进的 Deis 供应流程。
预览
如果您没有太多时间,这个加速的 终端录制 (只有大约一分钟的时间!)显示了我们将在本文的其余部分进行的操作:
先决条件
Rigger 旨在处理自己的依赖管理,但在使用它配置 Deis 集群之前,您需要设置一些东西。 要在家中遵循本指南,您需要:
- DigitalOcean Personal Access Token 用于访问 DigitalOcean API(按照如何生成个人访问令牌)(令牌必须是可读写的)
- SSH 密钥对(遵循 如何将 SSH 密钥与 DigitalOcean Droplets 一起使用)
本教程中的所有命令都可以在本地 Mac 或 Linux 工作站上运行(OS X >= 10.10 和 Debian/Ubuntu 已测试)。 它们也可以在 Droplet 上运行,但这不是必需的。
zip
、make
和 git
实用程序需要安装在您使用 Rigger 配置 Deis 集群的任何工作站上。
例如,如果您使用的是 Ubuntu 系统,请使用以下命令安装它们:
sudo apt-get update sudo apt-get install zip make git
通过文章使用 git
实用程序来下载 Rigger 和示例应用程序。 Rigger 配置脚本使用 zip
和 make
实用程序。
如果您运行的是 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 分钟,过程如下:
- Terraform会自动下载并安装到
${HOME}/.rigger
供Rigger使用 - Deis客户端(
deis
和deisctl
)下载到${HOME}/.rigger/<id>/bins
- Terraform 用于在 DigitalOcean 中配置 3 个 CoreOS Droplet
DEISCTL_TUNNEL
是通过调查新配置的 DigitalOcean Droplets 之一确定的- xip.io 用于设置集群的简单 DNS 入口点
deisctl install platform
被执行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 的成功组合。