Post

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

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

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

์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์—์„œ gRPC๋ฅผ ๋‹ค๋ฃจ๋‹ค ๋ณด๋ฉด โ€œํ‰๋ฌธ HTTP/2(h2c)โ€, โ€œscheme์ด https์ธ๋ฐ ํ‰๋ฌธโ€ ๊ฐ™์€ ๋ชจ์ˆœ์ฒ˜๋Ÿผ ๋“ค๋ฆฌ๋Š” ๋ง๋“ค๊ณผ ๋งˆ์ฃผ์นฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๊ทธ ํ˜ผ๋ž€์˜ ๊ทผ์›์ธ โ€œHTTP/2 = TLSโ€๋ผ๋Š” ์˜คํ•ด๋ฅผ ๋ด‰ํˆฌยท์—ฝ์„œ ๋น„์œ ๋กœ ๊นจ๊ณ , h2์™€ h2c์˜ ์ฐจ์ด, ALPN ํ˜‘์ƒ, TLS termination์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐœ๋…๋งŒ ์žก์œผ๋ฉด ๊ฒŒ์ดํŠธ์›จ์ด ๋’ค gRPC ํ†ต์‹ ์ด ์™œ ๊ทธ๋ ‡๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ „๋ถ€ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

์ด ์‹œ๋ฆฌ์ฆˆ๋Š” ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค์— gRPC ์„œ๋น„์Šค๋ฅผ ์˜ฌ๋ฆฌ๋‹ค ๋ง‰ํžŒ ์‚ฝ์งˆ์—์„œ ์ถœ๋ฐœํ•ด HTTP/2ยทTLSยท๋กœ๋“œ๋ฐธ๋Ÿฐ์„œยทGateway APIยท์ธ์ฆ์„œ๊นŒ์ง€ ํ’€์–ด๊ฐ€๋Š” ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค. ์ด๋ฒˆ 2ํŽธ์€ ๊ธฐ์ดˆ ๊ฐœ๋…(h2 vs h2c) ํŽธ์ž…๋‹ˆ๋‹ค. 1ํŽธ์„ ์•„์ง ์•ˆ ์ฝ์—ˆ๋‹ค๋ฉด .NET gRPC๊ฐ€ ๊ฒŒ์ดํŠธ์›จ์ด ๋’ค์—์„œ ์•ˆ ๋๋˜ ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ์„ ๋จผ์ € ๋ณด๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.


๐Ÿงฑ ๋ชจ๋“  ํ˜ผ๋ž€์˜ ๊ทผ์›: โ€œHTTP/2 = TLSโ€๋ผ๋Š” ์˜คํ•ด

HTTP/2์™€ TLS๋Š” ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋จผ์ € ๊นจ์•ผ ํ•  ์˜คํ•ด์ž…๋‹ˆ๋‹ค. ๋‘˜์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ถ•์— ์žˆ์Šต๋‹ˆ๋‹ค.

  • TLS = ์•”ํ˜ธํ™”. ๋ฐ์ดํ„ฐ๋ฅผ ๋ด‰ํˆฌ์— ๋„ฃ์–ด ๋ด‰ํ•˜๋А๋ƒ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
  • HTTP/2 = ํ†ต์‹  ํ”„๋กœํ† ์ฝœ. ํŽธ์ง€๋ฅผ ์–ด๋–ค โ€œ์–ธ์–ดโ€๋กœ ์“ฐ๋А๋ƒ์˜ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค(HTTP/1.1์ด๋ƒ HTTP/2๋ƒ).

๋น„์œ ํ•˜๋ฉด ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

  • ์•”ํ˜ธํ™”(TLS) = ๋ด‰ํˆฌ / ํ‰๋ฌธ = ์—ฝ์„œ
  • ํ†ต์‹  ๋ฐฉ์‹(HTTP ๋ฒ„์ „) = ํŽธ์ง€๋ฅผ ์“ด ์–ธ์–ด

