1 . 테스트용 인스턴스 접속
2 . git 가져오기
3 . nginx환경 변수파일 생성 및 기타 설정
4 . Dockerfile 작성
5 . Dockerfile 빌드
docker build -t test . # Dockerfile 빌드
docker run -it --name testweb -p 8080:80 test:latest # 생성한 이미지로 컨테이너 실행
Front-ingress.yaml 수정
. . .
spec:
rules:
- host: "k8s-finalproject.com"
http:
paths:
- path: / # 루트경로
pathType: Prefix
backend:
service:
name: front-svc-user # 유저페이지 연결
port:
number: 80
- path: /manager # manager 경로
pathType: Prefix
backend:
service:
name: front-svc-admin # Admin페이지 연결
port:
number: 80
클러스터 오브젝트 추가 및 수정이 완료되면 add, commit, Push를 통해 ArgoCD가 변화를 감지할 수 있게 하였다.
ArgoCD의 배포가 완료된 후 브라우저에 https://도메인 을 입력했을 때 User페이지 , https://도메인/manager 를 입력했을 때는 Admin페이지가 정상적으로 나타나는 것을 확인하였다.
1 . git 코드 가져오기
2 . nginx 환경변수 파일 생성 및 기타 설정
3 . Dockerfile 작성
FROM node:lts-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:stable-alpine
COPY ./nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
4 . Jenkinsfile
pipeline{
agent{
kubernetes{
yaml '''
apiVersion: v1
kind: Pod
spec:
containers:
- name: gradle
image: gradle:8.0.2-jdk11
command: ['sleep']
args: ['infinity']
- name: kaniko
image: gcr.io/kaniko-project/executor:debug
command: ['sleep']
args: ['infinity']
volumeMounts:
- name: registry-credentials
mountPath: /kaniko/.docker
volumes:
- name: registry-credentials
secret:
secretName: regcred
items:
- key: .dockerconfigjson
path: config.json
'''
}
}
stages{
stage('checkout'){
steps{
container('gradle'){
git branch: 'main', url: 'https://github.com/suhwan12/course-registration-GoormUniversity-user.git'
}
}
}
stage('npm install & npm Build & Docker Build & Tag Docker image'){
steps{
container('kaniko'){
sh "executor --dockerfile=Dockerfile \
--context=dir://${env.WORKSPACE} \
--destination=suhwan11/frontend-user:latest \
--destination=suhwan11/frontend-user:${env.BUILD_NUMBER}"
}
}
}
stage('Update K8s to New Frontend Deployment'){
steps{
container('gradle'){
git branch: 'main' , url:'https://github.com/suhwan12/finalproject-argocd.git'
sh 'sed -i "s/image:.*/image: suhwan11\\/frontend-user:${BUILD_NUMBER}/g" front-deployment-user.yaml'
sh 'git config --global user.name suhwan12'
sh 'git config --global user.email xman0120@naver.com'
sh 'git config --global --add safe.directory /home/jenkins/agent/workspace/Frontend-Pipeline-User'
sh 'git add front-deployment-user.yaml'
sh 'git commit -m "Jenkins Build Number - ${BUILD_NUMBER}"'
withCredentials([gitUsernamePassword(credentialsId: 'github-credentials', gitToolName: 'Default')]) {
sh 'git push origin main'
}
}
}
}
}
}