반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- keda
- serving
- Kubernetes 인증
- 오퍼레이터
- gitea
- Model Serving
- operator
- CI/CD
- mlops
- Litmus
- Pulumi
- Kopf
- Kubernetes
- gitops
- nginx ingress
- MLflow
- opensearch
- argo rollout
- CANARY
- tekton
- seldon core
- argocd
- opentelemetry
- kubernetes operator
- knative
- Argo
- Continuous Deployment
- blue/green
- 카오스 엔지니어링
- Kubeflow
Archives
- Today
- Total
Kubernetes 이야기
mitmproxy을 사용하여 K8S API Server Reverse Proxy 설정하기 본문
반응형
mitmproxy는 HTTP/1, HTTP/2 및 WebSocket에 대한 무료 오픈 소스 대화형 HTTPS 프록시이다.
주요특징
- HTTP 및 HTTPS 요청과 응답을 가로채서 즉석에서 수정
- 나중에 재생 및 분석을 위해 전체 HTTP 대화 저장
- HTTP 대화의 클라이언트 측 재생
- 이전에 녹화된 서버의 HTTP 응답 재생
- 지정된 서버로 트래픽을 전달하는 리버스 프록시 모드
- macOS 및 Linux의 투명 프록시 모드
- Python을 사용하여 HTTP 트래픽에 대한 스크립팅된 변경 수행
- 가로채기를 위한 SSL/TLS 인증서가 즉시 생성
설치
# pipenv install mitmproxy
Installing mitmproxy...
Pipfile.lock not found, creating...
Locking [packages] dependencies...
Locking [dev-packages] dependencies...
Updated Pipfile.lock (b554d3de68d4bab8cfb1f803f94d0436e3af2e18fc2ed46945f50ba84cdd8a62)!
Installing dependencies from Pipfile.lock (dd8a62)...
실행
실행 옵션은 다양한 방법이 있지만, 이번에는 Kubernetes Api Server를 Reverse Proxy로 테스트하는 방법을 알아보자.
mitmproxy --listen-port=8000 --mode reverse:https://10.0.0.2:6443 --ssl-insecure
이제 8000번 포트를 사용하여 Api-server에 접근해 보자.
# curl -k -H "Authorization: Bearer $TOKEN" http://localhost:8000/version
{
"paths": [
"/.well-known/openid-configuration",
"/api",
"/api/v1",
...
}
mimporxy에는 다음과 같이 접근 로그를 볼 수 있다.
이제 proxy 를 설정해 보았는데 이 proxy에 request 를 수정하는 방법을 알아보자.
import mitmproxy.http
from mitmproxy import ctx
def request(flow: mitmproxy.http.HTTPFlow):
flow.request.headers["Authorization"] = "Bearer xxxxxx"
def response(flow: mitmproxy.http.HTTPFlow):
ctx.log.info("Response: {} {}".format(flow.response.status_code, flow.response.reason))
이제 해당 프로그램을 같이 실행해보자.
mitmproxy --listen-port=8000 --mode reverse:https://10.0.0.2:6443 --ssl-insecure -s test.py
이제 Client에서 설정했던 Token을 삭제하고 호출해 보자.
curl -k http://localhost:8000/
{
"paths": [
"/.well-known/openid-configuration",
"/api",
"/api/v1",
...
}
mimporxy 에서도 Request, Response, Detail 정보를 조회할 수 있다.
반응형
'개발 > python' 카테고리의 다른 글
ChatGPT API 사용 (0) | 2023.03.27 |
---|---|
Playwright와 Python 사용 방법 (0) | 2023.02.22 |
playwright를 활용한 e2e 테스트 (0) | 2023.02.15 |
Python에서 gRPC 구현 (0) | 2023.02.13 |
Kopf ( 예제 ) (1) | 2023.02.05 |
Comments