프로그래머를 게으르게 하기 위한 Waypoint

HashiCorp은 새로운 도구 "Waypoint"를 발표했다.개인적으로buildpacks Docker file에 없는 건설 설정을 배우는 절차도 있고 자신의 이해도 겸비했다.
글에서 Waypoint의 간단한 개요부터 Go 프로젝트의 구축, 최근에 내가 즐겨 사용했던Google Cloud Run의 발표까지.
이번 샘플 창고는 여기.

Waypoint 는 무엇입니까?


매달린 인프라(Docker, k8s, Serverless etc..)PaaS 공급업체에 의존하지 않고 디버깅 발표를 구축할 수 있는 단일 작업 절차를 제공한다.필요한 내용은 대상의 원본 코드, 간단한 구성 파일 및 waypoint up 명령을 통해서만 가능하다.
현실에 부합한다고 생각해서 일부러 타이틀을 붙였지만 나 자신은 웨이포인트를 두 가지 좋아한다.
첫 번째는 위 영상에서 설명한 바와 같이 프로그래머가 일반적으로 진행해야 할 공정은
Write -> Test -> Build -> Deploy -> Release -> Operate -> Measure
왼쪽에서 오른쪽으로 프로그래머의 흥미가 높을수록 오른쪽으로 갈수록 얇아진다.이것은 전 프로그래머가 아니라 많은 프로그래머들이 (적어도 나에게는) 모두 적용된다.
디자인된 곳, 왜 행동해야 하는지가 흥미로운 범위라는 건 알지만, 적극적으로 알고 싶고, 배우고 싶다는 말을 들으면 나 자신은 좀 그렇다고 느낀다.이렇게 응용 프로그램이 무엇이든 어디서 실행되든지 간에 나는 응용 프로그램을 만들고 발표하는 일관된 방법을 원한다고 생각한다.(또한yaml 개인은 잘 못함)
둘째, Waypoint 자체가 방법론에 집착하지 않았다.'응당론'으로 해석한다면 구축, 디자인, 발표 단계는 CI/CD에 가입해 볼 수 있고, GitOps를 기반으로 하는 방법을 사용해야 할지도 모르지만, Waypoint 자체는 CLI의 직접 조작, ChatOps, Waypoint가 제공하는 UI 등이다팀과 프로젝트의 상태에 따라 최선의 방법을 취할 수 있는 유연성이 있다.

Waypoint 사용 방법


