
HashiCorp展示了一个新项目 上 。 它使用基于 HCL 的文件来描述从 Kubernetes 到 AWS 和 Google Cloud Run 等各种云平台的构建、交付和发布应用程序。 将 Waypoint 视为 Terraform 和 Vagrant 的组合,用于描述构建、运输和发布应用程序的过程。
一如既往,HashiCorp 已经将 Waypoint 作为开源版本发布,并且附带了大量示例。 编排器的级别由您决定,Waypoint 作为可执行文件提供,您可以直接在笔记本电脑上运行,也可以从您选择的 CI/CD 编排工具运行。 应用程序部署目标也取决于您,因为 Waypoint 支持 Kubernetes、Docker、Google Cloud Run、AWS ECS 等。
读完精彩内容后 和最别致的 由于 HashiCorp 提供的应用程序,我们决定仔细研究使用 GitLab CI/CD 进行 Waypoint 编排。 为此,我们将从示例存储库中获取一个在 AWS ECS 上运行的简单 Node.js 应用程序。
克隆存储库后,让我们看一下显示一页的应用程序的结构:

您可能已经注意到,这个项目中没有 Dockerfile。 它们没有添加到示例中,因为我们并不真正需要它们,因为 Waypoint 会为我们处理它们。 让我们仔细看看该文件 waypoint.hcl了解它将做什么:
project = "example-nodejs"
app "example-nodejs" {
labels = {
"service" = "example-nodejs",
"env" = "dev"
}
build {
use "pack" {}
registry {
use "aws-ecr" {
region = "us-east-1"
repository = "waypoint-gitlab"
tag = "latest"
}
}
}
deploy {
use "aws-ecs" {
region = "us-east-1"
memory = "512"
}
}
}在构建阶段,Waypoint 使用 Cloud Native Buildpacks()来确定项目的编程语言并在不使用 Dockerfile 的情况下创建 Docker 映像。 原则上,这与 GitLab 部分使用的技术相同 在自动构建步骤。 很高兴看到 CNCF 的 CNB 正在获得越来越多的行业用户的采用。
镜像构建完成后,Waypoint 会自动将其上传到我们的 AWS ECR 注册表,以便准备发货。 在装配结束时,交付步骤使用 将我们的应用程序部署到我们的 AWS 帐户。
从我的笔记本电脑上这很容易。 我放入了已在我的 AWS 帐户中经过身份验证的 Waypoint,它“正常工作”。 但如果我想要超越笔记本电脑,会发生什么? 或者也许我想自动化此部署,作为当前集成测试、安全测试和其他测试运行的整个 CI/CD 管道的一部分? 这就是 GitLab CI/CD 发挥作用的部分!
注: 如果您只是计划实施 CI/CD 或者想开始应用构建管道的最佳实践,请关注新的 Slurm 课程。 。 现在可以按预购价格购买。
GitLab CI/CD 中的路点
为了在 GitLab CI/CD 中协调所有这些,让我们看看我们的文件中需要什么 .gitlab-ci.yml:
- 首先,你需要一个基础镜像才能运行。Waypoint 可以在任何发行版上运行。 Linux它只需要 Docker,所以我们可以从通用的 Docker 镜像运行。
- 接下来,您需要将 Waypoint 安装到该映像中。 未来我们可能会收集 并为自己容器化这个过程。
- 最后我们将运行 Waypoint 命令
以上是我们的管道运行执行部署所需的脚本所需的一切,但要部署到 AWS,我们还需要一件事:我们必须登录到我们的 AWS 帐户。 在航点描述中 关于身份验证和授权。 HashiCorp 本周还发布了一个令人印象深刻的项目 。 但目前,我们可以自己进行身份验证和授权处理。
AWS 上的 GitLab CICD 身份验证有多种选项。 第一个选项是使用内置的 。 如果您的团队已经在使用 Vault 进行凭证管理,那就没问题了。 如果您的团队使用 AWS IAM 管理授权,另一种可行的方法是检查交付任务是否通过 有权通过 IAM 启动部署的 A。 但如果您只是想熟悉 Waypoint 并希望快速完成,最后一个选项是将您的 AWS API 和密钥添加到 AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY.
把它们放在一起
一旦我们弄清楚了身份验证,我们就可以开始了! 我们的决赛 .gitlab-ci.yml 它看起来像这样:
waypoint:
image: docker:latest
stage: build
services:
- docker:dind
# Define environment variables, e.g. `WAYPOINT_VERSION: '0.1.1'`
variables:
WAYPOINT_VERSION: ''
WAYPOINT_SERVER_ADDR: ''
WAYPOINT_SERVER_TOKEN: ''
WAYPOINT_SERVER_TLS: '1'
WAYPOINT_SERVER_TLS_SKIP_VERIFY: '1'
script:
- wget -q -O /tmp/waypoint.zip https://releases.hashicorp.com/waypoint/${WAYPOINT_VERSION}/waypoint_${WAYPOINT_VERSION}_linux_amd64.zip
- unzip -d /usr/local/bin /tmp/waypoint.zip
- rm -rf /tmp/waypoint*
- waypoint init
- waypoint build
- waypoint deploy
- waypoint release你看我们从一张图片开始 docker:latest 并设置 Waypoint 所需的一些环境变量。 在章节中 script 我们下载最新的 Waypoint 可执行文件并将其放入 /usr/local/bin。 由于我们的运行程序已经在 AWS 中获得授权,因此我们只需运行 waypoint init, build, deploy и release.
构建任务的输出将向我们显示我们滚动应用程序的端点:

航路点之一 ,与 GitLab 配合得很好。 例如,除了交付应用程序之外,我们还可以编排底层基础设施 。 为了标准化 SDLC 安全性,我们还可以实施 用于管理 CI/CD 管道中的机密和令牌,为依赖机密管理进行开发、测试和生产使用的开发人员和管理员提供完整的解决方案。
HashiCorp 和 GitLab 开发的联合解决方案通过确保一致的供应链和基础设施管理,帮助公司找到开发应用程序的最佳方式。 Waypoint 朝着正确的方向又迈出了一步,我们期待该项目的进一步发展。 您可以了解更多有关 Waypoint 的信息 也值得探索 и 项目。 我们已经将我们的知识添加到 。 如果您想自己尝试一下,可以在以下位置查看完整的工作示例 .
通过完成视频课程,您可以了解 CI/CD 的原理、掌握使用 Gitlab CI 的所有微妙之处并开始应用最佳实践 ... 加入我们!
来源: habr.com
