HashiCorp路点

2020-10-16 00:07:16

今天,我们很高兴地宣布HashiCorp Waypoint是一个新的开源项目,它为开发人员提供了跨任何平台构建、部署和发布应用程序的一致工作流程。Waypoint使开发人员能够将他们的应用程序从开发到生产放在一个文件中,并使用一个命令进行部署:waypoint up。

Waypoint开箱即用,支持Kubernetes、HashiCorp Nomad、ECS、Google Cloud Run、Azure Container Instance、Docker、BuildPack等。Waypoint是完全可扩展的,并且基于允许Waypoint与任何工具或平台一起工作的插件系统。部署后,Waypoint提供日志、EXEC等功能来验证和调试任何部署。

WayPoint是您下载并自行托管的软件,用于管理在您自己的基础设施或平台上运行的应用程序的部署。WayPoint不需要HashiCorp提供的任何服务。

立即从Waypoint项目网站下载并试用Waypoint。我们将继续阅读以了解更多关于Waypoint是什么、它解决的问题、它具有的功能以及示例的更多信息。

在HashiCorp,我们有机会与社区中的所有类型的组织和个人合作,这让我们面临着开发人员在部署应用程序并向用户提供应用程序方面面临的一系列挑战。我们每天通过GitHub问题、讨论论坛、电子邮件等与数十名个人用户交谈。我们每周都与500多家公司会面,讨论他们正在进行的发展和运营挑战。

通过这些交互,我们看到了一种开发人员(尤其是在中型和大型组织中)被复杂性淹没的模式:容器、调度程序、YAML文件、无服务器等等。这种复杂性在许多方面提高了我们的应用程序的能力,但从仅部署第一个应用程序所需的学习曲线就可以看出其成本。

我们看到的另一个挑战是,根据您希望部署应用程序的位置,您使用的工具通常是不同的-用于Kubernetes的Docker和kubectl,用于VM的HashiCorp Packer和Terraform,用于每个无服务器平台的自定义CLI,等等。对于团队来说,这是一个一致性和复杂性方面的挑战。

通过Waypoint,我们的目标是解决这两个挑战。Waypoint提供了一个简单易用的命令来部署任何应用程序:waypoint up。这一工作流程在任何平台上都是一致的,包括Kubernetes、Nomad、EC2、Google Cloud Run,以及发布时的十几个平台。WayPoint可以通过插件进行扩展,以针对任何构建/部署/发布逻辑。

WayPoint提供了一系列功能,这些功能提供了部署应用程序以及验证和调试部署的工作流程。这些功能使Waypoint成为任何平台上任何应用程序的强大部署工具。

Waypoint up:构建、部署和发布应用程序的单个命令。WayPoint使用与应用程序代码一起存储的配置文件来定义这是如何工作的。我们将在Waypoint文档中详细介绍Waypoint应用程序的生命周期。

每个应用和每个部署的自动URL:使用Waypoint部署的应用程序会收到一个公共路点。使用通过“让加密”自动生成的有效TLS证书运行URL。使用此URL可快速查看您部署的应用程序并与其他人共享您的应用程序。

Exec:您可以使用waypoint exec在已部署应用程序的上下文中执行命令。您可以使用EXEC在您的应用程序中打开一个shell,用于调试、执行数据库迁移和许多其他目的。了解有关WATHPOINT EXEC的更多信息。

日志:WayPoint允许您访问应用程序日志的实时快照。当您需要调试紧急应用程序行为时,这些日志很有帮助。但是,它们不会取代Datadog或Splunk等全面的日志记录解决方案。通过CLI和基于Web的用户界面聚合和查看WayPoint应用程序日志。了解有关日志的更多信息。

Web UI:除了简单而强大的命令行界面外,Waypoint还包括一个基于Web的用户界面,允许您查看项目和应用程序的构建、部署和发布。今天的UI是只读的,我们将继续开发它,以支持未来更多的功能。我们还在UI中包含了有关如何在CLI中完成Waypoint工作流的提示。

插件:使用插件可以完全扩展构建、部署和发布逻辑。Waypoint附带了十几个内置插件,欢迎任何人通过编写自己的插件来扩展Waypoint。

我们将通过一个示例来展示Waypoint的各种功能。这会跳过一些设置步骤,因此如果您想自己尝试完整的示例,请参阅我们的入门指南。在本例中,我们将向Kubernetes部署一个应用程序。除了我们的应用程序,我们还将创建一个waypoint.hcl文件。此文件描述如何构建、部署和发布我们的应用程序。

Waypoint配置文件描述应用程序生命周期的三个主要阶段:构建、部署和发布。

构建阶段获取应用程序源代码并将其转换为构件。构建过程还可以包括可选的注册表配置,以将所构建的人工产物推送到注册表,以使其可用于部署平台。例如,此阶段将源文件转换为Docker图像、EC2 AMI等。

部署阶段采用以前构建的构件,并将其暂存到目标部署平台上,并且可以通过部署URL或其他内部方式使用。WayPoint支持Kubernetes、Nomad、EC2、ECS、Google Cloud Run等。

