일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- clusterrolebinding
- 테라폼
- ingestion
- docker
- instances failed to join cluster
- Service Account
- jenkins
- 에이전트 구성
- 추가 보안 그룹
- Gateway
- saa-c03 #saa #aws certified solutions architect - associate
- helm_release
- assumerole
- 에이전트 유형
- route53
- httpasswd
- aws ses #aws lambda
- s3
- NAT
- Amazon CloudWatch
- node group
- fruition
- Pipeline
- aws-loadbalacner-controller
- 클러스터 보안 그룹
- Docker0
- 코드커버리지
- Terraform
- kubernetes
- IRSA
- Today
- Total
목록Docker and Jenkins (10)
cloudwithbass
GitLab Docs의 Tutorial: Create and run your first GitLab CI/CD pipeline 문서를 한글로 의역하고, 실습 과정을 사진으로 설명하는 글입니다.GitLab을 처음 접하는 경우, ssh 등의 추가 설정이 필요하므로 해당 튜토리얼의 내용만으로는 튜토리얼을 실습하기 어렵다고 느꼈습니다. 그래서 그 방법을 공유하고자 이 글을 작성합니다.튜토리얼 문서의 내용이 아니라 제가 추가로 설명한 부분은 본명조 글씨체에 굵기를 높여 표시했습니다.사전 요구사항이 튜토리얼을 시작하기 전에 다음 사항들을 준비해 주세요:CI/CD를 사용할 GitLab 프로젝트프로젝트의 관리자 역할프로젝트가 없을 경우 다음 주소에서 무료로 생성할 수 있습니다. :https://gitlab.com프로젝..
Continuous Delivery with Docker and Jenkins의 챕터 5까지 학습하며 만든 최종 Jenkinsfile입니다. git push하면 자동으로 파이프라인을 빌드하도록 콘솔에서 트리거를 구성했습니다.Jenkins 복습을 위해 스스로 지금까지 공부한 내용에 대해 설명하려고 합니다.전체 Jenkinsfile의 코드부터 첨부한 후, 부분마다 제 설명을 덧붙이겠습니다.목차1. 전체 Jenkinsfilepipeline { agent { docker { image 'dminus251/jenkins-docker-agent:using_socket' args '--privileged -v /var/run/docker.sock..
목차 젠킨스 파이프라인을 빌드하던 도중 파이프라인 내에서 Docker 명령이 수행되지 않는 에러가 발생했습니다.이번 포스팅에선 이 에러를 해결하려는 3일 동안의 과정을 담았습니다.도커로 젠킨스 에이전트를 구성하는 방법은 두 가지가 있습니다. 영구 도커 에이전트 방법 (Node)젠킨스 에이전트가 젠킨스 마스터 컨테이너에 영구적으로 연결된 상태로 유지됩니다. 에이전트가 한 번 설정되면 에이전트는 수동으로 조작하지 않는 한 계속해서 활성 상태로 유지됩니다.동적 프로비저닝 도커 에이전트 (Cloud)파이프라인 빌드를 시작할 때 젠킨스 에이전트를 생성하고, 빌드가 끝나면 자동으로 에이전트를 삭제합니다. 저는 첫 번째 구성 방법에선 이 에러를 해결했으나, 두 번째 방법에선 해결에 실패했습니다. 각각 3번, 4번 목..
목차 1. 도커 레지스트리란?도커 이미지를 발행하거나(push) 가져올 수 있는(pull) stateless 서버 애플리케이션입니다.따라서 도커 허브나 Amazon ECR 또한 도커 레지스트리입니다.자바의 jar, 루비의 gem처럼 도커의 아티팩트(빌드 산출물)는 도커 이미지입니다.2. 도커 레지스트리 설치하기도커 허브와 Amazon ECR처럼 클라우드 방식의 도커 레지스트리를 사용할 수도 있습니다.하지만 많은 회사들에선 사내 네트워크에 아티팩트를 보관하는 정책을 갖고 있습니다.따라서 클라우드 방식이 아닌 자체 호스팅 방식의 도커 레지스트리를 설치하겠습니다.도커 레지스트리는 도커 이미지로 제공되므로 다음 명령을 통해 도커 레지스트리 컨테이너를 실행할 수 있습니다.docker run -d -p 5000..
목차지난 포스팅에서 Jenkinsfile을 이용해 컴파일과 단위 테스트를 실행하는 파이프라인을 구성했습니다.그러나 단위 테스트만으로는 코드의 동작이 문제 없다고 보장할 순 없습니다.따라서 이번 포스팅에선 코드 커버리지와 정적 코드 분석에 대해 다루겠습니다.1. 코드 커버리지란?코드 커버리지는 테스트 코드가 전체 소스 코드의 얼마나 많은 부분을 테스트하는지 나타내는 지표입니다.커버리지 비율이 높을수록 테스트의 신뢰도가 높아지겠지만, 그만큼 테스트 코드를 작성하는 데 시간과 노력이 필요할 것입니다.1-1 코드 커버리지 적정 수준 Google Testing Blog에선 보편적인 커버리지 수치는 존재하지 않지만, 일반적으로 커버리지 비율이 60%일 경우 '적절 수준(acceptable)', 75%일 경우 칭찬할..
목차1. 프로젝트 생성실습을 위해 http://start.spring.io/에 접속해 calculator라는 이름의 스프링 프로젝트를 생성합니다.Java 버전은 17, Dependencies에는 Spring Web을 추가해줍니다. 저는 WSL에 젠킨스 환경이 구축되어 있고, Windows에서 스프링 프로젝트를 다운로드 했으므로 ssh를 통해 프로젝트를 ubuntu로 옮겼습니다.2. 깃허브 푸시깃허브에 calculator 레포지토리를 생성해서 프로젝트를 푸시합니다.gradlew에 실행 권한도 추가합니다.sudo chmod u+x gradlew 푸시가 완료됐으면, 다음 명령으로 프로젝트를 빌드합니다../gradlew compileJava 만약 자바 버전이 17보다 낮다면 컴파일에 실패합니다. 다음 명령으로..
목차젠킨스를 운영하다 보면 예상보다 빠르게 과부하 상황이 발생해 빌드에 오랜 시간이 걸리는 일이 종종 발생합니다.그래서 커밋을 자주 하는 팀은 젠킨스 인스턴스를 죽이는 일이 종종 발생한다고 하는데요,이런 이유로 빌드 작업을 Jenkins Master 인스턴스와 Jenkins Agent 인스턴스가 나누어서 수행합니다. 이를 그림으로 표현하면 이렇습니다. 1. Master-Agent 구조Jenkins Master커밋이 발생한 후 빌드 시작 명령을 받습니다.만약 빌드 실패 시 슬랙 등에 알림을 보냅니다.클라이언트와 통신하며 HTTP 요청을 처리합니다.에이전트의 우선순위 조정 등 빌드 환경을 관리합니다.Jenkins Agent실제로 빌드, 테스트, 배포 작업을 수행합니다.2. 통신 프로토콜Master 노드와 ..
이번 포스팅에선 CI/CD 툴인 젠킨스를 사용하기 위해 환경을 구성하겠습니다. 먼저 Docker가 설치된 환경에서 다음 명령어를 실행합니다.mkdir $HOME/jenkins_homedocker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins홈 디렉터리에 jenkins_home 디렉터리를 생성하고, 이를 컨테이너의 볼륨으로 사용해서 jenkins 컨테이너를 8080포트에 실행합니다. 이제 http://localhost:8080에서 젠킨스에 접속할 수 있습니다.회원 가입 후 적절한 플러그인을 설치해줍니다. 설치는 완료됐고, 이제 확인 테스트를 해보겠습니다. 화면 좌측의 새로운 Item 클릭 ..
목차 대부분의 애플리케이션들은 다른 시스템과 네트워킹하며 실행되는 경우가 많습니다.이번 포스팅에선 컨테이너가 외부와 어떻게 통신하는지 알아보겠습니다. 1. 외부에서 컨테이너에 접근하기컨테이너는 기본적으로 외부와 통신이 불가능한 상태로 생성됩니다.컨테이너로 들어오는 트래픽은 컨테이너의 포트를 노출(expose)해서 처리해야 합니다. 1-1. 포트 매핑 실습테스트를 위해 먼저 웹 브라우저에서 http://localhost:8080에 접속합니다.웹 서버 컨테이너를 실행하지 않았으므로 아마 ERR_CONNECTION_REFUSED 에러가 발생했을 것입니다. 이제 tomcat 컨테이너를 실행하겠습니다.톰캣은 Apache Software Foundation에서 개발한 오픈소스 웹 애플리케이션 서버입니다. doc..
목차 1. 도커 소개Docker는 소프트웨어 컨테이너의 형태로 애플리케이션을 배포할 수 있는 오픈 소스 프로젝트입니다.Docker를 사용하면 application과 실행 환경을 통합해서, application을 어디서든 실행할 수 있습니다. 2. 하드웨어 가상화 VS 운영체제 가상화Docker는 운영체제 가상화를 사용합니다. 그렇다면 이는 하드웨어 가상화와 어떻게 다를까요?2-1. 하드웨어 가상화하드웨어 가상화는 하이퍼바이저를 이용해 각 application이 실행할 게스트 OS를 생성합니다.하이퍼바이저의 예시로는 흔히 사용하는 VMware와 Xen이 있습니다.각 application마다 게스트OS를 사용하므로 자원 효율이 떨어지며 파일의 크기가 커서 서버에 배포할 때 배포 속도가 느립니다.호스트 ..