목록전체 글 (193)
코알못
이번시간에는 Jenkins로 CI/CD 실습을 진행하도록 해보자! 우선 첫 시간에 만든 배포 서버 즉 서비스 서버를 Jenkins 가 접근 할 수 있도록 배포서버 접속 할때 사용하는 pem 파일(개인키)를 열어 복사하고 [이전 시간]에 했던 방법대로 private key 를 deploy-key 명으로 등록한다. 키 항목을 확인 하면 아래와 같이 추가한 deploy-key가 나온다. 배포 서버에서는 AWS ECR 로그인해서 docker 를 통해 이미지 내려받고 컨테이너 실행 하기에 AWS 설정, docker 설치가 되어 있어야 한다. 저번 시간에 docker 설치까지 해두었으니 AWS 설정을 진행하도록 한다. 아래와 같이 설정 하려고 하니 설치가 안되어 있다고 나온다. 우선 설치를 진행하자! $ aws c..
이번 시간에는 젠킨스를 설치하고 필요한 플러그인을 설치, 인증 설치하는 실습을 진행하도록 하자! Jenkins 의 경우 아래 스펙이 최소로 있어야 돌아갈 수 있으며 EC2 기준 t3.medium을 사용하면 된다. cpu mem disk 2Core 4GB 8GB 그리고 방화벽의 경우 아래와 같이 Inbound 를 열면 된다. 포트 설명 22 서버 접속 8080 Jenkins UI Ubuntu OS, t3.medium EC2를 생성 한다! AWS Console > EC2 에 들어가서 인스턴스 시작을 클릭한다. Ubuntu, m3.medium(해당 스펙 이상도 가능), 볼륨 8GB(이상도 가능)는 필수로 선택하고 보안 그룹의 경우 위에 언급한 22, 8080을 열어준다. 나머지는 각자 상황에 맞게 선택 하며 ..
AWS Lambda 를 이용하여 EMR 을 기동/중단하려고 하였으며 아래와 같이 Lambda 함수를 생성 하였다! 설정은 아래와 같이 Python 3.9를 사용 하였다 python 라이브러리중 boto3 를 사용하고자 하였으며 해당 라이브러리버전을 확인하기 위해 아래와 같이 코드를 작성 하였다. import json import boto3 client=boto3.client('emr') s3=boto3.resource('s3') emr_config_json='' def lambda_handler(event, context): return { 'statusCode': 200, 'body': boto3.__version__ } 적용을 위해 Deploy를 누르고 테스트를 위해 Test 버튼을 눌렀다. 로그를 ..
이번 시간에는 docker 컨테이너 이미지 빌드 실습을 진행할 예정이며 아래 순서로 진행 해보자! 1. gradle 설치 2. gradle 프로젝트 생성 3. docker hub repository 생성 4. docker build & push 5. docker pull & run 6. 4번을 jib를 통해 진행후 5번 진행 실습 진행하기 앞서 gradle 프로젝트 생성시 만들어지는 파일에 대해 알아보도록 하며 아래와 같다. 구분 내용 build.gradle 프로젝트 내 소스코드에 대한 라이브러리 의존성, 플러그인, 라이브러리 저장소 등을 설정 할 수 있는 빌드 스크립트 파일 settings.gradle 빌드 대상 모듈의 구성 정보를 정의 하는 파일 (루트, 하위 모듈을 정의 하며 빌드 대상에서 하위 모..
이번 실습은 jenkins 를 활용하여 docker 빌드하는 부분을 진행 할 예정이다. docker 빌드 실습 전에 도커 빌드에 대해서 알아보자! 빌드 방식을 두가지로 나누어 보면 아래와 같다. 전체 빌드 : 매 빌드때 마다 전체 코드를 포함하여 빌드 증분 빌드 : 변경된 코드 대상만 분리하여 빌드 docker 빌드의 경우 증분 빌드로 변경 부분에 대해서만 빌드 하므로 전체 빌드 방식보다 빠르고 리소스를 적게 사용한다. 증분 빌드 원리는 docker layer 에 대한 개념을 알면 이해 할 수 있으며 자세한 내용은 '[Kubernetes & Docker] 이미지 생성/불러오기' 를 참고 하도록 한다. 간단하게 정리하자면 아래와 같다. 1) docker build 를 통해 읽기 전용 docker image..
EMR config Json 설정에 아래 설정을 추가한다. [ { "Classification": "spark-env", "Configurations": [ { "Classification": "export", "Properties": { "PYSPARK_PYTHON": "/usr/bin/python3" } } ] } ] 만약 EMR 사용 유저가 아니라면 spark 설정 파일 경로에 가서 spark-env.sh 파일에 아래 설정을 변경하면 된다. export PYSPARK_PYTHON=/usr/bin/python3 위와 같이 변경하면 zeppelin 에서 python 버전이 변경 된것을 확인 할 수 있다. 저자는 python 3.6 으로 변경 하였으며 정상적으로 나온다. 끝!
이번 시간에는 구글 쿠버네티스 클러스터 구성하도록 한다! 아래와 같이 google cloud 에 접속한뒤 콘솔에서 클러스터 만들기를 선택한다. 자동 관리가 아닌 사용자가 직접 관리 하도록 할 예정이며 아래 화면과 같이 클릭한다. 원하는 클러스터명을 기재한다. 노드의 경우 3개로 구성 하도록 한다. 10분 정도 기다리면 클러스터가 생성 되며 초기 셋팅을 위해 연결을 클릭한다. gcloud 라는 google CLI 를 이용하여 클라우드 구성 가능하며 화면에 나오는 명령어를 복사한다. 만약 shell이 로컬에 설치되어 있지 않다면 구글에서 브라우저 shell 인 cloud shell 제공 하고 있어 제공하는 쉘을 이용해도 된다. cloud shell 을 이용하면 해당 쉘에 gcloud, kubectl 이 설치..
Junit 에서 테스트 코드 작성중에 아래와 같이 Lombok 의 Slf4j를 이용하여 로그를 찍고자 하였으며 @Test void contextLoads() { log.error("Hello !!"); } 실행시 아래와 같이 이슈 발생 하였다. C:\Users\..\IdeaProjects\CodingTest\src\test\java\com\code\CodingTestApplicationTests.java:13: error: cannot find symbol log.error("Hello !!"); ^ symbol: variable log location: class CodingTestApplicationTests Junit 에서 Lombok를 사용하기 위해서는 아래와 같이 의존성을 추가해야하며, 추가시 ..