[Go] Service Weaver: GKE ๋ฐฐํฌ

์•„๋งˆ ์ด๊ฒŒ ์œ„๋ฒ„๋ฅผ ๋งŒ๋“  ์ฃผ ๋ชฉ์  ์ค‘ ํ•˜๋‚˜์ด์ง€ ์•Š๋‚˜ ์‹ถ๋‹ค. GCP ์œ ์ € ๋Š˜๋ฆฌ๊ธฐ...

GCP์˜ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์„œ๋น„์Šค์— ๋ถ„์‚ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋„์šฐ๋Š” ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•œ๋‹ค.

๋‹ค๋ฅธ ํด๋ผ์šฐ๋“œ ๊ธฐ๋Šฅ์ด๋‚˜ ์˜จํ”„๋ ˆ๋ฏธ์Šค ๊ธฐ๋Šฅ๋„ ์ถ”ํ›„์— ์ œ๊ณต๋ ์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ํ˜„์žฌ๋กœ์„œ๋Š” ๊ณ ๋ คํ•˜๊ณ  ์žˆ์ง€ ์•Š์€๋“ฏ.




weaver gke CLI ์„ค์น˜

weaver cli๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ž๋™ํ™”๋œ ๋ฐฐํฌ๋ฅผ ์‹œ๋„ํ•˜๋ ค๋ฉด, ๋˜ ์ „์šฉ ๋„๊ตฌ๋ฅผ ํ•˜๋‚˜ ๊น”์•„์ค˜์•ผ ํ•œ๋‹ค.

go install github.com/ServiceWeaver/weaver-gke/cmd/weaver-gke@latest




GCP CLI ์„ค์น˜

gcp cli๊ฐ€ ์—†๋‹ค๋ฉด. ์•„๋ž˜ ๋งํฌ์— ๋“ค์–ด๊ฐ€์„œ ์ ์ ˆํžˆ ๊น”์•„์ค€๋‹ค.
gcloud CLI ์„ค์น˜ | Google Cloud


ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ํ•˜๋‚˜ ๊น”์•„์ฃผ๊ณ 

gcloud components install gke-gcloud-auth-plugin

๊ณ„์ • ์ •๋ณด๋„ ์ ์ ˆํžˆ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.




๋ฐ‘์ค€๋น„

๋ฃจํŠธ URL๋กœ ํ—ฌ์Šค์ฒดํฌ์šฉ API๋ฅผ ํ•˜๋‚˜ ํŒŒ์ค˜์•ผ ํ•œ๋‹ค.

    // Health Check
	http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) {
		fmt.Fprintf(writer, "OK")
	})

์ด๊ฒŒ ์—†์œผ๋ฉด ์ปจํ…Œ์ด๋„ˆ์˜ ๊ฑด๊ฐ•ํ•จ์„ ์•Œ ์ˆ˜๊ฐ€ ์—†์–ด์„œ ์žฌ๋ฐฐํฌ๊ฐ€ ๋๋‚˜๋„ ๊ตฌ๋ฒ„์ „์„ ๋‚ด๋ฆฌ์งˆ ๋ชปํ•œ๋‹ค.




๋ฐฐํฌํ•˜๊ธฐ

๋จผ์ € toml ํŒŒ์ผ์„ ์ ์ ˆํžˆ ์ˆ˜์ •ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  windows/macOS ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฐฐํฌ๋ฅผ ์‹œ๋„ํ•˜๊ธฐ์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.
์–ด์ฐจํ”ผ ์ฟ ๋ฒ„๋กœ ๋ฐฐํฌํ•˜๋ ค๋ฉด ์‹คํ–‰ํŒŒ์ผ์„ ๋ฆฌ๋ˆ…์Šค์šฉ์œผ๋กœ ๋ง์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค...

๊ทธ๋ฆฌ๊ณ  gke ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

[serviceweaver]
name = "weaver-start"
binary = "./weaver-start"
# binary = "./weaver-start.exe"

[gke]
regions = ["asia-northeast3"]
public_listener = [
  {name = "weaver-start", hostname = "weaver.myyrakle.com"},
]

