인프런 커뮤니티 질문&답변

나두코딩님의 프로필 이미지
나두코딩

작성한 질문수

Jenkins를 이용한 CI/CD Pipeline 구축

실습7) Jenkins + Ansible + Kubernetes 연동하기 ②

질문

작성

·

348

0

안녕하세요. 강의 잘 배우고 있습니다

질문 2개가 있습니다.

  1.  

Jenkins => k8s로 바로 하는거와

Jenkins => Ansible의 playbook을 통해 => k8s로 하는것과 차이점이 무엇이 있고 장점이 어떤게 있나요??

 

  1. jenkins에서 성공적으로 빌드가 되고 ansible => k8s의 service파일이 성공적으로 만들어지면, 웹 브라우저에서 바로 실제 서비스 애플리케이션이 배포가 되었다고 이해하면 될까요?

    이렇게 질문드리는 이유는, 만약에 해당 서비스에 유저가 폭팔적으로 증가해서 트래픽이 몰리면, k8s가 돌고 있는 서버(예를 들어 EC2)라면, 그 전에 load-balancing 작업은 어떤 단계에서 진행되는지 궁금합니다.

답변 1

2

Dowon Lee님의 프로필 이미지
Dowon Lee
지식공유자

안녕하세요, 이도원입니다.

K8s에 서비스(애플리케이션)을 배포하는 것에 있어서 Ansible을 사용하시는 것과 그냥 배포하는 것에는 크게 차이가 없습니다. Ansible은 지속적인 배포 작업에 있어 인프라 구성이나 서버나 시스템 등의 설정에 대해 관리할 수 있도록 하는 인프라스트럭처 관리 도구입니다. 한 예로, 도커의 경우에서 동일한 이름의 컨테이너가 존재할 수가 없기 때문에, 기존 컨테이너를 삭제하고 새로운 컨테이너를 다시 실행해야 하는 경우에 있어서도, Jenkins에서 이 모든 작업을 스크립트나 설정에서 구성하실 수도 있지만, Ansible playbook에서 스크립트로 처리해 놓을 수도 있습니다. Playbook으로 설정 된 내용은 다른 시스템에서도 적용될 수있으며, 버전 관리를 하실 수도 있습니다.

두번째 질문에 대한 내용은, K8s의 서비스가 성공적으로 등록되었다 하더라도, POD하고 연결되지 않으면, 애플리케이션이 정상 작동되지 않을 수 있습니다. K8s의 서비스는 네트워크 및 라우트 역할을 할 수 있는데, 쉽게 말해 사용하려는 IP 및 Endpoint를 설정하여 POD와 연결하게 되면, 외부에서 K8s의 서비스를 통해 POD의 애플리케이션에 접속할 수 있게 됩니다. 만약 서비스에 연결된 POD를 변경하면, 같은 IP로 새롭게 연결된 다른 POD에 접속하게 됩니다. 또한 POD를 삭제하더라도 서비스를 남아 있게 되며, POD를 다시 실행하게 되면, 기존에 생성된 서비스하고 다시 연결될 수도 있습니다. 질문하신 EC2의 LB 작업을 구성한다면, K8s 자체를 단일 환경이 아니라 클러스터 환경 (ex, Master x 3, Node x 3 등)을 구성하셔서 LB 작업을 고려하는게 필요하다고 생각됩니다. AWS에서는 EKS나 kops 등으로 K8s의 클러스터 환경을 구성하여 작업하실 수 있습니다.

감사합니다.

나두코딩님의 프로필 이미지
나두코딩

작성한 질문수

질문하기