KyungRyeol Yoon

[Python] ๐Ÿš€ uv๋กœ ํ”„๋กœ์ ํŠธ & ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

๐Ÿ uv๋กœ Python ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌํ•˜๊ธฐ uv๋Š” Python ํ”„๋กœ์ ํŠธ์—์„œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ + ๊ฐ€์ƒํ™˜๊ฒฝ + Python ๋ฒ„์ „ ๊ด€๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ์ตœ์‹  ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. Rust๋กœ ์ž‘์„ฑ๋˜์–ด ๊ธฐ์กด pip๋ณด๋‹ค 10~100๋ฐฐ ๋น ๋ฅด๋ฉฐ, pip, venv, pyenv๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์˜ฌ์ธ์› ํˆด์ž…๋‹ˆ๋‹ค โšก ์ด ๊ธ€์—์„œ๋Š” ์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •ํ™•ํ•œ ๋ช…๋ น์–ด...

[Python] ๊ฐ€์ƒํ™˜๊ฒฝ venv ์‚ฌ์šฉ๋ฒ•

๐Ÿ ์™œ ํŒŒ์ด์ฌ ๊ฐ€์ƒํ™˜๊ฒฝ(venv)์„ ์จ์•ผ ํ• ๊นŒ? ํŒŒ์ด์ฌ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด โ€œA ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Django 3.2๊ฐ€ ํ•„์š”ํ•œ๋ฐ, B ํ”„๋กœ์ ํŠธ์—์„œ๋Š” 4.0์ด ํ•„์š”ํ•˜๋„ค?โ€ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์‹œ์Šคํ…œ์— ํŒจํ‚ค์ง€๋ฅผ ์ „์—ญ์œผ๋กœ ์„ค์น˜ํ•˜๋ฉด ๋ฒ„์ „ ์ถฉ๋Œ๋กœ ์ธํ•ด ์ฝ”๋“œ๊ฐ€ ๊นจ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ฑ ๊ฐ€์ƒํ™˜๊ฒฝ(Virtual Environment)์€ ํ”„๋กœ์ ํŠธ๋งˆ๋‹ค ๋…...

[Kubernetes] ๐Ÿ” ์ธ์ฆ์„œ์™€ cert-manager: ๋‘ ๊ฐˆ๋ž˜ PKI์™€ TLS ์ž๋™ํ™”

keyยทcertยทCAยทTLS ์šฉ์–ด๋ฅผ ์‹ ๋ถ„์ฆ ๋น„์œ ๋กœ ์ •๋ฆฌํ•˜๊ณ , ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์˜ ๋‘ ๊ฐˆ๋ž˜ PKI(ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ vs ์•ฑ/์ธ๊ทธ๋ ˆ์Šค)์™€ cert-manager์˜ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ยท๊ฐฑ์‹  ์ž๋™ํ™”๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

[Kubernetes] ๐ŸŒ Ingress์—์„œ Gateway API๋กœ: HTTPProxy vs HTTPRoute ๋น„๊ต

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์ด Ingress โ†’ ๋ฒค๋” CRD โ†’ ํ‘œ์ค€ Gateway API๋กœ ์ง„ํ™”ํ•œ ํ๋ฆ„๊ณผ, Contour ์ „์šฉ HTTPProxy vs ํ‘œ์ค€ HTTPRoute์˜ ์ฐจ์ด๋ฅผ ์‹ค๋ฌด ๊ด€์ ์—์„œ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

[Kubernetes] ๐Ÿšฆ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํŠธ๋ž˜ํ”ฝ ๊ตฌ์กฐ: ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋Š” ์–ด๋””์— ๋“ค์–ด๊ฐˆ๊นŒ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๋‘ ์ž๋ฆฌ(๋งˆ์Šคํ„ฐ ์•ž, ์•ฑ ์•ž)๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ณ , ์•ฑ ์š”์ฒญ์ด ๋งˆ์Šคํ„ฐ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š” ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ vs ๋ฐ์ดํ„ฐ ํ”Œ๋ ˆ์ธ ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