์‹ค์ œ๋กœ ๋ฐฐํฌํ•  ๋ฆฌ์ „๊ณผ, ํผ๋ธ”๋ฆญ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ •์˜ํ•œ๋‹ค.
ํผ๋ธ”๋ฆญ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉด private ๋ฆฌ์Šค๋„ˆ๋งŒ ์—ด๋ ค์„œ ๋‚ด๋ถ€ ํ†ต์‹ ๋งŒ ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

๊ทธ๋ฆฌ๊ณ  gke deploy ๋ช…๋ น์œผ๋กœ ์‹คํ–‰ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

weaver gke deploy weaver.toml

๊ทธ๋Ÿผ ํ•œ์„ธ์›”๋™์•ˆ ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ์„ ์‹œ์ž‘ํ•œ๋‹ค.


์œ ์˜ํ•  ์ ์€, ์ค‘์•™์ œ์–ด์šฉ config ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ถ”๊ฐ€๋กœ ๋„์šด๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
ํ˜„์žฌ๋Š” us-central1 ๋ฆฌ์ „์„ ๊ณ ์ •์œผ๋กœ ๋„์šด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์„ค์ •๊ณผ ๋ฐฐํฌ๊ฐ€ ๋๋‚˜๋ฉด, ๋…ธ๋“œ๋„ ์•Œ์•„์„œ ์ž˜ ๋„์›Œ์ค„ ๊ฒƒ์ด๋‹ค.

์„œ๋น„์Šค ์ƒํƒœ๋Š” gke status ๋ช…๋ น์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋กœ ํผ๋ธ”๋ฆญ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์œ„์™€ ๊ฐ™์ด private ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋กœ ๊ตฌ์„ฑ๋œ private ์—”๋“œํฌ์ธํŠธ๋งŒ ๋งŒ๋“ค์–ด์ง€๊ณ 

ํผ๋ธ”๋ฆญ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ด๋Ÿฐ ์‹์œผ๋กœ ๋œ๋‹ค.





public ์—”๋“œํฌ์ธํŠธ ํ˜ธ์ถœ

๊ทธ๋ƒฅ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž˜ ๋„๋‚˜ ํ…Œ์ŠคํŠธ๋งŒ ํ•ด๋ณด๊ณ ์‹ถ๋‹ค๋ฉด, ์š”์ฒญ ํ—ค๋”์— ๋„๋ฉ”์ธ ์ •๋ณด๋งŒ ๋„ฃ๊ณ  public IP์— ์ด๋ณด๋ฉด ๋œ๋‹ค.

curl --header "Host: ๋„๋ฉ”์ธ" http:...

์ œ๋Œ€๋กœ ์“ฐ๋ ค๋ฉด ๋„๋ฉ”์ธ ๋ถ™์—ฌ์„œ ์“ฐ๋ฉด ๋” ์ข‹๊ณ 

๊ทผ๋ฐ ๋ญ”๊ฐ€ SSL ์„ค์ •์€ ์ž๋™์œผ๋กœ ํ•ด์ฃผ๊ธด ํ•ด์ฃผ๋Š”๋ฐ... SSL ์ธ์ฆ์„œ ํ”„๋กœ๋น„์ €๋‹์ด ํ•œ์„ธ์›” ๊ฑธ๋ฆฐ๋‹ค.


24์‹œ๊ฐ„๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค๋ณด๋ž€๋‹ค.
๋‚ด ๊ฒฝ์šฐ์—๋Š” 2์‹œ๊ฐ„์ฏค ๊ฑธ๋ฆฐ ๊ฒƒ ๊ฐ™๋‹ค.
AWS๋Š” ๋ช‡๋ถ„์ด๋ฉด ๋˜๋˜๋ฐ... ์ข€ ์•„์‰ฌ์šด ์†๋„๋‹ค.




private ์—”๋“œํฌ์ธํŠธ

