MSA로 구성된 시스템에서 일부의 서버 애플리케이션을 개발할 때, 의존하고 있는 여러 서버 애플리케이션은 어떻게 해야할까? 모두 띄워야할까?
위와 같은 질문을 말끔히 해결해줄 수 있는 툴이 바로 Telepresence이다.
일반적으로 k8s 클러스터 내에 존재하는 Pod에 로컬에서 접근하기 위해서는 Ingress를 세팅해주거나 Port를 포워딩해주는 것과 같은 작업이 이루어져야한다.
하지만, 이는 단순히 개발을 위해서만 k8s 클러스터에 추가 설정 및 컴포넌트를 생성하고 관리해야한다는 단점을 갖고 있어서, 왠지 꺼림찍(?)하다.
그렇다면, Telepresence로 어떻게 좀 더 멀끔한(?) 로컬 개발환경을 구성할 수 있는지 알아보자.
Telepresence는 내 로컬 PC에 설치할 클라이언트 프로그램과 k8s 클러스터에 설치할 Traffic manager 프로그램이 존재한다.
이 두 프로그램의 통신을 통해서 별도의 k8s 컴포넌트를 추가하지 않아도 클러스터에 존재하는 Pod와 로컬 PC와 통신이 가능해진다.
각자의 OS에 맞게 공식문서를 참고하여, 설치해주면 된다.
설치 후, 버전을 찍어보면 정상적으로 설치된 것을 확인할 수 있다.
💡 프로그램 설치 전, 설치하고자 하는 k8s 클러스터를 바라보도록 kubeconfig를 먼저 설정해야한다.
telepresence helm install
설치는 위 명령어만 수행해주면 된다.
telepresence connect
위 명령어를 입력하면, 로컬 PC와 k8s 클러스터가 연결되게 되는데 아래와 같이 뜨면 정상적으로 설치가 된 것이다. 클러스터 명은 각자가 다를 수 있다.
참고로 연결을 종료하고 싶다면, telepresence quit
명령어를 사용하면 된다.
사실, 설치가 완료된 것이라면 이미 모든 것이 완료된 것이긴 하지만, Telepresence를 설치하면 어떤 것을 할 수 있는지 알아보자.
일반적으로는 k8s 클러스터 안에 존재하는 Service는 별도의 컴포넌트 없이는 클러스터 밖에서 호출하는 것이 불가능하지만, Telepresence를 설치한 후 부터는 이게 가능해진다.
k8s 클러스터에 존재하는 default 네임스페이스를 호출한 것인데, 위와 같이 정상적으로 통신이 되는 것을 확인할 수 있다.