[k8s] consul: Service Discovery

์ด์ „ ํฌ์ŠคํŠธ
https://blog.naver.com/sssang97/223132055988

consul์„ ์‚ฌ์šฉํ•˜๋Š” ์ฃผ ๋ชฉ์  ์ค‘ ํ•˜๋‚˜๋Š” Service Discovery๋‹ค.
ํŠน์ • ์„œ๋ฒ„๋“ค์˜ IP๋ฅผ consul์˜ Service Registry์— ๋“ฑ๋กํ•˜๊ณ , ๊ทธ๊ฑธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†ํ• ๋•Œ๋งˆ๋‹ค ๊บผ๋‚ด์„œ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.




์„œ๋ฒ„ ์—์ด์ „ํŠธ ์‹คํ–‰ (with consul CLI)

์„œ๋ฒ„์˜ IP ์ฃผ์†Œ๋ฅผ consul์— ๋“ฑ๋กํ•˜๋ ค๋ฉด, ์šฐ์„  consul cli๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„œ๋ฒ„์šฉ Pod๋ฅผ ๋จผ์ € ๋„์šด ๋‹ค์Œ์—

apiVersion: v1
kind: Pod
metadata:
  name: server
  labels: 
    app: server 
  annotations:
    consul.hashicorp.com/connect-inject: 'true'
spec:
  containers:
  - name: server 
    image: myyrakle/node-server-for-test

์ ‘์†ํ•ด์„œ

consul CLI๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์„œ๋น„์Šค๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ๋‹ค.

consul services register -name=์„œ๋น„์Šค๋ช… -address=IP์ฃผ์†Œ -port=ํฌํŠธ --http-addr=์›นUI์ฃผ์†Œ
consul services register -name=test-server -address=$(hostname -I) -port=80 --http-addr=34.123.54.86

๊ทธ๋Ÿฌ๋ฉด ์ฝ˜์†” UI์—๋„ ์„œ๋น„์Šค๊ฐ€ ์—ฐ๋™์ด ๋  ๊ฒƒ์ด๊ณ 

IP๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” ์ง๊ด€์ ์ธ ํ™•์ธ์„ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ์— ์ง์ ‘ ๋“ค์–ด๊ฐ€์„œ ์ž‘์—…์„ ํ–ˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ ํ”„๋กœ๋•์…˜์— ์‚ฌ์šฉํ•  ๋•Œ๋Š” Docker Entrypoint์—์„œ ์ž๋™์œผ๋กœ register ์‹คํ–‰์„ ํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค.
์•„๋‹ˆ๋ฉด sidecar ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋ณ„๋„๋กœ ๊ตฌ์„ฑํ•ด์„œ ๊ฑฐ๊ธฐ์—๋งŒ consul agent๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์€ ๋ฐฉ๋ฒ•์ผ ๊ฒƒ์ด๋‹ค.




Service IP ์ ‘์†์ •๋ณด ๊บผ๋‚ด์˜ค๊ธฐ (Service Discovery)

๋“ฑ๋ก๋œ ์„œ๋น„์Šค์˜ ์ •๋ณด๋ฅผ ๊บผ๋‚ด์˜ค๋ ค๋ฉด Restful API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

.../v1/catalog/service/์„œ๋น„์Šค๋ช…

์—ฌ๊ธฐ์„œ ServiceAddress์™€ ServicePort๋ฅผ ๊บผ๋‚ด์™€์„œ ์š”์ฒญํ• ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.




Service Registry ๋“ฑ๋ก ํ•ด์ œํ•˜๊ธฐ

CLI์—์„œ deregister ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋น„์Šค ์ •๋ณด๋ฅผ ๋‹ค์‹œ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค.



์ฐธ์กฐ
https://developer.hashicorp.com/consul/commands/services/register
https://developer.hashicorp.com/consul/api-docs/catalog#list-services