VPC ๋‚ด์—์„œ๋งŒ ์‚ฌ์šฉํ•  private ์—”๋“œํฌ์ธํŠธ๋Š” "์„œ๋น„์Šค๋ช….๋ฆฌ์ „๋ช….serviceweaver.internal"์˜ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ทธ๋ž˜์„œ ์ด๋ ‡๊ฒŒ ์“ฐ๋ฉด ๋œ๋‹ค๊ณ  ์•ˆ๋‚ดํ•˜๊ธด ํ•˜๋Š”๋ฐ..

๋ชจ๋ฅด๊ฒ ๋‹ค. ์ž˜ ์•ˆ๋œ๋‹ค.
๋‚ด๋ถ€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์— ์“ฐ๋Š” envoy์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜์ผํ…๋ฐ, ์•„์ง ๋งŒ๋“ค๋‹ค ๋ง์•„์„œ ๊ทธ๋Ÿฐ๊ฑด์ง€ ๋ญ”์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.




๋Œ€์‹œ๋ณด๋“œ

๊ธฐ์กด๊ณผ ๋™์ผํ•˜๊ฒŒ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํŽผ์ณ๋ณผ ์ˆ˜ ์žˆ๋‹ค.





์žฌ๋ฐฐํฌ

๋‹น์—ฐํžˆ ์•ฑ์€ ์‹œ๊ฐ„์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•ด์•ผํ•˜๊ณ , ์ƒˆ ๋ฒ„์ „์˜ ์•ฑ์„ ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์€ ๋งํ•˜์ง€ ์•Š์•„๋„ ์•Œ ๊ฒƒ์ด๋‹ค.
์ƒˆ ๋ฒ„์ „์˜ ์•ฑ์„ ๋ฐฐํฌํ•˜๋ ค๋ฉด, ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ 

๋นŒ๋“œํ•ด์„œ ๋˜‘๊ฐ™์ด deploy๋ฅผ ์‹œ๋„ํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋Ÿผ ์ƒˆ ๋ฒ„์ „์˜ "deployment"๊ฐ€ ๋œฐ ๊ฒƒ์ด๊ณ ,

์•Œ์•„์„œ ์ž˜ ๊ต์ฒดํ•ด์ค„ ๊ฒƒ์ด๋‹ค.

๊ทผ๋ฐ ์•„๋ฌด๋ž˜๋„ ์ดˆ์ฐฝ๊ธฐ ํ”„๋กœ์ ํŠธ๋ผ ๊ฒฐํ•จ์ด ์žˆ๋Š”๊ฑด์ง€, ์ง€๊ธˆ์€ ๊ต์ฒด์ค‘์— ๋‹ค์šดํƒ€์ž„์ด ์ข€ ๋ฐœ์ƒํ•œ๋‹ค.
๋” ์•ˆ์ •ํ™”๋˜๊ธธ ๊ธฐ๋‹ค๋ ค์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.




๋ฐฐํฌ ์ œ๊ฑฐํ•˜๊ธฐ

๊ทธ๋ƒฅ ๋ฐฐํฌ๋‹จ์œ„๋ฅผ ์‹น ๋‚ ๋ ค๋ฒ„๋ฆฌ๊ณ  ์‹ถ๋‹ค๋ฉด, kill ๋ช…๋ น์„ ์“ฐ๋ฉด ๋œ๋‹ค.

๊ทธ๋ ‡๋‹ค.

์•„์ง ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ๋‹ค๋ณด๋‹ˆ, ์ „์ฒด์ ์œผ๋กœ ๋ฏธ์ˆ™ํ•œ ๋ถ€๋ถ„์ด ๋งŽ์ด ๋ณด์ธ๋‹ค.

์•ˆ์ •ํ™”๊ฐ€ ๋˜๊ณ  ์˜จํ”„๋ ˆ๋ฏธ์Šค๋‚˜ ํƒ€์‚ฌ ํด๋ผ์šฐ๋“œ๋„ ์ง€์›์ด ๋œ๋‹ค๋ฉด.. ์ฐธ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.



์ฐธ์กฐ
Service Weaver Docs