前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >给力!HashiCorp 开源Waypoint,一款跨平台的应用部署工具

给力!HashiCorp 开源Waypoint,一款跨平台的应用部署工具

作者头像
灵雀云
发布2020-11-11 14:30:47
1.7K0
发布2020-11-11 14:30:47
举报

作者:Mitchell Hashimoto

译者:ysyou

一款可以让开发者在任意平台以相同体验构建、部署和发布应用的工作流工具。

今天我们很高兴公开 [HashiCorp Waypoint](https://www.waypointproject.io/) 项目,它为开发者提供了一个跨平台的构建、部署和发布应用的工作流,而且在所有平台中都可以获得一致的使用体验!借助 Waypoint 你的应用从开发到上线将只需一个配置文件和一个命令 `waypoint up`。

Waypoint 默认支持了 Kubernetes, HashiCorp Nomad, Amazon ECS, Google Cloud Run, Azure Container Instances, Docker, Buildpacks 等平台和工具,而且可以通过插件机制来支持任意工具和平台。在应用部署之后,Waypoint 还提供了 logs, exec 等特性来辅助应用的调试。

Waypoint 是一款可以独立运行的工具,支持管理自建基础设施或平台中的应用,不需要依赖任何 HashiCorp 的托管服务。

01

解决部署的复杂性问题

我们开发 Waypoint 的原因很简单:带给开发者最直接简单的部署体验!

在 HasiCorp 我们有机会能够和社区上各种类型的组织和个人一起合作:我们每天都会通过 Github Issuers、讨论组、邮件和几十位开发者进行交流,每周还会和500多个公司讨论他们当前所面临的开发与运维挑战。这让我们看到了开发者在部署应用的过程中所遇到的一系列挑战。

我们发现一些开发者(尤其是中大型组织的开发者)已经被部署的复杂性所淹没了:容器、调度器、YAML 配置、Serverless 等。虽然这些复杂性为应用带来了更多的功能,但也给我们带来了陡峭的学习曲线,让应用的部署变得越来越困难。

另外我们还发现开发者在不同环境中部署应用时所使用的工具经常是不一样的:在 kubernetes 环境中使用 docker 和 kubectl,在虚拟机环境中使用 Packer 和 Terraform,在 Serverless 环境中使用平台特有的命令行工具。对于个人来说,这种割裂的部署体验进一步增加了我们的学习曲线。对于团队来说,这是一个关于一致性和复杂性的挑战。

我们开发 Waypoint 的目的就是为了解决上述开发者和团队所面临的两个挑战。Waypoint 提供了一个非常简单的命令(`waypoint up`)来将任意的应用部署起来。而且这套工作流在任意的环境中体验都是完全一致的。除此之外,Waypoint 还可以通过插件来适配自定义的构建、部署和发布逻辑。

Waypoint 将为开发者们彻底解决应用部署所遇到的挑战,让部署变得简单!

02

功能速览

Waypoint 提供了一系列功能来支撑应用部署、验证和调试的工作流,这些功能也让 waypoint 成为一款跨平台的强大部署工具。

  • waypoint up:只需这一个命令就可以完成应用的构建、部署和发布。其中各个步骤的具体逻辑都定义在配置文件中,你可以在 [Waypoint 应用生命周期](https://www.waypointproject.io/docs/lifecycle)文档中查看更加详细的说明。
  • 自动生成应用预览环境:Waypoint 会为部署好的应用自动生成一个带有合法证书的 `waypoint.run` 可访问地址。你可以使用这个访问地址快速预览已经部署好的应用,也可以使用这个地址将应用分享给其他人。
  • Exec:你可以使用 `waypoint exec` 命令在已经部署的应用中执行命令。这让我们调试应用、执行数据库迁移等各个操作都变得非常容易。你可以在 [waypoint exec](https://waypointproject.io/docs/exec) 文档中查看更详细的功能说明。
  • 日志:Waypoint 还提供了查看应用实时日志的功能,我们可以在命令行和 Web 界面中查看聚合后的应用日志,这在我们需要调式应用行为时是非常方便的(当然 Waypoint 的日志功能只是为了提高开发效率,并不是为了取代 Datadog 和 Splunk 这样成熟的日志解决方案) 。你可以在 [waypoint logs](https://waypointproject.io/docs/logs) 文档中查看更详细的日志功能说明。
  • Web 界面:除了简单而强大的命令行界面,Waypoint 还提供了 Web 用户界面来查看项目和应用的构建、部署以及发布状态。目前 Waypoint 的 Web 界面还是只读的,但我们会持续地开发 Web 界面来在将来支持更多功能。我们还在 Web 界面中添加了引导用户使用 Waypoint 命令行工具的小贴士。
  • 插件:构建、部署和发布的逻辑都是可以通过插件进行扩展的。Waypoint 已经内置了[丰富的插件](https://www.waypointproject.io/plugins),同时我们也非常欢迎大家能够[编写自己的插件](https://www.waypointproject.io/docs/extending-waypoint)来扩展 Waypoint 。

03

工作流示例

接下来我们将使用一个示例应用来展示 Waypoint 的各个功能。在本文的演示中我们略过了一些初始化步骤,你可以在我们的[快速开始文档](https://www.waypointproject.io/docs/getting-started "快速开始文档")中找到完整的示例步骤。在这个演示中,我们将会把示例应用部署到一个 kubernetes 环境中。 首先我们需要在应用的项目下创建一个 `waypoint.hcl` 文件,这个文件描述了如何构建、部署和发布我们的应用。

代码语言:javascript
复制
project = "HashiCorp Waypoint"

app "waypoint-up" {
    build {
        use "docker" {}
        registry {
            use "docker" {
                image = "hashicorp/wpmini"
                tag = gitrefpretty()
            }
         }        
      }

    deploy {
        use "kubernetes" {
            probe_path="/"
            service_port=80
        }
     }

    release {
        use "kubernetes" {
            load_balancer=true
            port=80
         }
     }

}

04

构建、部署、发布

Waypoint 的配置文件中描述了应用生命周期的三个主要阶段:构建、部署和发布。 构建阶段负责将应用的源码转化为交付物(比如 Docker 镜像、EC2 AMI 等)。构建的过程中可能会涉及到仓库的配置,因为通常我们需要将交付物推送到仓库中后才能被部署平台使用。 部署阶段负责将之前构建好的交付物部署到目标平台中,并获取部署好的应用访问地址。Waypoint 支持 Kubernetes、Nomad、EC2、ECS 和 Google Cloud Run 等平台。 发布阶段会将上个阶段部署的应用开放给最终用户。我们未来还会为应用发布添加更多的特性,比如:多环境推进(应用在前一个环境验证成功后才会推进到下一个环境部署),部署和发布回滚,灰度发布。

05

Waypoint Up

执行 `waypoint up` 命令就可以完成应用的构建、部署和发布,最终会输出一个或多个应用访问地址。无论是什么类型的应用和平台,你都可以使用 `waypoint up` 完成应用的部署。

当然你也可以使用 Waypoint 单独执行应用的构建、部署或发布阶段,这会让 Waypoint 更容易地集成到其它 CI/CD 工具链中。你可以在[使用 Waypoint 自动化应用工作流](https://waypointproject.io/docs/automating-execution)这篇文章中看到更多的细节。

06

应用预览

Waypoint 默认会为部署的应用生成一个以 `waypoint.run` 为域名且有合法证书的可公开访问的 URL。你可以使用这个 URL 快速预览应用或将应用分享给其他人。这个 URL 是由 HasiCorp 的托管服务免费提供的。这个功能也是可以关闭的。

在这个示例中,我们获得的 URL 是 `https://recently-pleasant-duck--v1.waypoint.run `。(当你看到这篇文章时这个链接已经失效了) 当你需要访问某个版本的部署时你可以修改 `https://recently-pleasant-duck--vN.waypoint.run ` 这个 URL 中的 `N` 为目标版本。通过这个功能你可以很容易地将应用的预发布版本提前分享给团队伙伴。

07

查看日志

Waypoint 默认提供了查看实时应用日志的功能。

我们可以在命令行和 Web 界面中查看聚合后的应用日志,这在我们需要调式应用行为时是非常方便的。请注意 Waypoint 的日志功能并不是为了替代当前成熟的日志解决方案,只是为了提升开发调试的体验。 Waypoint 的日志功能是跨平台的,无论你使用的是 Kubernetes、EC2、Google Cloud Run 还是其它平台,你都可以用相同的方式查看应用的实时日志。通过 Waypoint Web 界面你可以更容易地查看到部署在不同平台的不同应用的日志。

08

EXEC调试

通过 `waypoint exec` 命令你可以进入到应用部署的环境中执行命令。

这个功能可以让你在应用的部署环境中打开一个 shell 窗口、运行脚本或做些其他想做事情。和日志功能一样,exec 功能同样是跨平台的。

09

更多特性

上面的功能特性还只是 Waypoint 功能的一个缩影。

Waypoint 还支持使用环境变量管理应用的配置,你可以将 waypoint 集成到 CI 或 Github 中,你可以使用 workspaces 功能为某个分支创建特定的环境,你还可以通过编写插件做更多的事情。此外,目前 Waypoint 还是一个全新的项目,我们希望在接下来的几个月中为 Waypoint 带来更多的特性。

10

在已有应用中集成Waypoint

如果你已经有一些应用和对应的部署工作流了,你可能会担心是否可以很容易地迁移到使用 Waypoint 管理应用。对此我们不希望你立即使用 Waypoint 完全重建应用的工作流。

与之相反,我们提供了 `docker-pull` 之类的插件和本地执行模式来让 Waypoint 可以被集成到应用先前的工作流中。除此之外,我们还提供了文档介绍如何将 Waypoint 集成到如 CircleCI 和 Jenkins 之类的 CI 系统中。 这会让你的已有应用也可以很容易地拥有部署历史、EXEC 调试、日志查看等特性。只需要很小的成本,你就可以立即获得 Waypoint 带来的很多特性,在此之后你可以再考虑是否要迁移到使用 Waypoint 管理应用。 如果你有多个应用,你还可以混合使用 Waypoint 的各个功能:在一些已有部署工作流的应用中使用 Waypoint exec 插件,在一些新的应用中使用基于 buildpack 的构建方案。当然,无论是哪种方式,你都可以使用 `waypoint up` 命令将你的应用部署到线上。

11

通过插件扩展Waypoint

Waypoint 的构建、部署、发布逻辑都是可以使用插件进行扩展的。Waypoint 使用了和 Terraform 相同的插件系统,我们相信为 Waypoint 编写插件至少会和编写 Terraform 插件一样容易。 Waypoint 已经内置了十几个插件了,我们希望在开源社区的帮助下插件的数量能得到大幅的增长。最初发布 Terraform 的时候,我们内置了6个 providers。而现在, Terraform 已经支持超过300个 providers 了。我们相信 Waypoint 在应用部署领域会和 Terraform 一样得到快速地成长。 如果你对编写 Waypoint 插件感兴趣,欢迎查阅我们的[插件编写文档](https://www.waypointproject.io/docs/extending-waypoint)并浏览下 Waypoint [内置插件的源码](https://github.com/hashicorp/waypoint/tree/main/builtin)。 原文链接:

Announcing HashiCorp Waypoint

https://www.hashicorp.com/blog/announcing-waypoint

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Announcing HashiCorp Waypoint
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档