이번 장도 기존의 서버들을 어떻게 k8s로 대체하는 지에 대한 개념을 공부했다. 우선 하나하나 deep dive를 해보고 싶지만, 이 책을 읽으며 현재 허락한 시간 내에서는 기존의 것들을 어떻게 k8s로 대체하고, k8s에 대한 찍먹 개념을 아는 것으로도 도움이 되고 있다고 생각한다...!
마이크로서비스는 구성 서버에서 구성을 가져온 후에야 시작될 수 있어서 구성 서버가 작동될 때 까지 기다려야 한다. 이로 인해 통합 테스트 실행에 상당한 지연이 발생한다. 쿠버네티스 컨피그 맵과 시크릿을 사용하면 이런 지연이 없기 때문에 더 빠르게 자동화된 통합 테스트를 실행할 수 있다.
스프링 클라우드 게이트웨이 대체
스프링 클라우드 게이트웨이가 인그레스 리소스에 비해 풍부한 라우팅 기능을 제공하긴 하지만, 인그레스는 쿠버네티스 플랫폼에서 기본 제공하는 기능이며, Cert Manager를 사용해 인증서를 자동으로 프로비저닝하도록 확장할 수 있다는 장점이 있다.
마이크로서비스를 비인증 요청으로부터 보호하려는 목적으로도 스프링 클라우드 게이트웨이를 사용했다. 즉, 마이크로서비스는 신뢰할 수 있는 OAuth 권한 부여 서버나 OIDC 공급자가 발급한 유효한 OAuth 2.0/OIDC 접근 토큰이 필요하다. 쿠버네티스 인그레스 리소스는 이를 기본 지원하지 않지만, 이를 지원하는 인그레스 컨트롤러 구현이 있다.
마지막으로 복합 상태 점검은 각 마이크로서비스의 디플로이먼트 리소스에 라이브니스 프로브와 레디니스 프로브를 정의해 대체할 수 있다.
인증서 프로비저닝 자동화
인그레스로 구성한 HTTPS 엔드포인트에서 사용하는 인증서를 Cert Manager를 사용해 자동으로 프로비저닝할 수 있다. Cert Manager는 쿠버네티스 애드온으로 동작하며, 무료 인증 기관인 Let’s Encrypt 에 인증서 발급을 요청하도록 구성돼 인증서 발급을 자동화 한다.
Let’s Encrypt 발급자 유형
Stage environment : 많은 양의 단기 인증서가 필요한 개발 및 테스트 단계에서 사용한다. 다량의 인증서를 만들 수 있지만 신뢰할 수 없는 root CA를 사용한다. 따라서 Stage environment 인증서는 웹 브라우저에서 사용하는 API나 웹 페이지를 보호할 수 없다.
Production environment : 신뢰할 수 있는 root CA를 사용해 인증서를 발급한다. 상용 환경은 발급할 수 있는 인증서 수에 제한이 있는데, 1주일에 50개의 새 인증서만 발급할 수 있다.
Cert Manager와 Let’s Encrypt가 인증서 프로비저닝을 위해 통신할 때는 ACME v2 기반의 표준 프로토콜을 사용한다. Let’s Encrypt가 CA 역할을 하고 Cert Manager는 ACME 클라이언트 역할을 한다.
끄적끄적