本文永久链接: https://www.xtplayer.cn/kubernetes/automatic-k8s-deployment-tool/

你或者你的团队是否正在寻找下一代架构?或者你已经拥有了这样的架构,但是仍然在探索自动化和管理的最佳方式。在本文中,我们将借助 env0 的能力来部署 Rancher 环境。

  • Rancher:开源 Kubernetes 管理平台

    对于采用容器的团队来说,Rancher 是一个完整的软件堆栈。它解决了多 Kubernetes 集群管理的运维和安全挑战,同时为 DevOps 团队提供了运行容器化工作负载的集成工具。在本次 demo 中我们将使用 Rancher,您可以访问以下链接查看如何快速运行 Rancher:https://github.com/rancher/quickstart

  • env0:基础架构自动化平台

    env0 是一个基础架构自动化平台,它可以将 Terraform 及其他框架下的 deployment 集中到一个协作区,以方便你的整个团队使用。你可以通过下方链接登录并免费使用该产品:https://app.env0.com/login

  • Rancher+env0 的神奇效果

    自动化部署和摧毁环境是加速开发的关键要素。即使你只是将静态环境用于生产和开发这样的事情,有时你也需要重新部署以升级或者进行其他任务。例如,你可能正在重定位 deployment 到另一个区域或可用性区域,或者在动态环境中其他更大的用处,如每个拉取请求的环境。

    将 Kubernetes 用于你的应用基础架构可以使这种开发变得更加容易,因为你已经准备好了你的应用配置部署文件,一旦新的集群启动和运行,就可以重新部署。当你的应用重新部署到新的基础架构并不是一项巨大的工程时,你就可以自由地在你认为合适的时候重新创建那个基础架构。而我们将使用 env0 来自动化该基础架构的拆除和重新部署,使其更加简单。访问以下链接免费注册:https://app.env0.com/login

设置步骤

我们首先需要一些代码。请记住我在前文给你的 repo( https://github.com/rancher/quickstart )。在本例中,由于 AWS 中的身份和访问管理(IAM)设置,我们将使用该文件夹中的 AWS 文件夹,并进行微调。我们的团队将 AWS 中的 12 小时编程密钥用于我们的 lab account。此账户还需要“AWS Session Token”凭证。因此,标准的密钥对并不适用于我们。我在此使用的代码是经过修改的,具体内容可以访问以下链接:

https://github.com/vtimd/quickstart/tree/master/aws

我已经将这些 AWS 凭证作为全局变量放在 env0 中,以便我在之后的其他项目中能够随时使用它们。如果你为每个项目或环境分配不同的凭证集,你可以简单地将它们设置为项目级环境级变量。

全局变量

设置完成后,我们想要配置在项目中使用的模板。这是一个特别简单的过程——起名,然后把它指向我们要使用的 Github repo 就可以了。或者,如果你使用其他版本控制系统(VCS)提供程序,只需提供 URL 和 git token 进行 auth 就可以了。要设置这个模板,点击Organization Templates部分下方的Create New Template即可。

模板设置

如果我们访问项目,我们将看到Create New Project按钮。项目创建也极为简单,仅需命名和描述即可。完成这些之后,我们就进入项目模板中,对新创建的项目进行操作。

我们将模板分配到项目之后,可以开始部署我们的 Rancher 环境。

部署环境

现在我们到了一个有意思的部分。现在我们已经准备好部署 Rancher 环境。在 env0 平台中这是一个简单的过程。我们将启动我们刚刚创建的新项目,然后访问项目环境。在这里我们可以看到当前所有的环境并且可以启动一个新的环境。在这一页中,我们点击Create New Environment

我们完成操作之后,我们将看到项目模板的页面以及可用的所有模板。由于我们只启用了 Rancher-Quickstart 模板,所以我们在这里应该看到的只有这个模板。我们继续点击Run Now

在创建新环境的页面上,我们将填写环境名称、Workspace 名称(可选,因为如果你没有指定名称,env0 会自动生成一个)以及 Revision。我选择了在每次推送到 git 分支时选择重新部署。这基本上实现了环境的持续部署(CD),因为它将在每次推送时重新运行 env0 中的部署。

同时,我在 Destroy Environment 部分设置了一个自定义的 Time-To-Live(TTL)。由于仅仅为了本次 demo,我不希望它永远保留在这里。这是一个很好的功能,可以用于管理短期的 demo、沙箱或开发实例,如果你遗忘了这些已经启动的实例或环境,可能需要为此付费。

此前我们已经设置了变量部分,并且从组织层到项目层再到环境层这些都是继承的。如果产生了冲突,那么优先采用适用范围最小的变量。所以如果你想覆盖任何组织或项目变量,你可以在这里为这个特定环境注入它们。剩下要做的就是点击Run

就这样,我们要开始部署了!

  • Deployment 1
  • Deployment 2

    env0 会在部署完成后马上给你发送邮件。

  • Active 环境信息

当部署完成返回环境时,检查Resources 标签页。这里,我们将找到在 Terraform 文件中所有的指定输出以及由 deployment 创建的 Resources。在这里我们将获取rancher_server_url以访问我们的新环境。

环境信息

在这里,当我们点击 URL 时,它会被复制到剪贴板。我们可以把它放到另一个标签页里,就可以看到 Rancher 登录页面啦。

总 结

大功告成!我们已经介绍了什么是 Rancher 和 env0,为什么它们搭配使用很有效,以及如何设置 env0 以自动化部署 Rancher 与 Terraform 的 Kubernetes 环境。如果你遵循了本教程的步骤,那么现在你应该拥有一个超棒的 Kubernetes 工作环境以部署你的应用程序。所以,打开你的 YAML manifest,好好享受吧!