카프카사용하여 order-service와 product-service의 비동기 처리 및 로그 수집 분산 모니터링 및
Jenkins를 사용하여 CI/CD 구축 main baranch에서 작업이 완료되면 빌드 및 테스트 성공 후 Rolling Update
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'
}
}
}
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
POST - gcp공개IP:8000/order/products/{id}/order