Spring Cloud Netflix 컨테이너를 사용하여 GKE에서 Ingress를 정의하는 방법
마이크로 서비스 아키텍처가 있으며 Spring Cloud Netflix를 기반으로합니다.
- business-owner-service는 포트 8763에서 실행되는 Spring Boot 앱을 가리 킵니다. 포트 전달이 완료되고 business-owner-service : 80은 포트 8763으로 리디렉션됩니다.
- customer-service는 포트 8766에서 실행되는 Spring Boot 앱을 가리 킵니다. customer-service : 80-> 8766
Spring Cloud Zuul 게이트웨이를 통해 호출하면 아키텍처가 올바르게 실행되지만 Ingress를 설정하고 싶습니다.
내 정확한 구성은 다음과 같습니다.
입구
수신 경로 구성
문제는 수신에 비정상적인 모든 백엔드 서비스가 있고 내가 뭘 잘못하고 있는지 모르겠다는 것입니다. Ingress가 작동하려면 어떻게해야합니까?
편집 : 의견에 따라 다음과 같이 고객 서비스 포드에 대해 readinessProbe를 정의하려고했습니다.
이것은 작동하지 않으며 업데이트 된 구성을 다시 확인하려고하면 readinessProbe가 표시되지 않습니다. 나는 이것이 버그라고 생각하지만 프로브가 업데이트되었는지 확인하는 방법을 모르겠습니다.
또한 액추에이터 / 상태 GET은 Zuul 게이트웨이를 통해 실행됩니다.
답변
필자의 경우 솔루션이 된 것은 readinessProbe가 아닌 상태 확인 구성이었습니다. 수신 백엔드 서비스가 / actuator / health를 가리 키도록 자동으로 생성 된 상태 확인을 업데이트했습니다. 이것은 효과가 있었다
GKE 인 그레스 컨트롤러 는 포드 배포에 정의 된 준비 프로브로 상태 확인을 수행 합니다. 스프링 부트 액추에이터를 사용하여 아래와 같이 준비 프로브를 추가합니다.
spec:
containers:
- name: name
readinessProbe:
httpGet:
port: 8080
path: /actuator/health
initialDelaySeconds: 10