본문 바로가기

전체 글

(261)
<코드로 인프라 관리하기> 2판 서평 이전 회사는 코드(terraform, ansible, ...)로 인프라를 관리하지 않았다. 쿠버네티스 환경에 애플리케이션을 배포하기 위해 yaml 파일을 사용하고 깃에 버전 관리를 하긴 했지만, AWS EC2나 IAM, SG 등은 손으로 만들었다. 그러다 보니 자연스레 휴먼 에러가 발생해 알맞지 않은 IAM이 생성되어 EC2에서 에러가 나고, 제대로 서비스가 동작하지 않을 때가 있었다. 현재 회사는 반대다. Terraform, Terragrunt, Ansible 등으로 위에서 말한 자원을 생성하고 깃으로 버전 관리를 한다. 지라의 이슈별로 브랜치를 생성해 해당 브랜치에서 작업하고, 팀원들이 승인해 주어야 메인 브랜치에 머지가 가능하다. 현 회사의 깃 레포를 보면 '코드로 인프라를 관리하려면 초기 세팅이 ..
깃 망한 커밋 없애기 ^*^ git reset upstream main to specific commit 사이드 프로젝트 하다가 무지성 커밋 & PR 한 목록들이 있었는데... 깔끔히 나 그런 거 안한 척 ^^ 해보기로 했다 사이드 프로젝트 A -> upstream fork 한 me/A -> origin 얘를 pc에 클론받음 -> local 로컬에서 main 브랜치로 이동 git switch main 아직 upstream이 연결이 안 되어있다면 연결해준다 git remote add upstream 깃주소 git fetch upstream git pull upstream main main으로부터 새 브랜치를 만들어 준다 git checkout -b 새브랜치 main 소스를 수정하고 커밋 메시지를 컨벤션에 맞게 예쁘게 적어준다 git commit -m "커밋메시지" git push origin 새브랜치 다시 메..
Github Actions을 이용한 ECS 배포 자동화 backend : Python Django Dockerfile을 기반으로 Docker image를 빌드하여 ECS Fargate를 이용해 배포한다. * 원래는 .env 에 환경변수를 저장해 os.environ.get(변수) 로 가져왔는데, .env 파일은 깃허브에 올리지 않기 때문에 깃헙 액션에서 빌드-배포를 할때 변수 값을 Github Actions Secrets 사용해 넣어주고 Dockerfile과 yml 파일에서 이미지 빌드 시 해당 변수를 받아올 수 있도록 했다. FROM python:3.9-alpine COPY frontend /code/backend/frontend/ COPY ./backend/ /code/ WORKDIR /code COPY --from=FRONTEND /code/backend..
Kubernetes 환경에서 Fluent Bit의 신뢰성 (tail input, s3 output) Fluent Bit를 테스트하고 로그 수집을 할 때 진작 이 수준으로 깊게 알았어야 했는데... 오늘에야 알게 된 내용 정리 1. Fluent Bit가 롤링 업데이트 되어도 Input 과정에서 로그 손실이 없을까? - Tail Input을 사용할 경우 fluent bit을 배포하기 위해 사용한 Daemonset은 기본적으로 노드별로 pod를 rolling update ** 현재 daemonset은 먼저 기존 pod를 삭제하고 새 pod를 생성함에 유의 ** fluent-bit-configmap.yaml [INPUT] Name tail Tag test.* Path /var/log/containers/test*.log DB /var/log/flb_test.db fluent bit는 input 플러그인에서 D..
7월 회고 더 지나면 8월 회고랑 같이 쓸 각이라... ^^ 간단하게라도 써봐야지! 업무 회사에서 사용하는 ELK 버전이 2018년에 나온 6.3.x 버전이라 최근 버전의 공식 문서와 다른 게 많다. 인덱스 자동 롤오버라던지, 쿼리 문법이라던지, 클러스터 보안 기능이라던지... 그래서 ELK를 최근에 출시된 8.3.x 버전으로 고도화시키는 것을 목표로, ELK의 기능과 원리 자체를 세세하게 서베이하는 것이 7-8월의 업무이다. ELK에 대해 궁금증이 생기면 20년차 사수님이라도 나에게 믿고 물어볼 수 있을 정도가 되면 좋겠다고 하셔서 (그럼 나는 문제의 원인을 파고들어 ~한 레벨에서 문제의 원인은 ~에 있다 고 답변을 드리는 큰 그림) 그거 가능은 한 걸까,, 싶긴 했지만, 시중의 ELK 관련 책을 더 사고 (아마..
책 손때, 연필 때 제거 방법! * 표지 코팅된 책만 가능할지도… 어느정도 마른 물티슈에 주방세제 묻혀 닦기! 저는 손소독 알콜티슈 좀 마른거 + 주방세제 조금 묻혀 닦았는데 깔끔하게 지워졌어요 🤗 다시 깔끔한 책으로 돌아와서 뿌듯..!
카프카 SASL_SSL 방식 + jks truststore로 로그스태시 연결하기 [주의] 클라이언트 전용 jks 키를 받아 깔끔하게 연결하면 좋았겠으나, 그 클라이언트 전용 키를 못 받아서 컨플루언스를 떠돌다 구한 다른 팀의 키로 어떻게든 카프카-로그스태시를 연결해보려고 한 이야기입니다... *** 삽질이 난무합니다.*** *** 반전이 있으니 당장 사용하셔야 하는 용도로 이 글을 보고 계신다면 맨 밑으로 내려서 밑부터 읽어주세요.**** 준비물 : 컨플루언스에서 어떻게 구한 다른 팀에서 쓰는 클라이언트용 keystore, truststore 키 카프카와의 클라이언트 SSL 인증에서 필요한 계정, 비밀번호는 받았다고 가정 다른 팀 클라이언트 키스토어에 우리팀 서명을 해보자! keytool -keystore kafka.client.keystore.jks -alias CARoot -ke..
6월 회고 업무 EC2 골든 이미지에 기존 로그 수집 프로그램인 Logstash 대신 Fluentd를 세팅하는 업무를 끝냈다. 생각 외로 작업이 지연되어 꽤 스트레스를 받았는데, 자그마한 것을 하나씩 레고처럼 쌓아 올리더라도 초기부터 철저하게, 꼼꼼히 하나하나 검증하는 자세의 필요성을 실감했다. 이번 작업을 통해서, 나는 처음 접하는 오픈 소스라도 공식 문서를 참조하며 원하는 기능을, 원하는 성능을 내도록 튜닝을 할 수 있는 사람이라는 것을 알았다. 요건 팀 내에서도 인정받은 부분이라 기쁘다. Fluentd로 S3 output path에 field(key) 값 넣기 Fluentd tail input 로그 1개 손실 & 로그 느리게 들어오는 이유 해결 Fluent Bit을 다루면서 C 코드를 보다가 Fluentd의 ..