공부방

[인프런 복습] 쿠버네티스 어나더클래스(9) - 데브옵스 한방정리

터프남 2025. 6. 14. 14:32
728x90
반응형

✅ 아래 글의 내용 및 이미지는 인프런 "쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2" 강의를 듣고 정리한 글입니다.

 

인트로

  • 개발 소스를 깃허브로 커밋하면서 소스 코드를 통합적으로 관리하다가 CI-CD 환경에서 Build 버튼을 누르면 먼저 Github에서 최신 소스 코드가 다운 받아진다.
  • Gradle이나 Maven으로 소스 빌드가 시작되는데, 메이븐 저장소에서 소스에 필요한 라이브러리들을 다운받는 과정이 있다.
  • 최정적으로 실행할 수 있는 형태의 jar 파일이 만들어지면서 소스빌드가 된다.
  • k8s 환경에 배포를 해야하니까 컨테이너 빌드를 한번 더 해야 한다.
  • 도커 빌드를 하기 이전에 먼저 도커 허브에서 OpenJDK가 있는 베이스 이미지를 다운 받는다.
  • 다운로드 받은 JDK 이미지에 내 jar 파일을 넣으면 앱이 컨테이너 이미지로 만들어진것임.
  • 도커 허브에 푸쉬
  • 배포는 kubectl 명령을 날려서 k8s에 파드를 생성시키면 k8s가 필요한 이미지를 도커 허브에서 다운받고 containerd한테 컨테이너 생성을 요청한다.

DevOps에서 가장 중요한 것

  • 아무리 복잡한 CICD 흐름이 있더라도 결국 데브옵스의 핵심은 개발을 하고 개발한 코드를 빌드를 해서 실행가능한 파일로 만드는 것이다.
  • 개발을 위한 IDE로 인텔리제이와 OpenJDK를 지정하고 개발.
  • 빌드툴은 Gradle로 빌드 소스 컴파일 하는 부분은 JDK가 사용된다.
  • 빌드 이후에 jar파일이 생성되고 jar파일이 JVM에서 실행이 된다.
  • 개발 -> 빌드 -> 실행파일 이 세 단계가 개발할때 수없이 반복하는 동작
  • 인프라 환경에서는 실행파일 (jar)와 JVM만 필요하기때문에 OpenJDK만 있으면 된다.
  • CICD 환경에서는 빌드를 해야하기 때문에 OpenJDK와 Gradle이 필요하다.
  • 인프라 환경으로 실행 파일을 넘겨주기 위해서 배포라는 과정이 추가 된다.
  • 인프라 환경에는 dev, qa, prod 등의 여러 개발 환경이 있다.
  • 운영환경의 핵심은 이중화이다.
  • 오픈 소스를 선택할 때 오픈소스의 구성이 문제없는지 확인한다. (필수)
  • 스펙만 확인하지말고 실제 앱을 실행해보고 테스트를 해봐야한다.
  • CICD 환경이 필요한 이유는 혼자 앱을 개발하는게 아닌 여러 개발자들이 개발하기 때문에 코드들을 통합해야하고 소스 버전관리를 위해서 Git과 Github를 이용한다.
  • 그리고 Jenkins과 Github에서 소스를 pull 받아서 빌드하고 배포하는 역할을 하는데 이런 역할을 하는 모든 환경이 되어있는 서버가 CICD 환경이다.
  • 개발 환경에서 개발-> 빌드 -> 실행 파일 방법이 CICD 와 인프라 환경으로 나눠졌을때의 시스템 구성으로 나뉜다.
  • 기존구성은 개발 -> 빌드  이후 배포할때 SFTP나 실행파일을 SCP로 실행 파일을 넘겨서 실행
  • 컨테이너 구성 환경에서 바뀐점은 소스빌드는 같지만 컨테이너 빌드가 추가되었다.
  • 컨테이너 빌드를 하고 도커 허브에 이미지를 업로드하고 배포를 할때는 kubectl로 배포 명령을 날리면 컨테이너 구성에서 쿠버네티스가 도커 허브에서 이미지를 다운받아서 파드를 만들고 실행파일을 실행한다.
  • 배포가 좀 복잡해졌지만 결국 중요한건 개발하고 빌드해서 실행파일을 만든다는건 항상 존재한다.

