What is Ingress
Kubernetesμ Ingressμ λν΄ μμ보μμ
Reference: Kubernetes docs
μΈκ·Έλ μ€ (Ingress)
μΌλ°μ μΌλ‘ Network trafficμ
ingress
μengress
λ‘ κ΅¬λΆλλ€Ingressλ μΈλΆλ‘λΆν° μλ² λ΄λΆλ‘ μ μ λλ network traffic
Engressλ μλ² λ΄λΆμμ μΈλΆλ‘ λκ°λ network traffic
Cluster λ΄μ μλΉμ€μ λν μΈλΆ μ κ·Όμ κ΄λ¦¬νλ API Object
μΌλ°μ μΌλ‘
HTTPS
λ₯Ό κ΄λ¦¬νλ€
Ingressλ λΆν λΆμ°, SSL μ’ λ£, λͺ μΉ κΈ°λ°μ κ°μ νΈμ€ν μ μ 곡ν μ μλ€
Terms
Node
Clusterμ μΌλΆ
Kubernetesμ μν worker machine
Cluster
Kubernetesμμ κ΄λ¦¬λλ containerν λ applicationμ μ€ννλ nodeμ μ§ν©
λλΆλΆμ Kubernetes λ°°ν¬μμ clusterμ μν nodeλ
Public Internet
μ μΌλΆκ° μλλ€
Edge Router
Clusterμ λ°©νλ²½ μ μ± μ μ μ©νλ router
Cloud provider or physical hardwareμ μΌλΆμμ κ΄λ¦¬νλ
Gateway
μΌ μ μλ€
Cluster Network
Kubernetes networking modelμ λ°λΌ cluster λ΄λΆμμ ν΅μ μ μ©μ΄νκ² νλ λ Όλ¦¬μ λλ 물리μ λ§ν¬μ μ§ν©
Service
Label selecter
λ₯Ό μ¬μ©ν΄μpod
μ§ν©μ μλ³νλ Kubernetes serviceλ¬λ¦¬ μΈκΈνμ§ μμΌλ©΄ serviceλ
Cluster network
λ΄μμλ§ routing κ°λ₯ν κ°μ IPλ₯Ό κ°μ§κ³ μλ€κ³ κ°μ νλ€
What is Ingress?
Cluster μΈλΆμμ cluster λ΄λΆ μλΉμ€λ‘ HTTP μ HTTPS κ²½λ‘λ₯Ό λ ΈμΆνλ€
Traffic routing μ Ingress resourceμ μ μλ κ·μΉμ μν΄ control λλ€
Ingressλ μΈλΆμμ serviceλ‘ μ μ κ°λ₯ν URL, Load balance traffic, SSL/TSL μ’ λ£, κ·Έλ¦¬κ³ μ΄λ¦ κΈ°λ°μ virtual hosting serviceλ₯Ό μ 곡νλλ‘ κ΅¬μ±ν μ μλ€
Ingress controller
λ μΌλ°μ μΌλ‘ load balancerλ₯Ό μ¬μ©ν΄μ ingressλ₯Ό μνν μ± μμ΄ μμΌλ©°, trafficμ μ²λ¦¬νλλ° λμμ΄ λλλ‘ edge router λ additional frontend λ₯Ό ꡬμ±ν μ μλ€
Ingressλ μμμ port λλ protocol μ λ ΈμΆμν€μ§ μλλ€
HTTPμ HTTPS μ΄μΈμ serviceλ₯Ό μΈν°λ·μ λ ΈμΆνλ €λ©΄ μΌλ°μ μΌλ‘
Service.Type=NodePort
λλService.Type=LoadBalancer
λ₯Ό μ¬μ©νλ€
Prerequisites
Ingress Controller
κ° μμ΄μΌIngress
λ₯Ό μΆ©μ‘±ν μ μλ€Resourceλ§ μμ±νλ κ²μ ν¨κ³Όκ° μλ€! controller κ° νμνλ€
ingress-nginx
κ°μ ingress controller λ₯Ό λ°°ν¬ν΄μΌ νλλ°, ingress controllerμ μ’ λ₯λ λ€μνλ€
The Ingress resource
A minimal Ingress resource example
λ€λ₯Έ λͺ¨λ Kubernetes resourceμ λ§μ°¬κ°μ§λ‘ ingressμλ
apiVersion
,kind
,metadata
fieldκ° νμνλ€Ingress objectμ μ΄λ¦μ μ ν¨μ DNS subdomain name μ΄μ΄μΌ νλ€
Ingressλ μ’ μ’ annotationμ μ΄μ©ν΄μ ingress controllerμ λ°λΌ λͺ κ°μ§ optionμ ꡬμ±νλλ°, rewrite-target annotation μ μλ‘ λ€ μ μλ€
μλ‘ λ€λ₯Έ ingress controllerλ κ°κ° λ€λ₯Έ annotationμ μ§μνλ€
Ingress spec
μλ Load Balancer λλ proxy serverλ₯Ό ꡬμ±νλλ° νμν λͺ¨λ μ λ³΄κ° μλ€κ°μ₯ μ€μν κ²μ, λ€μ΄μ€λ requestμ μΌμΉνλ κ·μΉ λͺ©λ‘μ ν¬ν¨νλ κ²μ΄λ€
Ingress resourceλ HTTP(S) traffic μ μ§μνλ κ·μΉλ§ μ§μνλ€
Ingress rules
: κ° HTTP κ·μΉμλ λ€μμ μ λ³΄κ° ν¬ν¨λλ€
μ νμ host
λ§μ½ hostκ° μ 곡λλ©΄, κ·μΉμ΄ ν΄λΉ hostμ μ μ©λλ€
κ²½λ‘ λͺ©λ‘
κ²½λ‘ λͺ©λ‘μλ κ°κ°
service.name
,service.port.name
orservice.port.number
κ° μ μλμ΄ μλ, κ΄λ ¨ backendλ₯Ό κ°μ§κ³ μλ€Load balancerκ° trafficμ΄ μ°Έμ‘°λ μλΉμ€λ‘ 보λ΄κΈ° μ μ hostμ path λ incoming requestμ λ΄μ©μ΄ match λμ΄μΌ νλ€
Backend
Backendλ service docs λλ μ¬μ©μ μ μ resource backendμ μ€λͺ λ κ² μ²λΌ service μ port μ΄λ¦μ μ‘°ν©μ΄λ€.
Hostμ κ·μΉ κ²½λ‘κ° μΌμΉνλ ingressμ λν HTTP(S) μμ²μ backend λͺ©λ‘μΌλ‘ μ μ‘λλ€
DefaultBackend
κ·μΉμ΄ μλ ingressλ λͺ¨λ trafficμ νλμ default backendλ‘ μ μ‘νλ€
DefaultBackendλ
ingress controller
μ κ΅¬μ± optionμ΄κ³ ,ingress resource
μ μ§μ λμ΄ μμ§ μλ€λ§μ½
ingress object
μ HTTP μμ²κ³Ό μΌμΉνλ host or pathκ° μμΌλ©΄, trafficμ default backendλ‘ routing λλ€
Resource Backend
Resource backend
λ ingresss objectμ λμΌν namespace λ΄μ μλ λ€λ₯Έ Kubernets resourceμ λν ObjectRef μ΄λ€Resource
λ serviceμ μνΈ λ°°νμ μΈ μ€μ μ΄λ©°, λ λ€ μ§μ νκ² λλ©΄ μ ν¨μ± κ²μ¬ λ₯Ό ν΅κ³Ό ν μ μλ€μ ν¨μ± κ²μ¬μ μ€ν¨νλ€
Resource backend
μ μΌλ°μ μΈ μ©λλ static assetμ΄ μλ object storage backendλ‘ dataλ₯Ό μμ νλ κ² μ΄λ€
Resource backend example
μμ yaml file μ²λΌ ingress λ₯Ό μμ±νκ³ , μλμ λͺ λ ΉμΌλ‘ μμ±λ ingressλ₯Ό νμΈ ν μ μλ€
κ²°κ³Ό
Path types
Ingress μ κ° κ²½λ‘μλ ν΄λΉ κ²½λ‘μ μ νμ΄ μμ΄μΌ νλ€
λͺ μμ
pathType
μ ν¬ν¨νμ§ μλ κ²½λ‘λ μ ν¨μ± κ²μ¬ λ₯Ό ν΅κ³Όνμ§ λͺ»νλ€!
μ§μλλ κ²½λ‘ μ νμ μλμ 3κ°μ§κ° μλ€
ImplementationSpecific
μ΄ κ²½λ‘ μ νμ μΌμΉ μ¬λΆλ IngressClass μ λ°λΌ λ¬λΌμ§λ€
μ΄κ²μ ꡬνν λ λ³λ
pathType
μΌλ‘ μ²λ¦¬νκ±°λ,Prefix
λλExact
κ²½λ‘ μ νμ²λΌ μ²λ¦¬ν μ μλ€
Exact
URL κ²½λ‘μ λμλ¬Έμλ₯Ό μ격νκ² μΌμΉμν¨λ€
Prefix
URL κ²½λ‘μ μ λμ¬λ₯Ό
/
λ₯Ό κΈ°μ€μΌλ‘ λΆλ¦¬ν κ°κ³Ό μΌμΉμν¨λ€λμλ¬Έμλ₯Ό ꡬλΆνκ³ ,
Element basisλ‘ path elementλ₯Ό μΌμΉμν¨λ€
Request pathμ λͺ¨λ elementλ³ μ λμ¬κ° p μΈ κ²½μ° μμ²μ p κ²½λ‘μ μΌμΉνλ κ²μ΄λ€
λ¨, κ²½λ‘μ λ§μ§λ§ μμκ° request pathμ μλ λ§μ§λ§ elementμ νμ λ¬Έμμ΄μΈ κ²½μ°μλ μΌμΉνμ§ μλλ€
ex)
/foo/bar
μ/foo/bar/baz
λ μΌμΉνμ§λ§,/foo/bar
μ/foo/barbaz
λ μΌμΉνμ§ μλλ€!
Examples
μ’ λ₯ | κ²½λ‘ | μμ² κ²½λ‘ | μΌμΉ μ¬λΆ |
---|---|---|---|
Prefix |
| (λͺ¨λ κ²½λ‘) | μ |
Exact |
|
| μ |
Exact |
|
| μλμ€ |
Exact |
|
| μλμ€ |
Exact |
|
| μλμ€ |
Prefix |
|
| μ |
Prefix |
|
| μ |
Prefix |
|
| μλμ€ |
Prefix |
|
| μ |
Prefix |
|
| μ, λ§μ§λ§ μ¬λμ 무μν¨ |
Prefix |
|
| μ, λ§μ§λ§ μ¬λμ μΌμΉν¨ |
Prefix |
|
| μ, νμ κ²½λ‘ μΌμΉν¨ |
Prefix |
|
| μλμ€, λ¬Έμμ΄ μ λμ¬ μΌμΉνμ§ μμ |
Prefix |
|
| μ, |
Prefix |
|
| μ, |
Prefix |
|
| μ, |
Prefix |
|
| μλμ€, κΈ°λ³Έ λ°±μλ μ¬μ©ν¨ |
Mixed |
|
| μ, Exact μ νΈν¨ |
Multiple matches
κ²½μ°μ λ°λΌ Ingressμ μ¬λ¬ κ²½λ‘κ° requestμ μΌμΉν μ μλ€
μ΄ κ²½μ° μΌμΉνλ κ²½λ‘ μ€ κ°μ₯ κΈ΄ κ²½λ‘κ° μ°μ μμλ₯Ό κ°λλ€
λ κ°μ κ²½λ‘μ κΈΈμ΄κ° λμΌν κ²½μ°,
Prefix
κ²½λ‘ μ ν보λ€Exact
κ²½λ‘ μ νμ κ°μ§ κ²½λ‘κ° μ¬μ©λλ€!
+
Kubernetesμ μλΉμ€λ
L4 layer
λ‘TCP
λ¨μμ Pods λ₯Ό balancing νλ€
Last updated