SpringBoot 응용 프로그램 이 K8S 에 빠르게 배 치 된 상세 한 튜 토리 얼

제 GitHub 에 오신 것 을 환영 합 니 다.
https://github.com/zq2599/blog_demos
내용:
모든 오리지널 글 의 분류 집합 과 조합 소스 코드 는 자바,Docker,Kubernetes,DevOPS 등 과 관련된다.
배경
생산 환경 에 대해 우 리 는 보통 CI&&CD 도구 로 전체 구축 과 배 치 를 완성 하기 때문에 본 고 는 생산 환경 에 적합 하지 않다.학습 과 개발 환경 에 대해 우 리 는 코드 를 자주 수정 하고 효 과 를 신속하게 보고 싶 습 니 다.본 고 는 바로 이런 장면 을 대상 으로 하 는 것 입 니 다.
내용 소개
  • 만약 에 SpringBoot 응용 프로그램 을 개발 하고 K8S 환경 에 응용 하고 있다 면 본 고 를 참고 하여 K8S 환경 에 신속하게 배치 할 수 있 습 니 다.
  • 글 에서 SpringBoot 의 버 전 은 2.3.0.RELEASE 입 니 다.이 버 전부터 SpringBoot 는 공식 적 으로 새로운 docker 미 러 구축 방안 을 추 천 했 습 니 다.이전 버 전이 라면 자체 적 으로 글 에서 미 러 를 구축 하 는 부분 을 수정 하 십시오.
  • 환경 정보
    이번 실전 에는 두 가지 환경 이 있 는데 그것 이 바로 개발 과 운영 환경 이다.그 중에서 개발 환경 정 보 는 다음 과 같다.
  • 운영 체제:Ubuntu 20.04 LTS 데스크 톱 버 전(마찬가지 로 검 증 된 것 은 MacBook pro 13 인치,macOS Catalina 10.15.4)
  • CPU :2.30GHz × 4,메모리:32G,하 드 디스크:1T NVMe
  • JDK:1.8.0_231
  • MAVEN:3.6.3
  • SpringBoot:2.3.0.RELEASE
  • Docker:19.03.10
  • 개발 도구:IDEA 2020.1.1(Ultimate Edition)
  • 실행 환경 정 보 는 다음 과 같 습 니 다.
  • 운영 체제:CentOS Linux release 7.8.2003
  • Kubernetes:1.15
  • 또한 개발 환경 에 sshpass 를 설치 하 십시오.
    SpringBoot 프로젝트 소스 코드
    이번 실전 에 서 는 일반적인 SpringBoot 프로젝트 를 사 용 했 습 니 다.소스 코드 는 GitHub 에서 다운로드 할 수 있 습 니 다.주소 와 링크 정 보 는 다음 표 와 같 습 니 다https://github.com/zq2599/blog_demos.
    명칭.
    링크
    비고 항목 홈 페이지https://github.com/zq2599/blog_demos이 항목 은 GitHub 의 홈 페이지 git 창고 주소(https)https://github.com/zq2599/blog_demos.git이 항목 의 원본 창고 주소,https 프로 토 콜 git 창고 주소(ssh)[email protected]:zq2599/blog_demos.git 프로젝트 원본 의 창고 주소,ssh 프로 토 콜
    이 git 프로젝트 에는 여러 개의 폴 더 가 있 습 니 다.이 장의 응용 은 provedemo 폴 더 아래 그림 의 빨 간 상자 와 같 습 니 다.

    필요 한 내용
    전체 프로젝트 는 일반 SpringBoot 프로젝트 로 흔히 볼 수 있 는 pom.xml 과 소스 코드 를 제외 하고 다음 과 같은 세 개의 파일 이 더 많 습 니 다.
  • Dockerfile 파일 은 docker 미 러 를 구축 하 는 데 사 용 됩 니 다.SpringBoot 버 전이 2.3.0.RELEASE 또는 더 높 으 면 SpringBoot 가 공식 적 으로 추천 하 는 미 러 구축 방식 을 사용 하 는 것 을 권장 합 니 다.이 Dockerfile 은 참고 할 수 있 습 니 다.
  • probedemo.yaml 파일 과 구체 적 인 프로젝트 와 관련 이 있 습 니 다.deployment 과 service 를 배치 할 수 있 도록 스스로 수정 하 십시오.
  • auto_deploy.sh 는 빠 른 배 치 를 할 수 있 는 관건 입 니 다.다음 에 상세 하 게 설명 하 겠 습 니 다.
  • auto_deploy.sh 상세 설명
    auto_deploy.sh 의 역할 은 다음 과 같 습 니 다.
  • maven 명령 을 호출 하여 구축 공 사 를 편집 합 니 다.
  • 구 축 된 jar 파일 을 docker 미 러 로 만 듭 니 다.
  • docker 미 러 를 tar 파일 로 내 보 냅 니 다.
  • tar 파일 을 K8S 서버 에 업로드 합 니 다.
  • probedemo.yaml 파일 을 K8S 서버 에 보 냅 니 다.
  • sshpass 를 통 해 원 격 으로 명령 을 실행 하고 docker 미 러 를 K8S 서버 의 로 컬 docker 창고 로 가 져 옵 니 다.
  • sshpass 원 격 실행 명령 을 통 해 deployment 과 service 를 배치 합 니 다.
  • auto_deploy.sh 의 전체 내용 은 다음 과 같다.
  • 
    #!/bin/bash
    
    #        sshpass
    if ! [ -x "$(command -v sshpass)" ]; then
     echo '   sshpass       !'
     exit 1
    fi
    
    #    
    IMAGE_NAME='bolingcavalry/probedemo'
    
    # TAG 
    TAG_NAME='0.0.1'
    
    #    deployment service yaml   
    DEPLOY_SERVICE_YAML='probedemo.yaml'
    
    # K8S   IP  
    K8S_IP_ADDRESS='192.168.50.135'
    
    # K8S   SSH  
    K8S_SSH_ACCOUNT='root'
    
    # 8S   SSH  
    K8S_SSH_PSWD='888888'
    
    # K8S   tar yaml     
    K8S_FILE_PATH='~/deploy_temp'
    
    #      
    CURRENT_DIR=`pwd`
    
    echo '         ,     :'${CURRENT_DIR}
    
    #   maven      
    mvn clean package -U -DskipTests
    
    echo "      :"${IMAGE_NAME}/${TAG_NAME}
    docker build -t ${IMAGE_NAME}/${TAG_NAME} .
    
    echo "      tar  :"${IMAGE_NAME}/${TAG_NAME}
    docker save ${IMAGE_NAME}/${TAG_NAME} > ${CURRENT_DIR}/image.tar
    
    echo " K8S            :"${K8S_FILE_PATH}
    sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "mkdir -p ${K8S_FILE_PATH}"
    
    echo " yaml     K8S   :"${IMAGE_NAME}/${TAG_NAME}
    sshpass -p ${K8S_SSH_PSWD} scp ${CURRENT_DIR}/${DEPLOY_SERVICE_YAML} ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS}:${K8S_FILE_PATH}/
    
    echo "   tar     K8S   :"${IMAGE_NAME}/${TAG_NAME}
    sshpass -p ${K8S_SSH_PSWD} scp ${CURRENT_DIR}/image.tar ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS}:${K8S_FILE_PATH}/
    
    echo "  K8S         ,    :"${IMAGE_NAME}/${TAG_NAME}
    sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "kubectl delete -f ${K8S_FILE_PATH}/${DEPLOY_SERVICE_YAML}"
    
    echo "  10 "
    sleep 10
    
    echo "              :"${IMAGE_NAME}/${TAG_NAME}
    sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "docker rmi ${IMAGE_NAME}/${TAG_NAME}"
    
    echo " tar      :"${IMAGE_NAME}/${TAG_NAME}
    sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "docker load < ${K8S_FILE_PATH}/image.tar"
    
    echo "  :"${IMAGE_NAME}/${TAG_NAME}
    sshpass -p ${K8S_SSH_PSWD} ssh ${K8S_SSH_ACCOUNT}@${K8S_IP_ADDRESS} "kubectl apply -f ${K8S_FILE_PATH}/${DEPLOY_SERVICE_YAML}"
    
    echo "  tar  :"${CURRENT_DIR}/image.tar
    rm -rf ${CURRENT_DIR}/image.tar
    
    echo "   :"${IMAGE_NAME}/${TAG_NAME}
    docker rmi ${IMAGE_NAME}/${TAG_NAME}
    실험 하 다.
  • 자신의 실제 상황 에 따라 auto 를 수정 하 세 요.deploy.sh 에서 변수의 값,예 를 들 어 K8S 환경 주소,계 정 비밀번호 등;
  • 개발 단계,자바 코드 수정 완료;
  • 스 크 립 트 실행 autodeploy.sh;
  • 콘 솔 의 힌트 는 다음 과 같다.

  • 배치 가 완료 되 었 으 니 기능 을 검증 할 수 있 습 니 다.
    주의 사항
    이번 실전 에서 미 러 를 업데이트 하 는 방법 은 로 컬 에서 tar 로 내 보 내 고 K8S 환경 으로 가 져 오 는 것 입 니 다.K8S 환경 에 여러 대의 기계 가 있 을 때 이렇게 하 는 것 이 적합 하지 않 습 니 다.개인 미 러 창 고 를 사용 하여 미 러 push 를 창고 에 전송 한 다음 K8S 미 러 창고 pull 미 러 를 사용 하 는 것 을 권장 합 니 다.
    이로써 SpringBoot 응용 프로그램 이 K8S 에 신속하게 배 치 된 실전 이 완성 되 었 습 니 다.이것 은 제 가 개발 하 는 과정 에서 자주 사용 하 는 원 격 배치 수단 입 니 다.참고 가 되 기 를 바 랍 니 다.
    당신 은 외 롭 지 않 습 니 다.
    자바 시리즈
    봄 시리즈
    Docker 시리즈
    kubernetes 시리즈
    데이터베이스+미들웨어 시리즈
    DevOps 시리즈
    여기 서 SpringBoot 애플 리 케 이 션 이 K8S 에 빠르게 배 치 된 상세 한 튜 토리 얼 에 관 한 글 을 소개 합 니 다.더 많은 SpringBoot 가 K8S 에 배 치 된 내용 은 저희 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기