如何使用 HashiCorp Waypoint 与 GitLab CI/CD 协作

如何使用 HashiCorp Waypoint 与 GitLab CI/CD 协作

HashiCorp展示了一个新项目 航点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 应用程序。

克隆存储库后,让我们看一下显示一页的应用程序的结构:

如何使用 HashiCorp Waypoint 与 GitLab CI/CD 协作

您可能已经注意到,这个项目中没有 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 ECS 附加组件 将我们的应用程序部署到我们的 AWS 帐户。

从我的笔记本电脑上这很容易。 我放入了已在我的 AWS 帐户中经过身份验证的 Waypoint,它“正常工作”。 但如果我想要超越笔记本电脑,会发生什么? 或者也许我想自动化此部署,作为当前集成测试、安全测试和其他测试运行的整个 CI/CD 管道的一部分? 这就是 GitLab CI/CD 发挥作用的部分!

注: 如果您只是计划实施 CI/CD 或者想开始应用构建管道的最佳实践,请关注新的 Slurm 课程。 《关于 Gitlab CI 的 CI/CD 示例》。 现在可以按预购价格购买。

GitLab CI/CD 中的路点

为了在 GitLab CI/CD 中协调所有这些,让我们看看我们的文件中需要什么 .gitlab-ci.yml:

  • 首先,您需要一个基础映像才能在其中运行。 Waypoint可以在任何Linux发行版上运行,它只需要Docker,因此我们可以使用通用的Docker镜像来运行。
  • 接下来,您需要将 Waypoint 安装到该映像中。 未来我们可能会收集 元构建镜像 并为自己容器化这个过程。
  • 最后我们将运行 Waypoint 命令

以上是我们的管道运行执行部署所需的脚本所需的一切,但要部署到 AWS,我们还需要一件事:我们必须登录到我们的 AWS 帐户。 在航点描述中 有计划 关于身份验证和授权。 HashiCorp 本周还发布了一个令人印象深刻的项目 边界。 但目前,我们可以自己进行身份验证和授权处理。

AWS 上的 GitLab CICD 身份验证有多种选项。 第一个选项是使用内置的 HashiCorp保险库。 如果您的团队已经在使用 Vault 进行凭证管理,那就没问题了。 如果您的团队使用 AWS IAM 管理授权,另一种可行的方法是检查交付任务是否通过 GitLab 亚军有权通过 IAM 启动部署的 A。 但如果您只是想熟悉 Waypoint 并希望快速完成,最后一个选项是将您的 AWS API 和密钥添加到 GitLab CI/CD 环境变量 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.

构建任务的输出将向我们显示我们滚动应用程序的端点:

如何使用 HashiCorp Waypoint 与 GitLab CI/CD 协作

航路点之一 众多 HashiCorp 解决方案,与 GitLab 配合得很好。 例如,除了交付应用程序之外,我们还可以编排底层基础设施 GitLab 中的 Terraform。 为了标准化 SDLC 安全性,我们还可以实施 带有 Vault 的 GitLab 用于管理 CI/CD 管道中的机密和令牌,为依赖机密管理进行开发、测试和生产使用的开发人员和管理员提供完整的解决方案。

HashiCorp 和 GitLab 开发的联合解决方案通过确保一致的供应链和基础设施管理,帮助公司找到开发应用程序的最佳方式。 Waypoint 朝着正确的方向又迈出了一步,我们期待该项目的进一步发展。 您可以了解更多有关 Waypoint 的信息 这里也值得探索 文件 и 发展计划 项目。 我们已经将我们的知识添加到 亚搏体育appGitLab CICD文档。 如果您想自己尝试一下,可以在以下位置查看完整的工作示例 这个存储库.

通过完成视频课程,您可以了解 CI/CD 的原理、掌握使用 Gitlab CI 的所有微妙之处并开始应用最佳实践 《关于 Gitlab CI 的 CI/CD 示例》... 加入我们!

来源: habr.com

添加评论