Waypoint 설치부터 Go 구축에 이르기까지 간단한 프로젝트, Google Cloud Run에 대한 디버깅, 발표 전 단계에 대해 설명했습니다.위에서 말한 바와 같이 Waypoint는 Amazon ECS/EKS, Google Cloud Run 등 여러 PaaS 공급업체와 서비스에 적용되기 때문에 먼저 공식 문서를 확인하고 자신에게 가장 적합한 환경에서 실천하는 것을 권장합니다.
  • https://www.waypointproject.io/
  • https://learn.hashicorp.com/waypoint
  • 설치하다.


    MacOS와 Docker Desktop이 설치되어 있어야 합니다.
    brew tap hashicorp/tap
    brew install hashicorp/tap/waypoint
    
    waypoint 명령을 사용할 수 있습니다.
    다음은 서버를 설치합니다.
    docker pull hashicorp/waypoint:latest
    waypoint install -platform=docker -accept-tos
    
    ※ 중요-accept-tos는 사용Waypoint URL Service의 표지이다.자세한 내용은 왼쪽 문서와 사용 약관를 자세히 읽어 주십시오.
    액세스
    Advertise Address: waypoint-server:9701
    HTTP UI Address: localhost:9702
    
    localhost:9702
    Authenticate... 를 클릭하고 를 클릭합니다.

    waypoint token new
    
    상술한 발행된 영패를 붙인다.

    GCP 환경 준비


    GCP 프로젝트의 제작 및 Cloud Run의 유효성을 제거합니다.
    GCP 프로젝트에서 선택IAM 및 관리 > 서비스 계정하고 Waypoint에 사용되는 서비스 계정을 만들고 쉽게 알 수 있는 유일한 이름을 만듭니다.

    역할은 Cloud Run 관리자에게 부여되며 완료됩니다.

    생성된 서비스 계정 목록 옵션에서 '키 만들기' 를 누르면 파일을 다운로드할 수 있습니다.
    GOOGLE_APPLICATION_CREDENTIALS를 환경 변수로 설정하고 위의 키 경로를 설정합니다.
    ※ 열쇠의 작은 채취법은 메인 라인이 아니니 주의해서 사용하세요

    Go의 샘플 응용 프로그램 준비


    간신히(?)그러니까 WAFFiber로 보세요.
    mkdir go-fiber-waypoint && cd go-fiber-waypoint
    go mod init
    
    main.go
    package main
    
    import (
    	"log"
    	"os"
    
    	"github.com/gofiber/fiber/v2"
    )
    
    func main() {
    	app := fiber.New()
    
    	app.Get("/", func(c *fiber.Ctx) error {
    		return c.SendString("Hello, World!")
    	})
    
    	log.Fatal(app.Listen(":" + os.Getenv("PORT")))
    }
    
    환경 변수에서 PORT를 입력하십시오.추천direnv.
    go run main.go
    ┌───────────────────────────────────────────────────┐ 
     │                    Fiber v2.1.0                   │ 
     │               http://127.0.0.1:8080               │ 
     │                                                   │ 
     │ Handlers ............. 2  Threads ............. 4 │ 
     │ Prefork ....... Disabled  PID ............. 34090 │ 
     └───────────────────────────────────────────────────┘ 
    
    로컬 응용 프로그램이 시작되었습니다.

    프로파일 생성


    프로젝트 경로에 생성waypoint.hcl합니다.
    project = "go-fiber-waypoint"
    
    // アプリケーション
    app "go-fiber-waypoint" {
      labels = {
        "service" = "go-fiber-waypoint"
      }
    
      // ビルド
      build {
        // buildpacksを利用
        use "pack" {}
        
        registry {
          // dockerのレジストリを設定
          use "docker" {
    	// GCRへ
            image = "asia.gcr.io/${GCP_PROJECT_ID}/go-fiber-waypoint"
            tag   = "latest"
          }
        }
      }
    
      // デプロイ
      deploy {
       // Cloud Runを利用
        use "google-cloud-run" {
          // GCPプロジェクト
    *       project = "${GCP_PROJECT_ID}"
          // 東京リージョン
          location = "asia-northeast1" 
    
        // Cloud Run固有の設定
          capacity {
            memory                     = 128
            cpu_count                  = 1
            max_requests_per_container = 10
            request_timeout            = 300
          }
    
          auto_scaling {
            max = 2
          }
          
        }
      }
    
      // リリース
      release {
        use "google-cloud-run" {}
      }
    }
    
    그러면 이 상태가 완성되면waypoint의 설정과 실행을 진행합니다.예의를 차리고 싶지 않은 것은 사전 분석waypoint.hclinit에서 GCP의 연결이 부족한 옥션 부분 설정 등으로 오류가 발생할 수 있다는 점이다.
    waypoint init
    waypoint up
    
    » Building...
    Creating new buildpack-based image using builder: heroku/buildpacks:18
    ✓ Creating pack client
    ✓ Building image
     │ [exporter] Reusing layer 'heroku/go:profile'
    ✓ Injecting entrypoint binary to image
    
    Generated new Docker image: go-fiber-waypoint:latest
    ...
    * » Deploying...
    » Releasing...
    
    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: ${ $CLOUDRUN_URL }
    Deployment URL: ${ $WAYPOINT_URL_SERVICE }
    
    이렇게 표시된 후 Release URL을 열고 Cloud Run에서 프로그램을 열면 성공합니다.

    코드 변경 및 재설계


    변경main.go해보세요.
    	app.Get("/", func(c *fiber.Ctx) error {
    		// return c.SendString("Hello, World!")
    		return c.SendString("Hello, Waypoint!")
    	})
    
    waypoint.hcl의build도 변경을 시도했고기본buildpackspacks{}도 사용한 것 같다heroku/buildpacks:18.디스트로레스를 사용하고 싶으니 지정paketobuildpacks/builder:tiny해보세요.
        // buildpacksを利用
        use "pack" {
          builder="paketobuildpacks/builder:tiny"
        }
    
    그러면 이 상태에서 다시 집행waypoint up한다.
       Release URL: ${ $CLOUDRUN_URL }
    Deployment URL: ${ $WAYPOINT_URL_SERVICE --v2 }
    
    URL에 액세스하여 정상적으로 작동할 수 있다면 성공적입니다.

    UI에서 항목 확인

    waypoint ui에는 브라우저에서 프로젝트 상태를 확인할 수 있는 관리 화면이 표시됩니다.

    프로젝트 삭제

    waypoint destroy를 통해 삭제할 수 있습니다.Cloud Run 같은 서비스에 게시된 경우 실행 중이기 때문에 삭제할 수 없습니다.

    감상


    어느 정도 직감적인, 심지어 deproy까지 함께 관리하는 것은 나에게 큰 도움이 된 말이다.hcl 서류는 처음 접하는 건데 특별히 어려운 점은 없어요.한편, "이렇게 makefile이 없어도 괜찮아!"이런 주장도 전혀 힘들지 않게 완성됐는지 개념을 이해할 시간도 있다는 것을 잘 알고 있다.
    이번에는 클라우드 런으로 직행하는 디자인으로, 앞으로도 기츠허브 액션스에 편입하려고 시도한다.

    좋은 웹페이지 즐겨찾기