어쩌다 IT
article thumbnail
반응형

리뷰 (Review)

더보기

Application 개발 및 배포 과정

  • 문제 선정 - 제공하려는 서비스에 대한 결정
  • 문제 정의 - 제공하려는 서비스에 따른 기능 명세
  • 설계 - Algorithm 설계와 DataBase 설계, 화면 설계 (UI, User Interface)
  • 구현 - 프로그래밍 언어를 이용하여 구현 (coding)
    • build - 구현된 프로그램을 binary 형태로 변경하는 과정
    • build tools - compiler, interpreter, linker, debugger
  • 테스트
    • 단위 테스트 - 기능 단위 테스트
    • 통합 테스트 - 전체 기능에 대한 테스트
    • 인수 테스트 - 문제 정의에 기반하여 최종적인 테스트
  • 운영 (배포) - 유지 보수 수행

 

Software 개발 생명 주기

  • SDLC - Software Development LifeCycle
  • 문제 정의 → 설계 → 구현 → 테스트 → 유지 보수

 

지속적 통합, CI (Continuous Intergration)

  • 개발자를 위한 자동화 프로세스
  • Application 코드 변경 사항이 정기적으로 빌드/테스트되어 공유 저장소에 병합
  • 여러 개발자가 동시에 Application 개발 시 서로 충돌할 수 있는 문제 해결

 

CD

  • 지속적 서비스 (Continuous Delivery)
    • 수동 배포
    • 개발자는 Application에 적용한 변경 사항을 버그 테스트를 거쳐 공유 저장소에 자동 업로드
    • 운영자는 Application을 공유 저장소에서 운영 환경으로 배포
  • 지속적 배포 (Continuous Deployment)
    • 자동 배포
    • 개발자는 변경 사항을 공유 저장소에 저장하면 운영 환경까지 자동으로 릴리즈 되는 형태

Kubernetes CI / CD

 

Kubernetes CI / CD 일반적인 파이프라인

Jenkins

  • 참고 자료
  • CI Tools
  • 무료 오픈 소스 자동화 서버
  • 빌드, 배포 자동화를 지원하는 다수의 플러그인 제공
  • 설치형 방식
  • JRE(Java Runtime Environment)에서 동작
  • 기능
    • 빌드 자동화
    • 테스트 자동화
    • 코드 표준 준수 여부 검사 - 정적 코드 분석
    • 빌드 파이프라인 구성
    • 다양한 인증 기반과 결합한 인증, 권한 관리 기능
    • 자동화된 배포 관리

 

  • Jenkins 설치
    • 참고 자료
    • container 방식에 의한 설치
    • 직접 manifest 설정하여 설치
      • jenkins-deployment.yaml, jenkins-service.yaml 파일 생성하여 실행 
    • 사용하는 O/S에 별도 설치
      • O/S에 Jenkins 설치 후 Web browser를 이용하여 사용
      • Linux, MacOS, Windows
      • 기본 Port - 8080
      • Jenkins 접속 - https://<IP Address>:8080

 

더보기

container 방식에 의한 설치

 

직접 manifest 설정하여 설치

  • jenkins-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
      - name: jenkins
        image: jenkins/jenkins:lts
        ports:
          - containerPort: 8080
        volumeMounts:
          - name: jenkins-vol
            mountPath: /home/ubuntu/jenkins/jenkins-volume		# 볼륨 위치 지정
      volumes:
        - name: jenkins-vol
          emptyDir: {}
  • jenkins-service.yaml
apiVersion: v1
kind: Service
metadata:
  name: jenkins
spec:
  type: LoadBalancer
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 30000
  selector:
    app: jenkins
---
apiVersion: v1
kind: Service
metadata:
  name: jenkins-jnlp
spec:
  type: LoadBalancer
  ports:
    - port: 50000
      targetPort: 50000
  selector:
    app: jenkins

 

 

Debian/Ubuntu 22.04 LTS 설치

  • Java Run-time 설치
sudo apt-get install openjdk-11-jdk-headless # JRE 설치
sudo update-java-alternatives --set java-1.11.0-openjdk-amd64 # 기본 Java 설정
  • Jenkins 설치를 위한 키 다운로드
sudo wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
  • Jenkins repository 등록
echo deb http://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list
sudo apt update
  • Jenkins 설치 및 확인
sudo apt-get install jenkins
systemctl status jenkins
  • 최초 Jenkins 서버 접속 시 절차
    • <Jenkins Server IP>:8080 으로 접속
    • 최초 접속시에는 jenkins에 설정된 패스워드 사용하여 접속
    • 접속 성공 시 기본 build plug-in을 설치한다.
    • 설치 후 사용자 등록
최초 접속 시 화면
환경 설정 및 로그인 후 메인 화면

 

 

2022. 10. 27 에 작성된 글입니다.

 

 

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!