opensearch | OIDC 연동 이슈

opensearch를 배포해서 기본 인증을 사용하다 oidc연동을 하던 중 발견한 이슈.gitea와 연동하고 있는데 이상하게 연결이 잘 되지 않는 문제 발견… 구성 상태 HAProxy(ssl-offloading) > Ingress > Opensearch-dashboard(Kubernetes-pod) > gitea(oidc) > OpenSearch (VM) 이슈사항 OpenSearch-Dashboard로그인을 하는데 gitea인증이 통과되었지만 계속해서 401에러 발생되는 상태.브라우저에서는 401에러만 보여주고, gitea쪽은 정상 발급 로그가 나온다. OpenSearch 로그도 특별한건 없어보였으나 서버 재기동 로그부터 확인해보니 … Read more

istio | RequestAuthentication 적용 주의 사항

RequestAuthentication 적용시켰는데 이상하게 계쏙 401 에러 발생해서 envoy debug모드로 동작 시키고 확인해보니 istio에서는 다통과했는데 Django에서 안받는 것처럼 나타남. 찾아보니 아래 문제가있었음. 기본 동작:Envoy JWT 필터는 토큰을 검증하면 Authorization 헤더를 제거합니다.대신 토큰에 있는 Claim 값들을 x-jwt-claim-* 같은 헤더로 전달합니다. forwardOriginalToken: true 를 넣으면:검증이 끝난 원본 Authorization 헤더(Bearer )를 그대로 백엔드(Django)까지 전달합니다. 즉, forwardOriginalToken: false (기본값) → … Read more

Django | 서명 알고리즘 변경 HS256 →RS256

기존 Django 인증 긴응에서는 HS256알고리즘이 적용된 서명 알고리즘을 사용하고 있었다.istio에서 RequestAuthentication를 이용해서 토큰인증을 처리하게 구성하려고 방식을좀 변경해야 했다. 서명 알고리즘 방식 HS256 (HMAC with SHA-256) RS256 (RSA with SHA-256) Auth 애플리케이션 적용 Django settings.py 설정 변경 기존 코드 기존에 사용하던 코드는 HS256이 적용되어있다. 변경 코드는 RS256으로 변경할 것이다. 빠져있던 ISSUER도 추가. 환경변수를 추가해서 환경변수 설정 … Read more

kubernetes | tekton-dashboard add auth(with. gitea)

기본적으로 tekton을 구성하면 dashboard에는 인증기능이 없다. 중요한 부분은 작성되었으니 부족한 부분은 직접 찾아서 구성하면된다. Tekton 대시보드 연습 – OAuth2 프록시 https://github.com/tektoncd/dashboard/blob/release-v0.61.x/docs/walkthrough/walkthrough-oauth2-proxy.md GitHub OAuth 앱 만들기 관리자계정에서 ‘사이트관리’ > ‘Integrations’ > 어플리케이션 hm-cloud 로 생성하였다. 문서에는 메인도메인만넣는 것으로 나와있는데 subPath까지 넣어주니 에러가 해결되었음. Redirect URIs. Please use a new line for everyURI. 이부분이 좀 중요한데,OAuth2 표준에서 … Read more

Kubernetes | Tekton 배포 및 pipeline, trigger 사용방법

Tekton Tekton CI/CD 스터디를 위해서 환경 구축을 해보았다.결론은 사용측면에서는 jenkins나 gitAction이 쉽다. https://tekton.dev/docs/installation Tekton 배포 Tekton-Dashboard Dashbaord는 초기에 read-only로 배포되어있다. 설치전에 변경하던가 설치하고 수정한다. Dashboard ingress Tekton-triggers 배포 chrome 사설인증서 신뢰할수있는 인증서 등록 Ubuntu Desktop chrome에 추가. Tekton Simple Test demo 테스트를 해보자 Task 배포 Sample Pipeline Pipeline Run 에러처리 ClusterTasks 에러 https://tekton.dev/docs/pipelines/deprecations ClusterTask는 deprecated된 … Read more

kubernetes | istio

istio를 사용함에 있어서 자료를 찾다보면 오래된 버전의 자료들이 나오는 경우가 있어 정리한다. Istiod istio version 1.5부터 mixer, galley, pilot, citadel 컨트롤 플레인이 istiod로 통합되었다. istiod api조회 1.22 버전 기준으로 확인(삭제됨) 표시는 1.22버전에서 동작안하는듯. 라우팅 정보 종류 확인 방법 VirtualService / DestinationRule 등 Istio 리소스 전체 curl localhost:8080/debug/configz (삭제됨)Envoy에게 푸시된 Route 정보 (RDS) curl localhost:8080/debug/rdsz (삭제됨)Envoy에게 … Read more

Kong | Vault 연동 테스트

Kong에서 JWT Plugin을 사용하여 토큰 인증 구성을 해두었다.DB less mode라 secret key를 yaml에 하드코딩 해야하는 부분이 있어,이 부분을 harshicorp의 Vault를 이용해보았다. Kong은 OpenSource를 사용하고 있어 vault plugin을 사용 할 수 없다.그래서 lua커스텀 플러그인을 구현해야한다. Vault UI, CLI 또는 HTTP API를 사용하여 토큰, 비밀번호, 인증서, 비밀을 보호하는 암호화 키 및 기타 민감한 데이터에 대한 액세스를 보호하고 … Read more

Django에서 OpenTelemetry를 이용해 Jaeger로 Trace 남기기

이전 포스팅에서 Log생성을 해보았다.이번에는 Tracing을 해본다. Trace Trace는 하나의 작업(요청)이 여러 시스템이나 컴포넌트를 거쳐 처리되는 과정을 기록하고 시각화한 것이다. 일반적인 로그와는 다르다. Jaeger와 OpenTelemetry Jaeger 오픈소스 분산 트레이싱 시스템 (시각화 도구) OpenTelemetry 코드에 트레이스를 심고 다양한 시스템으로 전송하는 표준 프레임워크 Django에 Trace를 심는 방법 Install OpenTelemetry SDK on Django {DjangoProject}/wsgi.py 수정 서버 시작 시 트레이스 … Read more

Django | Log 설정

기본적으로 Django에 로그는 기본 로거만 설정되어있어서 쿠버네티스에 배포하고 난 뒤 로그가 안보인다. Print로찍는게 보이기는 하긴한데 이건 사용용도에 맞지 않다. 적용 전 출력 예시 settings.py에 아래와 같은 형태로 추가한다. 적용 후 출력 예시