Kubernetes, Telepresence사용한 로컬 환경 구성
Telepresence?
로컬 머신에서 Kubernetes 클러스터의 서비스를 개발하고 디버깅할 수 있게 해주는 오픈소스 도구이다.
클러스터 내의 네트워크 환경을 로컬로 연결하여, 개발자가 로컬에서 코드 변경을 하고 결과를 실시간으로 테스트 하면서 클러스터의 다른 서비스와 상호작용할 수 있도록 도와줍니다.
특히 마이크로서비스 기반의 애플리케이션 개발에 유용하며, 로컬에서 클라우드 환경의 리소스를사용할 수 있게 함으로써 개발 사이클을 빠르게 반복할 수 있도록 도와줍니다.
Telepresence 이전에 로컬 환경에서 Kubernetes 클러스터의 서비스에 접근하기 위한 방법은?
1. Port Forwarding : 클러스터 내부 서비스의 포트를 로컬 포트에 바인딩하여 접근하는 방법
2. NodePort/LoadBalancer :
서비스를 NodePort 또는 LoadBalancer 타입으로 설정하여 외부 네트워크에서 접근 가능하게 하는 방법 NodePort는 특정 포트를 통해서 외부에서 서비스에 접근할 수 있게 하고, LoadBalancer는 클라우드 제공자의 로드 밸런서를 사용하여 서비스에 대한 트래픽을 관리하여 접근합니다.
3. External Service :
'ExternalName' 서비스를 생성하여, 외부 DNS 이름을 kubernetes 서비스에 매핑함으로써 외부 서비스에 접근할 수 있습니다.
설치방법 및 사용
https://www.telepresence.io/docs/latest/quick-start/
Telepresence Quickstart | Telepresence
Telepresence Quickstart Telepresence is an open source tool that enables you to set up remote development environments for Kubernetes where you can still use all of your favorite local tools like IDEs, debuggers, and profilers. Prerequisites kubectl, the K
www.telepresence.io
공식 사이트에 설치방법은 친절하게 나와있다.
# Apple silicon Macs
# 1. Download the latest binary (~101 MB):
sudo curl -fL https://app.getambassador.io/download/tel2oss/releases/download/v2.17.0/telepresence-darwin-arm64 -o /usr/local/bin/telepresence
# 2. Make the binary executable:
sudo chmod a+x /usr/local/bin/telepresence
실리콘 맥이라 설치하고 권한까지 주었다.
telepresence helm install
telepresence connect
필요한 모든 Telepresence 구성요소를 helm차트를 이용하여 클러스터에 배포하고 'telepresence connect' 명령을 실행하여 로컬머신을 kubernetes클러스터에 연결합니다. 'telepresence connect' 명령은 로컬 머신과 클러스터 간의 네트워크 터널을 생성하며, 이 터널을 통해 크러스터 내의 서비스 들이 로컬 머신에서 마치 클러스터 내부에 있는 것처럼 접근할 수 있게 해줍니다!
다음은 간단한 헬스체크 테스트다
@RestController
@RequestMapping("/healthcheck")
public class HealthcheckController {
@GetMapping("/ready")
public String readinessProbe() {
return "ready";
}
@GetMapping("/live")
public String livenessProbe() {
return "ok";
}
}
k get svc -n sns
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
feed-service ClusterIP 10.96.88.7 <none> 8080/TCP 92m
curl -v 'http://feed-service.sns.svc.cluster.local:8080/healthcheck/live'
* Trying 10.96.88.7:8080...
* Connected to feed-service.sns.svc.cluster.local (10.96.88.7) port 8080
> GET /healthcheck/live HTTP/1.1
> Host: feed-service.sns.svc.cluster.local:8080
> User-Agent: curl/8.4.0
> Accept: */*
>
< HTTP/1.1 200
< Content-Type: text/plain;charset=UTF-8
< Content-Length: 2
< Date: Tue, 05 Mar 2024 05:08:35 GMT
<
* Connection #0 to host feed-service.sns.svc.cluster.local left intact
ok%
응답값이 200과 함께 ok가 반환되는 것을 볼 수 있다.