Skip to content

beomsun1234/e-commerce-msa

Repository files navigation

E-Coommerce with MSA + KAFKA + ELK + Spring Cloud Sleth + Zipkin + Kubernetes + Jenkins + Docker

카프카사용하여 order-service와 product-service의 비동기 처리 및 로그 수집 분산 모니터링 및

Jenkins를 사용하여 CI/CD 구축 main baranch에서 작업이 완료되면 빌드 및 테스트 성공 후 Rolling Update

구성

msa구성

eureka

쿠버네티스 모니터링(대시보드)

msa이커머스쿠버네티스대시보드

ELK를 이용하여 로그 수집

이커머스elk를통해 로그수집

Spring Cloud Sleth + Zipkin이용한 분산 모니터링

msa-zipkin

msa집킨

집킨2

CI/CD

cicd아키텍처

잰킨스배포

jenkins pipeline

pipeline {
        agent any
        environment{
            DOCKERHUB_CREDENTIALS=credentials('docker-hub')
        }
        stages {
            stage('github clone') {
                steps {
                    git branch: 'main',
                        credentialsId: 'github',
                        url: 'https://github.com/beomsun1234/e-commerce-msa.git'
                }
            }

            stage('build') {
                steps {
                    sh """
                        cd /var/lib/jenkins/workspace/msa/order-service
                        chmod +x gradlew
                        ./gradlew clean build 
                        echo 'order-service build sucess'
                    """
                    sh """
                        cd /var/lib/jenkins/workspace/msa/product-service
                        chmod +x gradlew
                        ./gradlew clean build
                        echo 'product-service build sucess'
                    """
                }
            }
            stage('docker build') {
                steps {
                    sh """
                        cd /var/lib/jenkins/workspace/msa/order-service
                        sudo docker build -t beomsun22/order-service:${BUILD_NUMBER} .
                        echo 'docker jenkins-order build sucess'
                    """
                    sh """
                        cd /var/lib/jenkins/workspace/msa/product-service
                        sudo docker build -t beomsun22/product-service:${BUILD_NUMBER} .
                        echo 'docker jenkins-product build sucess'
                    """
                }
            }
            stage('login'){
                steps{
                    sh 'echo $DOCKERHUB_CREDENTIALS_PSW | docker login -u $DOCKERHUB_CREDENTIALS_USR --password-stdin'
                }
            }
             stage('docker push') {
                steps {
                    sh 'docker push beomsun22/order-service:${BUILD_NUMBER}'
                    echo 'docker order-service:v${BUILD_NUMBER} push sucess'
                    sh 'docker push beomsun22/product-service:${BUILD_NUMBER}'
                    echo 'docker product-service:v${BUILD_NUMBER} push sucess'
                }
            }
            stage('deploy') {
                steps {
                    sh """

                        sudo ssh root@[worker ip] 'export KUBECONFIG=/etc/kubernetes/admin.conf'
                        sudo ssh root@[worker ip] 'kubectl get pod'
                        sudo ssh root@[worker ip] '/home/beomsun159/./test.sh aaa bbb'
                        sudo ssh root@[worker ip] '/home/beomsun159/./rolling_update.sh order-service order-service beomsun22/order-service:${BUILD_NUMBER}'
                        sudo ssh root@[worker ip] '/home/beomsun159/./rolling_update.sh product-service product-service beomsun22/product-service:${BUILD_NUMBER}'
                    """
                }
            }
        }
        post {
            always{
                sh 'docker logout'
            }
        }
    }

rolling update shell script

echo "deploy name = ${1}"
echo "container name = ${2}"
echo "image name = ${3}"
kubectl set image deployment ${1} ${2}=${3}
echo "run kubectl set image deployment ${1} ${2}=${3}"
kubectl get pod

Postman 통해 요청

post맨

POST - gcp공개IP:8000/order/products/{id}/order

order service

orderservice

product service

product서비스

About

📚 E-Coommerce with MSA + KAFKA + ELK + Spring Cloud Sleth + Zipkin + Kubernetes + Docker + Jenkins

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published