[Kubernetes] โš–๏ธ L4 vs L7 ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์™€ gRPC ๋กœ๋“œ๋ฐธ๋Ÿฐ์‹ฑ์˜ ํ•จ์ •

L4์™€ L7 ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ์˜ ์ฐจ์ด๋ฅผ ํŽธ์ง€ ๋น„์œ ๋กœ ์ •๋ฆฌํ•˜๊ณ , gRPC๊ฐ€ HTTP/2 ์—ฐ๊ฒฐ ๋‹ค์ค‘ํ™” ๋•Œ๋ฌธ์— L4์—์„œ ํ•œ Pod๋กœ ์ ๋ฆฌ๋Š” ํ•จ์ •๊ณผ L7์ด ํ•„์š”ํ•œ ์ด์œ ๋ฅผ ์‹ค๋ฌด ๊ด€์ ์—์„œ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

[Kubernetes] ๐Ÿ” HTTP/2๋Š” TLS๊ฐ€ ์•„๋‹ˆ๋‹ค: h2 vs h2c ์™„๋ฒฝ ์ •๋ฆฌ

HTTP/2์™€ TLS๋Š” ๋ณ„๊ฐœ๋ผ๋Š” ์‚ฌ์‹ค์„ ๋ด‰ํˆฌยท์—ฝ์„œ ๋น„์œ ๋กœ ํ’€์–ด๋‚ด๊ณ , h2์™€ h2c์˜ ์ฐจ์ด, ALPN ํ˜‘์ƒ, TLS termination๊นŒ์ง€ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค gRPC ํ†ต์‹ ์˜ ๊ธฐ์ดˆ ๊ฐœ๋…์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

[Kubernetes] ๐Ÿ”Œ gRPC๊ฐ€ .NET์—์„œ๋งŒ ์•ˆ ๋๋‹ค: HTTP/2ยทTLSยทscheme ๋ฌธ์ œ ํ•ด๊ฒฐ

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๊ฒŒ์ดํŠธ์›จ์ด ๋’ค์—์„œ .NET gRPC๋งŒ ์—ฐ๊ฒฐ์ด ๋Š๊ธฐ๋Š” ๋ฌธ์ œ๋ฅผ HTTP/2(h2c)์™€ Kestrel์˜ AllowAlternateSchemes ์„ค์ •์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

[Kubernetes] ๐Ÿ” kubeadm ์ธ์ฆ์„œ ์ž๋™ ๊ฐฑ์‹ : systemd ํƒ€์ด๋จธ๋กœ ๋งŒ๋ฃŒ ๋ฐฉ์ง€ํ•˜๊ธฐ

kubeadm์œผ๋กœ ๊ตฌ์ถ•ํ•œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ธ์ฆ์„œ๋ฅผ systemd ํƒ€์ด๋จธ์™€ ์„œ๋น„์Šค๋กœ ์ž๋™ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ๋ฃŒ 30์ผ ์ „ ๊ฐ์ง€ ํ›„ kubeadm certs renew all๋กœ 1๋…„ ์—ฐ์žฅํ•ฉ๋‹ˆ๋‹ค.

[Linux] ๐Ÿ” OpenSSL๋กœ PFX ์ธ์ฆ์„œ ๋ณ€ํ™˜ ํ›„ Kubernetes TLS Secret ๋งŒ๋“ค๊ธฐ

Windows์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ PFX(PKCS#12) ์ธ์ฆ์„œ๋ฅผ OpenSSL๋กœ PEM ํ˜•์‹์˜ ํ‚คยท์ธ์ฆ์„œ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , kubectl๋กœ Kubernetes TLS Secret์„ ์ƒ์„ฑํ•˜๋Š” ์ „์ฒด ๊ณผ์ •์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.