2020. 7. 19. 15:52ㆍMSA (Microservices Architecture) Project
4 Service 환경 구축
: kubernetes에서 각 서비스 pod 구축 과정을 진행하였다.
• POD 초기 상태 확인
• 각 서비스 POD 생성
: 여기서 각각의 사용할 서비스를 생성해 주더라도 외부 접속이 허용되지 않는다.
Ingress가 서비스 앞에서 L7 로드밸런서 역할을 하고, URL에 따라서 라우팅을 하게 된다.
• main.yaml 파일
: 80번 포트로 해당 서비스 주소로 접근 시 내부 컨테이너(POD 내)로 접속해줄 수 있게 설정한 것이다.
이러한 yaml 파일 작성을 통하여 추가적인 룰을 적용시켜줄 수 있다.
• Service 생성 확인 (타 서비스 과정 동일)
: 서비스를 다시 조회하였을 경우 메인 페이지에 관련하여 서비스가 생성된 것을 확인할 수 있다.
• Main Page 서비스 접속
: 기본적으로 메인 페이지라는 서비스를 생성하여 접속하였을 경우 외부 연결에 대한 설정값이 없어 내부 서비스로 접근이 불가능하기 때문에 위와 같은 상황이 나타난다. (외부에서 접근 시 POD 접근 권한 X)
• 각 서비스별 생성 확인 과정
: 각각의 서비스를 생성하여 확인이 되는 과정이며, 외부의 접속 차단은 추후 Ingress를 통하여 인증 및 인가 방식을 진행하여 일종의 Gateway 구축을 통하여 접속이 가능하게 할 것이다.
• Nginx 기반 Ingress 구축
: Nginx 기반의 Ingress를 구축하였다. 클러스터 외부에서 내부로 접근하는 요청들을 어떻게 처리할지 정의해둔 규칙들의 모음이라고 생각하면 쉽다. 외부에서 접근 가능한 URL을 사용할 수 있게 하고, 트래픽 로드 벨런싱도 해주고, SSL 인증서 처리도 해주고, 도메인 기반으로 가상 호스팅을 제공하기도 한다. Ingress 자체는 이런 규칙들을 정의해둔 자원이고 실질적으로 이런 규칙들을 동작하게 해주는 것이 Ingress Controller이다.
• Nginx 기반 Ingress.yaml
: 서비스 포트 80번으로 접근 시 내부 서비스로 접근하게 해 주며 호스트 지정까지 한 규칙을 작성한 yaml파일이다.
• Ingress.yaml 적용
• Ingress Controller.yaml 파일
: configmap 작성 등 여러 규칙들에 대하여 정의 후 IngressController 파일 작성을 완료한 것이다.
이를 통하여 실질적으로 Ingress가 작동이 가능해진다.
• Ingress Controller.yaml apply-f
• Controller-service.yaml 작성
: Nginx를 외부로 노출하려면, 즉 Ingress 규칙을 적용하기 위해서는 /echo-hostname의 Endpoint를 외부에 제공하기 위해서는 별도의 Service를 생성해줘야 하며 ExternalIP의 Service를 사용시켜준다.
• Controller-service.yaml 적용
:최종적으로 외부로 접속이 가능한 환경에 대한 구축이 완료된다.