[Openresty] 특정 클라이언트 구분하기
2022. 9. 28. 15:21
엔지니어링/프록시
이번에 특정 클라이언트의 요청을 타 도메인을 꺾는 테스트가 필요하여 진행한 내용을 정리한다. 환경은 3scale를 사용하기때문에 staging/product 2개의 도메인이 존재한다. 그래서 특정 클라이언트 1.1.1.1 ip가 들어오면 staging도메인으로 강제로 꺾어주는 테스트를 진행한다. 네트워크 구간은 대충 아래와 같다. [데이터요청서버] -> [아웃바운드프록시] -> [L7 Layer] -> [L4 Layer] -> [인바운드프록시] -> [3scale] -> [백엔드서버] proxy 구간이 존재하기 때문에 remote_ip 가 아닌 x-forwarded-for 를 사용해 클라이언트의 ip를 체크해야한다. (remote_ip 는 바로 전 라우터의 ip가 나오기 때문) nginx.conf 설정 ..
[NKS] ALB 서비스 외부 노출하기
2022. 9. 26. 15:08
엔지니어링/NCP
NKS를 구축한 뒤 서비스를 외부에 노출시키려면 ALB(Application Load Balancer)를 통해 쉽게 할 수 있다. 필자는 일단 tomcat pod 를 올리고 아주 간단한 service를 등록해주었다. apiVersion: v1 kind: Service metadata: name: my-tomcat-svc spec: type: NodePort selector: app: my-tomcat ports: - port: 80 targetPort: 8080 ALB Ingress Controller 설치 kubernetes 1.19 버전 이상(한국) kubectl apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress..
[NKS] Naver Container Registry 이미지 배포
2022. 9. 26. 13:55
엔지니어링/NCP
네이버 클라우드 플랫폼은 대시보드에서 알맞은 설정만 입력해주면 되기 때문에 서비스 배포가 쉽다. docs 문서에도 설명이 잘되어있는 편인데, 이번에 설명을 안보고 하다가 삽질을해서 포스팅을 하나 남기려한다. 필자는 private 환경의 쿠버네티스 클러스터를 구성해둔 상태이다. 쿠버네티스에서는 접근하려는 container registry 의 계정정보를 secret으로 만들고, imagePullSecrets 인증을 받아 해당 레지스트리에서 이미지를 받아온다. kubectl create secret docker-registry \ --docker-server= \ --docker-username= \ --docker-password= \ --docker-email= \ --kubeconfig kubeconfi..
[NCP] 네이버 클라우드 플랫폼 적응기
2022. 9. 26. 13:17
엔지니어링/NCP
이번에 ncp kubernetes 서비스 구축 프로젝트에서 Devops part 서포트하게 되어 이것저것 만저보았다. 지금까지 azure, aws 와 같은 외산 클라우드 서비스만 하다가 국산 클라우드 서비스를 하게되어 약간의 기대(?)감과 벅찬 마음(?)으로 콘솔화면을 바라보게되었다. 한 일주일정도 NCP를 만져보며 간단히 집어볼 개념에 대해 남기겠다. Sub Account 제일 먼저 겪게 되었던 것은 Sub Account 개념이였다. 로그인 창에 들어가면, 서브 계정으로 로그인 버튼이 있다. 해당 버튼을 눌러 로그인페이지 접속키를 입력하면 해당 account 에 할당된 계정으로써 로그인을 하게된다. (azure에서 보던 tenant 지정과 비슷해 보임) (aws에서 iam 계정 할당과 비슷해 보임) (..
[Python] 병렬 api 호출 및 적재
2022. 9. 19. 18:14
개발/Python
테스트 케이스를 고민하다가 특정 api 를 호출하고 응답 및 헤더 데이터를 postgresql 에 적재하는 것을 생각해보았다. 스프링으로 구현할까 했는데, 병렬처리를 검색해보니 파이썬에서 RAY 라이브러리를 통해 멀티프로세싱을 쉽게 구현할 수 있어 한번 써볼까 싶어 작성한다. 데이터베이스(PostgreSQL) 간단하게 Docker로 올려두었다. Create DB 데이터베이스 이름은 'mydata' 로 하였다. create database mydata; 데이터베이스가 생성되면 \c 명령어를 통해 연결한다. postgres=# \c mydata You are now connected to database "mydata" as user "postgres". Create Table 테이블 이름은 'api_log..
[MTLS] Mutual TLS 상호인증
2022. 9. 10. 17:08
엔지니어링/인증
작년에 마이데이터 프로젝트에서 MTLS를 알게되었는데, 당시 openresty(nginx)에서 테스트를 하고 실제론 L7에서 검증하는 방식으로 진행하였다. 참고로 마이데이터는 EV급 인증서를 기준으로하기때문에 인증서도입비용이 크다. 그리고 EV급인증서는 공인된 CA기관으로부터 발급을 받는데 마이데이터 오픈당시에 3개의 rootCA기관이 있었다. MTLS란 MTLS란 기존 TLS(https) 통신에서 더 나아가 클라이언트인증에 대한 부분을 추가한 상호인증이다. 그래서 클라이언트가 서버에 접근하고자하면 서버에서 검증할 rootCA기관에 서명을 받은 인증서를 제출해야한다. 이렇게 서로 검증된 MTLS는 B2B(기업간 비즈니스 통신)에서 널리 사용되고 있다. 만약 클라이언트 인증서가 잘못되었거나 제출되지 않았을..
[Blog] 티스토리 사이트맵으로 인한 서치콘솔 크롤러 색인불가
2022. 9. 7. 10:43
블로그
저번에 네이버 서치어드바이저와 구글서치콘솔에 내 티스토리 사이트를 등록했는데, 어느새부턴가 색인이 안되고 있다는 것을 찾았다... 무슨 문제인가 싶어 찾아보니 작년 말쯤에 tistory측에서 sitemap에 모바일주소를 추가했다는 것이다. 이게 왜 문제가 되냐면 글 하나에 링크가 2개로 보여지게되서 이런식으로 sitemap에 게시가 되고있던 것이다. 그로인해 네이버/구글 크롤러가 이상한 것으로 감지하여 색인이 급격히 안되는 수준이 되었다고 글이 있었다. 휴.. 당장 sitemap.xml 경로 삭제해버렸다 앞으로 글 작성하면 수동으로 색인 걸어줘야겠다ㅜ 수동으로 열심히 등록하다보니 네이버는 1일 최대 50개의 페이지 색인이 가능하고(요청이 빠르다) 구글은 1일 최대 15개의 페이지 색이이 가능했다.(요청이..
[RHSSO] Authorization Code 방식
2022. 9. 6. 18:04
엔지니어링/인증
몇년전까지만해도(?) 타행기관 아이디로 로그인하는게 지금만큼 자유롭지 않았던 것 같은데, 이제는 개인정보보호법 등등... 플랫폼 기업의 아이디를 이용하는게 당연하게 느껴진다. 이제는 누구나 쉽게 google, kakao, naver, facebook 의 계정을 연동해서 자기만의 서비스를 연동할 수 있는 세상. 인증방식 중 Authorization Code 를 포스팅하려한다. 필자는 rhsso를 사용하고 있기 때문에 아래 표와 같이 테스트한다. 1. 클라이언트가 rhsso 서버에 인증을 요청한다. 2. rhsso서버는 callback서버에 인가코드를 전달한다. 3. 인가코드를 받은 callback서버는 rhsso에 인가코드로 접근토큰 발급을 요청한다. 4. rhsso서버는 인가코드로 접근토큰을 발행한다. ..
[RHSSO] 리프래시 토큰 보관
2022. 9. 6. 17:40
엔지니어링/인증
지난번 ocp operator를 활용해 rhsso 를 구축하였다. rhsso 는 refresh token 을 캐시 또는 데이터베이스에 보관하는데, 기본적으로 설정되어있는 상태는 캐시에 분산(distributed)형태이다. jboss 캐시 컨트롤 부분을 알아보면 복제, 분산 두가지의 모드가 있는데 MSA아키텍처가 확장되어가며 분산모드가 대세가 된 것 같다. 캐시 분산 모드 설정 그래서 sso pod 에 들어가 설정파일을 하나 보면 파드갯수만큼 공유하라는 설정이 존재한다. $ cat /opt/eap/standalone/configuration/standalone-openshift.xml 실제 pod가 기동되면 아래와 같이 pod간의 세션이 맺어졌다고 로그가 남는다. Received new cluster vi..
[RHSSO] 설치부터 셋팅까지
2022. 9. 6. 17:22
엔지니어링/인증
개요 RH-SSO란 Redhat에서 2014년에 출시한 keycloak의 상용버전이다. 웹 애플리케이션 및 Restful 웹 서비스를 위한 SingleSignOn 솔루션이며, 쉬운 설정으로 안전한 보안 관리를 할 수 있다. 작년에 마이데이터 제공자측 프로젝트를 수행하였는데, 이때 rhsso를 사용했었다. 레드헷 OCP(Openshift Conatiner Platform)에서 오퍼레이터방식으로 여러 솔루션들을 제공하는데, API Gateway 솔루션인 3scale과 함께 OIDC(OpenId Connect)인증을 담당했다. JWT 마이데이터 사업에선 oauth 2.0 을 준용하는 토큰을 사용해야하는데 이때 JWT(Json Web Token)으 표준 규격으로 지정하였다. JWT 토큰은 아래 구성으로 이루어져..
[유전자분석] samtools 유전자 데이터 컨트롤하기
2022. 9. 5. 13:16
엔지니어링/유전자
지난 포스팅에 유전자 데이터와, samtools 을 설치하였다. 이제 samtools 를 사용해보자. 실습에 사용할 데이터는 아래 사이트에서 제공하고 있다. Index of /goldenPath/hg19/encodeDCC/wgEncodeUwRepliSeq hgdownload.cse.ucsc.edu 샘플 파일 다운로드 위 사이트에서 아무거나 다운해보자. $ wget http://hgdownload.cse.ucsc.edu/goldenPath/hg19/encodeDCC/wgEncodeUwRepliSeq/wgEncodeUwRepliSeqBg02esG1bAlnRep1.bam BAM -> SAM 변환 다운받은 바이너리형태인 bam 파일을 아스키코드로 된 sam파일로 변환해보자. samtools view {파일명}...
[유전자분석] samtools
2022. 9. 5. 12:58
엔지니어링/유전자
지난 포스팅에 인간의 DNA 분석을 위한 데이터를 정리하였다. 간단히 정리하자면 - FASTQ : DNA를 한 가닥씩 분석하여 4줄씩 저장한 파일 - BAM : FASTQ파일을 인간표준유전체와 비교하여 매핑/정렬한 바이너리 파일 - SAM : BAM파일을 아스키코드로 변환한 파일 이제 이 파일들을 핸들링하기 위해 samtools를 사용할 것이다. 먼저 samtools란 SAM, BAM 및 CRAM 형식의 짧은 DNA 서열 판독 정렬과 상호작용하고 사후 처리하기위한 유틸리티 세트이다. samtools 설치(ubuntu) 아래 사이트에서 다운로드하면 된다. SAMtools/BCFtools/HTSlib - Downloads Current releases SAMtools and BCFtools are distr..
[유전자분석] bam 파일
2022. 9. 5. 12:42
엔지니어링/유전자
프로젝트에서 유전자 분석을 위한 IGV(Integrative Genomics Viewer) 사용을 해봤다. IGV란 유전체 데이터셋을 시각화 해주는 그래픽 기반 프로그램으로 오픈소스이다. igv 사이트에 들어가면 자바스크립트, 노트북, 보고서에 대한 개발 가이드가 나와있어 google Colab 으로 테스트해보았다. 어떤건지 잘 모를 수 있으니 먼저 igv 분석 결과를 보여주겠다. 위 표를 보고 돌연변이DNS와 같은 비정상적인 염색체를 구분해 낼 수 있다. 이러한 지표를 통해 유전자분석이 이루어진다. 유전자 데이터(FASTQ) DNA 데이터에 기본이 되는 항목이다. 인간세포의 DNA를 추출해 일정 길이로 잘라 NGS 기계에 넣으면, 4가지 색깔의 이미지로 BCL 파일을 만들고, BCL 파일을 다시 FAS..
[3scale] 복원 중 rake aborted 에러 해결방법
2022. 9. 1. 14:51
엔지니어링/3scale
3scale 백업복원 테스트를 하다가 지금껏 뜨지 않았떤 에러를 발견했다. 복원 과정 끝에 모든 서비스를 재기동하는데, system-app 재기동과정에서 hook pod에서 Error가 떨어지는 것이였다. 에러내용은 아래와 같았다. rake aborted! StandardError: An error has occurred, all later migrations canceled: Index name 'index_email_configurations_on_account_id' on table 'email_configurations' already exists 인덱스 index_email_configurations_on_account_id 가 email_configurations table에 이미 존재한다는 ..
[OCP] cronjob schedule 한국시간 설정하기
2022. 9. 1. 11:35
엔지니어링/OCP
cronjob 설정을하다가 보니 UTC로 스케줄이 돌고있었다.(환경은 ARO 4.10.x) 검색해보니 CRON_TZ=Asia/Seoul 을 지정하면 된다고 한다. 해당 설정은 ocp 4.9 이상부터 도입된 설정이다. schedule: CRON_TZ=Asia/Seoul 10 1 * * *