k8s 환경에서 batch 동시 작동 하지 않도록 하는 삽질기
·
Debug
백엔드에 배치가 함께있는 형태의 환경백엔드 pod는 2개가 떠있는 상황2개의 pod에서 동시에 실행되면 안되었음1개의 백엔드 pod 에서만 동작하도록 하는 방법 모색k8s에서 특정 pod이름으로 구분하여 배치를 동작하도록 하는 것은 어려워 보였음pod이름이 랜덤으로 생성되고 특정 1개의 pod중 어느것으로 동작할지 정해야하는 상황이었는데, k8s 환경 상 특정 pod에서만 돌도록 설정하는 것은 어려움이 있어보였음 -> statefulset 사용하면 되지 않을까?be-pod-0be-pod-1 statefulset의 네이밍은 순서대로 진행되니까 가능하지 않을까?0번에서만 배치가 돌도록?-> 0번이 죽으면 배치가 실패이중화 불가백엔드 실패 인지 배치 실패인지 확인하려면 일일이 로그 확인 필요결론 현실적으로 어..
413 Request entity too large : nginx 파일 업로드 용량 설정 (k8s ingress)
·
Debug
파일 업로드 기능 구현 후 업로드 진행 시413 Request entity too large 에러 발생# 해결 방법nginx.conf 에서 client max body size 관련 설정 진행 필요server { ... client_max_body_size 10M ...} BUT reverse proxy 서버의 nginx 설정을 진행했지만 동일한 문제 발생이유는 ingress도 nginx로 이루어져서 동일한 설정을 ingress에도 해주어야 했음# 해결 방법ingress yml에서annotations.nginx.ingress.kubernetes.io/proxy-body-size: 11M해결 완료
k8s cronjob으로 spring batch 작업 설정하기
·
DevOps
cronjob 사용주기마다 job 생성 -> pod 생성# 주기spec.schedule: "*/1 * * * *" -> 1분단위...배치마다 설정된 주기를 제대로 입력# Timezone 설정spec.timezone: "Asia/Seoul"배치는 지정 시간마다 동작함배치 설계시 어떤 시간을 기준으로 했는지에 따라 timezone 설정을 진행해줘야함사용하는 시스템의 기본 timezone이 UTC인지 KST인지 잘 확인하여 동일하게 설정해줘야 제대로 동작 가능기본 UTC# 중복 실행 방지spec.concurrencyPolicy: "Forbid"1분주기로 실행시켜야하는 배치가 있을 때 배치 실행 시간이 1분이상 걸리는 경우 발생 -> conflict 발생 concurrencyPolicy옵션으로 중복 실행 방지#..
K8s 에서 Client IP를 BE에 전달하기 : nginx ingress annotation 설정
·
Debug
X-forwarded-header 전달 옵션 설정 필요nginx.ingress.kubernetes.io/use-fowarded-headers: 'true'nginx.ingress.kubernetes.io/x-forwarded-for: $proxy_add_x_forwarded_forBUTSNAT 되면 client ip가 lb ip로 변경되어 진짜 client ip 알 수없음k8s cluster 환경 구성마다 다름 필자는 ingress 관련 expose가 nodeport 로 되어있고 lb를 사용하는 환경이므로 해결안되었음참고barisein.tistory.com/999sawaca96.tistory.com/18findstar.pe.kr/2021/08/22/nginx-ingress-controller-use-fo..
대상 서버의 특정 포트 열려있는지 확인하는 방법 (컨테이너 환경)
·
OS
기업 내부 폐쇄망 환경에서는 방화벽에 포트 오픈 요청을 진행한 뒤, 실제로 해당 포트가 열렸는지 확인하는 과정이 꼭 필요하다.특히 Kubernetes Pod 내부 컨테이너에서 포트 체크가 필요한 경우가 많았다. 다른 명령어들은 그래도 경험이 있지만,특히 pod 안의 컨테이너 환경에서 특정 포트가 열렸는지 확인하는 방법은 이번에 처음 접하게 되어 잊지 않도록 정리해본다. 1️⃣ Telnettelnet telnet 패키지 설치 필요접속 성공 시 검은 화면이 나타남종료: Ctrl + ] → quit 2️⃣ Netcat (nc)nc -v -z 단순하고 빠르게 포트 열림 여부 확인 가능-z: 데이터 전송 없이 스캔만 수행-v: 상세 출력 3️⃣ Bash /dev/tcpecho > /dev/tcp// && ec..
클라우드컴퓨팅 전공수업의 일일 강사가 되다..!
·
Experience
얼마 전, 대학교 시절 수강했던 ‘클라우드컴퓨팅’ 전공 수업의 교수님께 연락을 받았다.수업에 현직자를 초청하는 특강 형식으로, OpenStack 관련 실습 강의를 맡아줄 수 있겠냐는 내용이었다. 이 수업은 2년전 내가 클라우드 기술을 처음 접한 곳이자, 인프라 기술에 흥미를 가지게 된 나에게 뜻깊은 수업이었다.그 수업에서 학생 → 연사로의 전환. 감회가 새로웠다. 강의 구성이번 강의는 OpenStack을 처음 접하는 학생들을 대상으로,기본 개념과 실습 경험을 함께 전달하는 데 중점을 두었다.1. OpenStack 이론클라우드 컴퓨팅의 개념OpenStack의 역사와 등장 배경컴포넌트 구성: Nova, Neutron, Glance, Keystone, Horizon...Private Cloud와 OpenSt..
작업 효율을 위한 터미널 키워드 하이라이트 정규식 & Xshell 하이라이트 설정
·
OS
신규 랩탑 기기 초기 셋업을 하는 일이 많아지면서, 미리 적용해놓았던 터미널 하이라이트들을 백업하지 못하여 매번 새로 세팅을 해야했다. 이번 랩탑 셋업을 하면서 이번 기회에 블로그글로 정리하여 남겨두려한다. 필자는 Window 환경에서는 XShell8 을 사용한다. 터미널 키워드 하이라이트 장점하이라이트를하면 확실히 터미널 작업이 좀 더 편하고 효율화 된다. 대표 하이라이트 키워드 아래에는 주요 예시 키워드들과 정규식을 정리한다. 카테고리 주요 키워드 예시에러/실패ERROR, FAIL, FAILED, FATAL, CRITICAL, PANIC, EXCEPTION경고/주의WARN, WARNING, ALERT성공/정상SUCCESS, PASSED, DONE, COMPLETE, INFO상태 변화START, S..
KOSA 클라우드 엔지니어 과정 수료 및 대상 수상
·
Experience
최근 3개월 동안 한국소프트웨어산업협회(KOSA)에서 진행한 클라우드 인프라 엔지니어 양성과정을 마쳤다.짧다면 짧고 길다면 긴 시간이었지만, 그 어떤 때보다 밀도 있게 배우고 성장할 수 있었던 기간이었다. 기존 알고 있던 네트워크, 스토리지, 클라우드, 모니터링, 자동화, DevOps와 같은 여러 기술을 정리하고 체화하는 시간이었다.단순히 이론을 넘어, 직접 프로젝트를 통해 실제로 구현하고 경험하면서 내 것으로 만드는 소중한 기회가 되었다.  미드 프로젝트 : 자동화를 통한 Kubernetes 클러스터 구축미드 프로젝트로는 Hyper-V 기반 Kubernetes 멀티 노드 클러스터를 자동으로 구축하는 작업을 했다.  이 과정에서 PXE를 활용해 네트워크 부팅으로 OS 설치를 자동화했다.여러 서버에 일일이..