Skip to content

Ingress Nginx

cjlotto edited this page Aug 12, 2023 · 1 revision

Overview

Service (IP)LoadBalancing

  • https://www.app.com 이라는 루트 경로, https://www.app.com/customer, https://www.app.com/login 이라는 경로 매개변수가 있는 경로가 있다고 해보자.
  • Kubernetes Cluster에서 Pod + Service별로 root(/), /customer, /login에 대한 App service를 하고있다고하자.
  • 보통은 L7, L4 스위치 장치로 IP Load Balacing을 할 수 있다. 그런데, 쿠버네티스에서는 Ingress를 통해 이 스위치역할을 해줄 수 있다.

Canary Update

  • App을 Version1에서 Version2로 업데이트할 때, 쿠버네티스의 Ingress를 통해 percentage(%)로 Version1에는 80%, Version2에는 10% 이런식으로해서 Canary Update를 수행할 수 있다.

Ingress

  • Ingress는 쿠버네티스 설치 시, 가지고 있는 객체이다.
  • 여기에 Host, Path - Service Name과 매칭을 선언할 수 있다.
  • 이는 정의만할 뿐 실제 구동하는 구현체는 아니기 때문에, Ingress Controller가 필요하다.

Ingress Controller

  • 실제 Ingress에서 하고자하는 내용을 수행하는 구현체가 Ingress Controller이다. (Ex. Nginx, Kong)
  • 가령, Nginx를 Ingress Controller로 사용했다면, Namespace로 Nginx가 만들어지면서, 실제 구동하는 Controller가 Pod로 배포된다.
  • 이 배포된 Ingress Controller가 Ingress에서 작성해놨던 Rule을 확인하여 Traffic을 Balancing하여 알맞은 서비스에 연결해준다.
  • Ingress Controller도 Service 객체를 통해 트래픽을 받기에, On-prem이면, Nodeport를, Cloud면 Load Balacer를 사용하게 된다.

Service LoadBalancing

  • 위에서 많이 설명함

Canary Update

  • 위에서 많이 설명했지만 덫 붙임.
  • Ingress에서 @weight를 붙이면, %를 지정할 수 있다.
  • Ingress에서 @header를 붙여서 Language를 지정하면 가령, 미국에서 서비스할 때 언어를 eng로 지정 시, 트래픽을 100% 받게 된다.

HTTPS

  • Nginx Ingress Controller를 사용한다고 하자.
  • 해당하는 Controller Pod를 443 포트로 연결해 놓아야 한다.
  • Ingress에는 rule을 설정하고, tls를 secret으로 연결한다.
    • secert에 ssl 인증서를 갖고있다.
  • 사용자는 https를 붙여야 접근이 가능해진다.
📚 Kubernetes

Kubernetes

따배쿠

📕 Ingress

ETC

📕 Ingress

📚 Nginx

Nginx

📝 선수 지식

📝 What is Nginx ?

📝 How to use Nginx

📚 NodeJS

NodeJS

📚 FastAPI

FastAPI

📝 Pybo Wikibooks

📚 Elastic Search

Elastic Search

ETC

📚 Reference

📚 DB

DB

📂 SQL

📂 Redis - NoSQL

📚 AWS

AWS

📕 IAM

📚 Docker

Docker

📚 Helm

Helm

📚 Deep Learning

Deep Learning

Nocode

📚 Coding Test

Coding Test

📕 Nocode

🔖 Array

🔖 String

📕 Tip

Clone this wiki locally