포스트

LG CNS 부트캠프 학습일지 58일차

학습 내용

  • Jenkins에서 SSH를 통해 원격으로 컨네이터 실행하기
  • Kubernetes 사용해서 컨네이너 관리하기

Jenkins에서 SSH를 통해 원격으로 컨네이터 실행하기

어제 Jenkins로 SSH를 통해 원격 서버를 조작할 수 있다는 것을 배웠다. 강사님은 리눅스 컨테이너 이미지를 사용해서 Docker in Docker 방법을 사용했는데, 설명을 듣다보니 차라리 리눅스 가상머신을 사용하거나 Jenkins가 SSH를 통해서 윈도우 PowerShell을 조작하는 방법도 좋지 않았을까 싶다. 윈도우에 SSH 서버를 설치하는 과정이 필요했을 것 같은데, 리눅스 가상머신을 사용하는 것이 더 이상적일 것이다.

강사님이 수업시간에 언급하시긴 했는데, 쉘 명령어로 도커 컨테이너를 만들고 실행하는 것은 Jenkins로는 무리인 부분이 있다. Jenkins는 기본적으로 지속적 통합 (Continuous Integration) 을 위한 도구이다. 다시 말해 소스코드가 오류 없이 빌드 되는지 등을 검증하는 도구이다. 빌드 결과물을 실행하는 것은 지속적 배포 (Continuous Deployment) 에서 담당해줘야 한다. 실습해보지는 않았지만 Argo CD 라는 프로그램을 사용할 수 있다고 한다. 나중에 프로젝트를 할 때 사용하면 좋을 것 같다.

Kubernetes 사용해서 컨네이너 관리하기

Docker Desktop을 사용하고 있지 않아서 Kubernetes를 실습하는데 문제가 있었다. 개인 서버에 Kubernetes를 실험할 수가 없어서 VirtualBox로 가상머신을 만들어서 Kubernetes를 설치했었는데, Container Network Interface를 설정하는 과정에서 문제가 있어서 Pod와 Deployment를 만들지는 못했다.

Kubernetes (이하 k8s)는 클러스터 환경에서 의미가 있는 기술이다. 클러스터를 구성하는 개별 컴퓨터를 노드라고 부른다. 도커와 도커 컴포즈를 사용할 때는 컨테이너가 도커 명령어를 실행하는 컴퓨터에서 실행된다. 하지만 k8s를 사용할 때는 컨테이너가 특정 노드(컴퓨터)에서 실행시키지 않는다. 대신에 클러스터에 실행되어야 하는 도커 컨테이너를 정의하고, 컨테이너를 어떤 노드에서 실행할지는 마스터 노드 (Control Plane) 가 결정한다.

k9s는 Pod를 단위체로 하여 컨테이너를 관리한다. 하나의 Pod에는 여러 컨테이너가 있을 수 있다. 그리고 그 위에는 Service라는 것이 있는데, Pod가 여러 개 있을 경우에는 로드밸런싱 역할도 해준다. 강사님이 시연하는 것을 봤는데, 설정을 그렇게 하지 않아서 그런지는 모르겠지만, 라운드로빈 방식으로 로드밸런싱이 이루어진다기 보다는 랜덤 또는 마지막으로 만들어진 Pod로 계속 트래픽이 보내지고 있었다.

개인적으로 관심있는 기술인데, 개인 서버에서 사용하기에는 오버스펙이라 사용하지 않았었다. 리눅스에 설치하는 것 부터가 난관이었는데, 이 부분을 개인시간을 활용하여 공부해봐야겠다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Comments powered by Disqus.