|
| 1 | +--- |
| 2 | +title: 로컬에서 텔레프레즌스를 이용한 서비스 개발 및 디버깅 |
| 3 | +content_type: task |
| 4 | +--- |
| 5 | + |
| 6 | +<!-- overview --> |
| 7 | + |
| 8 | +{{% thirdparty-content %}} |
| 9 | + |
| 10 | +쿠버네티스 애플리케이션은 일반적으로 각각 자체 컨테이너에서 실행되는 여러 개의 개별 서비스로 구성된다. 원격 쿠버네티스 클러스터 상에서 이러한 서비스를 개발하고 디버깅하려면 디버깅 도구를 실행하기 위해 [동작 중인 컨테이너의 셸(shell)에 접근](/ko/docs/tasks/debug/debug-application/get-shell-running-container/)해야 하기 때문에 번거로울 수 있다. |
| 11 | + |
| 12 | +`텔레프레즌스(telepresence)`는 원격 쿠버네티스 클러스터로 서비스를 프록시하면서 로컬에서 서비스를 개발 및 디버깅하는 과정을 용이하게 하는 도구이다. `텔레프레즌스`를 사용하면 로컬 서비스에 디버거 및 IDE와 같은 사용자 지정 도구를 사용할 수 있고 원격 클러스터에서 실행되는 컨피그맵(ConfigMap), 시크릿(Secret) 및 서비스(Service)에 대한 전체 접근 권한을 서비스에 제공할 수 있다. |
| 13 | + |
| 14 | +이 문서는 `텔레프레즌스`를 사용하여 원격 클러스터에서 실행 중인 서비스를 로컬로 개발하고 디버그하는 방법을 설명한다. |
| 15 | + |
| 16 | +## {{% heading "prerequisites" %}} |
| 17 | + |
| 18 | +* 쿠버네티스 클러스터가 설치되어 있어야 한다. |
| 19 | +* `kubectl`은 클러스터와 통신하도록 구성되어 있어야 한다. |
| 20 | +* [텔레프레즌스](https://www.telepresence.io/reference/install)가 설치되어 있어야 한다. |
| 21 | + |
| 22 | + |
| 23 | +<!-- steps --> |
| 24 | + |
| 25 | +## 로컬 머신을 원격 쿠버네티스 클러스터에 연결 |
| 26 | + |
| 27 | +`텔레프레즌스`를 설치한 후 `텔레프레즌스 커넥트(telepresence connect)`를 실행하여 데몬을 실행하고 로컬 워크스테이션을 클러스터에 연결한다. |
| 28 | + |
| 29 | +``` |
| 30 | +$ telepresence connect |
| 31 | + |
| 32 | +Launching Telepresence Daemon |
| 33 | +... |
| 34 | +Connected to context default (https://<cluster public IP>) |
| 35 | +``` |
| 36 | + |
| 37 | +쿠버네티스 구문을 사용하여 서비스에 curl이 가능하다. 예, `curl -ik https://kubernetes.default` |
| 38 | + |
| 39 | +## 기존 서비스 개발 또는 디버깅 |
| 40 | + |
| 41 | +쿠버네티스에서 애플리케이션을 개발할 때 일반적으로 단일 서비스를 프로그래밍하거나 디버그한다. 서비스를 테스트 및 디버깅하기 위해 다른 서비스에 접근이 필요할 수 있다. 지속적 배포(continuous deployment) 파이프라인을 사용하는 것도 한 가지 옵션이지만, 가장 빠른 배포 파이프라인이라도 프로그래밍 또는 디버그 주기에 지연이 발생할 수 있다. |
| 42 | + |
| 43 | +`telepresence intercept $SERVICE_NAME --port $LOCAL_PORT:$REMOTE_PORT` 명령을 사용하여 원격 서비스 트래픽을 다시 라우팅하기 위한 "인터셉트(intercept)"를 생성한다. |
| 44 | + |
| 45 | +아래의 각 항목에 대한 설명을 참고한다. |
| 46 | + |
| 47 | +- `$SERVICE_NAME`은 로컬 서비스의 이름이다. |
| 48 | +- `$LOCAL_PORT`는 서비스가 로컬 워크스테이션에서 실행 중인 포트이다. |
| 49 | +- `$REMOTE_PORT`는 서비스가 클러스터에서 수신하는 포트이다. |
| 50 | + |
| 51 | +이 명령을 실행하면 원격 쿠버네티스 클러스터의 서비스 대신 로컬 서비스에 원격 트래픽을 보내도록 텔레프레즌스에 지시한다. 서비스 소스 코드를 로컬에서 편집하고 저장하여 원격 애플리케이션에 접근할 때 해당 변경 사항이 즉시 적용되는지 확인한다. 디버거 또는 기타 로컬 개발 도구를 사용하여 로컬 서비스를 실행할 수도 있다. |
| 52 | + |
| 53 | +## 텔레프레즌스는 어떻게 작동하는가? |
| 54 | + |
| 55 | +Telepresence는 원격 클러스터에서 실행 중인 기존 애플리케이션의 컨테이너 옆에 트래픽 에이전트 사이드카(sidecar)를 설치한다. 그런 다음 파드로 들어오는 모든 트래픽 요청을 캡처하고, 이를 원격 클러스터의 애플리케이션에 전달하는 대신, 모든 트래픽([글로벌 인터셉트](https://www.getambassador.io/docs/telepresence/latest/concepts/intercepts/#global-intercept)를 생성하는 경우) 또는 일부 트래픽([개인 인터셉트](https://www.getambassador.io/docs/telepresence/latest/concepts/intercepts/#personal-intercept)를 생성하는 경우)을 로컬 개발 환경으로 라우팅한다. |
| 56 | + |
| 57 | +## {{% heading "whatsnext" %}} |
| 58 | + |
| 59 | +핸즈온 튜토리얼에 관심이 있다면 구글 쿠버네티스 엔진 상의 방명록 애플리케이션을 로컬로 개발하는 과정을 안내하는 [이 튜토리얼](https://cloud.google.com/community/tutorials/developing-services-with-k8s)을 확인한다. |
| 60 | + |
| 61 | +자세한 내용은 [텔레프레즌스 웹사이트](https://www.telepresence.io)를 참조한다. |
0 commit comments