개요
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를 생성 한다.
이후 로컬 맥북의 계정과 동일한 계정명을 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가 정상 실행된다.