Cronjob을 활용한 기업정보 크롤링 파이프라인 구축하기(1) - 기능 구현
·
Infra
직행과의 산학협력을 진행하면서, 기업 뉴스를 조회하는 새로운 기능을 제안하게 되었다.특히 제안한 기능은 해당 기업의 PR 부서가 내는 뉴스나 글에 대해서 보여주는 것이 목적이었고, PR 부서의 뉴스들만을 모아서 제공하는 서비스는 따로 존재하지 않았기 때문에 직접 뉴스나 글을 수집하는 파이프라인을 구축해야했다. 우선 최종 구축하게 된 크롤링 파이프라인의 흐름은 아래와 같다.전체 프로세스를 크롤링, 데이터 적재로 구분하여 구현하게 되었고, 크롤러는 크롤링의 역할을 수행하게 되고, 로더는 정보를 DB에 저장하는 역할을 수행하게 된다. # 크롤러와 로더로의 분리우선 가상 면접 사례로 배우는 대규모 시스템 설계 기초 책을 참고했을 때, 크롤러를 설계하는 로직에서 한 곳에서 모든 걸 처리하기보단 큐를 넣고 DB에..
ArgoCD UI Permission Error 해결
·
Infra
문제발생Argo CD API 서버가 팟과 deployment 리소스들을 조회할 권한이 없어서, UI에서 “세부 정보 가져오기” 요청을 보내도 403/권한 부족 에러가 났다. 1. ArgoCD UI에서 리소스를 클릭할 때 에러가 발생하는 것은 ArgoCD 서버가 해당 리소스에 대한 세부 정보를 가져올 권한이 부족하거나, RBAC 설정에 문제가 있을 수 있다. -> ArgoCD 서버의 권한을 확장 시도$ kubectl patch clusterrole argocd-server --type json -p='[ { "op": "add", "path": "/rules/-", "value": { "apiGroups": [""], "resources": ["pods", "servic..
EKS 클러스터 및 노드 그룹 생성, Kubectl 설치 및 연결
·
Infra
간단하게 워커 노드 2대로 이루어진 eks 를 구성하고 스프링 애플리케이션을 배포하려고 한다. 1. AWS IAM USER 생성IAM > 사용자 > 사용자 생성root 계정으로 작업하는 것은 지양해야하기 때문에, 관리자 권한을 가진 IAM USER를 생성한다. 엄격하게 필요한 권한만 줄 수도 있지만, 우선 클러스터를 구축하고 추후에 새로운 USER로 바꿀 생각이다.2. AWS IAM ROLE 설정IAM > 역할 > 역할 생성AWS 리소스 간에 서로에게 명령을 내리려면 다른 리소스를 제어하거나 접근할 수 있는 권한을 가진 ROLE이 할당 돼있어야 한다. 우선 클러스터 생성 과정에서 만들어야할 ROLE은 아래 2가지이다.EKS 클러스터 자체(컨트롤 플레인)가 AWS 리소스를 관리할 수 있도록 허용해 주는 역..
쿠버네티스 리소스 관리 pod 과 deployment
·
Infra
1. 쿠버네티스는 어떻게 컨테이너를 실행하고 관리하는가?컨테이너는 일반적으로 하나의 가상화된 환경을 가리킨다. 또한 다양한 런타임을 가질 수 있다. 쿠버네티스에서는 런타임에 관계없이 인터페이스를 통해 컨테이너를 관리하며, 컨테이너 자체를 또 다른 가상 환경인 파드로 감싸서 관리한다. 파드란 컴퓨팅의 단위로, 클러스터를 이루는 노드 중 하나에서 실행된다. 파드는 대게 하나의 컨테이너를 포함하지만, 설정에 따라 하나의 파드가 여러개의 컨테이너를 포함할 수도 있다. 노드와 팟, 컨테이너의 관계는 아래 그림과 같다.kubectl run hello-kiamol --image=kiamol/ch02-hello-kiamolkubectl get podskubectl describe pod hello-kiamol 위 Ru..
모니터링 환경 설정 - 배포 포트가 변경될 때 8080...8081,, switching
·
Infra
무중단 배포를 위해서 Blue-Green 전략을 사용하기로 했다. 클라우드 로드밸런서가 연결된 환경에서 블루 그린 배포를 구현할 수 있는 다양한 방법이 있지만, 우리 팀의 서비스는 한 물리 서버 내에서 모든 배포를 진행하고 있다. 블루 그린 배포 환경 구축에 대한 고찰은 아래 포스팅에서 살펴볼 수 있다. 0. 블루-그린 배포 환경 구성에 대한 고찰이건 이전 포스팅을 참고하면 좋다. 1. Promtail, Loki, Grafana, Prometheus, Logback-spring.xml이 뭔데?이건 이전 포스트를 참고하면 좋다. 2. (Problem) 8081 포트로 변경하면서 생기는 문제점어떤 서비스가 영향을 받을까?- logback-spring.xml 은 스프링 서버가 설정으로 가지고 운영하는 파일이..
모니터링 환경을 구축 Promtail, Loki, Prometheus, Grafana, Logback
·
Infra
보호되어 있는 글입니다.
Terraform으로 NCP 구축하기(4) - Object Storage 구성하기
·
Infra
Object Storage 관련 모듈을 따로 storage_module로 관리하기 때문에, 폴더 안에 porvider 정보를 작성해준다.# storage_module/providers.tfterraform { required_providers { ncloud = { source = "NaverCloudPlatform/ncloud" version = ">= 3.3.1" } }}버킷 정보를 작성해준다# storage_module/bucket.tfresource "ncloud_objectstorage_bucket" "bucket" { bucket_name = var.bucket_name}추후 다른 모듈에 넘겨줄 일을 위해서 outputs.tf를 작성한다.# storage_m..
Terraform으로 NCP 구축하기(3) - terraform apply
·
Infra
0. 최종 형태최종적으로 아래와 같은 화면처럼 NCP에서 생성한 인스턴스를 확인가능하다.- 부팅중, 설정중, 운영중 순으로 바뀌며 최종적으로 운영중이 떴다면, 성공적으로 실행된 것이다.1. 테라폼 구성 적용아래의 명령어로 정의한 서버 및 VPC, Subnet을 생성 가능하다.cd terraform-ncp# 최신 Provider 확보를 위해terraform init -upgrade # 프로바이더 충돌 방지 :contentReference[oaicite:3]{index=3}terraform planterraform apply -auto-approve 1-1. 나는 따로 planfile을 만들고, planfile을 통해 실행했다.planfile 생성 ~/Documents/study/zapply/Zaply..