- 인그레스
- 하나의 아이피로 수십 개의 서비스에 접근할 수 있게 해주는 리소스
- 애플리케이션 계층(http)에서 작동하여 쿠키 기반 세션 어피니티가 가능
- 쿠버네티스 환경에 인그레스 컨트롤러가 실행되어야 쓸 수 있다.
- 인그레스 동작 방식
- 클라이언트가 도메인 주소의 아이피를 찾는다
- 도메인은 인그레스 컨트롤러의 ip를 반환한다.
- 클라이언트는 host헤더에 uri를 입력하고 컨트롤러로 요청을 보낸다.
- 컨트롤러는 헤더를 보고 접근할 서비스를 결정 후 서비스의 엔드포인트 오브젝트를 보고 파드 ip를 조회하여 해당 파드한테 요청을 보낸다.
- ** 여기서 중요한 것은 컨트롤러가 서비스로 요청을 보내는 것이 아닌 서비스의 엔드포인트만 조회하여 파드 ip를 가져와 직접 요청을 보낸다는 것이다.
- 인그레스에 여러 서비스 매핑
- 인그레스는 path에 따라 각자 다른 서비스에 연결 시킬 수 있다.
- path가 아닌 host를 이용하여서도 다른 서비스에 연결 시킬 수도 있다.
- 인그레스에서 TLS 사용
- 인증서와 개인 키를 시크릿이라는 리소스에 저장하고 인그레스에 secretName을 주면
- HTTPS 통신이 가능해진다.
- 레디니스 프로브
- 파드가 현재 요청을 받을 수 있는 상태인지 체크할 수 있다.
- 레디니스 프로브를 이용해 서비스의 엔드포인트에 파드가 들어갈 수 있는지 체크할 수 있다.
- 라이브니스 프로브와 같이 Exec, HTTP, TCP 프로브가 가능하다.
- 레디니스 프로브는 개발자가 직접 어플리케이션에 맞게 정의해주어야 한다.
- 헤드리스 서비스
- 서비스 spec의 clusterIP를 None으로 설정하면 헤드리스 서비스를 만들 수 있다.
- 이 서비스로 요청을 보내면 연결된 파드들의 개별 주소들을 보내준다.
- 이렇게 요청을 보내면 준비된 파드만 보여주는데
- 아직 준비되지 않은 파드도 포함시키려면 서비스에 특정 어노테이션을 추가하면 된다.