如何使用 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(CNB)來確定項目的編程語言並在不使用 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 示例》... Присоединяйтесь!加入我們!

來源: www.habr.com

添加評論