Ingress Controller
클러스터내 외부에서 내부 서비스로 접근하는 HTTP, HTTPS, TCP 트래픽을 라우팅하는 HTTP 로드밸런서를 구성하는 컴포넌트입니다. Ingress Controller는 Ingress라는 리소스로 구성이 되며, 각 Ingress는 단일 또는 복합적인 라우팅 규칙으로 구성됩니다.
Turaco에서는 서비스 설계시 몇가지 동작만으로 동작하는 Nginx Ingress Controller를 컴포넌트로 제공하고 있습니다.
투라코 플랫폼은 기본적으로 Ingress Controller가 설치되어 제공됩니다.
외부 트래픽 수신은 기본 제공되는 tlc-support 네임스페이스내의 Ingress Controller에서 처리되며 트래픽 규칙이나 라우팅은 Ingress 라는 컴포넌트로 처리됩니다.
여기에서는 Turaco에서 제공하는 Ingress 컴포넌트의 사용법에 대해 설명합니다.
네트워크 타입 선택
⓵ 아키텍처 생성 버튼을 선택하면 네트워크 타입 선택화면이 나타납니다. ⓶ 네트워크 타입은 2가지 중에서 선택할 수 있으며 여기서 Nginx Ingress Controller 를 선택합니다.

컴포넌트 배치
네트워크 타입을 선택하면 아키텍처 설계화면으로 전환됩니다. 아키텍처 설계 화면에서 왼쪽의 컴포넌트 목록 패널에서 'Ingress' 컴포넌트를 선택합니다. Ingress 컴포넌트는 Network 카테고리에 있습니다.
⓵ 설계화면 왼쪽 컴포넌트 리스트 화면에서 Ingress 컴포넌트를 선택 후 디자이너 화면으로 드래그 & 드롭합니다.
⓶ 선택된 Ingress 컴포넌트에 대한 이름과 설명을 입력합니다.
⓷ 이름과 설명을 입력 후 확인을 클릭합니다.

Ingress 컴포넌트는 단독으로 동작할수 없고 라우팅 대상을 연결해야 하며 대상 서비스에 대한 설정값을 입력해야 Ingress 상단의 Required 경고가 사라집니다.
속성 설정
⓸ 대상 서비스 연결전 Ingress 컴포넌트에 대한 속성값을 설정합니다.
최대 요청 크기에 대한 값을 설정할 수 있습니다.

이제 Ingress 컴포넌트 사용을 위한 기본준비는 완료되었고 라우팅이 필요한 서비스를 Ingress 컴포넌트에 연결하고 몇가지 설정만 추가하면 됩니다.
대상 서비스 연결
대상 서비스는 Ingress 컴포넌트를 통해 트래픽을 라우팅할 서비스를 의미합니다.
백엔드 또는 프론트엔드 컴포넌트를 배치하여 연결할 수 있습니다. 여기서는 Springboot와 VueJs 컴포넌트를 사용해서 설명합니다.
<br/>
⓹ 컴포넌트 목록창에서 Springboot와 VueJS 컴포넌트를 각각 디자이너 화면에 드래그 & 드롭합니다.
추가된 Springboot와 VueJS 컴포넌트에 대한 속성값을 입력합니다.
⓺ 마지막으로 추가된 컴포넌트와 Ingress 컴포넌트를 연결합니다.

상세 속성 설정
Ingress 컴포넌트에 라우팅 대상 서비스를 연결 후 Ingress 컴포넌트에서 추가된 서비스들에 대한 상세 라우팅 설정을 해야 합니다. 상세 라우팅 설정은 Ingress 컴포넌트를 다시 클릭하면 오른쪽에 표시되는 상세 속성 창을 통해 설정할 수 있습니다.

⓻ Springboot, VueJS 두개의 컴포넌트를 추가 후 Ingress 컴포넌트와 연결 후 속성창에 해당 컴포넌트에 대한 라우팅 규칙이 추가된것을 확인합니다.
속성창에는 아래와 같이 3개의 항목이 추가되어 있으며 원하는 값으로 입력합니다.
Ingress 컴포넌트는 라우팅이 필요한 대상 서비스마다 1개씩 연결할 수 있으며, 여러개의 대상 서비스를 하나의 Ingress 컴포넌트에 연결할 수도 있습니다.
DDOS 공격 방어 설정
Nginx Ingress Controller에서 DDOS 공격에 대비하여 몇가지 방어 정책을 제공합니다.
