저번 글에서 올린 사진에서 알 수 있듯이, 제가 구축하려하는 마이크로서비스의 흐름은 아래와 같습니다
여기서 저는 Load Balancer Service 를 구축하였습니다
Load Balancer Service란 트래픽을 여러 서버 간에 분산시키는 역할을 합니다.
이는 네트워크 트래픽을 처리할 수 있는 서버의 수를 늘려 가용성과 안정성을 향상시킵니다
이러한 로드밸런스를 구축하는데 Skaffold와 Ingress를 사용하였습니다
- Skaffold
- Skaffold는 쿠버네티스에서의 지속적인 배포와 개발을 가능하게 합니다. 클라이언트에서 요청이 오면 Skaffold는 요청을 로드밸런싱하여 서비스의 부하를 분산시킵니다.
- 또한, 개발 중에는 소스 코드의 변경을 감지하여 자동으로 코드를 빌드하고 테스트하며 쿠버네티스에 배포하는 역할을 합니다.
- 이를 통해, 개발자는 소스 코드의 변경에 따른 반복적인 빌드와 배포 과정에서 자유롭게 되어 애플리케이션의 핵심 로직에 집중할 수 있습니다.
skaffold.yaml(skaffold config 파일)
apiVersion: skaffold/v4beta5
kind: Config
manifests:
rawYaml:
- ./infra/k8s/*
deploy:
kubectl: {}
build:
local:
push: false
artifacts:
- image: rkekqmf0926/auth
context: auth
docker:
dockerfile: Dockerfile
sync:
manual:
- src: "src/**/*.ts"
dest: .
- image: rkekqmf0926/post
context: post
docker:
dockerfile: Dockerfile
sync:
manual:
- src: "src/**/*.ts"
dest: .
- image: rkekqmf0926/comment
context: comment
docker:
dockerfile: Dockerfile
sync:
manual:
- src: "src/**/*.ts"
dest: .
- image: rkekqmf0926/filter
context: filter
docker:
dockerfile: Dockerfile
sync:
manual:
- src: "src/**/*.ts"
dest: .
- image: rkekqmf0926/client
context: client
docker:
dockerfile: Dockerfile
sync:
manual:
- src: "src/**/*.ts"
dest: .
- src: "src/**/*.js"
dest: .
- src: "src/**/*.tsx"
dest: .
portForward:
- resourceType: service
resourceName: auth-psql-srv
namespace: default
port: 5432
localPort: 5432
- resourceType: service
resourceName: nats-srv
namespace: default
port: 4222
localPort: 4222
- Ingress
- Ingress는 쿠버네티스에서 외부 클라이언트가 클러스터 내부의 서비스에 접근하는 방식을 관리하는 역할을 합니다.
- 즉, Ingress는 Skaffold로부터 받은 요청을 적절한 서비스로 라우팅합니다.
ingress-srv.yaml (ingress config 파일)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-srv
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: joseph0926-barcelona.dev
http:
paths:
- path: /api/users/?(.*)
pathType: ImplementationSpecific
backend:
service:
name: auth-srv
port:
number: 3000
- path: /api/post/?(.*)
pathType: ImplementationSpecific
backend:
service:
name: post-srv
port:
number: 3000
- path: /api/comment/?(.*)
pathType: ImplementationSpecific
backend:
service:
name: comment-srv
port:
number: 3000
- path: /?(.*)
pathType: Prefix
backend:
service:
name: client-srv
port:
number: 3000
'OLD > MicroService_Project' 카테고리의 다른 글
[Project] 05_Microservice 프로젝트 서비스간 커뮤니케이션-Event-Bus (NATS-streaming-server) (0) | 2023.07.10 |
---|---|
[Project] 03_Microservice 프로젝트 세팅하기-Docker, Kubernetes (0) | 2023.07.08 |
[Project] 02_Microservice 프로젝트 시작하기-기획02 (0) | 2023.07.07 |
[Project] 01_Microservice 프로젝트 시작하기-기획01 (0) | 2023.07.07 |