<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Waypoint - 跨平臺構(gòu)建部署和發(fā)布工具

          共 7328字,需瀏覽 15分鐘

           ·

          2020-10-20 14:19

          Waypoint 是 HashiCorp 最近新開源的項目,它為開發(fā)人員提供了跨任何平臺構(gòu)建、部署和發(fā)布應(yīng)用程序的一致工作流程。Waypoint 使開發(fā)人員能夠?qū)⑺麄兊膽?yīng)用程序從開發(fā)到生產(chǎn)放在一個文件中,并只使用一個命令即可進(jìn)行部署:waypoint up

          由于 HashiCorp 公司發(fā)布的很多產(chǎn)品實在是太優(yōu)秀了,比如 Terraform、Vault、Consul、Vagrant 等等,所以 Waypoint 同樣也勾起了我的欲望,下面我們用一個簡單的示例來了解下 HashiCorp 新發(fā)布的 Waypoint 這款產(chǎn)品。

          簡介

          Waypoint 開箱即用,支持 Kubernetes、HashiCorp Nomad、ECS、Google Cloud Run、Azure Container Instance、Docker、BuildPack 等平臺,而且 Waypoint 是完全可擴(kuò)展的,構(gòu)建了與任何工具或平臺一起工作的插件系統(tǒng),部署后,Waypoint 還提供日志、EXEC 等功能來驗證和調(diào)試任何部署應(yīng)用。

          Waypoint 允許開發(fā)人員將其構(gòu)建、部署和發(fā)布生命周期定義為代碼,從而減少了可重復(fù)的工作流交付部署的時間。Waypoint 支持開箱即用的多種構(gòu)建方法和平臺,可通過插件輕松添加更多構(gòu)建方法和目標(biāo)平臺。Waypoint 可以在 Linux,Mac OS X 和 Windows 上運行。

          標(biāo)準(zhǔn)的 Waypoint 工作流程包括兩個命令和一個文件:waypoint initwaypoint upwaypoint.hcl 文件,如果你的應(yīng)用程序沒有waypoint.hcl 文件,Waypoint 會在初始化時自動生成一個默認(rèn)的waypoint.hcl 文件。

          Waypoint 的最小配置文件使用與 Terraform 相同的語法,但需要我們編寫的語法很少。

          Waypoint 可以將你的應(yīng)用程序構(gòu)建成磁盤鏡像,部署到你最喜歡的云平臺,并對外發(fā)布。

          一個典型的構(gòu)建、部署和發(fā)布工作流程需要許多配置文件,你可以創(chuàng)建這些文件并與 Waypoint 一起使用,但你不必這樣做。單個waypoint.hcl 文件會動態(tài)打包你的應(yīng)用程序,將其發(fā)布到公共或私有容器倉庫,配置 Kubernetes、Nomad 或其他應(yīng)用程序調(diào)度器,并將你的應(yīng)用程序發(fā)布到包含 HTTPS 的公共 URL 上去。

          此外 Waypoint 還包含 hooks,所以我們可以輕松擴(kuò)展其核心功能,強大的插件系統(tǒng)與云平臺連接起來,我們知道你會希望將 Waypoint 納入你的持續(xù)部署工作流程,所以我們已經(jīng)為 GitHub Actions、CircleCI 和Jenkins 構(gòu)建了示例。

          安裝

          Waypoint 同時使用客戶端和服務(wù)器來構(gòu)建、部署和發(fā)布應(yīng)用程序,這些功能都可以通過一個二進(jìn)制文件來實現(xiàn)。

          安裝方式有很多,我們可以直接訪問 Waypoint 安裝頁面 https://www.waypointproject.io/downloads 獲取合適的軟件包,下載后 Waypoint 后,解壓軟件包,將 Waypoint 二進(jìn)制文件移動到 PATH 路徑下面:

          $?mv?~/Downloads/waypoint?/usr/local/bin/
          $?waypoint?version
          Waypoint?v0.1.3?(cf5706e9)

          waypoint 命令可以正常執(zhí)行證明客戶端工具安裝成功了。

          部署 Waypoint 應(yīng)用到 Kubernetes

          接下來我們來使用 Waypoint ?部署一個應(yīng)用示例到 Kubernetes 集群中。首先我們需要一個可以正常訪問的 Kubernetes 集群,然后 Clone 示例代碼:

          $?git?clone?https://github.com/hashicorp/waypoint-examples.git

          該示例使用一個 NodeJS 應(yīng)用程序來展示如何使用 Waypoint 構(gòu)建、部署和發(fā)布應(yīng)用,接下來導(dǎo)航到示例目錄中:

          $?cd?waypoint-examples/kubernetes/nodejs

          我們可以使用任何當(dāng)前的 Kubernetes 發(fā)行版與 Waypoint 進(jìn)行交互,只需要正確配置 kubeconfig 文件即可。比如這里我們可以使用 KinD 快速部署一個本地的 Kubernetes 集群:

          $?kind?create?cluster
          Creating?cluster?"kind"?...
          ???Ensuring?node?image?(kindest/node:v1.18.2)??
          ???Preparing?nodes??
          ???Writing?configuration??
          ???Starting?control-plane???
          ???Installing?CNI??
          ???Installing?StorageClass??
          Set?kubectl?context?to?"kind-kind"
          You?can?now?use?your?cluster?with:

          kubectl?cluster-info?--context?kind-kind

          Not?sure?what?to?do?next?????Check?out?https://kind.sigs.k8s.io/docs/user/quick-start/
          $?kubectl?cluster-info?--context?kind-kind
          Kubernetes?master?is?running?at?https://127.0.0.1:39679
          KubeDNS?is?running?at?https://127.0.0.1:39679/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

          To?further?debug?and?diagnose?cluster?problems,?use?'kubectl?cluster-info?dump'.

          然后使用如下所示的命令在 Kubernetes 集群上安裝 Waypoint 服務(wù)端:

          $?waypoint?install?--platform=kubernetes?-accept-tos

          ??Creating?Kubernetes?resources...
          ??Creating?Kubernetes?resources...
          ?│?service/waypoint?created
          ?│?statefulset.apps/waypoint-server?created
          ??Kubernetes?StatefulSet?reporting?ready
          ??Waiting?for?Kubernetes?service?to?become?ready..

          在安裝 Waypoint 服務(wù)端的時候要注意的是需要一個容量1G,訪問模式為 ReadWriteOnce 的 PV 進(jìn)行綁定。

          在安裝 Waypoint 服務(wù)的時候,默認(rèn)會配置一個 waypoint 的 LoadBalancer 的 Service,如果我們的集群不支持,則可以將其更改為 NodePort 類型:

          $?kubectl?get?pods
          NAME????????????????READY???STATUS????RESTARTS???AGE
          waypoint-server-0???1/1?????Running???0??????????2m46s
          $?kubectl?get?svc
          NAME?????????TYPE????????CLUSTER-IP??????EXTERNAL-IP???PORT(S)?????????????????????????AGE
          kubernetes???ClusterIP???10.96.0.1???????????????443/TCP?????????????????????????2d13h
          waypoint?????NodePort????10.111.41.163???????????9701:30741/TCP,9702:32607/TCP???2m53s

          當(dāng) Waypoint 服務(wù)端部署完成后,接下來我們就可以開始準(zhǔn)備構(gòu)造部署應(yīng)用了,在這之前我們必須先使用 init 命令來進(jìn)行初始化,當(dāng)初始化后,Waypoint 首先會在該目錄中尋找應(yīng)用程序的 Waypoint 配置文件 waypoint.hcl

          waypoint.hcl 配置文件為 Waypoint 提供了如何構(gòu)建、部署和發(fā)布應(yīng)用程序的說明。如果 Waypoint 在運行 waypoint init 時找不到應(yīng)用程序的配置文件,Waypoint 將創(chuàng)建一個啟動的 waypoint.hcl 文件,你可以為你的應(yīng)用程序進(jìn)行定制。

          我們可以在 waypoint-examples/kubernetes/nodejs/ 目錄下查看 waypoint.hcl 文件內(nèi)容:

          $?cat?waypoint.hcl
          project?=?"example-nodejs"

          app?"example-nodejs"?{
          ??labels?=?{
          ????"service"?=?"example-nodejs",
          ????"env"?????=?"dev"
          ??}

          ??build?{
          ????use?"pack"?{}
          ????registry?{
          ??????use?"docker"?{
          ????????image?=?"nodejs-example"
          ????????tag???=?"latest"
          ????????local?=?true
          ??????}
          ????}
          ??}

          ??deploy?{
          ????use?"kubernetes"?{
          ??????probe_path?=?"/"
          ????}
          ??}

          ??release?{
          ????use?"kubernetes"?{
          ????}
          ??}
          }

          其中 build 模塊定義了 Waypoint 將如何構(gòu)建應(yīng)用程序,其中的 pack 選項是告訴 Waypoint 使用最相關(guān)的 Cloud Native Buildpack 來構(gòu)建應(yīng)用程序。由于此示例應(yīng)用程序是為 NodeJS 編寫的,所以 Waypoint 將使用 NodeJS Buildpacks 進(jìn)行構(gòu)建。

          deploy 模塊定義了 Waypoint 將在哪里部署應(yīng)用程序,其中的 kubernetes 選項就是告訴 Waypoint 將應(yīng)用程序部署到 Kubernetes 集群中。

          release 部分定義了我們的應(yīng)用將如何發(fā)布到環(huán)境中。

          當(dāng)這些配置完成后,執(zhí)行下面的命令來用這個配置初始化 Waypoint:

          $?waypoint?init
          ??Configuration?file?appears?valid
          ??Local?mode?initialized?successfully
          ??Project?"example-nodejs"?and?all?apps?are?registered?with?the?server.
          ??Plugins?loaded?and?configured?successfully
          ??Authentication?requirements?appear?satisfied.

          Project?initialized!

          You?may?now?call?'waypoint?up'?to?deploy?your?project?or
          commands?such?as?'waypoint?build'?to?perform?steps?individually.

          此應(yīng)用程序被配置為使用 Cloud Native Buildpacks 來檢測正在運行的應(yīng)用程序類型,并在 Kubernetes 中啟動它,因為 Waypoint 使用適當(dāng)?shù)臉?gòu)建包來創(chuàng)建 Dockerfile,所以你不需要我們自己創(chuàng)建文件。一旦 Waypoint 完成構(gòu)建,它就會將相關(guān)制品存儲在本地或遠(yuǎn)程倉庫中。

          waypoint.hcl 文件中的倉庫部分指定了存儲應(yīng)用程序的制品的位置。如果改配置不存在,Waypoint 將默認(rèn)使用本地 Docker 實例來存儲應(yīng)用程序的制品。

          對于這個示例應(yīng)用程序,Waypoint 將在應(yīng)用程序構(gòu)建后將鏡像存儲在遠(yuǎn)程 Docker 倉庫中。

          現(xiàn)在你可以通過運行 waypoint up 將應(yīng)用部署到 Kubernetes 集群中:

          $?waypoint?up

          ??Building...
          Creating?new?buildpack-based?image?using?builder:?heroku/buildpacks:18
          ??Creating?pack?client
          ??Building?image
          ?│?3776f40e285d:?Downloading??4.725MB/166.8MB
          ?│?5a31c1197165:?Waiting
          ?│?27b721f42101:?Waiting
          ?│?52c6d4d5eb7b:?Waiting

          Waypoint 將在終端顯示構(gòu)建、部署和發(fā)布步驟的狀態(tài),作為部署工作流程的一部分,Waypoint 將為你的應(yīng)用程序創(chuàng)建一個預(yù)覽 URL,Waypoint 將在終端中顯示你的部署結(jié)果。

          The?deploy?was?successful!?A?Waypoint?deployment?URL?is?shown?below.?This
          can?be?used?internally?to?check?your?deployment?and?is?not?meant?for?external
          traffic.?You?can?manage?this?hostname?using?"waypoint?hostname."

          ???Release?URL:?http://10.110.62.223:80

          Waypoint 會在創(chuàng)建一個預(yù)覽 URL,由于該預(yù)覽 URL 與你的應(yīng)用程序以及它已部署的地方相連接,因此該 URL 只會在你的應(yīng)用程序運行時顯示它。

          Waypoint 最強大的一個功能就是它能夠?qū)Σ渴疬M(jìn)行迭代,并根據(jù)你的變更快速重新部署應(yīng)用程序。

          在你喜歡的開發(fā)編輯器中打開 views/pages/index.ejs 文件:

          $?vi?views/pages/index.ejs

          在第18行附近,把文字改成任何你喜歡的文字,比如今天的日期。

          This?Node.js?app?was?deployed?with?Waypoint?on?1/1/2045.


          然后回到終端重新部署應(yīng)用程序:

          $?waypoint?up

          Waypoint 現(xiàn)在已經(jīng)重新部署了您的應(yīng)用程序,我們可以發(fā)現(xiàn)第二次部署的部署 URL 與第一次部署時創(chuàng)建的不同,Waypoint 為每個部署生成唯一的 URL,這意味著你可以通過使用其唯一的部署 URL 訪問每個部署,這通常用于在發(fā)布部署之前預(yù)覽該部署。

          現(xiàn)在,打開新的部署 URL,驗證我們修改后的文本是否在應(yīng)用程序中運行。

          調(diào)試和 UI

          Waypoint 支持在開發(fā)應(yīng)用程序時進(jìn)行調(diào)試和監(jiān)控。現(xiàn)在你已經(jīng)部署了你的應(yīng)用程序,你可以使用 waypoint exec 命令在最近部署的上下文中運行命令。

          使用 exec 命令打開 shell 提示符:

          $?waypoint?exec?/bin/bash

          由于你在部署目錄中,你會觀察到 Waypoint 會自動針對當(dāng)前部署的應(yīng)用程序執(zhí)行。在 Docker 容器內(nèi),我們可以通過列出存放應(yīng)用程序編譯文件的目錄來驗證這是實際的應(yīng)用程序。

          $?cd?/?&&?ls

          我們應(yīng)該看到一個包含當(dāng)前部署的文件結(jié)構(gòu)的輸出。此外還可以列出正在容器中運行的進(jìn)程。

          $?ps?aux

          在應(yīng)用程序的目錄中,我們還可以運行日志命令來觀察部署的運行日志。

          $?waypoint?logs
          2020-09-24T06:20:18.162Z?2MGFF4:
          2020-09-24T06:20:18.163Z?2MGFF4:?>[email protected]?start?/workspace
          2020-09-24T06:20:18.163Z?2MGFF4:?>?node?index.js
          2020-09-24T06:20:18.163Z?2MGFF4:
          2020-09-24T06:20:18.383Z?2MGFF4:?Listening?on?3000

          此外 Waypoint 服務(wù)端還提供了一個基于 Web 的用戶界面,你可以用它來查看項目和應(yīng)用程序的構(gòu)建、部署和發(fā)布。

          網(wǎng)頁用戶界面需要驗證,運行一條命令就可以自動打開瀏覽器并驗證你的會話。

          $?waypoint?ui?-authenticate

          我們就可以在瀏覽器中查看應(yīng)用程序元數(shù)據(jù)和相關(guān)操作和日志。

          如果想刪除我們部署的應(yīng)用,可以通過運行 destroy 命令:

          $?waypoint?destroy

          ??Destroying?releases...

          ??Destroying?deployments...
          Destroy?successful!

          到這里我們就完成了使用 Waypoint 工作流部署應(yīng)用程序的完整示例,關(guān)于 Waypoint 的更多使用可以查看官網(wǎng) https://www.waypointproject.io/ 了解更多相關(guān)信息。不過說實在目前并沒有感受到 Waypoint 最佳使用場景~~~



          訓(xùn)練營推薦





          ?點擊屏末?|??|?即刻學(xué)習(xí)

          瀏覽 192
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲淫乱av | 亚洲日韩欧美在线中文18 | 色噜噜狠狠一区二区三区Av蜜芽 | 在线观看一区视频 | 亲子伦一区二区三区 |