Traffic Management
Last updated
Last updated
Istioμ νΈλν½ λΌμ°ν κ·μΉμ μ¬μ©νλ©΄ μλΉμ€ κ°μ νΈλν½ νλ¦κ³Ό API νΈμΆμ μ½κ² μ μ΄ν μ μμ΅λλ€. Istioλ μν· λΈλ μ΄μ»€, νμμμ, μ¬μλμ κ°μ μλΉμ€ μμ€ μμ±μ ꡬμ±μ λ¨μννκ³ , A/B ν μ€νΈ, μΉ΄λ리μ λ‘€μμ, λ°±λΆμ¨ κΈ°λ° νΈλν½ λΆν μ ν΅ν λ¨κ³μ λ‘€μμκ³Ό κ°μ μ€μν μμ μ μ½κ² μ€μ ν μ μμ΅λλ€. λν μ’ μ μλΉμ€λ λ€νΈμν¬μ μ₯μ μ λν΄ μ ν리μΌμ΄μ μ νλ ₯μ±μ λμ΄λ λ° λμμ΄ λλ κΈ°λ³Έ μ 곡 μμ μ± κΈ°λ₯λ μ 곡ν©λλ€.Istioμ νΈλν½ κ΄λ¦¬ λͺ¨λΈμ μλΉμ€μ ν¨κ» λ°°ν¬λλ Envoy νλ‘μμ μμ‘΄ν©λλ€. λ©μ μλΉμ€κ° μ£Όκ³ λ°λ λͺ¨λ νΈλν½(λ°μ΄ν° νλ μΈ νΈλν½)μ Envoyλ₯Ό ν΅ν΄ νλ‘μλλ―λ‘, μλΉμ€λ₯Ό λ³κ²½νμ§ μκ³ λ λ©μ μ£Όλ³μ νΈλν½μ μ½κ² μ§μνκ³ μ μ΄ν μ μμ΅λλ€.μ΄ κ°μ΄λμ μ€λͺ λ κΈ°λ₯μ΄ μ΄λ»κ² μλνλμ§ μμΈν μκ³ μΆλ€λ©΄, μμ Istioμ νΈλν½ κ΄λ¦¬ ꡬνμ λν΄ μμΈν μμλ³Ό μ μμ΅λλ€. μ΄ κ°μ΄λμ λλ¨Έμ§ λΆλΆμμλ Istioμ νΈλν½ κ΄λ¦¬ κΈ°λ₯μ μκ°ν©λλ€.
λ©μ λ΄μμ νΈλν½μ μ§μνλ €λ©΄ Istioλ λͺ¨λ μλν¬μΈνΈκ° μ΄λμ μκ³ μ΄λ€ μλΉμ€μ μνλμ§ μμμΌ ν©λλ€. Istioλ μ체 μλΉμ€ λ μ§μ€νΈλ¦¬λ₯Ό μ±μ°κΈ° μν΄ μλΉμ€ κ²μ μμ€ν μ μ°κ²°ν©λλ€. μλ₯Ό λ€μ΄, Kubernetes ν΄λ¬μ€ν°μ Istioλ₯Ό μ€μΉν κ²½μ° Istioλ ν΄λΉ ν΄λ¬μ€ν°μ μλΉμ€μ μλν¬μΈνΈλ₯Ό μλμΌλ‘ κ°μ§ν©λλ€.μ΄ μλΉμ€ λ μ§μ€νΈλ¦¬λ₯Ό μ¬μ©νμ¬ Envoy νλ‘μλ κ΄λ ¨ μλΉμ€λ‘ νΈλν½μ μ§μν μ μμ΅λλ€. λλΆλΆμ λ§μ΄ν¬λ‘μλΉμ€ κΈ°λ° μ ν리μΌμ΄μ μλ μλΉμ€ νΈλν½μ μ²λ¦¬νκΈ° μν΄ κ° μλΉμ€ μν¬λ‘λμ μ¬λ¬ μΈμ€ν΄μ€κ° μλλ°, μ΄λ₯Ό λ‘λ λ°Έλ°μ± νμ΄λΌκ³ λ ν©λλ€. κΈ°λ³Έμ μΌλ‘ Envoy νλ‘μλ μ΅μ μμ² λͺ¨λΈμ μ¬μ©νμ¬ κ° μλΉμ€μ λ‘λ λ°Έλ°μ± νμ νΈλν½μ λΆμ°ν©λλ€. μ¬κΈ°μ κ° μμ²μ νμμ 무μμλ‘ μ νν λ κ°μ νΈμ€νΈ μ€ νμ± μμ²μ΄ λ μ μ νΈμ€νΈλ‘ λΌμ°ν λ©λλ€. μ΄λ° λ°©μμΌλ‘ κ°μ₯ λ§μ΄ λ‘λλ νΈμ€νΈλ λ€λ₯Έ νΈμ€νΈλ§νΌ λ‘λλμ§ μμ λκΉμ§ μμ²μ λ°μ§ μμ΅λλ€.Istioμ κΈ°λ³Έ μλΉμ€ κ²μ λ° λ‘λ λ°Έλ°μ±μ μλνλ μλΉμ€ λ©μλ₯Ό μ 곡νμ§λ§, Istioκ° ν μ μλ λͺ¨λ κ²κ³Όλ κ±°λ¦¬κ° λ©λλ€. λ§μ κ²½μ° λ©μ νΈλν½μ λν΄ λ μΈλΆνλ μ μ΄λ₯Ό μν μ μμ΅λλ€. A/B ν μ€νΈμ μΌνμΌλ‘ μ λ²μ μ μλΉμ€μ νΉμ λΉμ¨μ νΈλν½μ μ§μνκ±°λ, νΉμ μλΉμ€ μΈμ€ν΄μ€ νμ μ§ν©μ λν νΈλν½μ λ€λ₯Έ λ‘λ λ°Έλ°μ± μ μ± μ μ μ©ν μ μμ΅λλ€. λν λ©μλ‘ λ€μ΄μ€κ±°λ λκ°λ νΈλν½μ νΉλ³ν κ·μΉμ μ μ©νκ±°λ, λ©μμ μΈλΆ μ’ μμ±μ μλΉμ€ λ μ§μ€νΈλ¦¬μ μΆκ°ν μλ μμ΅λλ€. Istioμ νΈλν½ κ΄λ¦¬ APIλ₯Ό μ¬μ©νμ¬ Istioμ μ체 νΈλν½ κ΅¬μ±μ μΆκ°νλ©΄ μ΄ λͺ¨λ μμ κ³Ό κ·Έ μ΄μμ μνν μ μμ΅λλ€.λ€λ₯Έ Istio ꡬμ±κ³Ό λ§μ°¬κ°μ§λ‘ APIλ Kubernetes μ¬μ©μ μ μ 리μμ€ μ μ(CRD)λ₯Ό μ¬μ©νμ¬ μ§μ λλ©°, μμ μμ λ³Ό μ μλ―μ΄ YAMLμ μ¬μ©νμ¬ κ΅¬μ±ν μ μμ΅λλ€.μ΄ κ°μ΄λμ λλ¨Έμ§ λΆλΆμμλ νΈλν½ κ΄λ¦¬ API 리μμ€ κ°κ°κ³Ό κ·Έκ²μΌλ‘ ν μ μλ μμ μ μ΄ν΄λ΄ λλ€. μ΄λ¬ν 리μμ€λ λ€μκ³Ό κ°μ΅λλ€:
λν μ΄ κ°μ΄λμμλ API 리μμ€μ λ΄μ₯λ μΌλΆ λ€νΈμν¬ λ³΅μλ ₯ λ° ν μ€νΈ κΈ°λ₯μ λν κ°μλ μ 곡ν©λλ€.
κ°μ μλΉμ€λ λͺ©μ μ§ κ·μΉκ³Ό ν¨κ» Istioμ νΈλν½ λΌμ°ν κΈ°λ₯μ ν΅μ¬ κ΅¬μ± μμμ λλ€. κ°μ μλΉμ€λ₯Ό μ¬μ©νλ©΄ Istio μλΉμ€ λ©μ λ΄μμ μλΉμ€λ‘ μμ²μ λΌμ°ν νλ λ°©λ²μ ꡬμ±ν μ μμΌλ©°, Istioμ νλ«νΌμμ μ 곡νλ κΈ°λ³Έ μ°κ²° λ° κ²μ κΈ°λ₯μ κΈ°λ°μΌλ‘ ν©λλ€. κ° κ°μ μλΉμ€λ μμλλ‘ νκ°λλ λΌμ°ν κ·μΉ μ§ν©μΌλ‘ ꡬμ±λμ΄ μμ΄, Istioκ° κ°μ μλΉμ€μ λν κ° μμ²μ λ©μ λ΄μ νΉμ μ€μ λμκ³Ό λ§€μΉν μ μμ΅λλ€. μ¬μ© μ¬λ‘μ λ°λΌ λ©μμ μ¬λ¬ κ°μ κ°μ μλΉμ€κ° νμνκ±°λ μ ν νμνμ§ μμ μ μμ΅λλ€.
κ°μ μλΉμ€λ Istioμ νΈλν½ κ΄λ¦¬λ₯Ό μ μ°νκ³ κ°λ ₯νκ² λ§λλ λ° ν΅μ¬μ μΈ μν μ ν©λλ€. μ΄λ ν΄λΌμ΄μΈνΈκ° μμ²μ 보λ΄λ μμΉμ μ€μ λ‘ μμ²μ ꡬννλ λμ μν¬λ‘λλ₯Ό κ°λ ₯νκ² λΆλ¦¬ν¨μΌλ‘μ¨ μ΄λ£¨μ΄μ§λλ€. λν κ°μ μλΉμ€λ ν΄λΉ μν¬λ‘λλ‘ νΈλν½μ 보λ΄κΈ° μν λ€μν νΈλν½ λΌμ°ν κ·μΉμ μ§μ νλ νλΆν λ°©λ²μ μ 곡ν©λλ€.μ΄κ²μ΄ μ μ μ©ν κΉμ? κ°μ μλΉμ€κ° μμΌλ©΄ μκ°μμ μ€λͺ ν λλ‘ Envoyλ λͺ¨λ μλΉμ€ μΈμ€ν΄μ€ κ°μ μ΅μ μμ² λ‘λ λ°Έλ°μ±μ μ¬μ©νμ¬ νΈλν½μ λΆμ°ν©λλ€. μν¬λ‘λμ λν΄ μκ³ μλ λ΄μ©μΌλ‘ μ΄ λμμ κ°μ ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μΌλΆλ λ€λ₯Έ λ²μ μ λνλΌ μ μμ΅λλ€. μ΄λ A/B ν μ€νΈμμ μ μ©ν μ μλλ°, μ¬κΈ°μλ μλ‘ λ€λ₯Έ μλΉμ€ λ²μ μ κ±Έμ³ λ°±λΆμ¨μ κΈ°μ€μΌλ‘ νΈλν½ κ²½λ‘λ₯Ό ꡬμ±νκ±°λ λ΄λΆ μ¬μ©μμ νΈλν½μ νΉμ μΈμ€ν΄μ€ μ§ν©μΌλ‘ 보λ΄κ³ μΆμ μ μμ΅λλ€.κ°μ μλΉμ€λ₯Ό μ¬μ©νλ©΄ νλ μ΄μμ νΈμ€νΈ μ΄λ¦μ λν νΈλν½ λμμ μ§μ ν μ μμ΅λλ€. κ°μ μλΉμ€μ λΌμ°ν κ·μΉμ μ¬μ©νμ¬ Envoyμκ² κ°μ μλΉμ€μ νΈλν½μ μ μ ν λμμΌλ‘ 보λ΄λ λ°©λ²μ μλ €μ€λλ€. κ²½λ‘ λμμ λμΌν μλΉμ€μ λ€λ₯Έ λ²μ μ΄κ±°λ μμ ν λ€λ₯Έ μλΉμ€μΌ μ μμ΅λλ€.μΌλ°μ μΈ μ¬μ© μ¬λ‘λ μλΉμ€ νμ μ§ν©μΌλ‘ μ§μ λ μλΉμ€μ λ€λ₯Έ λ²μ μΌλ‘ νΈλν½μ 보λ΄λ κ²μ λλ€. ν΄λΌμ΄μΈνΈλ λ§μΉ λ¨μΌ μν°ν°μΈ κ²μ²λΌ κ°μ μλΉμ€ νΈμ€νΈμ μμ²μ 보λ΄κ³ , Envoyλ κ°μ μλΉμ€ κ·μΉμ λ°λΌ νΈλν½μ λ€λ₯Έ λ²μ μΌλ‘ λΌμ°ν ν©λλ€. μλ₯Ό λ€μ΄ "νΈμΆμ 20%λ μ λ²μ μΌλ‘ μ΄λ" λλ "μ΄λ¬ν μ¬μ©μμ νΈμΆμ λ²μ 2λ‘ μ΄λ"κ³Ό κ°μ μμ λλ€. μ΄λ₯Ό ν΅ν΄ μλ₯Ό λ€μ΄ μ μλΉμ€ λ²μ μΌλ‘ μ μ‘λλ νΈλν½ λΉμ¨μ μ μ§μ μΌλ‘ λ리λ μΉ΄λ리μ λ‘€μμμ μμ±ν μ μμ΅λλ€. νΈλν½ λΌμ°ν μ μΈμ€ν΄μ€ λ°°ν¬μ μμ ν λΆλ¦¬λμ΄ μμ΄, μ μλΉμ€ λ²μ μ ꡬννλ μΈμ€ν΄μ€ μλ νΈλν½ λΌμ°ν μ μ ν μ°Έμ‘°νμ§ μκ³ νΈλν½ λΆνμ λ°λΌ νμ₯ λ° μΆμλ μ μμ΅λλ€. λμ‘°μ μΌλ‘ Kubernetesμ κ°μ 컨ν μ΄λ μ€μΌμ€νΈλ μ΄μ νλ«νΌμ μΈμ€ν΄μ€ μ€μΌμΌλ§μ κΈ°λ°μΌλ‘ νλ νΈλν½ λΆμ°λ§ μ§μνλ―λ‘ λΉ λ₯΄κ² 볡μ‘ν΄μ§λλ€. Istioλ₯Ό μ¬μ©ν μΉ΄λ리μ λ°°ν¬μμ κ°μ μλΉμ€κ° μΉ΄λ리μ λ°°ν¬μ μ΄λ»κ² λμμ΄ λλμ§ μμΈν μμλ³Ό μ μμ΅λλ€.κ°μ μλΉμ€λ₯Ό μ¬μ©νλ©΄ λ€μκ³Ό κ°μ μμ λ ν μ μμ΅λλ€:
λ¨μΌ κ°μ μλΉμ€λ₯Ό ν΅ν΄ μ¬λ¬ μ ν리μΌμ΄μ μλΉμ€ μ²λ¦¬. μλ₯Ό λ€μ΄ λ©μκ° Kubernetesλ₯Ό μ¬μ©νλ κ²½μ° νΉμ λ€μμ€νμ΄μ€μ λͺ¨λ μλΉμ€λ₯Ό μ²λ¦¬νλλ‘ κ°μ μλΉμ€λ₯Ό ꡬμ±ν μ μμ΅λλ€. λ¨μΌ κ°μ μλΉμ€λ₯Ό μ¬λ¬ "μ€μ " μλΉμ€μ λ§€ννλ κ²μ λͺ¨λ리μ μ ν리μΌμ΄μ μ μλΉμ€ μλΉμκ° μ νμ μ μν νμ μμ΄ λ³κ°μ λ§μ΄ν¬λ‘μλΉμ€λ‘ ꡬμΆλ λ³΅ν© μλΉμ€λ‘ μ ννλ λ° νΉν μ μ©ν©λλ€. λΌμ°ν κ·μΉμ "monolith.comμ μ΄λ¬ν URIμ λν νΈμΆμ λ§μ΄ν¬λ‘μλΉμ€ Aλ‘ μ΄λ"κ³Ό κ°μ΄ μ§μ ν μ μμ΅λλ€. μλ μμ μ€ νλμμ μ΄κ²μ΄ μ΄λ»κ² μλνλμ§ νμΈν μ μμ΅λλ€.
κ²μ΄νΈμ¨μ΄μ ν¨κ» νΈλν½ κ·μΉμ ꡬμ±νμ¬ μμ λ° λ°μ νΈλν½μ μ μ΄ν©λλ€.
κ²½μ°μ λ°λΌ μ΄λ¬ν κΈ°λ₯μ μ¬μ©νλ €λ©΄ λμ κ·μΉλ ꡬμ±ν΄μΌ ν©λλ€. μ¬κΈ°μ μλΉμ€ νμ μ§ν©μ μ§μ νκΈ° λλ¬Έμ λλ€. λ³λμ κ°μ²΄μμ μλΉμ€ νμ μ§ν© λ° κΈ°ν λμλ³ μ μ± μ μ§μ νλ©΄ κ°μ μλΉμ€ κ°μ μ΄λ₯Ό κΉλνκ² μ¬μ¬μ©ν μ μμ΅λλ€. λ€μ μΉμ μμ λμ κ·μΉμ λν΄ μμΈν μμλ³Ό μ μμ΅λλ€.
λ€μ κ°μ μλΉμ€λ μμ²μ΄ νΉμ μ¬μ©μλ‘λΆν° μ€λμ§ μ¬λΆμ λ°λΌ μμ²μ μλΉμ€μ λ€λ₯Έ λ²μ μΌλ‘ λΌμ°ν ν©λλ€.
hosts
νλλ κ°μ μλΉμ€μ νΈμ€νΈ, μ¦ μ΄λ¬ν λΌμ°ν
κ·μΉμ΄ μ μ©λλ μ¬μ©μ μ£Όμ μ§μ κ°λ₯ν λμμ λμ΄ν©λλ€. μ΄κ²μ ν΄λΌμ΄μΈνΈκ° μλΉμ€μ μμ²μ λ³΄λΌ λ μ¬μ©νλ μ£Όμμ
λλ€.
κ°μ μλΉμ€ νΈμ€νΈ μ΄λ¦μ IP μ£Όμ, DNS μ΄λ¦ λλ νλ«νΌμ λ°λΌ μμ ν λλ©μΈ μ΄λ¦(FQDN)μΌλ‘ μμμ λλ λͺ μμ μΌλ‘ νμΈλλ μ§§μ μ΄λ¦(μ: Kubernetes μλΉμ€ μ§§μ μ΄λ¦)μΌ μ μμ΅λλ€. λν μμΌλμΉ΄λ("*") μ λμ¬λ₯Ό μ¬μ©νμ¬ μΌμΉνλ λͺ¨λ μλΉμ€μ λν λ¨μΌ λΌμ°ν κ·μΉ μ§ν©μ λ§λ€ μ μμ΅λλ€. κ°μ μλΉμ€ νΈμ€νΈλ μ€μ λ‘ Istio μλΉμ€ λ μ§μ€νΈλ¦¬μ μΌλΆμΌ νμκ° μμΌλ©°, λ¨μν κ°μ λμμΌ λΏμ λλ€. μ΄λ₯Ό ν΅ν΄ λ©μ λ΄λΆμ λΌμ°ν κ°λ₯ν νλͺ©μ΄ μλ κ°μ νΈμ€νΈμ λν νΈλν½μ λͺ¨λΈλ§ν μ μμ΅λλ€.
http
μΉμ
μλ κ°μ μλΉμ€μ λΌμ°ν
κ·μΉμ΄ ν¬ν¨λμ΄ μμΌλ©°, hosts νλμ μ§μ λ λμμΌλ‘ μ μ‘λ HTTP/1.1, HTTP2 λ° gRPC νΈλν½μ λΌμ°ν
νκΈ° μν μΌμΉ 쑰건과 μμ
μ μ€λͺ
ν©λλ€(tcp
λ° tls
μΉμ
μ μ¬μ©νμ¬ TCP λ° μ’
λ£λμ§ μμ TLS νΈλν½μ λν λΌμ°ν
κ·μΉμ ꡬμ±ν μλ μμ). λΌμ°ν
κ·μΉμ νΈλν½μ 보λ΄λ €λ λμκ³Ό μ¬μ© μ¬λ‘μ λ°λΌ 0κ° μ΄μμ μΌμΉ 쑰건μΌλ‘ ꡬμ±λ©λλ€.
μμ μ 첫 λ²μ§Έ λΌμ°ν
κ·μΉμλ μ‘°κ±΄μ΄ μμΌλ―λ‘ match
νλλ‘ μμν©λλ€. μ΄ κ²½μ° "jason" μ¬μ©μμ λͺ¨λ μμ²μ μ΄ λΌμ°ν
μ μ μ©νλ €κ³ νλ―λ‘ headers
, end-user
λ° exact
νλλ₯Ό μ¬μ©νμ¬ μ μ ν μμ²μ μ νν©λλ€.
route μΉμ
μ destination
νλλ μ΄ μ‘°κ±΄κ³Ό μΌμΉνλ νΈλν½μ μ€μ λμμ μ§μ ν©λλ€. κ°μ μλΉμ€μ νΈμ€νΈμ λ¬λ¦¬ λμμ νΈμ€νΈλ Istioμ μλΉμ€ λ μ§μ€νΈλ¦¬μ μ‘΄μ¬νλ μ€μ λμμ΄μ΄μΌ ν©λλ€. κ·Έλ μ§ μμΌλ©΄ Envoyλ νΈλν½μ λ³΄λΌ μμΉλ₯Ό μ μ μμ΅λλ€. μ΄λ νλ‘μκ° μλ λ©μ μλΉμ€μ΄κ±°λ μλΉμ€ νλͺ©μ μ¬μ©νμ¬ μΆκ°λ λΉ λ©μ μλΉμ€μΌ μ μμ΅λλ€. μ΄ κ²½μ° Kubernetesμμ μ€ν μ€μ΄λ©° νΈμ€νΈ μ΄λ¦μ Kubernetes μλΉμ€ μ΄λ¦μ
λλ€:
μ΄ νμ΄μ§μ μ΄ μμ μ λ€λ₯Έ μμ μμλ κ°λ¨ν νκΈ° μν΄ λμ νΈμ€νΈμ Kubernetes μ§§μ μ΄λ¦μ μ¬μ©ν©λλ€. μ΄ κ·μΉμ΄ νκ°λ λ Istioλ νΈμ€νΈμ μ κ·νλ μ΄λ¦μ μ»κΈ° μν΄ λΌμ°ν κ·μΉμ΄ ν¬ν¨λ κ°μ μλΉμ€μ λ€μμ€νμ΄μ€λ₯Ό κΈ°λ°μΌλ‘ λλ©μΈ μ λ―Έμ¬λ₯Ό μΆκ°ν©λλ€. μμ μμ μ§§μ μ΄λ¦μ μ¬μ©νλ€λ κ²μ 볡μ¬νμ¬ μνλ λ€μμ€νμ΄μ€μμ μλν μ μλ€λ κ²μ μλ―Έν©λλ€.destination μΉμ μ λν μ΄ κ·μΉμ 쑰건과 μΌμΉνλ μμ²μ 보λ΄λ €λ μ΄ Kubernetes μλΉμ€μ νμ μ§ν©μ μ§μ ν©λλ€. μ΄ κ²½μ° v2λΌλ νμ μ§ν©μ λλ€. μλμ λμ κ·μΉ μΉμ μμ μλΉμ€ νμ μ§ν©μ μ μνλ λ°©λ²μ λ³Ό μ μμ΅λλ€.
λΌμ°ν κ·μΉμ μμμ μλλ‘ μμ°¨μ μΌλ‘ νκ°λλ©°, κ°μ μλΉμ€ μ μμ 첫 λ²μ§Έ κ·μΉμ κ°μ₯ λμ μ°μ μμκ° λΆμ¬λ©λλ€. μ΄ κ²½μ° μ²« λ²μ§Έ λΌμ°ν κ·μΉκ³Ό μΌμΉνμ§ μλ λͺ¨λ κ²μ λ λ²μ§Έ κ·μΉμ μ§μ λ κΈ°λ³Έ λμμΌλ‘ 보λ΄λ €κ³ ν©λλ€. μ΄ λλ¬Έμ λ λ²μ§Έ κ·μΉμλ μΌμΉ μ‘°κ±΄μ΄ μκ³ νΈλν½μ v3 νμ μ§ν©μΌλ‘λ§ μ§μν©λλ€.
κ°μ μλΉμ€μ λν νΈλν½μ΄ νμ νλ μ΄μμ μΌμΉνλ κ²½λ‘λ₯Ό κ°λλ‘ νλ €λ©΄ κ° κ°μ μλΉμ€μ λ§μ§λ§ κ·μΉμΌλ‘ μ΄μ κ°μ κΈ°λ³Έ "쑰건 μμ" λλ κ°μ€μΉ κΈ°λ° κ·μΉ(μλ μ€λͺ )μ μ 곡νλ κ²μ΄ μ’μ΅λλ€.
μμμ 보μλ―μ΄ λΌμ°ν
κ·μΉμ νΉμ νΈλν½ νμ μ§ν©μ νΉμ λμμΌλ‘ λΌμ°ν
νλ κ°λ ₯ν λꡬμ
λλ€. νΈλν½ ν¬νΈ, ν€λ νλ, URI λ±μ λν μΌμΉ 쑰건μ μ€μ ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, μ΄ κ°μ μλΉμ€λ₯Ό μ¬μ©νλ©΄ μ¬μ©μκ° http://bookinfo.com/
μ λ ν° κ°μ μλΉμ€μ μΌλΆμΈ κ²μ²λΌ ratingsμ reviewsλΌλ λ κ°μ λ³λ μλΉμ€λ‘ νΈλν½μ λ³΄λΌ μ μμ΅λλ€. κ°μ μλΉμ€ κ·μΉμ μμ² URIλ₯Ό κΈ°λ°μΌλ‘ νΈλν½μ μΌμΉμν€κ³ μμ²μ μ μ ν μλΉμ€λ‘ 보λ
λλ€.
μΌλΆ μΌμΉ 쑰건μ κ²½μ° μ νν κ°, μ λμ¬ λλ μ κ·μμ μ¬μ©νμ¬ μ νν μλ μμ΅λλ€.λμΌν match
λΈλ‘μ μ¬λ¬ μΌμΉ 쑰건μ μΆκ°νμ¬ μ‘°κ±΄μ ANDλ‘ μ°κ²°νκ±°λ, λμΌν κ·μΉμ μ¬λ¬ μΌμΉ λΈλ‘μ μΆκ°νμ¬ μ‘°κ±΄μ ORλ‘ μ°κ²°ν μ μμ΅λλ€. λν μ£Όμ΄μ§ κ°μ μλΉμ€μ λν΄ μ¬λ¬ λΌμ°ν
κ·μΉμ κ°μ§ μ μμ΅λλ€. μ΄λ₯Ό ν΅ν΄ λ¨μΌ κ°μ μλΉμ€ λ΄μμ λΌμ°ν
쑰건μ μνλ λ§νΌ 볡μ‘νκ±°λ λ¨μνκ² λ§λ€ μ μμ΅λλ€. μΌμΉ 쑰건 νλμ μ 체 λͺ©λ‘κ³Ό κ°λ₯ν κ°μ HTTPMatchRequest
μ°Έμ‘°μμ μ°Ύμ μ μμ΅λλ€.μΌμΉ 쑰건μ μ¬μ©νλ κ² μΈμλ λ°±λΆμ¨ "κ°μ€μΉ"λ‘ νΈλν½μ λΆμ°ν μ μμ΅λλ€. μ΄λ A/B ν
μ€νΈ λ° μΉ΄λ리μ λ‘€μμμ μ μ©ν©λλ€:
λν λΌμ°ν κ·μΉμ μ¬μ©νμ¬ νΈλν½μ λν΄ μΌλΆ μμ μ μνν μ μμ΅λλ€. μλ₯Ό λ€λ©΄:
ν€λ μΆκ° λλ μ κ±°
URL μ¬μμ±
μ΄ λμμ λν νΈμΆμ λν μ¬μλ μ μ± μ€μ
μ¬μ© κ°λ₯ν μμ
μ λν΄ μμΈν μμλ³΄λ €λ©΄ HTTPRoute
μ°Έμ‘°λ₯Ό μ°Έμ‘°νμΈμ.
κ°μ μλΉμ€μ ν¨κ» λμ κ·μΉμ Istioμ νΈλν½ λΌμ°ν κΈ°λ₯μ ν΅μ¬ λΆλΆμ λλ€. κ°μ μλΉμ€λ₯Ό μ£Όμ΄μ§ λμμΌλ‘ νΈλν½μ λΌμ°ν νλ λ°©λ²μΌλ‘ μκ°ν μ μκ³ , κ·Έλ° λ€μ λμ κ·μΉμ μ¬μ©νμ¬ ν΄λΉ λμμ λν νΈλν½μ μ΄λ€ μΌμ΄ λ°μνλμ§ κ΅¬μ±ν©λλ€. λμ κ·μΉμ κ°μ μλΉμ€ λΌμ°ν κ·μΉμ΄ νκ°λ νμ μ μ©λλ―λ‘ νΈλν½μ "μ€μ " λμμ μ μ©λ©λλ€.νΉν λμ κ·μΉμ μ¬μ©νμ¬ λ²μ λ³λ‘ μ£Όμ΄μ§ μλΉμ€μ λͺ¨λ μΈμ€ν΄μ€λ₯Ό κ·Έλ£Ήννλ λ± λͺ λͺ λ μλΉμ€ νμ μ§ν©μ μ§μ ν©λλ€. κ·Έλ° λ€μ κ°μ μλΉμ€μ λΌμ°ν κ·μΉμμ μ΄λ¬ν μλΉμ€ νμ μ§ν©μ μ¬μ©νμ¬ μλΉμ€μ λ€λ₯Έ μΈμ€ν΄μ€μ λν νΈλν½μ μ μ΄ν μ μμ΅λλ€.λμ κ·μΉμ μ¬μ©νλ©΄ μ 체 λμ μλΉμ€ λλ νΉμ μλΉμ€ νμ μ§ν©μ νΈμΆν λ μ νΈνλ λ‘λ λ°Έλ°μ± λͺ¨λΈ, TLS 보μ λͺ¨λ λλ μν· λΈλ μ΄μ»€ μ€μ κ³Ό κ°μ Envoyμ νΈλν½ μ μ± μ μ¬μ©μ μ§μ ν μλ μμ΅λλ€. λμ κ·μΉ μ°Έμ‘°μμ λμ κ·μΉ μ΅μ μ μ 체 λͺ©λ‘μ λ³Ό μ μμ΅λλ€.
κΈ°λ³Έμ μΌλ‘ Istioλ μμ² μκ° κ°μ₯ μ μ μΈμ€ν΄μ€μ μμ²μ΄ λΆμ°λλ μ΅μ μμ² λ‘λ λ°Έλ°μ± μ μ± μ μ¬μ©ν©λλ€. Istioλ λν νΉμ μλΉμ€ λλ μλΉμ€ νμ μ§ν©μ λν μμ²μ λν΄ λμ κ·μΉμ μ§μ ν μ μλ λ€μ λͺ¨λΈλ μ§μν©λλ€.
무μμ: μμ²μ΄ νμ μΈμ€ν΄μ€μ 무μμλ‘ μ λ¬λ©λλ€.
κ°μ€μΉ: μμ²μ΄ νΉμ λ°±λΆμ¨μ λ°λΌ νμ μΈμ€ν΄μ€μ μ λ¬λ©λλ€.
λΌμ΄λ λ‘λΉ: μμ²μ΄ μμλλ‘ κ° μΈμ€ν΄μ€μ μ λ¬λ©λλ€.
κ° μ΅μ μ λν μμΈν λ΄μ©μ Envoy λ‘λ λ°Έλ°μ± λ¬Έμλ₯Ό μ°Έμ‘°νμΈμ.
λ€μ μμ λμ κ·μΉμ my-svc
λμ μλΉμ€μ λν΄ μλ‘ λ€λ₯Έ λ‘λ λ°Έλ°μ± μ μ±
μ κ°μ§ μΈ κ°μ§ λ€λ₯Έ νμ μ§ν©μ ꡬμ±ν©λλ€:
κ° νμ μ§ν©μ νλ μ΄μμ labels
μ κΈ°λ°μΌλ‘ μ μλλ©°, Kubernetesμμλ Podμ κ°μ κ°μ²΄μ μ°κ²°λλ ν€/κ° μμ
λλ€. μ΄λ¬ν λ μ΄λΈμ Kubernetes μλΉμ€μ λ°°ν¬μμ λ€λ₯Έ λ²μ μ μλ³νκΈ° μν΄ metadata
λ‘ μ μ©λ©λλ€.νμ μ§ν©μ μ μνλ κ² μΈμλ μ΄ λμ κ·μΉμλ μ΄ λμμ λͺ¨λ νμ μ§ν©μ λν κΈ°λ³Έ νΈλν½ μ μ±
κ³Ό ν΄λΉ νμ μ§ν©μ λν΄μλ§ μ΄λ₯Ό μ¬μ μνλ νμ μ§ν©λ³ μ μ±
μ΄ μμ΅λλ€. subsets
νλ μμ μ μλ κΈ°λ³Έ μ μ±
μ v1
κ³Ό v3
νμ μ§ν©μ λν΄ κ°λ¨ν 무μμ λ‘λ λ°Έλ°μλ₯Ό μ€μ ν©λλ€. v2
μ μ±
μμλ ν΄λΉ νμ μ§ν©μ νλμ λΌμ΄λ λ‘λΉ λ‘λ λ°Έλ°μκ° μ§μ λ©λλ€.
κ²μ΄νΈμ¨μ΄λ₯Ό μ¬μ©νμ¬ λ©μμ λ€μ΄μ€κ³ λκ°λ νΈλν½μ κ΄λ¦¬νμ¬ λ©μμ λ€μ΄μ€κ±°λ λκ°κΈΈ μνλ νΈλν½μ μ§μ ν μ μμ΅λλ€. κ²μ΄νΈμ¨μ΄ ꡬμ±μ μλΉμ€ μν¬λ‘λμ ν¨κ» μ€νλλ μ¬μ΄λμΉ΄ Envoy νλ‘μκ° μλ λ©μ κ°μ₯μ리μμ μ€νλλ λ
립ν Envoy νλ‘μμ μ μ©λ©λλ€.Kubernetes Ingress APIμ κ°μ΄ μμ€ν
μ λ€μ΄μ€λ νΈλν½μ μ μ΄νλ λ€λ₯Έ λ©μ»€λμ¦κ³Ό λ¬λ¦¬ Istio κ²μ΄νΈμ¨μ΄λ₯Ό μ¬μ©νλ©΄ Istioμ νΈλν½ λΌμ°ν
μ λͺ¨λ κΈ°λ₯κ³Ό μ μ°μ±μ νμ©ν μ μμ΅λλ€. Istioμ Gateway 리μμ€λ λ
ΈμΆν ν¬νΈ, TLS μ€μ λ±κ³Ό κ°μ 4-6κ³μΈ΅ λ‘λ λ°Έλ°μ± μμ±λ§ ꡬμ±ν μ μκΈ° λλ¬Έμ
λλ€. κ·Έλ° λ€μ λμΌν API 리μμ€μ μ ν리μΌμ΄μ
κ³μΈ΅ νΈλν½ λΌμ°ν
(L7)μ μΆκ°νλ λμ μΌλ° Istio κ°μ μλΉμ€λ₯Ό κ²μ΄νΈμ¨μ΄μ λ°μΈλ©ν©λλ€. μ΄λ₯Ό ν΅ν΄ κΈ°λ³Έμ μΌλ‘ Istio λ©μμ λ€λ₯Έ λ°μ΄ν° νλ μΈ νΈλν½κ³Ό λ§μ°¬κ°μ§λ‘ κ²μ΄νΈμ¨μ΄ νΈλν½μ κ΄λ¦¬ν μ μμ΅λλ€.κ²μ΄νΈμ¨μ΄λ μ£Όλ‘ μΈκ·Έλ μ€ νΈλν½μ κ΄λ¦¬νλ λ° μ¬μ©λμ§λ§ μ΄κ·Έλ μ€ κ²μ΄νΈμ¨μ΄λ₯Ό ꡬμ±ν μλ μμ΅λλ€. μ΄κ·Έλ μ€ κ²μ΄νΈμ¨μ΄λ₯Ό μ¬μ©νλ©΄ λ©μλ₯Ό λ λλ νΈλν½μ λν΄ μ μ© μ’
λ£ λ
Έλλ₯Ό ꡬμ±ν μ μμ΄ μ΄λ€ μλΉμ€κ° μΈλΆ λ€νΈμν¬μ μ‘μΈμ€ν μ μλμ§ λλ μ‘μΈμ€ν΄μΌ νλμ§ μ ννκ±°λ μλ₯Ό λ€μ΄ λ©μμ 보μμ μΆκ°νκΈ° μν΄ μ΄κ·Έλ μ€ νΈλν½μ μμ ν μ μ΄λ₯Ό νμ±νν μ μμ΅λλ€. λν κ²μ΄νΈμ¨μ΄λ₯Ό μ¬μ©νμ¬ μμ λ΄λΆ νλ‘μλ₯Ό ꡬμ±ν μλ μμ΅λλ€.Istioλ μ¬μ©ν μ μλ μΌλΆ μ¬μ ꡬμ±λ κ²μ΄νΈμ¨μ΄ νλ‘μ λ°°ν¬(istio-ingressgateway
λ° istio-egressgateway
)λ₯Ό μ 곡ν©λλ€. λ°λͺ¨ μ€μΉλ₯Ό μ¬μ©νλ κ²½μ° λ λ€ λ°°ν¬λκ³ κΈ°λ³Έ νλ‘νμ μ¬μ©νλ κ²½μ° μΈκ·Έλ μ€ κ²μ΄νΈμ¨μ΄λ§ λ°°ν¬λ©λλ€. μ΄λ¬ν λ°°ν¬μ μ체 κ²μ΄νΈμ¨μ΄ ꡬμ±μ μ μ©νκ±°λ μ체 κ²μ΄νΈμ¨μ΄ νλ‘μλ₯Ό λ°°ν¬ λ° κ΅¬μ±ν μ μμ΅λλ€.
λ€μ μμ λ μΈλΆ HTTPS μΈκ·Έλ μ€ νΈλν½μ λν κ°λ₯ν κ²μ΄νΈμ¨μ΄ ꡬμ±μ 보μ¬μ€λλ€:
μ΄ κ²μ΄νΈμ¨μ΄ ꡬμ±μ ν΅ν΄ ext-host.example.com
μ HTTPS νΈλν½μ΄ 443 ν¬νΈμμ λ©μλ‘ λ€μ΄μ¬ μ μμ§λ§ νΈλν½μ λν λΌμ°ν
μ μ§μ νμ§ μμ΅λλ€.
λΌμ°ν
μ μ§μ νκ³ κ²μ΄νΈμ¨μ΄κ° μλν λλ‘ μλνλ €λ©΄ λ€μ μμ μ κ°μ΄ κ°μ μλΉμ€μ gateways
νλλ₯Ό μ¬μ©νμ¬ κ²μ΄νΈμ¨μ΄λ₯Ό κ°μ μλΉμ€μ λ°μΈλ©ν΄μΌ ν©λλ€:
κ·Έλ° λ€μ μΈλΆ νΈλν½μ λν λΌμ°ν κ·μΉμΌλ‘ κ°μ μλΉμ€λ₯Ό ꡬμ±ν μ μμ΅λλ€.