ํŽธ์ง€๋ฅผ HTTP/2๋ผ๋Š” ์–ธ์–ด๋กœ ์“ฐ๋˜, ๋ด‰ํˆฌ์— ๋‹ด์•„ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ๊ณ (์•”ํ˜ธํ™”), ์—ฝ์„œ๋กœ ๋ณด๋‚ผ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค(ํ‰๋ฌธ). ์ด ๋‘˜์€ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.


๐Ÿ”ข ๋„ค ๊ฐ€์ง€ ์กฐํ•ฉ

ํฌ์žฅ(์•”ํ˜ธํ™”)๊ณผ ์–ธ์–ด(HTTP ๋ฒ„์ „)๊ฐ€ ๋…๋ฆฝ์ด๋ผ, ๋„ค ๊ฐ€์ง€ ์กฐํ•ฉ์ด ๋ชจ๋‘ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ย ํ‰๋ฌธ (์—ฝ์„œ)TLS (๋ด‰ํˆฌ)
HTTP/1.1๊ทธ๋ƒฅ HTTP (http://)HTTPS (https://)
HTTP/2h2ch2

์—ฌ๊ธฐ์„œ h2c์˜ c๋Š” cleartext(ํ‰๋ฌธ), ์ฆ‰ โ€œ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š์€ HTTP/2โ€์ž…๋‹ˆ๋‹ค.

์™œ โ€œํ‰๋ฌธ HTTP/2โ€๊ฐ€ ๋ชจ์ˆœ์ฒ˜๋Ÿผ ๋“ค๋ฆด๊นŒ?

๋ธŒ๋ผ์šฐ์ € ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ณด์•ˆ์ƒ HTTP/2๋ฅผ TLS ์œ„์—์„œ๋งŒ(h2) ํ—ˆ์šฉํ•˜๊ณ , ํ‰๋ฌธ HTTP/2(h2c)๋Š” ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ผ์ƒ์—์„œ โ€œHTTP/2 = HTTPSโ€์ฒ˜๋Ÿผ ๋А๊ปด์ง‘๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฑด ๋ธŒ๋ผ์šฐ์ €์˜ ์ •์ฑ…์ผ ๋ฟ, ํ”„๋กœํ† ์ฝœ ์ž์ฒด์˜ ๊ทœ์น™์ด ์•„๋‹™๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ผ๋ฆฌ ํ†ต์‹ ํ•  ๋• ํ‰๋ฌธ HTTP/2(h2c)๋ฅผ ํ”ํžˆ ์“ฐ๋ฉฐ, ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€๊ฐ€ ๋Œ€ํ‘œ์ ์ž…๋‹ˆ๋‹ค.

๐Ÿง  ํ”ํ•œ ์˜คํ•ด: โ€œHTTP/2๋ฉด ๋‹น์—ฐํžˆ https๋‹ˆ๊นŒ ์ธ์ฆ์„œ๊ฐ€ ํ•„์š”ํ•˜๊ฒ ์ง€.โ€ ์‹ค์ œ๋กœ๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€ ํ†ต์‹ ์€ ํ‰๋ฌธ HTTP/2(h2c)์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๊ณ , ์•”ํ˜ธํ™”๋Š” ๋ณ„๊ฐœ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.


๐Ÿ“œ h2 / h2c๋Š” ๋ˆ„๊ฐ€ ์ง€์–ด๋‚ธ ๋ง์ด ์•„๋‹ˆ๋‹ค

h2์™€ h2c๋Š” ํŠน์ • ๋„๊ตฌ์˜ ์šฉ์–ด๊ฐ€ ์•„๋‹ˆ๋ผ HTTP/2 ํ‘œ์ค€(RFC 7540)์— ์ •์˜๋˜๊ณ  IANA์— ๋“ฑ๋ก๋œ ๊ณต์‹ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.

์›๋ž˜ h2๋Š” TLS ํ•ธ๋“œ์…ฐ์ดํฌ ๋•Œ โ€œ์šฐ๋ฆฌ HTTP/2๋กœ ๋งํ•˜์žโ€๋ฅผ ์งง๊ฒŒ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ALPN ํ† ํฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ http2์ฒ˜๋Ÿผ ๊ธธ๊ฒŒ ์“ฐ์ง€ ์•Š๊ณ  h2๋ผ๋Š” ์งง์€ ํ˜•ํƒœ๋กœ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. h2c๋Š” ํ‰๋ฌธ ์—ฐ๊ฒฐ์—์„œ HTTP/1.1 โ†’ HTTP/2 ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ์š”์ฒญํ•  ๋•Œ ์“ฐ๋˜ ํ† ํฐ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒŒ ์ค‘์š”ํ•œ ์ด์œ ๋Š” ๋„๊ตฌ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ์˜๋ฏธ๊ฐ€ ๊ฐ™๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. EnvoyยทKestrelยทgRPCยทContour HTTPProxy ์–ด๋””์„œ ๋ณด๋“  h2c๋Š” ์ „๋ถ€ โ€œํ‰๋ฌธ HTTP/2โ€๋ผ๋Š” ๊ฐ™์€ ๋œป์ž…๋‹ˆ๋‹ค. ๊ฐ ๋„๊ตฌ๊ฐ€ ์ œ๋ฉ‹๋Œ€๋กœ ์ง€์€ ๊ฒŒ ์•„๋‹ˆ๋ผ ๊ฐ™์€ ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋ฏ€๋กœ, ํ•œ ๋ฒˆ ์ตํžˆ๋ฉด ๊ทธ๋Œ€๋กœ ํ†ตํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ดํ›„ HTTP/2 ํ‘œ์ค€์ด RFC 9113์œผ๋กœ ์ •๋ฆฌ๋˜๋ฉฐ ํ‰๋ฌธ ์—…๊ทธ๋ ˆ์ด๋“œ(Upgrade: h2c) ๋ฉ”์ปค๋‹ˆ์ฆ˜ ๋“ฑ ์„ธ๋ถ€ ๊ทœ์น™์€ ์ผ๋ถ€ ๋ฐ”๋€Œ์—ˆ์ง€๋งŒ, h2=TLS HTTP/2, h2c=ํ‰๋ฌธ HTTP/2๋ผ๋Š” ๊ธฐ๋ณธ ์˜๋ฏธ๋Š” ๊ทธ๋Œ€๋กœ์ž…๋‹ˆ๋‹ค.


๐Ÿค ALPN โ€” ๋ด‰ํˆฌ๋ฅผ ์—ด๊ธฐ ์ „์— โ€œ์–ธ์–ดโ€๋ฅผ ํ•ฉ์˜ํ•˜๋Š” ๊ณผ์ •

ALPN(Application-Layer Protocol Negotiation)์€ TLS ํ•ธ๋“œ์…ฐ์ดํฌ ๋‹จ๊ณ„์—์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์–ด๋–ค ํ”„๋กœํ† ์ฝœ๋กœ ํ†ต์‹ ํ• ์ง€ ๋ฏธ๋ฆฌ ํ•ฉ์˜ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. ๋ด‰ํˆฌ(TLS)๋ฅผ ๋ด‰ํ•˜๊ธฐ ์ „์— โ€œ์šฐ๋ฆฌ ๋ฌด์Šจ ์–ธ์–ด๋กœ ๋งํ• ๊นŒ?โ€๋ฅผ ์ •ํ•˜๋Š” ์…ˆ์ด๊ณ , ์—ฌ๊ธฐ์„œ h2๋กœ ํ•ฉ์˜๋˜๋ฉด HTTP/2๋กœ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํฌ์ธํŠธ๋Š” ํ‰๋ฌธ(์—ฝ์„œ)์—๋Š” ์ด ALPN ๋‹จ๊ณ„๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ 1ํŽธ์—์„œ Kestrel์„ Http1AndHttp2๋กœ ๋‘๋ฉด ์•ˆ ๋๋˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ‰๋ฌธ ํฌํŠธ์—๋Š” โ€œ๋ฌด์Šจ ์–ธ์–ด๋ƒโ€๋ฅผ ํ˜‘์ƒํ•  ALPN์ด ์—†์œผ๋‹ˆ, Kestrel์ด ์•ˆ์ „ํ•˜๊ฒŒ HTTP/1.1๋กœ ๋–จ์–ด๋œจ๋ฆฝ๋‹ˆ๋‹ค. ํ‰๋ฌธ์—์„œ HTTP/2๋ฅผ ๋ฐ›์œผ๋ ค๋ฉด Http2 ์ „์šฉ์œผ๋กœ ๋ชป ๋ฐ•์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

1
2
3
4
5
6
7
8
// appsettings.json โ€” ํ‰๋ฌธ ํฌํŠธ์—์„œ HTTP/2๋ฅผ ๊ฐ•์ œ
{
  "Kestrel": {
    "EndpointDefaults": {
      "Protocols": "Http2"
    }
  }
}

โœ‚๏ธ TLS termination โ€” ๋ด‰ํˆฌ๋ฅผ ์–ด๋””์„œ ๋œฏ๋А๋ƒ

TLS termination(TLS ์ข…๋ฃŒ)์€ ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์•”ํ˜ธํ™” ์—ฐ๊ฒฐ์˜ ๋ด‰ํˆฌ(TLS)๋ฅผ ๋œฏ์–ด ํ‰๋ฌธ์œผ๋กœ ๋ฐ”๊พธ๋Š” ์ง€์ ์ž…๋‹ˆ๋‹ค. ๋‚ด์šฉ์„ ์ฝ์–ด ๋ผ์šฐํŒ…ํ•˜๋ ค๋ฉด ๋ด‰ํˆฌ๋ฅผ ๋จผ์ € ์—ด์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์ชฝ(๊ฒŒ์ดํŠธ์›จ์ด โ†’ Pod)์œผ๋กœ๋Š” ๋‹ค์‹œ ์—ฝ์„œ(ํ‰๋ฌธ h2c)๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

1
ํด๋ผ์ด์–ธํŠธ โ”€โ”€(๋ด‰ํˆฌ, h2)โ”€โ”€โ–ถ ๊ฒŒ์ดํŠธ์›จ์ด[๋ด‰ํˆฌ ๋œฏ์Œ] โ”€โ”€(์—ฝ์„œ, h2c)โ”€โ”€โ–ถ Pod

์—ฌ๊ธฐ์„œ 1ํŽธ์˜ ์›์ธ โ‘ก๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ๊ฒŒ์ดํŠธ์›จ์ด๋Š” ๋ด‰ํˆฌ๋ฅผ ๋œฏ์–ด ์—ฝ์„œ๋กœ ๋ฐ”๊พธ๋ฉด์„œ๋„, ํŽธ์ง€์— ๋ถ™์€ :scheme ๋ผ๋ฒจ์€ ์›๋ž˜๋Œ€๋กœ โ€œhttps(๋ด‰ํˆฌ)โ€๋ผ๊ณ  ๋‚จ๊ฒจ ๋‘ก๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ˆ ์—ฝ์„œ๋ฅผ ๋ฐ›์€ Kestrel์ด โ€œ๋ผ๋ฒจ์—” ๋ด‰ํˆฌ๋ผ๋Š”๋ฐ ๋„Œ ์—ฝ์„œ๋„ค?โ€ ํ•˜๊ณ  ๊ฑฐ๋ถ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. AllowAlternateSchemes๋Š” โ€œ๊ทธ ๋ผ๋ฒจ์€ ๋ฌด์‹œํ•˜๊ณ  ๋ฐ›์•„๋ผโ€๋ผ๋Š” ํ—ˆ๋ฝ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

1
2
3
4
builder.WebHost.ConfigureKestrel(options =>
{
    options.AllowAlternateSchemes = true; // :scheme=https + ํ‰๋ฌธ ์ „์†ก ํ—ˆ์šฉ
});

๐Ÿงฉ ์ •๋ฆฌ: ์„ธ ๊ฐ€์ง€๋งŒ ๊ตฌ๋ถ„ํ•˜๋ฉด ๋œ๋‹ค

1ํŽธ์˜ ๋ชจ๋“  ์ฆ์ƒ์ด ์ด ์„ธ ๊ฐ€์ง€์˜ ์กฐํ•ฉ์œผ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

๊ตฌ๋ถ„์˜๋ฏธ์˜ˆ์‹œ
๋ด‰ํˆฌ / ์—ฝ์„œ์•”ํ˜ธํ™” ์—ฌ๋ถ€TLS / ํ‰๋ฌธ
์–ธ์–ดํ†ต์‹  ๋ฐฉ์‹HTTP/1.1 / HTTP/2
๋ผ๋ฒจ์š”์ฒญ ํ—ค๋”:scheme, :authority ๋“ฑ

์™ธ์šธ ํ•œ ๋ฌธ์žฅ: ํ†ต์‹  ๋ฐฉ์‹(HTTP/1.1ยทHTTP/2)๊ณผ ์•”ํ˜ธํ™”(TLS๋ฅผ ์“ฐ๋ƒ ๋งˆ๋ƒ)๋Š” ์™„์ „ํžˆ ๋ณ„๊ฐœ๋‹ค.

์ด ํ•œ ๋ฌธ์žฅ์ด ๋ชธ์— ๋ฐฐ๋ฉด, โ€œํ‰๋ฌธ HTTP/2โ€๋„ โ€œscheme์ด https์ธ๋ฐ ํ‰๋ฌธโ€๋„ ๋” ์ด์ƒ ๋ชจ์ˆœ์œผ๋กœ ๋“ค๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


โ“ ์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Q. h2์™€ h2c์˜ ์ฐจ์ด๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๋‘˜ ๋‹ค HTTP/2์ž…๋‹ˆ๋‹ค. h2๋Š” TLS ์œ„์—์„œ(์•”ํ˜ธํ™”) ๋™์ž‘ํ•˜๋Š” HTTP/2, h2c๋Š” ํ‰๋ฌธ(cleartext)์—์„œ ๋™์ž‘ํ•˜๋Š” HTTP/2์ž…๋‹ˆ๋‹ค. c๋Š” cleartext๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.

Q. HTTP/2๋ฅผ ์“ฐ๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์ธ์ฆ์„œ(TLS)๊ฐ€ ํ•„์š”ํ•œ๊ฐ€์š”?

์•„๋‹™๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๋ธŒ๋ผ์šฐ์ €์˜ ์ •์ฑ…์ผ ๋ฟ ํ”„๋กœํ† ์ฝœ ๊ทœ์น™์ด ์•„๋‹™๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๊ฐ„ ํ†ต์‹ , ํŠนํžˆ ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์—์„œ๋Š” ํ‰๋ฌธ HTTP/2(h2c)๋ฅผ ํ”ํžˆ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Q. ALPN์ด ์—†์œผ๋ฉด ์™œ HTTP/2๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์—†๋‚˜์š”?

ํ‰๋ฌธ ์—ฐ๊ฒฐ์—๋Š” TLS ํ•ธ๋“œ์…ฐ์ดํฌ ์ž์ฒด๊ฐ€ ์—†์–ด ALPN ํ˜‘์ƒ ๋‹จ๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ โ€œHTTP/2๋กœ ๋งํ•˜์žโ€๋ฅผ ํ•ฉ์˜ํ•  ๋ฐฉ๋ฒ•์ด ์—†์–ด, ์„œ๋ฒ„๋Š” ์•ˆ์ „ํ•˜๊ฒŒ HTTP/1.1๋กœ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ HTTP/2 ์ „์šฉ์œผ๋กœ ๋ช…์‹œ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Q. TLS termination ์ดํ›„ ๋ฐฑ์—”๋“œ๋Š” ์–ด๋–ค ํ”„๋กœํ† ์ฝœ์„ ๋ฐ›๋‚˜์š”?

๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ TLS๋ฅผ ์ข…๋ฃŒํ•˜๋ฉด ๋ฐฑ์—”๋“œ(Pod)๋กœ๋Š” ํ‰๋ฌธ์ด ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. gRPC๋ผ๋ฉด ์ด๋•Œ ํ‰๋ฌธ HTTP/2, ์ฆ‰ h2c๋กœ ์ „๋‹ฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“š ์ฐธ๊ณ 

</content>

This post is licensed under CC BY 4.0 by the author.