이번 장에서 만들 파일들은 한경로에 넣어준다. 젠킨스 파이프 라인 스크립트 pipeline { agent any stages { stage('Clone') { steps { script { git branch: 'develop', credentialsId: 'ljh8651', url: 'https://github.com/sudosoo/ElasitcKafka' } } } stage('Build') { steps { script { sh './gradlew clean bootJar' } } } stage('Deploy') { steps { script { sshagent(credentials: ['ssh_key']) { // 파일 전송 'scp -o StrictHostKeyChecking=no -P 포트 ..
개-발/Infra
CICD란 ? CI/CD는 소프트웨어 개발의 일환으로 사용되는 프로세스의 한 형태이다. CI는 "지속적 통합(Continuous Integration)"을 나타내며, CD는 "지속적 배포(Continuous Deployment)" 또는 "지속적 전달(Continuous Delivery)"를 나타낸다. 무중단 배포의 원리 배포 할 때, 새로운 컨테이너를 띄우고 NginX(로드밸런서)로 새로운 띄운 컨테이너로 연결한 뒤 이전 컨테이너는 내린다 글 들어가기 앞서 앞에 아래 글 들이 선행 되어야 한다. https://soobysu.tistory.com/119 [NginX] docker NginX (NPM) 역방향프록시 개념과 설정 NAS 1 Nginx의 역방향 프록시의 개념은 이러하다. 원래라면 http://m..
1. Jar 생성 build -> boo.Jar 로 Jar파일을 생성해준다. boot.jar 실행하면 /build/libs/ 안에 프로젝트이름-0.0.1-SNAPSHOT.Jar 파일이 생성된다. 2. Dockerfile 만들기 FROM openjdk:17-alpine ARG JAR_FILE=*.jar COPY ${JAR_FILE} app.jar COPY ./config/application.properties /src/main/resources/ ENTRYPOINT ["java", "-jar", "/app.jar", "--spring.config.location=file:/src/main/resources/application.properties"] FROM : Docker Image 생성 시에 기반이..
우선 집에 공유기가 있다면 공유기 포트를 열어주어야 한다. 80포트를 아까 설정해주었던 nginx http 포트인 12122 로 포워딩 시켜주는 것이다. 여기서 집에 공유기가 있다면 공유기 포트를 열어주어야 한다. 80 으로 들어올 것을 12122(docker nginx컨테이너 80포트)로 포트포워딩 시키고 443 으로 들어올 것을 12121(docker nginx컨테이너 443포트)로 포트포워딩 시킨다. 위 내용을 글로 해석해 보면 80포트로 들어오는것을 Nas의 12122 포트로 12122는 컨테이너 > 80 포트로 보내준다. 이 부분이 굉장히 헷깔린다. 컨테이너 설치가 완료 됐다면 Nginx Proxy Manager (설정페이지) 웹브라우저에 NAS의 IP:관리포트 를 넣어준다. 위 설정대로라면 N..
Nginx의 역방향 프록시의 개념은 이러하다. 원래라면 http://myHomeIp.synology:dockerPort 로 kibana , CMAK , Jenkins 홈을 GUI를 사용했는데 이젠 NginX를 통해 컨테이너에 접근하고 Https 보안까지 가능해진 것이다. Jenkins와 GitHub의 WebHook 또한 Https 프로토콜을 이용해야 했기 때문에 NginX는 필수 적이었다. Jenkins 와 Github WebHook 을 연동하려고 하는데 Github에서 https로 웹훅을 요청 하는데 Nas에서는 Http로 설정 되어있어서 NginX로 리버스 프록시를 사용한 주소가 필요했다. 필자는 Synology 의 NAS를 사용하지만 일반 docker 사용자도 똑같이 따라하면 된다. docker-c..
키바나를 접속해서 데이터를 생성 수정 삭제를 하려면 계정을 추가 해주어야 한다. 1. 컨테이너에서 생성방법 2. 키바나에서 생성방법 엘라스틱 서치 설정파일에 들어가서 /etc/elasticsearch/elasticsearch.yml xpack.security.enabled: true xpack.security.enabled: true 로 바꾸어준다. 이미 설정 되어있으면 안바꿔줘도 됌. 컨테이너에서 생성방법 유저생성 #엘라스틱서치컨테이너에 접속 docker exec -it 엘라스틱서치컨테이너명 bash #유저추가 elasticsearch-users useradd 유저명 #유저삭제 elasticsearch-users userdel 유저명 비밀번호 설정 후 권한설정 #권한설정 elasticsearch-use..
프로듀서(Producer) 메세지 발행자 / 생성 , 추가 컨슈머Consumer 메세지 수신자 / 조회 브로커(Broker) 카프카 서버 단위 / 데이터를 저장하고 컨슈머에게 전달하는 역활 ex. 카프카 서버 3대있어 = 브로커 3대 클러스터 (Cluster) 카프카서버(브로커)의 그룹 브로커3대로 클러스터 1대 구성 토픽 (Topic) 카테고리 및 주제 데이터(레코즈)들이 보관 될 장소 하나 이상의 파티션으로 존재 파티션(Partition) - 속도 / 병렬처리 토픽의 조각 토픽을 세분화 저장 - 병렬처리 가능하게 함 레플리카(Replica) - 안정성 나눠진 파티션들의 복제본 ( 토픽의 복제본 ) 토픽이 문제가 생길시 복구 가능 파티션과 레플리카가 뭐임 ? 파티션은 토픽의 데이터를 세분화하고 병렬 ..
Check 사항 앞서 작성했던 docker-compose.yml KAFKA_ADVERTISED_LISTENERS( 외부 접속을 담당 ) 에 EXTERNAL IP를 넣어주어야 한다. KAFKA_LISTENERS 는 카프카 내부에서 연결해주는 옵션이니 모든 외부접속을 열어준다. 로컬에 띄었다면 저부분을 localhost로 설정. environment: KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_BROKER_ID: 1 KAFKA_LISTENERS: INTERNAL://:19092,EXTERNAL://:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT KAFKA_ADVERTISE..