์ค์ฟ ํฐ๋ฅผ ํ ์๋
. ์ฝํ
Kubernetes๋ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ 300ํ์ด๋ ๊ณ ๋ฆด๋ผ์ ๋๋ค. ์ด๋ ์ธ๊ณ ์ต๋ ๊ท๋ชจ์ ์ปจํ ์ด๋ ์์คํ ์์ ์๋ํ์ง๋ง ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค.
๋ง์ ์ง์ ์๊ฐ๊ณผ ๊ฐํ๋ฅธ ํ์ต ๊ณก์ ์ด ํ์ํ ์๊ท๋ชจ ํ์ ๊ฒฝ์ฐ ํนํ ๋น์ฉ์ด ๋ง์ด ๋ญ๋๋ค. ์ด๋ XNUMX๋ช
์ผ๋ก ๊ตฌ์ฑ๋ ์ฐ๋ฆฌ ํ์๊ฒ๋ ๋๋ฌด ๋ง์ ์ค๋ฒํค๋์
๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋์์ ์ฐพ๊ธฐ ์์ํ๊ณ ์ฌ๋์ ๋น ์ก์ต๋๋ค.
๋น์ ์ ๋ฌด์์ ์ํ๋์
์ฐ๋ฆฌ ํ์ Go๋ก ์์ฑ๋ ์งํ์ ๋ํ API ์๋ํฌ์ธํธ, Prometheus ๋ด๋ณด๋ด๊ธฐ, Logstash์ ๊ฐ์ ๋ก๊ทธ ํ์ ๋ฑ ๋ค์ํ ์ผ๋ฐ์ ์ธ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ถ์ ์๋น์ค๋ฅผ ์ง์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ์ ๋ํ ์๊ตฌ ์ฌํญ ๋ชฉ๋ก๋ถํฐ ์์ํ์ต๋๋ค.
- ๋ง์ ์์คํ ์์ ์ผ๋ จ์ ์๋น์ค๋ฅผ ์คํํฉ๋๋ค.
- ์คํ ์ค์ธ ์๋น์ค ๊ฐ์.
- ์๋น์ค ๊ฐ ๋งํฌ.
- ์๋น์ค๊ฐ ์ค๋จ๋๋ฉด ์๋์ผ๋ก ๋ค์ ์์๋ฉ๋๋ค.
- ์๊ท๋ชจ ํ์ ์ํ ์ธํ๋ผ ์ ์ง ๊ด๋ฆฌ.
๋ํ ๋ค์ ์ฌํญ๋ ์ข์ง๋ง ํ์ ์ถ๊ฐ ์ฌํญ์ ์๋๋๋ค.
- ๊ธฐ๋ฅ์ ๋ฐ๋ผ ์์คํ ์ ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค(์: ๊ณผ๋ํ I/O ์๋น์ค๋ฅผ ์ํด ๋น ๋ฅธ ๋์คํฌ๊ฐ ์๋ ์์คํ ์ ํ๊ทธ ์ง์ ).
- ์ค์ผ์คํธ๋ ์ดํฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ์๋น์ค๋ฅผ ์คํํ๋ ๊ธฐ๋ฅ(์: ๊ฐ๋ฐ ์ค)
- ๊ตฌ์ฑ๊ณผ ๋น๋ฐ์ ๊ณต์ ํ๋ ๊ณตํต ์ฅ์์ ๋๋ค.
- ์ธก์ ํญ๋ชฉ ๋ฐ ๋ก๊ทธ์ ๋์ ์ ๋๋ค.
Kubernetes๊ฐ ์ฐ๋ฆฌ์๊ฒ ์ ํฉํ์ง ์์ ์ด์
Kubernetes๋ก ํ๋กํ ํ์ ์ ์ ์ํ๋ฉด์ ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ํฌ๊ฒ ์์กดํ๋ ์ ์ ๋ ๋ณต์กํ ๋ ผ๋ฆฌ ๊ณ์ธต์ ์ถ๊ฐํ๊ณ ์์์ ๋ฐ๊ฒฌํ์ต๋๋ค.
์๋ฅผ ๋ค์ด Kubernetes๋ ๋ค์์ ํตํด ๊ธฐ๋ณธ ์ ๊ณต ์๋น์ค ๊ตฌ์ฑ์ ์ง์ํฉ๋๋ค.
๋ํ Kubernetes ์ํ๊ณ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ๋ชจ๋ฒ ์ฌ๋ก์ ์ต์ ๋๊ตฌ๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ๋ ค๋ฉด ๋ง์ ์๊ฐ๊ณผ ์๋์ง๊ฐ ํ์ํฉ๋๋ค. Kubectl, minikube, kubeadm, helm, Tiller, kops, oc - ๋ชฉ๋ก์ ๊ณ์ํด์ ์ด์ด์ง๋๋ค. ์์ํ ๋ ์ด๋ฌํ ๋๊ตฌ๊ฐ ๋ชจ๋ ํ์ํ ๊ฒ์ ์๋์ง๋ง ๋ฌด์์ด ํ์ํ ์ง ๋ชจ๋ฅด๋ฏ๋ก ๋ชจ๋ ๊ฒ์ ์๊ณ ์์ด์ผ ํฉ๋๋ค. ์ด ๋๋ฌธ์ ํ์ต ๊ณก์ ์ด ์๋นํ ๊ฐํ๋ฅด๋ค.
Kubernetes๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ
์ฐ๋ฆฌ ํ์ฌ์์๋ ๋ง์ ์ฌ๋๋ค์ด Kubernetes๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ์๋นํ ๋ง์กฑํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ธ์คํด์ค๋ ์ด๋ฅผ ์ง์ํ๋ ๋ฆฌ์์ค๋ฅผ ๋ณด์ ํ Google ๋๋ Amazon์์ ๊ด๋ฆฌํฉ๋๋ค.
์ฟ ๋ฒ๋คํฐ์ค์ ํจ๊ป ์ ๊ณต๋๋
- ์์ธํ
๊ถ๋ฆฌ ๊ด๋ฆฌ . ๋ง์ถคํ ์ปจํธ๋กค๋ฌ ํด๋ฌ์คํฐ์ ๋ก์ง์ ์ถ๊ฐํฉ๋๋ค. ์ด๋ ๋จ์ํ Kubernetes API์ ํต์ ํ๋ ํ๋ก๊ทธ๋จ์ ๋๋ค.์๋ ํ์ฅ ! Kubernetes๋ ์๋น์ค ์ธก์ ํญ๋ชฉ์ ์ฌ์ฉํ์ฌ ์๋ ๊ฐ์ ์์ด ํ์์ ๋ฐ๋ผ ์๋น์ค๋ฅผ ํ์ฅํ ์ ์์ต๋๋ค.
๋ฌธ์ ๋ ์ด๋ฌํ ๋ชจ๋ ๊ธฐ๋ฅ์ด ์ค์ ๋ก ํ์ํ์ง ์ฌ๋ถ์
๋๋ค. ์ถ์ํ์๋ง ์์กดํ ์๋ ์์ต๋๋ค.
์ฐ๋ฆฌ ํ์ (์ฃผ ์ธํ๋ผ์์ ๊ธด๋ฐํ ์ฐ๊ฒฐ๋ก ์ธํด) ๋๋ถ๋ถ์ ์๋น์ค๋ฅผ ์๊ฒฉ์ผ๋ก ์ ๊ณตํ๋ฏ๋ก ์์ฒด Kubernetes ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ๊ณ ์ถ์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋จ์ง ์๋น์ค๋ฅผ ์ ๊ณตํ๊ณ ์ถ์์ต๋๋ค.
๋ฐฐํฐ๋ฆฌ๋ ํฌํจ๋์ด ์์ง ์์ต๋๋ค
Nomad๋ ํ์ํ ๊ฒ์ 20%๋ฅผ ์ ๊ณตํ๋ ์ค์ผ์คํธ๋ ์ด์ ์ 80%์ ๋๋ค. ์ํํ๋ ์์ ์ ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ๋ฟ์ ๋๋ค. Nomad๋ ๋ฐฐํฌ๋ฅผ ๊ด๋ฆฌํ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์ปจํ ์ด๋๋ฅผ ๋ค์ ์์ํฉ๋๋ค. ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค.
Nomad์ ํต์ฌ์ ๊ทธ๊ฒ์ด ํ๋ ์ผ์
๋๋ค. ์ต์ํ์: ์ธ๋ถํ๋ ๊ถํ ๊ด๋ฆฌ๊ฐ ์๊ฑฐ๋
Nomad๋ ์ฌ์ฉ ํธ์์ฑ๊ณผ ์ ์ฉ์ฑ ์ฌ์ด์์ ์๋ฒฝํ ์ ์ถฉ์์ ์ฐพ์ ๊ฒ ๊ฐ์ต๋๋ค. ์๊ท๋ชจ์ ๋ ๋ฆฝ์ ์ธ ์๋น์ค์ ์ ํฉํฉ๋๋ค. ๋ ๋ง์ ์ ์ด๊ฐ ํ์ํ๋ฉด ์ง์ ํค์ฐ๊ฑฐ๋ ๋ค๋ฅธ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ ๋ชฉ๋ฏผ์ ๋ง ์ค์ผ์คํธ๋ ์ดํฐ.
Nomad์ ๊ฐ์ฅ ์ข์ ์ ์ ์ฝ๋ค๋ ๊ฒ์ ๋๋ค. ๋์ฒดํ๋ค. ํด๋น ๊ธฐ๋ฅ์ ์๋น์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ค๋ฅธ ์์คํ ์ ์ฝ๊ฒ ํตํฉ๋๋ฏ๋ก ๊ณต๊ธ์ ์ฒด์์ ์ฐ๊ฒฐ์ ์ฌ์ค์ ์์ต๋๋ค. ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋จธ์ ์์ ์ผ๋ฐ ๋ฐ์ด๋๋ฆฌ์ฒ๋ผ ์คํ๋ฉ๋๋ค. ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค!
๋์จํ๊ฒ ๊ฒฐํฉ๋ ๊ตฌ์ฑ์์๋ก ๊ตฌ์ฑ๋ ๋ ธ๋ง๋ ์ํ๊ณ
Nomad์ ์ง์ ํ ๊ฐ์ ์ ์ํ๊ณ์
๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ค๋ฅธ ์ ํ(์์ ํ ์ ํ ์ฌํญ)๊ณผ ๋งค์ฐ ์ ํตํฉ๋ฉ๋๋ค.
template {
data = <<EOH
LOG_LEVEL="{{key "service/geo-api/log-verbosity"}}"
API_KEY="{{with secret "secret/geo-api-key"}}{{.Data.value}}{{end}}"
EOH
destination = "secrets/file.env"
env = true
}
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ํต์ฌ์ ์ฝ์์ต๋๋ค. service/geo-api/log-verbosity
Consul์์ ์์
์ค์ ํ๊ฒฝ ๋ณ์์ ๋
ธ์ถํฉ๋๋ค. LOG_LEVEL
. ์ด์ ๋ ์ ์ํด ๋๋ฆฝ๋๋ค secret/geo-api-key
Vault์์ API_KEY
. ๊ฐ๋จํ์ง๋ง ๊ฐ๋ ฅํฉ๋๋ค!
๋จ์์ฑ์ผ๋ก ์ธํด Nomad๋ API๋ฅผ ํตํด ๋ค๋ฅธ ์๋น์ค๋ก ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์์
์ ๋ํ ํ๊ทธ๊ฐ ์ง์๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ธก์ ํญ๋ชฉ์ผ๋ก ๋ชจ๋ ์๋น์ค์ ํ๊ทธ๋ฅผ ์ง์ ํฉ๋๋ค. trv-metrics
. ์ด๋ฐ ๋ฐฉ์์ผ๋ก Prometheus๋ Consul์ ํตํด ์ด๋ฌํ ์๋น์ค๋ฅผ ์ฝ๊ฒ ์ฐพ๊ณ ์๋ํฌ์ธํธ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค. /metrics
์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ํด. ์๋ฅผ ๋ค์ด ๋ก๊ทธ์ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํ์ฌ ๋์ผํ ์์
์ ์ํํ ์ ์์ต๋๋ค.
ํ์ฅ์ฑ์ ๋ค๋ฅธ ๋ง์ ์๊ฐ ์์ต๋๋ค:
- ํํฌ๋ฅผ ์ฌ์ฉํ์ฌ Jenkins ์์ ์ ์คํํ๋ฉด Consul์ ์๋น์ค ๊ตฌ์ฑ์ด ๋ณ๊ฒฝ๋ ๋ Nomad ์์ ์ ์ฌ๋ฐฐํฌ๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค.
- Ceph๋ Nomad์ ๋ถ์ฐ ํ์ผ ์์คํ ์ ์ถ๊ฐํฉ๋๋ค.
ํ๋น์ค ๋ก๋ ๋ฐธ๋ฐ์ฑ์ ์ํด.
์ด ๋ชจ๋ ๊ฒ์ด ํ์ฉ๋ฉ๋๋ค
๊ณต์ ํ ๊ฒฝ๊ณ
์ด๋ค ์์คํ ๋ ์๋ฒฝํ์ง ์์ต๋๋ค. ์ต์ ๊ธฐ๋ฅ์ ํ๋ก๋์ ์ ์ฆ์ ๋์ ํ๋ ๊ฒ์ ๊ถ์ฅํ์ง ์์ต๋๋ค. ๋ฌผ๋ก ๋ฒ๊ทธ์ ๋๋ฝ๋ ๊ธฐ๋ฅ์ด ์์ง๋ง Kubernetes์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค.
Kubernetes์ ๋นํด Nomad ์ปค๋ฎค๋ํฐ๋ ๊ทธ๋ค์ง ํฌ์ง ์์ต๋๋ค. Kubernetes์๋ ์ด๋ฏธ ์ฝ 75๊ฐ์ ์ปค๋ฐ๊ณผ 000๋ช ์ ๊ธฐ์ฌ์๊ฐ ์๊ณ Nomad์๋ ์ฝ 2000๊ฐ์ ์ปค๋ฐ๊ณผ 14๋ช ์ ๊ธฐ์ฌ์๊ฐ ์์ต๋๋ค. Nomad๋ Kubernetes์ ์๋๋ฅผ ๋ฐ๋ผ์ก๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ฒ ์ง๋ง ์๋ง๋ ๊ทธ๋ด ํ์๋ ์์ ๊ฒ์ ๋๋ค! ์ด๋ ๋์ฑ ์ ๋ฌธํ๋ ์์คํ ์ด๋ฉฐ ์ปค๋ฎค๋ํฐ๊ฐ ์์์๋ก Kubernetes์ ๋นํด ๋์ด์ค๊ธฐ ์์ฒญ์ด ์ฃผ๋ชฉ๋๊ณ ์๋ฝ๋ ๊ฐ๋ฅ์ฑ์ด ๋ ๋๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๊ฐ์
๊ฒฐ๋ก : ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ชจ๋ ์ฌ์ฉํ๋ค๊ณ ํด์ Kubernetes๋ฅผ ์ฌ์ฉํ์ง ๋ง์ธ์. ์๊ตฌ ์ฌํญ์ ์ฃผ์ ๊น๊ฒ ํ๊ฐํ๊ณ ์ด๋ค ๋๊ตฌ๊ฐ ๋ ์ ์ฉํ์ง ํ์ธํ์ธ์.
๋๊ท๋ชจ ์ธํ๋ผ์ ์๋ง์ ๋์ข
์๋น์ค๋ฅผ ๋ฐฐํฌํ๋ ค๋ ๊ฒฝ์ฐ Kubernetes๊ฐ ์ข์ ์ ํ์
๋๋ค. ๋ณต์ก์ฑ๊ณผ ์ด์ ๋น์ฉ์ด ์ถ๊ฐ๋๋ค๋ ์ ๋ง ์ ์ํ์ธ์. ๋ค์๊ณผ ๊ฐ์ ๊ด๋ฆฌํ Kubernetes ํ๊ฒฝ์ ์ฌ์ฉํ๋ฉด ์ผ๋ถ ๋น์ฉ์ ํผํ ์ ์์ต๋๋ค.
์ ์ง ๊ด๋ฆฌ๊ฐ ์ฝ๊ณ ํ์ฅ์ด ๊ฐ๋ฅํ ์ ๋ขฐํ ์ ์๋ ์ค์ผ์คํธ๋ ์ดํฐ๋ฅผ ์ฐพ๊ณ ์๋ค๋ฉด Nomad๋ฅผ ์ฌ์ฉํด ๋ณด๋ ๊ฒ์ ์ด๋จ๊น์? ์ด๊ฒ์ด ๋น์ ์ ์ผ๋ง๋ ๋ฉ๋ฆฌ ๋ฐ๋ ค๊ฐ์ง ๋๋ ์๋ ์์ต๋๋ค.
Kubernetes๋ฅผ ์๋์ฐจ์ ๋น์ ํ๋ค๋ฉด Nomad๋ ์ค์ฟ ํฐ์ ํด๋นํฉ๋๋ค. ๋๋ก๋ ํ ๊ฐ์ง๊ฐ ํ์ํ๊ณ ๋๋ก๋ ๋ค๋ฅธ ๊ฒ์ด ํ์ํฉ๋๋ค. ๋ ๋ค ์กด์ฌํ ๊ถ๋ฆฌ๊ฐ ์์ต๋๋ค.
์ถ์ฒ : habr.com