개요

pycharm에서 k8s pod을 연동하여 개발환경을 구성한 뒤 정리해둔다.

방법 요약

k8s pod을 내 로컬환경에서 포트포워딩을 돌린 뒤 해당 포트로 pycharm에서 ssh로 접속하여 remote interpreter를 활성화한다.

포트포워딩

kubectl port-forward 붙고 싶은 pod 사용할포트:pod에 붙어야할 port
예시 : kubectl port-forward controller-jacktest-57b96f44f7-5294c 30001:22

tmux로 해당 명령을 터미널로 띄워놓으면 127.0.0.1:30001포트로 팟에 접근이 가능하다.

openssh 설치

Pod에서는 sshd 데몬이 떠있어야 한다. 만약 없다면 Dockerfile에 아래 내용을 추가한다. 임시로 써도 관계없다면 Pod에 들어가 직접 설치한다.

RUN yum install -y openssh-server
RUN sed -ri 's/^#?PermitRootLogin\s+.*/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config

공개키 설정하기

로컬환경에서 ssh public/private key를 생성 한다.

$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ chmod 600 ~/.ssh/id_rsa

이후 로컬 맥북의 계정과 동일한 계정명을 pod내부에서 만들어준다. 엄밀하게는 해당 부분도 Dockerfile에 포함되는게 맞을것 같다.

 $ useradd 사용자명 -G 그룹명 -m -s /bin/bash #계정생성
 $ passwd 사용자명 # 비밀번호 설정
 ```

이후 생성된 계정의 `~/.ssh/id_rsa.pub`를 pod에 `~/.ssh/authorized_keys`에 붙여준다.

### sshd 데몬 활성화하기

pod 내부에서 아래로 sshd 데몬을 활성화 해준다.

`$ nohup /usr/sbin/sshd -D &`

만약 아래 파일이 없다고 에러가 나면 아래와 같이 설정해주면 된다.

$ ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key # phrase 그냥 enter
$ ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key # phrase 그냥 enter
“`

접속해보기

정상접속되면 pycharm을 연동할 준비가 되었다.

$ ssh localhost -p 30001

pycharm 인터프리터 설정하기

원하는 파이썬 프로젝트를 열어본다. 인터프리터가 제대로 설정되기 전까지는 패키지를 못찾는다는 에러가 뜬다.

인터프리터에서 Add를 클릭한다.

SSH Interpreter로 localhost 30001 포트로 접속해준다.

파이썬3를 지정해준다. sync folders는 tmp경로로 놔둬둬 되고 취향껏 해주면 된다.

이제 k8s remote 인터프리터가 정상적으로 인식되면서 설치된 패키지가 인식된다.

인터프리터 설정 후 코드상에서도 패키지가 정상 인식된다.

원격 실행을 검증해보기 위해 nosetests를 사용해보기로 한다. 실행 설정창에서 Nosetests를 선택 한 뒤 아래와 같이 설정해준다.

이제 Nosetests가 정상 실행된다.