Sysadminka ์์คํ ๊ด๋ฆฌ์ ๋ชจ์์ด Chelyabinsk์์ ์ด๋ฆฌ๊ณ ์์ผ๋ฉฐ ๋ง์ง๋ง ๋ชจ์์์๋ Kubernetes์ 1C-Bitrix์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ์๋ฃจ์ ์ ๋ํ ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํ์ต๋๋ค.
Bitrix, Kubernetes, Ceph - ํ๋ฅญํ ์กฐํฉ์ธ๊ฐ์?
์ด ๋ชจ๋ ๊ฒ์์ ํจ๊ณผ์ ์ธ ์๋ฃจ์ ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๊ฐ์!
๋ฐ์
์ 18์ XNUMX์ผ ์ฒผ๋ด๋น์คํฌ์์ ์ด๋ ธ์ต๋๋ค. ๋ค์์์ ์ฐ๋ฆฌ์ ๋ชจ์์ ๋ํด ์ฝ์ด๋ณด์ค ์ ์์ต๋๋ค.
๋ณด๊ณ ์๋ฅผ ๊ฐ์ง๊ณ ์ค์๊ฑฐ๋ ์ฒญ์ทจ์๋ก ์ฐ๋ฆฌ์๊ฒ ์ค์๋ ค๋ฉด ํ์ํฉ๋๋ค. [์ด๋ฉ์ผ ๋ณดํธ] ๊ทธ๋ฆฌ๊ณ ํ ๋ ๊ทธ๋จ t.me/vadimisakanov์์ ํ์ธํ์ธ์.
๋ด ๋ณด๊ณ ์
์๋ฃจ์ "Kubernetes์ Bitrix, ๋ฒ์ Southbridge 1.0"
์ ๋ ๋ฐ์ ์์ ํ๋ ๊ฒ์ฒ๋ผ "Kubernetes ์ ๋ฌธ์๋ฅผ ์ํ" ํ์์ผ๋ก ์ฐ๋ฆฌ ์๋ฃจ์ ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ํ์ง๋ง ์ ์ด๋ Wikipedia์ ๊ธฐ์ฌ ์์ค์์๋ Bitrix, Docker, Kubernetes, Ceph๋ผ๋ ๋จ์ด๋ฅผ ์๊ณ ์๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
Kubernetes์ Bitrix์ ๋ํด ๋ฌด์์ด ์ค๋น๋์ด ์๋์?
Kubernetes์์ Bitrix ์ ํ๋ฆฌ์ผ์ด์
์ ์๋์ ๋ํ ์ ๋ณด๋ ์ธํฐ๋ท ์ ์ฒด์ ๊ฑฐ์ ์์ต๋๋ค.
์ ๊ฐ ์ฐพ์ ์๋ฃ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
Qsoft์ Alexander Serbul, 1C-Bitrix ๋ฐ Anton Tuzlukov์ ๋ณด๊ณ ์:
๊ผญ ๋ค์ด๋ณด์๊ธธ ๊ถํฉ๋๋ค.
์ฌ์ฉ์๋ก๋ถํฐ ์์ฒด ์๋ฃจ์
๊ฐ๋ฐ
๋ ๋ง์ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค
์ ๊ทธ๋ฆฌ๊ณ ... ์ฌ์ค ๊ทธ๊ฒ ๋ค์์.
๊ฒฝ๊ณ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ ๋งํฌ์ ์๋ ์๋ฃจ์
์ ํ์ง์ ํ์ธํ์ง ์์์ต๋๋ค. :)
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ์๋ฃจ์
์ ์ค๋นํ ๋ Alexander Serbul๊ณผ ์ด์ผ๊ธฐ๋ฅผ ๋๋ด๋๋ฐ ๊ทธ์ ๋ณด๊ณ ์๊ฐ ์์ง ๋ํ๋์ง ์์๊ธฐ ๋๋ฌธ์ ๋ด ์ฌ๋ผ์ด๋์ "Bitrix๋ Kubernetes๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค."๋ผ๋ ํญ๋ชฉ์ด ์์ต๋๋ค.
๊ทธ๋ฌ๋ Docker์์ Bitrix๋ฅผ ์คํํ๊ธฐ ์ํด ์ด๋ฏธ ๋ง๋ค์ด์ง Docker ์ด๋ฏธ์ง๊ฐ ๋ง์ด ์์ต๋๋ค.
Kubernetes์์ Bitrix๋ฅผ ์ํ ์์ ํ ์๋ฃจ์
์ ์์ฑํ๊ธฐ์ ์ถฉ๋ถํฉ๋๊น?
์๋์. ํด๊ฒฐํด์ผ ํ ๋ฌธ์ ๊ฐ ๋ง์ต๋๋ค.
Kubernetes์์ Bitrix์ ๋ฌธ์ ์ ์ ๋ฌด์์ ๋๊น?
์ฒซ์งธ, Dockerhub์ ๊ธฐ์ฑ ์ด๋ฏธ์ง๋ Kubernetes์ ์ ํฉํ์ง ์์ต๋๋ค.
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ๋ฅผ ๊ตฌ์ถํ๋ ค๋ฉด(Kubernetes์์๋ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ ๊ฒ ํจ) Kubernetes ์ ํ๋ฆฌ์ผ์ด์
์ ์ปจํ
์ด๋๋ก ๋ถ๋ฆฌํ๊ณ ๊ฐ ์ปจํ
์ด๋๊ฐ ํ๋์ ์์ ๊ธฐ๋ฅ์ ์ํํ๋๋ก ํด์ผ ํฉ๋๋ค(๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ์ ์ํํด์ผ ํฉ๋๋ค). ์ ํ๋๋ง? ์ฆ, ๋จ์ํ ์๋ก ์ ๋ขฐ์ฑ์ด ๋์์ง๋๋ค.
๋ ๊ตฌ์ฒด์ ์ผ๋ก ์์๋ณด๋ ค๋ฉด ์ด ๊ธฐ์ฌ์ ๋์์์ ์์ฒญํ์ธ์.
Dockerhub์ Docker ์ด๋ฏธ์ง๋ ์ฃผ๋ก ์ฌ์ธ์ ์์น์ ๋ฐ๋ผ ๊ตฌ์ถ๋์์ผ๋ฏ๋ก ์ฐ๋ฆฌ๋ ์ฌ์ ํ ์์ฒด ์์ ๊ฑฐ๋ฅผ ๋ง๋ค๊ณ ์ฒ์๋ถํฐ ์ด๋ฏธ์ง๋ฅผ ์์ฑํด์ผ ํ์ต๋๋ค.
๋ ๋ฒ์งธ - ์ฌ์ดํธ ์ฝ๋๋ ๊ด๋ฆฌ์ ํจ๋์์ ํธ์ง๋ฉ๋๋ค.
์ฌ์ดํธ์ ์ ์น์ ์ ๋ง๋ค์์ต๋๋ค. ์ฝ๋๊ฐ ์ ๋ฐ์ดํธ๋์์ต๋๋ค(์ ์น์ ์ด๋ฆ์ ๋๋ ํฐ๋ฆฌ๊ฐ ์ถ๊ฐ๋์์ต๋๋ค).
๊ด๋ฆฌ์ ํจ๋์์ ๊ตฌ์ฑ ์์์ ์์ฑ์ ๋ณ๊ฒฝํ๋ฉด ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋ฉ๋๋ค.
Kubernetes๋ "๊ธฐ๋ณธ์ ์ผ๋ก" ์ด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ปจํ ์ด๋๋ ์ํ ๋น์ ์ฅ์ด์ด์ผ ํฉ๋๋ค.
์ด์ : ํด๋ฌ์คํฐ์ ๊ฐ ์ปจํ ์ด๋(ํฌ๋)๋ ํธ๋ํฝ์ ์ผ๋ถ๋ง ์ฒ๋ฆฌํฉ๋๋ค. ํ๋์ ์ปจํ ์ด๋(ํฌ๋)์์๋ง ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ํฌ๋๋ง๋ค ์ฝ๋๊ฐ ๋ฌ๋ผ์ง๊ณ , ์ฌ์ดํธ๋ ๋ค๋ฅด๊ฒ ์๋ํ๋ฉฐ, ์ฌ์ดํธ์ ๋ค๋ฅธ ๋ฒ์ ์ด ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ ํ์๋ฉ๋๋ค. ๊ทธ๋ ๊ฒ ์ด ์๋ ์์ต๋๋ค.
์ ์งธ - ๋ฐฐํฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
๋จ์ผ์ฒด์ ํ๋์ "ํด๋์" ์๋ฒ๊ฐ ์๋ ๊ฒฝ์ฐ ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ๋ฐฐํฌํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ง์ด๊ทธ๋ ์ด์
ํ๊ณ , ํธ๋ํฝ์ ์ ๋ฒ์ ์ ์ฝ๋๋ก ์ ํํฉ๋๋ค. ์ ํ์ด ์ฆ์ ๋ฐ์ํฉ๋๋ค.
Kubernetes์ ์ฌ์ดํธ๊ฐ ์๊ณ ๋ง์ดํฌ๋ก์๋น์ค๋ก ๋ถํ ๋ ๊ฒฝ์ฐ ์ฝ๋๊ฐ ํฌํจ๋ ์ปจํ
์ด๋๊ฐ ๋ง์ด ์์ต๋๋ค. ์ ๋ฒ์ ์ ์ฝ๋๋ก ์ปจํ
์ด๋๋ฅผ ์์งํ๊ณ , ์ด์ ์ฝ๋ ๋์ ์ด๋ฅผ ๋กค์์ํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ง์ด๊ทธ๋ ์ด์
ํ๊ณ , ์ด์์ ์ผ๋ก๋ ๋ฐฉ๋ฌธ์๊ฐ ๋์น์ฑ์ง ๋ชปํ๊ฒ ์ํํด์ผ ํฉ๋๋ค. ๋คํ์ค๋ฝ๊ฒ๋ Kubernetes๋ ๋ค์ํ ์ ํ์ ๋ฐฐํฌ๋ฅผ ์ง์ํ์ฌ ์ด๋ฅผ ๋์์ค๋๋ค.
๋ท์งธ - ์ ์ ์ ์ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
์ฌ์ดํธ๊ฐ 10GB์ ๋ถ๊ณผํ๊ณ ์ ์ฒด๋ฅผ ์ปจํ
์ด๋์ ๋ฐฐํฌํ๋ ๊ฒฝ์ฐ ๋ฐฐํฌํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ 10GB ์ปจํ
์ด๋๊ฐ ๋ฉ๋๋ค.
์ฌ์ดํธ์ "๊ฐ์ฅ ๋ฌด๊ฑฐ์ด" ๋ถ๋ถ์ ์ปจํ
์ด๋ ์ธ๋ถ์ ์ ์ฅํด์ผ ํ๋ฉฐ ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์๋ฌธ์ด ์๊น๋๋ค.
์ฐ๋ฆฌ ์๋ฃจ์ ์์ ๋ฌด์์ด ๋น ์ก๋์?
์ ์ฒด Bitrix ์ฝ๋๋ ๋ง์ดํฌ๋ก ๊ธฐ๋ฅ/๋ง์ดํฌ๋ก ์๋น์ค๋ก ๊ตฌ๋ถ๋์ง ์์ต๋๋ค(๋ฑ๋ก์ด ๋ณ๋, ์จ๋ผ์ธ ์์ ๋ชจ๋์ด ๋ณ๋ ๋ฑ). ์ฐ๋ฆฌ๋ ์ ์ฒด ์ฝ๋ ๋ฒ ์ด์ค๋ฅผ ๊ฐ ์ปจํ ์ด๋์ ์ ์ฅํฉ๋๋ค.
๋ํ ์ฐ๋ฆฌ๋ Kubernetes์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ์ฅํ์ง ์์ต๋๋ค(์ ๋ ์ฌ์ ํ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ํด Kubernetes์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ ์๋ฃจ์ ์ ๊ตฌํํ์ง๋ง ํ๋ก๋์ ์ฉ์ ์๋๋๋ค).
์ฌ์ดํธ๊ฐ Kubernetes์์ ์คํ๋๋ค๋ ์ฌ์ค์ ์ฌ์ดํธ ๊ด๋ฆฌ์์๊ฒ ์ฌ์ ํ ๋์ ๋๋๋ค. "์์คํ ํ์ธ" ๊ธฐ๋ฅ์ด ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค. ๊ด๋ฆฌ์ ํจ๋์์ ์ฌ์ดํธ ์ฝ๋๋ฅผ ํธ์งํ๋ ค๋ฉด ๋จผ์ "์ฝ๋๋ฅผ ํธ์งํ๊ณ ์ถ์ต๋๋ค" ๋ฒํผ์ ํด๋ฆญํด์ผ ํฉ๋๋ค.
๋ฌธ์ ๊ฐ ํ์ธ๋์๊ณ , ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌํ์ ํ์์ฑ์ด ๊ฒฐ์ ๋์์ผ๋ฉฐ, ๋ชฉํ๋ ๋ช ํํฉ๋๋ค. Bitrix์ ๊ธฐ๋ฅ๊ณผ Kubernetes์ ์ฅ์ ์ ๋ชจ๋ ์ ์งํ๋ฉด์ Kubernetes์ Bitrix์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ ์๋ ์์คํ ์ ํ๋ณดํ๋ ๊ฒ์ ๋๋ค. ๊ตฌํ์ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
๊ตฌ์กฐ
์น ์๋ฒ(์์
์)์ ํจ๊ป "์๋ํ๋" ํฌ๋๊ฐ ๋ง์ด ์์ต๋๋ค.
cron ์์
์ด ์๋ ์๋ ํ๋(ํ๋๋ง ํ์ํจ)
๊ด๋ฆฌ์ ํจ๋์์ ์ฌ์ดํธ ์ฝ๋๋ฅผ ํธ์งํ๊ธฐ ์ํ ์
๊ทธ๋ ์ด๋ XNUMX๊ฐ(๋ํ ํ๋๋ง ํ์ํจ)
์ฐ๋ฆฌ๋ ์ง๋ฌธ์ ํด๊ฒฐํฉ๋๋ค:
- ์ธ์ ์ ์ด๋์ ์ ์ฅํ๋์?
- ์บ์๋ ์ด๋์ ์ ์ฅํ๋์?
- ์ฌ๋ฌ ์ปจํ ์ด๋์ ๊ธฐ๊ฐ๋ฐ์ดํธ์ ์ ์ ์ ๋ฐฐ์นํ์ง ์๊ณ ์ ์ ์ ์ด๋์ ์ ์ฅํ ๊ฒ์ธ๊ฐ?
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋ป๊ฒ ์๋ํ๋์?
๋์ปค ์ด๋ฏธ์ง
Docker ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ๋ถํฐ ์์ํฉ๋๋ค.
์ด์์ ์ธ ์ต์ ์ ํ๋์ ๋ฒ์ฉ ์ด๋ฏธ์ง๋ฅผ ๊ฐ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ ํฌ๋, Crontask๊ฐ ์๋ ํฌ๋ ๋ฐ ์ ๊ทธ๋ ์ด๋ ํฌ๋๋ฅผ ์ป๋ ๊ฒ์ ๋๋ค.
์ฌ๊ธฐ์๋ nginx, apache/php-fpm(๋น๋ ์ค์ ์ ํ ๊ฐ๋ฅ), ๋ฉ์ผ ์ ์ก์ ์ํ msmtp ๋ฐ cron์ด ํฌํจ๋ฉ๋๋ค.
์ด๋ฏธ์ง๋ฅผ ์ด์ ๋ธํ ๋ ์ฌ์ดํธ์ ์ ์ฒด ์ฝ๋ ๋ฒ ์ด์ค๊ฐ /app ๋๋ ํฐ๋ฆฌ์ ๋ณต์ฌ๋ฉ๋๋ค(๋ณ๋์ ๊ณต์ ์ ์ฅ์๋ก ์ด๋ํ ๋ถ๋ถ์ ์ ์ธ).
๋ง์ดํฌ๋ก์๋น์ค, ์๋น์ค
์์ ์ ํฌ๋:
- nginx๊ฐ ํฌํจ๋ ์ปจํ ์ด๋ + ์ปจํ ์ด๋ apache/php-fpm + msmtp
- msmtp๋ฅผ ๋ณ๋์ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์ฎ๊ธฐ๋ ๊ฑด ์ ์ ๋๊ณ , Bitrix๋ ์ง์ ๋ฉ์ผ์ ๋ณด๋ผ ์ ์๋ค๋ ๊ฒ์ ๋ถ๊ฐํ๊ธฐ ์์ํ์ต๋๋ค.
- ๊ฐ ์ปจํ ์ด๋์๋ ์์ ํ ์ฝ๋๋ฒ ์ด์ค๊ฐ ์์ต๋๋ค.
- ์ปจํ ์ด๋์ ์ฝ๋ ๋ณ๊ฒฝ์ ๊ธ์งํฉ๋๋ค.
์๋์ ํฌ๋ก :
- Apache, PHP, Cron์ด ํฌํจ๋ ์ปจํ ์ด๋
- ์์ ํ ์ฝ๋ ๋ฒ ์ด์ค ํฌํจ
- ์ปจํ ์ด๋์ ์ฝ๋ ๋ณ๊ฒฝ ๊ธ์ง
์๋์์ ์ ๊ทธ๋ ์ด๋:
- nginx ์ปจํ ์ด๋ + apache/php-fpm ์ปจํ ์ด๋ + msmtp
- ์ปจํ ์ด๋์ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ํ ๊ธ์ง๋ ์์ต๋๋ค.
์ธ์ ์ ์ฅ
Bitrix ์บ์ ์คํ ๋ฆฌ์ง
๋ ๋ค๋ฅธ ์ค์ํ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ถํฐ ๋ฉ์ผ๊น์ง ๋ชจ๋ ๊ฒ์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ๋น๋ฐ๋ฒํธ๋ฅผ kubernetes ๋น๋ฐ์ ์ ์ฅํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ณด๋์ค๋ ์์ต๋๋ค. ๋น๋ฐ๋ฒํธ๋ ๋น๋ฐ์ ๋ํ ์ก์ธ์ค ๊ถํ์ ๋ถ์ฌํ ์ฌ๋์๊ฒ๋ง ํ์๋๋ฉฐ ํ๋ก์ ํธ์ ์ฝ๋ ๋ฒ ์ด์ค์ ์ก์ธ์คํ ์ ์๋ ๋ชจ๋ ์ฌ๋์๊ฒ๋ ํ์๋์ง ์์ต๋๋ค.
์ ์ ๊ธฐ ๋ณด๊ด
ceph, nfs(๊ทธ๋ฌ๋ ํ๋ก๋์ ์๋ nfs๋ฅผ ๊ถ์ฅํ์ง ์์), ํด๋ผ์ฐ๋ ์ ๊ณต์ ์ฒด์ ๋คํธ์ํฌ ์คํ ๋ฆฌ์ง ๋ฑ ๋ฌด์์ด๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ ์ฅ์๋ ์ฌ์ดํธ์ /upload/ ๋๋ ํฐ๋ฆฌ์ ์ ์ ์ฝํ ์ธ ๊ฐ ์๋ ๊ธฐํ ๋๋ ํฐ๋ฆฌ์ ์ปจํ ์ด๋๋ก ์ฐ๊ฒฐ๋์ด์ผ ํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค
๋จ์ํ๋ฅผ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ Kubernetes ์ธ๋ถ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Kubernetes์ ๊ธฐ๋ฐ์ ๋ณ๋์ ๋ณต์กํ ์์ ์ด๋ฏ๋ก ๊ตฌ์ฑํ๋ฅผ ํจ์ฌ ๋ ๋ณต์กํ๊ฒ ๋ง๋ญ๋๋ค.
์ธ์ ์ ์ฅ
์ฐ๋ฆฌ๋ memcached๋ฅผ ์ฌ์ฉํฉ๋๋ค :)
์ธ์ ์ ์ฅ์ ์ ์ฒ๋ฆฌํ๊ณ ํด๋ฌ์คํฐ๋ง๋์ด ์์ผ๋ฉฐ PHP์์ session.save_path๋ก "๊ธฐ๋ณธ์ ์ผ๋ก" ์ง์๋ฉ๋๋ค. ์ด๋ฌํ ์์คํ ์ ๋ง์ ์์ ์น ์๋ฒ๋ก ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ ๋ ๊ณ ์ ์ ์ธ ๋ชจ๋๋ฆฌ์ ์ํคํ ์ฒ์์ ์ฌ๋ฌ ๋ฒ ํ ์คํธ๋์์ต๋๋ค. ๋ฐฐํฌ์๋ helm์ ์ฌ์ฉํฉ๋๋ค.
$ helm install stable/memcached --name session
php.ini - ์ฌ๊ธฐ ์ด๋ฏธ์ง์๋ memcached์ ์ธ์ ์ ์ ์ฅํ๊ธฐ ์ํ ์ค์ ์ด ํฌํจ๋์ด ์์ต๋๋ค.
memcached๋ฅผ ์ฌ์ฉํ์ฌ ํธ์คํธ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
์ด๋ฅผ ํตํด ๊ฐ๋ฐ, ๋จ๊ณ, ํ
์คํธ, ํ๋ก๋์
ํ๊ฒฝ์์ ๋์ผํ ์ฝ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค(Memcached ํธ์คํธ ์ด๋ฆ์ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ ํ๊ฒฝ์ ๋ํ ์ธ์
์ ๊ณ ์ ํ ํธ์คํธ ์ด๋ฆ์ ์ ๋ฌํด์ผ ํฉ๋๋ค).
Bitrix ์บ์ ์คํ ๋ฆฌ์ง
๋ชจ๋ ํฌ๋์์ ์ฐ๊ณ ์ฝ์ ์ ์๋ ๋ด๊ฒฐํจ์ฑ ์คํ ๋ฆฌ์ง๊ฐ ํ์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ํ memcached๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ด ์๋ฃจ์
์ Bitrix ์์ฒด์์ ๊ถ์ฅ๋ฉ๋๋ค.
$ helm install stable/memcached --name cache
bitrix/.settings_extra.php - ์ฌ๊ธฐ Bitrix์์๋ ์บ์๊ฐ ์ ์ฅ๋๋ ์์น๊ฐ ์ง์ ๋ฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ํ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
ํฌ๋ก ํ์คํค
Kubernetes์์ Crontask๋ฅผ ์คํํ๋ ๋ฐ๋ ๋ค์ํ ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค.
- Crontask ์คํ์ ์ํ Pod๋ฅผ ์ฌ์ฉํ ๋ณ๋ ๋ฐฐํฌ
- crontask ์คํ์ ์ํ cronjob(์น ์ฑ์ธ ๊ฒฝ์ฐ - wget ์ฌ์ฉ)
https://$host$cronjobname ๋๋ ์์ ์ Pod ์ค ํ๋ ๋ด๋ถ์ kubectl exec ๋ฑ) - ๋ฑ
๊ฐ์ฅ ์ ํํ ๊ฒ์ ๋ํด ๋ ผ์ํ ์ ์์ง๋ง ์ด ๊ฒฝ์ฐ์๋ "Crontask์ฉ ํฌ๋๋ฅผ ์ฌ์ฉํ ๋ณ๋ ๋ฐฐํฌ" ์ต์ ์ ์ ํํ์ต๋๋ค.
์๋ฃ ๋ฐฉ๋ฒ:
- ConfigMap ๋๋ config/addcron ํ์ผ์ ํตํด cron ์์ ์ถ๊ฐ
- ์ด๋ค ๊ฒฝ์ฐ์๋ ์์ ์ ํฌ๋์ ๋์ผํ ์ปจํ ์ด๋๋ฅผ ์์ํ๊ณ ๊ทธ ์์์ ํฌ๋ผ์ด ์์ ์ ์คํํ ์ ์์ต๋๋ค.
- ๋์ผํ ์ฝ๋ ๊ธฐ๋ฐ์ด ์ฌ์ฉ๋๋ฉฐ, ํตํฉ ๋๋ถ์ ์ปจํ ์ด๋ ์กฐ๋ฆฝ์ด ๊ฐ๋จํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ป๋ ์ด์ :
- ์ฐ๋ฆฌ๋ ๊ฐ๋ฐ์ ํ๊ฒฝ(docker)๊ณผ ๋์ผํ ํ๊ฒฝ์์ Crontask๋ฅผ ์๋ํ๊ณ ์์ต๋๋ค.
- Crontask๋ Kubernetes์ฉ์ผ๋ก "๋ค์ ์์ฑ"ํ ํ์๊ฐ ์์ผ๋ฉฐ ์ด์ ๊ณผ ๋์ผํ ํ์๊ณผ ๋์ผํ ์ฝ๋ ๋ฒ ์ด์ค์์ ์๋ํฉ๋๋ค.
- ๊ด๋ฆฌ์๋ฟ๋ง ์๋๋ผ ํ๋ก๋์ ๋ธ๋์น์ ๋ํ ์ปค๋ฐ ๊ถํ์ด ์๋ ๋ชจ๋ ํ ๊ตฌ์ฑ์์ด cron ์์ ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
Southbridge K8SDeploy ๋ชจ๋ ๋ฐ ๊ด๋ฆฌ์ ํจ๋์์ ์ฝ๋ ํธ์ง
์ฐ๋ฆฌ๋ ์
๊ทธ๋ ์ด๋์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์์ต๋๊น?
๊ทธ๊ณณ์ผ๋ก ๊ตํต์ ์๋ดํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์
๋๊น?
๋ง์ธ, ์ฐ๋ฆฌ๋ PHP์์ ์ด์ ๋ํ ๋ชจ๋์ ์์ฑํ์ต๋๋ค. :) ์ด๊ฒ์ Bitrix๋ฅผ ์ํ ์์ ํด๋์ ๋ชจ๋์
๋๋ค. ์์ง ๊ณต๊ฐ๋์ง๋ ์์์ง๋ง ๊ณต๊ฐํ ๊ณํ์
๋๋ค.
๋ชจ๋์ Bitrix์ ์ผ๋ฐ ๋ชจ๋์ฒ๋ผ ์ค์น๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์ด๋ฅผ ํตํด ์ฌ์ดํธ ๊ด๋ฆฌ์๋ฅผ ์๋ณํ๊ณ Kubernetes๊ฐ ์ ๊ทธ๋ ์ด๋ ํฌ๋๋ก ํธ๋ํฝ์ ๋ณด๋ผ ์ ์๋๋ก ํ๋ ์ฟ ํค๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
๋ณ๊ฒฝ์ด ์๋ฃ๋๋ฉด git push๋ฅผ ํด๋ฆญํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์ฝ๋ ๋ณ๊ฒฝ ์ฌํญ์ด git์ผ๋ก ์ ์ก๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์์คํ ์ ์ ๋ฒ์ ์ ์ฝ๋๋ก ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ณ ํด๋ฌ์คํฐ ์ ์ฒด์ "๋กค์์"ํ์ฌ ์ด์ ํฌ๋๋ฅผ ๊ต์ฒดํฉ๋๋ค. .
์, ์ฝ๊ฐ์ ๋ฒํ๋ชฉ์ด์ง๋ง ๋์์ ์ฐ๋ฆฌ๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ฅผ ์ ์งํ๊ณ Bitrix ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ์ ํจ๋์์ ์ฝ๋๋ฅผ ์์ ํ ์ ์๋ ๊ฐ์ฅ ์ข์ํ๋ ๊ธฐํ๋ฅผ ๋นผ์์ง ์์ต๋๋ค. ๊ฒฐ๊ตญ ์ด๊ฒ์ ์ต์ ์ด๋ฉฐ ์ฝ๋ ํธ์ง ๋ฌธ์ ๋ฅผ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค.
ํฌ๊ตฌ ์ฐจํธ
Kubernetes์์ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ถํ๋ ค๋ฉด ์ผ๋ฐ์ ์ผ๋ก Helm ํจํค์ง ๊ด๋ฆฌ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Kubernetes์ Bitrix ์๋ฃจ์
์ ์ํด ์ต๊ณ ์ ์์คํ
๊ด๋ฆฌ์์ธ Sergey Bondarev๊ฐ ํน๋ณํ Helm ์ฐจํธ๋ฅผ ์์ฑํ์ต๋๋ค.
์์ ์, ์ ๊ทธ๋ ์ด๋, ํฌ๋ก ํฌ๋๋ฅผ ๊ตฌ์ถํ๊ณ ์์ , ์๋น์ค๋ฅผ ๊ตฌ์ฑํ๊ณ Kubernetes ๋น๋ฐ์์ ํฌ๋๋ก ๋ณ์๋ฅผ ์ ์กํฉ๋๋ค.
Gitlab์ ์ฝ๋๋ฅผ ์ ์ฅํ๊ณ Gitlab์์ Helm ๋น๋๋ ์คํํฉ๋๋ค.
๊ฐ๋จํ ๋งํด์ ์ด๋ ์ต๋๋ค.
$ helm upgrade --install project .helm --set image=registrygitlab.local/k8s/bitrix -f .helm/values.yaml --wait --timeout 300 --debug --tiller-namespace=production
๋ํ Helm์ ์ฌ์ฉํ๋ฉด ๋ฐฐํฌ ์ค์ ๊ฐ์๊ธฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ "์ํํ" ๋กค๋ฐฑ์ ์ํํ ์ ์์ต๋๋ค. "ํ๋ก๋๊ฐ ๋จ์ด์ก๊ธฐ ๋๋ฌธ์ ftp๋ฅผ ํตํด ์ฝ๋๋ฅผ ์์ "ํ๋ ๋นํฉํ์ง ์์ ๋๋ ์ข์ง๋ง Kubernetes๋ ๊ฐ๋ ์ค์ง ์๊ฐ ์์ด ์๋์ผ๋ก ์ด๋ฅผ ์ํํฉ๋๋ค.
๋ฐฐํฌ
์, ์ฐ๋ฆฌ๋ Gitlab ๋ฐ Gitlab CI์ ํฌ์ด๋ฉฐ ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. :)
Gitlab์์ ํ๋ก์ ํธ ์ ์ฅ์์ ์ปค๋ฐํ๋ฉด Gitlab์ ์ ๋ฒ์ ์ ํ๊ฒฝ์ ๋ฐฐํฌํ๋ ํ์ดํ๋ผ์ธ์ ์์ํฉ๋๋ค.
๋จ๊ณ :
- ๋น๋(์ Docker ์ด๋ฏธ์ง ๋น๋)
- ํ ์คํธ (ํ ์คํธ)
- ์ ๋ฆฌ(ํ ์คํธ ํ๊ฒฝ ์ ๊ฑฐ)
- ํธ์(Docker ๋ ์ง์คํธ๋ฆฌ๋ก ๋ณด๋ ๋๋ค)
- ๋ฐฐํฌ(Helm์ ํตํด Kubernetes์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํฉ๋๋ค).
๋ง์ธ, ์ค๋น๋์์ต๋๋ค. ๊ตฌํํด ๋ด
์๋ค!
๊ธ์์, ์๋๋ฉด ์ง๋ฌธ์ด ์์ผ๋ฉด ๋ฌผ์ด๋ณด์ธ์.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ฌด์์ ํ๋์?
๊ธฐ์ ์ ์ธ ๊ด์ ์์ ๋ณด๋ฉด:
- ๋์ปคํ๋ Bitrix;
- Bitrix๋ฅผ ๊ฐ๊ฐ ์ต์ํ์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ปจํ ์ด๋๋ก "์ ๋จ"ํฉ๋๋ค.
- ์ํ ์๋ ์ปจํ ์ด๋ ์ํ๋ฅผ ๋ฌ์ฑํ์ต๋๋ค.
- Kubernetes์์ Bitrix ์ ๋ฐ์ดํธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.
- ๋ชจ๋ Bitrix ๊ธฐ๋ฅ์ ๊ณ์ ์๋ํ์ต๋๋ค(๊ฑฐ์ ๋ชจ๋).
- ์ฐ๋ฆฌ๋ Kubernetes์ ๋ฐฐํฌํ๊ณ ๋ฒ์ ๊ฐ ๋กค๋ฐฑ ์์ ์ ์งํํ์ต๋๋ค.
๋น์ฆ๋์ค ๊ด์ ์์ ๋ณด๋ฉด:
- ๊ฒฐํจ ํ์ฉ;
- Kubernetes ๋๊ตฌ(Gitlab CI์์ ์์ฌ์ด ํตํฉ, ์ํํ ๋ฐฐํฌ ๋ฑ)
- ๋น๋ฐ ๋น๋ฐ๋ฒํธ(๋น๋ฐ๋ฒํธ์ ๋ํ ์ ๊ทผ ๊ถํ์ด ์ง์ ๋ถ์ฌ๋ ์ฌ๋์๊ฒ๋ง ํ์๋จ)
- ๋จ์ผ ์ธํ๋ผ ๋ด์์ ์ถ๊ฐ ํ๊ฒฝ(๊ฐ๋ฐ, ํ ์คํธ ๋ฑ)์ ๊ตฌ์ถํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
์ถ์ฒ : habr.com