전체 글 721

curl에서 hosts 파일 변경 없이 테스트하는 방법

안녕하세요. 이 글은 curl로 프록시를 테스트할 때, hosts파일을 변경하지 않고 host를 수정하는 방법을 소개합니다. 1.  요약7계층 프록시(예: nginx)에서는 `-H "Host: example.com"` 옵션을 사용하여 HTTP 헤더의 Host 값을 변경4계층 프록시(예: TCP 기반)에서는 `--resolve 'host:IP:port'` 옵션을 사용하여 특정 도메인의 DNS 해석을 직접 지정 2.  배경지식프록시는 Virtual Host 개념을 사용하여 요청을 구분하고 라우팅합니다. Virtual Host는 하나의 서버에서 여러 도메인(호스트)의 요청을 처리할 수 있도록 하는 기술입니다. 예를 들어, nginx에서 Virtual Host를 어떻게 활용하는지 살펴보겠습니다. 하나의 서버(I..

TCP라더니 HTTPS?! 예상치 못한 디버깅 여정(feat, openssl TLS인증서 추출방법)

25년 1월에 경험했던 재밌는 디버깅 과정을 공유드립니다. 1.   배경설날전 꼭 디버깅을 했어야 했던 상황이었습니다. 애플리케이션을 호출해야 했었는데 가이드에서는 tcp프로토콜을 사용하라고 되어 있었습니다. 하지만 가이드대로 동작하지 않았습니다. 담당자는 휴가 였습니다. 그리고 애플리케이션 소스코드, 메트릭, 로그는 권한이 없어 못보는 상황이었습니다. 시간이 많이 없었기 때문에 http 또는 https프로토콜을 사용하여 디버깅을 시작했습니다. http, https모두 안되었지만 https에서는 TLS 핸드쉐이킹 과정에서 서버 인증서 검증에러가 났습니다. 그래서 인증서 검사 무시 옵션을 추가했더니 https통신이 되었습니다. curl에서는 -k옵션이 인증서 무시입니다.curl -k {엔드포인트} 애플리케..

쿠버네티스 node not ready이면 어떤 일이 일어날까?

1.  개요이 글은 쿠버네티스 node가 not ready일 때, 내부적으로 어떤 동작을 하는지 설명합니다. 2.  요약not ready인 node에 pod가 스케쥴링되지 않도록 taint를 설정not ready 상태가 5분이 지나면 pod를 eviction 3.  node가 not ready가 되면3.1.  node taint 업데이트쿠버네티스는 not ready가 된 node에 pod가 스케쥴링 되지 않도록, node에 taint를 설정합니다. taint는 node.kubernetes.io/unreachable:NoExecute와 node.kubernetes.io/unreachable:NoSchedule를 설정합니다.kubectl describe node {not ready node} | grep..

NestJS HttpHealthIndicator를 사용하다가 만난 오류

1.  상황Nestjs에서 readiness를 구현하기 위해 HttpHealthIndicator를 사용했습니다. HttpHealthIndicator를 사용해서 HTTP 통신이 가능한지 확인합니다.@Controller('health')export class HealthController { constructor( private httpHealthIndicator: HttpHealthIndicator ) {} @Get('/readiness') @HealthCheck() async checkReadiness() { return this.healthCheckService.check([ async () => this.httpHealthIndicator.pingCheck('self', ..

Nestjs Liveness, Readiness 설정 전략

1.  개요안녕하세요. 이 글은 쿠버네티스에서 Nestjs 헬스체크를 하기 위한 LivenessProbe, ReadinessProbe 설정 전략에 대해 이야기 합니다. 설정 방법이 아니라 설정 전략입니다. 2.  설정 방법LivenessProbe, ReadinessProbe 설정 방법은 Nestjs Healthchecks 공식문서에 너무 자세히 설명되어 있습니다. Terminus패키지를 사용합니다.Nestjs Healthchecks 공식문서: https://docs.nestjs.com/recipes/terminus LivenessProbe ReadinessProbe API를 생성하고, 어떤 목록을 검사할지 구현하면 끝입니다. 구현 시 Terminus패키지에서 제공하는 Health Indicator를 사용..

ReactJS와 Kubernetes Controller의 원리는 비슷

2025년 설날에 ReactJS를 공부를 하고 있었는데, ReactJS 동작원리가 쿠버네티스 controller manager와 매우 비슷하다는 것을 느꼈습니다. ReactJS는 가상 DOM을 사용하여 HTML을 수정합니다. 사용자가 작성한 JSX파일은 가상 DOM으로 렌더링되는데, 새로 생성된 가상 DOM이 최종 HTML에 적용되는 것을 기대합니다. 마치 쿠버네티스 controller manager가 의도된 상태를 적용하는 원리와 매우 비슷합니다. 결국, 사용자가 작성한 개 발코드는 쿠버네티스에 비유하면 desired state가 됩니다. 제가 생각한 이론이 맞는지 ChatGPT를 활용했습니다. 아래 그림은 ChatGPT에게 여러 질문들을 해보고 비교한 결과입니다.