반응형
Telepresence는 MSA구조의 프로젝트에서 애플리케이션을 로컬에서 개발하기 위한 도구입니다.
개발자들이 Kubernetes cluster에서 서비스를 로컬 컴퓨터에서 실행하여 디버깅 및 테스트를 쉽게 할 수 있게 합니다.
즉, Cluster내에서만 접근 가능한 마이크로 서비스들을 로컬에서 쉽게 접근 할 수 있습니다.
이번 포스팅에서는 Telepresence로 로컬에 설치된 Kubernetes Cluster(Minikube) 연결해보겠습니다.
목차
1. Telepresence 설치
설치는 공식 홈페이지에 있는 문서를 참고하면 됩니다.
저는 Mac(M2) 랩탑이라서 아래와 같이 설치해줬습니다.
# 다운로드
~ sudo curl -fL https://app.getambassador.io/download/tel2oss/releases/download/v2.17.0/telepresence-darwin-arm64 -o /usr/local/bin/telepresence
# 실행가능으로 전환
~ sudo chmod a+x /usr/local/bin/telepresence
아래와 같이 확인해봅니다.
~ telepresence version
OSS Client : v2.17.0
OSS Root Daemon: v2.17.0
User Daemon : not running
2. Traffic Manager 설치
트래픽 매니저를 설치 해줍니다.
~ telepresence helm install
Traffic Manager installed successfully
이제 클러스터에 연결할 준비가 완료되었습니다.
3. Connect
아래와 같이 클러스터에 연결해봅시다.
~ telepresence connect
Launching Telepresence User Daemon
Connected to context minikube, namespace default (https://127.0.0.1:42345)
정상적으로 연결된 것을 확인 할 수 있습니다.
아래와 같이 상태 확인 가능합니다.
~ telepresence status
OSS User Daemon: Running
Version : v2.17.0
...(중략)
Status : Connected
Kubernetes server : https://127.0.0.1:49324
Kubernetes context: minikube
Connection name : minikube-default
Namespace : default
Manager namespace : ambassador
Intercepts : 0 total
...(중략)
4. Connect 확인
~ curl -ik https://kubernetes.default
HTTP/2 403
...(중략)
cache-control: no-cache, private
content-type: application/json
x-content-type-options: nosniff
위와 같이 curl 명령어로 클러스터와 통신이 되는지 확인 합니다.
5. 연결 가능한 Service 확인
~ telepresence list -n api # namespace가 따로있다면 기입해주세요. 기입 안하면 default
dev-api-server: ready to intercept (traffic-agent not yet installed)
저는 dev-api-server라는 서비스가 뜨네요.
아래와 같이 Port 및 Cluster Ip 정보를 확인합니다.
~ kubectl get svc dev-api-server --output yaml -n api
...(중략)
spec:
clusterIP: 10.97.34.208
clusterIPs:
- 10.97.34.208
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: svc-port
port: 8080
위에서 확인한 {Cluster IP}:{Port}로 연결 테스트 해봅시다.
~ curl -ik http://10.97.34.208:8080
HTTP/1.1 404
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Content-Type: application/json
Transfer-Encoding: chunked
Date: Tue, 02 Apr 2024 14:21:41 GMT
{"timestamp":"2024-04-02T14:21:41.564+00:00","status":404,"error":"Not Found","path":"/"}%
정상적으로 통신되는 것을 확인 할 수 있습니다.
6. 종료
~ telepresence quit
Telepresence Daemons disconnecting...done
quit 커맨드를 통해 종료할 수 있습니다.
디버깅이나 테스트가 완료되면 필히 종료 해줘야 합니다!
여러 개발자가 동시에 개발환경 클러스터에서 디버깅하게 되면 문제가 발생 할 수 있기 때문입니다.
반응형
'개발 이야기 > Kubernetes' 카테고리의 다른 글
우분투에 k3s 설치하는 방법 (0) | 2024.10.03 |
---|---|
Kubernetes ConfigMap with Springboot (0) | 2024.04.10 |
Kubernetes CronJob 실행 해보기 (0) | 2024.03.30 |
Kubernetes HPA 설정하기 (0) | 2024.03.30 |
Docker Image를 Minikube 로드하기 (0) | 2024.03.24 |