회고모음 37

엘라스틱서치 allocation장애 해결

장애접수 6시쯤 퇴근하려는 찰나 특정 엘라스틱서치에서 로그인이 안된다는 접수가 들어왔습니다. 처음에는 단순한 에러라고 생각했는데 시간이 지나갈수록 아니라는 것을 느꼈습니다. 증상 엘라스틱서치과 키바나는 쿠버네티스로 실행되고 있었습니다. probe검사를 통과하고 있어서 겉보기에 정상이었습니다. 신기하게도 엘라스틱서치는 로그인이 되는데 키바나는 로그인이 실패하는 것입니다. 🤔🤔🤔 같은 계정/비밀번호를 사용하는데 키바나만 실패하는 것이 너무 신기한 상황이었죠. 1차 장애복구 시도 계정/비밀번호 불일치 때문에 생긴 에러가 아니라는 것은 금방 알게되었습니다. 계정/비밀번호가 틀리면 invalid username/password라는 에러가 발생하는데, 에러 메세지는 "Oops. Error" 였습니다. 처음에는 단순..

회고모음 2023.03.20

부분 폐쇄망에서 누군가 chatgpt API쓰다가 ...

현재 제가 파견간 기업은 "국가핵심기술"로 지정되어 있습니다. 그래서 외부 네트워크 접속이 많이 제한되어 있습니다. 허용되지 않는 외부접속을 할 경우 국가기밀유출로 간주되어 산업보안법에 의거하여 조사를 받게 됩니다. 그런데 누군가 chatgt API, 더 정확히 말하면 openAI API를 사용한 것 같은데... 사용을 허락받지 않았나봅니다. 그래서 지금 어떤 이유로 어떤어떤 코드를 생성했는지, 접속로그 등 조사 받고 있는 것 같았습니다. 개인적으로 빠르게 변화하는 기술은 폐쇄망 같은 곳에 테스트할 수 없어 아쉽습니다. 어쩔 수 없이 집에서 따로 공부해야 하는데 일 따로 공부 따로여서... 저에게는 폐쇄망은 안맞는 것 같습니다.

회고모음 2023.03.10

클래스 상속을 이용하여 if~else문 리팩토링

개요 쿠버네티스 API를 이용하여 pod를 조회하는 로직이 있는데, 예외 라벨규칙이 계속 추가되면서 if~else가 많아졌습니다. if~else를 어떻게 하면 덜 사용할 수 있을까를 고민하다가 클래스 상속을 사용해보기로 했습니다. 개선 방법 pod조회시 사용하는 라벨을 오버라이딩 하는 방법을 선택했습니다. 기본 클래스는 pod조회할 때 사용할 라벨을 함수를 사용하여 생성합니다. 예외 규칙이 필요한 pod는 클래스를 상속하여 라벨생성 함수만 오버라이딩하여 if~else를 제거 했습니다. class Parent: def serach_pods(self): labels = self.generate_labels() pod 조회(labels) def generate_labels(self): return "a=b" ..

회고모음 2023.02.14

주말에 오픈소스 업그레이드 지원을 가면서 ...

2.11(토) 21:00 ~ 2.12(일) 08:00에 작업을 하면서 느꼈던 점을 정리합니다. 간단히 지원작업을 설명하면, 쿠버네티스와 오픈소스를 업그레이드 중 장애가 발생할 경우 장애조치 지원을 맡았습니다. 역시 팀원과 일하는게 즐겁다! 거의 2년 동안 정자역에 파견을 가면서 거의 혼자 일했던 것 같습니다. 어려운 문제를 만나면 혼자 고민하고 올바른 방향으로 하는건지 매우 힘들었었습니다. 하지만, 이번 작업은 저를 포함하여 5명 팀원이 갔습니다. 각자 맡은 일을 하며 장애를 마주치면, 각자 이야기를 나눠 장애를 해결하는 과정이 재밌었습니다. 대기업 서버납품회사의 실망감 제가 작업을 지원한 곳은 워크스테이션 서버를 납품하는 회사의 서버를 구매한 상황입니다. 그지고 서버 엔지니어, 인프라 엔지니어 등등 역..

회고모음 2023.02.12

토요일에 일하면서 알게된것

마주쳤던 문제 인프라 엔지니어가 아니여서 redhat리눅스 다룬 경험이 없었는데, 주말 출근하면서 redhat리눅스 새로운 것을 알게 되었습니다. redhat리눅스 저장소는 라이센스 구독이 있습니다. 그래서 라이센스 구매를 하지 않으면 리눅스 패키지를 설치하지 못합니다. 해결 참고자료: https://storycode.tistory.com/343 저장소 주소를 centos저장소로 설정하여 리눅스 패키지를 다운로드 받았습니다. 주소는 daum으로 설정했습니다. vi /etc/yum.repos.d/daum.repo [base] name=CentOS-$releasever - Base baseurl=http://ftp.daum.net/centos/7/os/$basearch/ gpgcheck=1 gpgkey=ht..

회고모음 2023.02.05

코드 줄 끝의 tab이 있어 장애발생

이번 주에 저의 실수로 특정 서비스 장애가 있었습니다. 마지막 배포를 하고 테스트를 했었던 걸로 기억하는데 테스트를 잘못한 것 같습니다. ㅜ.ㅜ 오류는 쉽게 발견하여 수정했지만 반성을 하게 된 계기가 되었습니다. 오류내용 오류는 코드 끝에 탭이 있어 발생했습니다. 토큰 끝에 탭이 있어 쿠버네티스 sdk실행 오류가 발생했습니다. 오류재현 오류를 재현하기 위해 serviceaccount와 kubeconfig설정이 필요합니다. name="developer" namespace=default token_name=$(kubectl -n $namespace get serviceaccount $name -o jsonpath='{.secrets[].name}') token=$(kubectl -n $namespace ge..

회고모음 2023.01.19

iframe을 사용하는 서비스에 만난 x-frame-options deny오류

개요 사내에서 iframe을 사용한 서비스에서 만난 x-frame-options deny오류를 소개합니다. x-frame-options deny오류란 아래 화면은 오류내용을 재현한 것입니다. console.log에 보이는 것처럼 "X-frame-Options" dey오류가 발생하고 iframe렌더링이 실패합니다. mdn에서 문서를 자세히 확인해보니, X-frame-Options deny응답 헤더는 iframe과 같이 페이지를 렌더링하는 기능을 허용시키지 않는 다는 의미였습니다. 그 이유는 XSS공격 등을 보호하기 위해서입니다. 그래서, 오류가 난 응답헤더를 자세히 확인해보니 x-frme-options DENY가 있었습니다. 오류 재현 코드는 아래와 같습니다. 참고자료 mdn: https://develop..

회고모음 2023.01.17