发布阶段激活先前阶段的部署,并将其向一般流量开放。我们将在未来为该项目添加支持,以便在环境之间提升应用程序、回滚部署和版本,以及在版本发布后逐步在服务器之间移动流量。

Waypoint up命令运行整个构建、部署和发布阶段来部署应用程序。最后,它输出一个或多个可用于访问应用程序的URL。无论您要部署什么应用程序,或者部署到什么平台,您总是使用WAYPOINT UP进行部署。

您还可以使用Waypoint分别运行构建、部署和发布步骤,这有助于与GitHub操作以及CircleCI和Jenkins等CI/CD工具集成。了解有关使用Waypoint自动执行应用程序工作流的更多信息。

使用Waypoint部署的应用程序将收到公共路点。使用通过“让加密”自动生成的有效TLS证书运行URL。使用此URL可快速查看您部署的应用程序并与其他人共享您的应用程序。我们通过HashiCorp提供的免费公共服务提供此URL。此功能是可选的,可以禁用。

在上面的示例中,url为https://recently-pleasant-duck--v1.waypoint.run.。(请注意,此URL将不再起作用,因为我们只是在创作这篇博客文章时才让应用程序保持运行。)

您还可以使用语法https://recently-pleasant-duck--vN.waypoint.run浏览到特定的部署版本,其中N是部署版本号。这是一个非常有用的功能,可以与团队成员共享应用程序的预发布版本。

当您需要调试紧急应用程序行为时,这些日志很有帮助。但是,它们不能取代全面的日志记录解决方案。通过CLI和基于Web的用户界面聚合和查看WayPoint应用程序日志。

无论您使用哪种平台,此日志功能都有效。无论您使用的是Kubernetes、EC2、Google Cloud Run还是任何其他平台,您都可以以一致的方式查看日志。使用UI,您可以查看可能部署到不同平台的多个应用程序的日志。

此功能允许您打开shell、运行脚本或执行您想对部署执行的任何其他操作。就像日志一样,此功能适用于Waypoint支持的所有平台。

Waypoint可用于通过环境变量管理应用程序配置,您可以将Waypoint与您的CI或GitHub集成,您可以使用工作区创建特定于分支机构的环境,您可以编写自己的插件,等等。另外,Waypoint是一个全新的项目。我们希望在接下来的几个月里继续为Waypoint添加更多功能。

如果您有现有的应用程序和部署工作流,您可能会觉得无法轻松利用Waypoint。我们预计团队不会立即使用Waypoint从头开始重建其现有工作流。

相反,我们有诸如docker-ull和本地执行模式之类的插件,使您可以将Waypoint应用到先前定义了工作流的应用程序中。此外,我们还有说明如何将Waypoint集成到CircleCI和Jenkins等CI系统中的文档。

此功能允许您将应用程序部署历史记录放入Waypoint UI中,并可以为您的应用程序启用EXEC、日志、配置等功能。只需少量的工作,您就可以在考虑是否想要迁移到更易管理的插件时,获得使用Waypoint的直接好处。

而且,如果您有多个应用程序,此方法允许您混合使用:一些具有预定义部署逻辑的应用程序可能会使用插件,而较新的应用程序可能会选择使用基于构建包的方法。无论哪种方式,waypoint Up都可以让您的应用程序投入生产。

使用插件可以完全扩展构建、部署和发布逻辑。Waypoint构建在与Terraform相同的插件系统上,我们相信为Waypoint编写插件即使不是更容易,也同样容易。

Waypoint发布了十几个内置插件,我们希望并期待随着时间的推移,在开源社区的帮助下,这个数字会大幅增长。当我们第一次发布Terraform时,我们提供了大约6个提供商。今天,有300多家地形提供商。我们相信Waypoint有机会为应用程序部署做同样的事情。

如果您对编写插件感兴趣,请阅读我们的插件创作指南,并查看Waypoint0.1版本中内置的插件的源代码。

要了解有关Waypoint的更多信息,请访问Waypoint网站。特别是以下几页也是很好的后续步骤:

试试Waypoint。通过访问快速入门页面查看快速入门演示或遵循参考我们用NodeJS、Python、Ruby、Java和许多其他语言、框架和云平台编写的示例应用程序的分步教程,尝试使用Waypoint。

给我们反馈意见。Waypoint作为一个项目还处于早期阶段,我们希望通过HashiCorp讨论论坛向社区征求反馈。您也可以访问社区页面,了解如何为项目做出贡献。

编写一个Waypoint插件。我们希望您能帮助我们继续构建和改进Waypoint。如果你有一个Waypoint插件的想法,把你的想法作为GitHub的问题发布,或者在HashiCorp讨论的Waypoint论坛上提出这个想法。

共享您的应用程序。如果你已经用Waypoint部署了你的应用程序,用你的Waypoint URL截图运行它,并将其发布到Twitter上,标签为#WaypointUp@HashiCorp。如果您希望其他人看到您的应用程序正在运行,请同时共享您的Waypoint URL。在接下来的几周里,我们将重点介绍社区应用程序。