DevOps를 구성하는 오픈소스들

  • 데브옵스가 개발에서 운영까지 원활한 흐름을 만드는 건데 중간에 가장 중요한 역할을 하는게 CI CD 이다.
  • CI는 통합된 소스를 가지고 빌드 테스트를 자동화시키는 기능을 만드는것
  • CD는 배포를 자동화시키는 기능을 만드는것
  • 계획 단계에서 협업에 사용하는 메신저는 보통 많이 쓰는 노션, 슬랙 등을 쓴다.
  • 기업에서 오픈소스를 쓸 때는 Github이나 DockerHub 같은 퍼블릭을  쓰지않고 대부분 기업 내부 서버에 Gitlab이나 도커 레지스트리라는 프라이빗 제품들을 설치해서 쓴다. (Harbor 같은 오픈소스 프라이빗 도커 레지스트리 같은)
  • 빌드 단계에서도 퍼블릭한 Maven Repository를 쓸수도있고 프라이빗한 nexus repository를 쓸수도있다.
  • 테스트...해야만 하는데 참 어려운.. 그리고 성능테스트를 위한 JMeter나 nGrinder를 사용한다.
  • 릴리즈는 배포 가능한 패키지를 만드는 과정이다.
  • Docker 빌드를 하기위해서 도커파일이라는 스크립트를 작성해야 하고 또 k8s 배포를 하기 위해서는 yaml 파일들을 사전에 만들어놔야 하는데 이렇게 배포를 하기 위한 별도의 패키지를 만드는게 릴리즈이고 이 파일들도 변경 관리가 돼야 되기 때문에 작성한 내용들을 Github이나 버전관리 시스템에 올려놓는다.
  • 배포를 하기 위한 툴로 대표적인것은 ArgoCD와 Helm 등이 있다.
  • 실제 운영 환경을 구성하는 요소와 오픈소스로는 nginx와 Istio라는걸 쓴다.
  • 모니터링은 주로 자원 사용량이나 앱 로그, 그리고 트래픽 흐름을 많이 본다.
  • 슬랙은 데브옵스의 중요 포인트를 차지하고 있는 툴들이랑 연동을 쉽게 할 수 있다. 슬랙을 쓰면 파이프라인에서 발생하는 알람들을 필요한 채널에 울리도록 설정할 수 있다.

DevOps에 엮인 IT 직군들 및 그 외 다른 Ops들

  • 데브옵스의 8단계 영역
  • 계획, 개발, 빌드, 테스트, 릴리즈, 배포, 운영, 모니터링
  • 각 영역에는 자신의 영역을 담당하는 담당자들이 있지만, 연차가 올라갈수록 영역을 넓혀나가야 한다!!
  • GitOps - 이슈/협업 관리 및 빌드/배포 툴을 Git하나로 통일!
  • DevSecOps - 빠른 배포와 보안을 동시에 잡자! 보안 체크도 자동화
  • MLOps - 머신러닝, AI 분야를 위한 데브옵스

참고

https://www.inflearn.com/course/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%96%B4%EB%82%98%EB%8D%94-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%A7%80%EC%83%81%ED%8E%B8-sprint1

 

쿠버네티스 어나더 클래스 (지상편) - Sprint 1, 2 강의 | 일프로 - 인프런

일프로 | , ✅ 광범위한 쿠버네티스 기술을 A~Z까지 넓고 얇게 훑기보다 하나의 개념을 배우더라도 왜 사용하는지 부터 실무에서 어떻게 사용되는지 까지를 다루는 강의 ✅ 시작은 초급자지만

www.inflearn.com

 

728x90
반응형