Kubernetes - MSA(Microservice Architecture) - Service 환경 구축 - 4

2020. 7. 19. 15:52MSA (Microservices Architecture) Project

4 Service 환경 구축

:  kubernetes에서 각 서비스 pod 구축 과정을 진행하였다.

 

• POD 초기 상태 확인

POD별 서비스 생성  전 초기 상태

 

• 각 서비스 POD 생성

main.yaml apply (각 서비스.yaml 파일 작업 동일)

: 여기서 각각의 사용할 서비스를 생성해 주더라도 외부 접속이 허용되지 않는다.

Ingress가 서비스 앞에서 L7 로드밸런서 역할을 하고, URL에 따라서 라우팅을 하게 된다.

 

• main.yaml 파일 

상단 main.yaml 적용 전 작성 내용

: 80번 포트로 해당 서비스 주소로 접근 시 내부 컨테이너(POD 내)로 접속해줄 수 있게 설정한 것이다.

 이러한 yaml 파일 작성을 통하여 추가적인 룰을 적용시켜줄 수 있다.

 

• Service 생성 확인 (타 서비스 과정 동일)

main page(service) 생성 확인 - 타 서비스 생성 시 동일 작업

: 서비스를 다시 조회하였을 경우 메인 페이지에 관련하여 서비스가 생성된 것을 확인할 수 있다.

 

 

• Main Page 서비스 접속

외부 연결 설정 X

: 기본적으로 메인 페이지라는 서비스를 생성하여 접속하였을 경우 외부 연결에 대한 설정값이 없어 내부 서비스로 접근이 불가능하기 때문에 위와 같은 상황이 나타난다. (외부에서 접근 시 POD 접근 권한 X)

 

• 각 서비스별 생성 확인 과정

사용할 서비스별 생성 확인 과정

: 각각의 서비스를 생성하여 확인이 되는 과정이며, 외부의 접속 차단은 추후 Ingress를 통하여 인증 및 인가 방식을 진행하여 일종의 Gateway 구축을 통하여 접속이 가능하게 할 것이다.

 

 

• Nginx 기반 Ingress 구축

kubernetes - Ingress 작동 예시

: Nginx 기반의 Ingress를 구축하였다. 클러스터 외부에서 내부로 접근하는 요청들을 어떻게 처리할지 정의해둔 규칙들의 모음이라고 생각하면 쉽다. 외부에서 접근 가능한 URL을 사용할 수 있게 하고, 트래픽 로드 벨런싱도 해주고, SSL 인증서 처리도 해주고, 도메인 기반으로  가상 호스팅을 제공하기도 한다. Ingress 자체는 이런 규칙들을 정의해둔 자원이고 실질적으로 이런 규칙들을 동작하게 해주는 것이 Ingress Controller이다.

 

• Nginx 기반 Ingress.yaml

규칙들에 대한 yaml파일 작성

: 서비스 포트 80번으로 접근 시 내부 서비스로 접근하게 해 주며 호스트 지정까지 한 규칙을 작성한 yaml파일이다.

 

•  Ingress.yaml 적용

apply -f 진행


•  Ingress Controller.yaml 파일

IngressController.yaml 파일 내용

: configmap 작성 등 여러 규칙들에 대하여 정의 후 IngressController 파일 작성을 완료한 것이다.

이를 통하여 실질적으로 Ingress가 작동이 가능해진다.

 

•  Ingress Controller.yaml apply-f

apply -f 진행

 

•  Controller-service.yaml 작성

컨트롤러 서비스 파일 내용

: Nginx를 외부로 노출하려면, 즉 Ingress 규칙을 적용하기 위해서는 /echo-hostname의 Endpoint를 외부에 제공하기 위해서는 별도의 Service를 생성해줘야 하며 ExternalIP의 Service를 사용시켜준다.

 

 

•  Controller-service.yaml 적용

apply -f

:최종적으로 외부로 접속이 가능한 환경에 대한 구축이 완료된다.