Skip to content

Latest commit

ย 

History

History
93 lines (67 loc) ยท 2.45 KB

File metadata and controls

93 lines (67 loc) ยท 2.45 KB

Skaffold-example

  • Skaffold๋ฅผ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ ์œ„ํ•œ ์˜ˆ์‹œ ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์ž…๋‹ˆ๋‹ค.

  • Helm์„ ์‚ฌ์šฉํ•ด ๊ฐ„๋‹จํžˆ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ตฌ์กฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    |--- Dockerfile
    |--- go.mod
    |--- main.go
    |--- skaffold.yaml
    |--- helm
          |--- Chart.yaml
          |--- internal-values.yaml
          |--- templates
                  |--- deployment.yaml
                  |--- service.yaml
    

Minikube์—์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ํ•ด๋‹น ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ clone ๋ฐ›์€ ํ›„, minikube start ๋ช…๋ น์–ด๋กœ Minikube๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ skaffold-poc namespace๋ฅผ ์ƒ์„ฑ ํ›„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    $ kubectl create ns skaffold-poc
    $ kubectl config set-context --current --namespace skaffold-poc
  • Local ํ™˜๊ฒฝ์ž„์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    $ skaffold config set local-cluster true
    • ์ด ์„ค์ •์œผ๋กœ ์ธํ•ด ์ƒˆ๋กญ๊ฒŒ ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๊ฐ€ registry์— push๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Skaffold๋ฅผ ์‹คํ–‰ํ•ด Minikube์— Kubernetes object๋“ค์„ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

    $ skaffold run
  • Pod์— HTTP ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ pod์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋ƒ…๋‹ˆ๋‹ค.

    $ minikube service skaffold-poc-service -n skaffold-poc --url
    http://127.0.0.1:60520
  • ์•„๋ž˜์ฒ˜๋Ÿผ pod์— ์š”์ฒญ์„ ๋ณด๋‚ด ์‘๋‹ต์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    $ curl localhost:60520/health
    {"message": "server is running."}%
  • ์ด์ œ main.go์˜ response body๋ฅผ ์ˆ˜์ •ํ•ด๋ด…๋‹ˆ๋‹ค.

    package main
    
    import "net/http"
    
    func main() {
        http.HandleFunc("/health", func(w http.ResponseWriter, r *http.Request) {
            w.Header().Set("Content-Type", "application/json")
            _, _ = w.Write([]byte(`{"message": "UPDATED MESSAGE!"}`))
        })
        
        _ = http.ListenAndServe(":8080", nil)
    }`
  • ๋‹ค์‹œ skaffold run์„ ์ˆ˜ํ–‰ํ•ด ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๊ณ , Minikube ๋ช…๋ น์–ด๋„ ๋‹ค์‹œ ์‹คํ–‰ํ•ด ๋ด…๋‹ˆ๋‹ค.

    $ skaffold run
    # ์ด๋ฏธ์ง€ ๋นŒ๋“œ ํ›„ deploy ์„ฑ๊ณต ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ
    
    $ minikube service skaffold-poc-service -n skaffold-poc --url
    http://127.0.0.1:60736
  • ์ด์ œ ์ด์ „๊ณผ ๋™์ผํ•œ /health path๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด Skaffold๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ƒˆ๋กœ์šด ์ด๋ฏธ์ง€๋ฅผ
    Kubernetes cluster์— ๋ฐฐํฌํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    $ curl localhost:60736/health
    {"message": "UPDATED MESSAGE!"}%