대시보드 - 새로운 Item - Item name - Pipeline choose
간단한 테스트용 Pipeline Script 작성
pipeline {
agent any
stages {
stage('Build') {
steps {
sh ''' # <'''명령어'''>
echo build
'''
}
}
stage('Test') {
steps {
sh '''
echo test
'''
}
}
stage('Deploy') {
steps {
sh '''
echo deploy
'''
}
}
}
}
성공했던 빌드 불러와 구성할 수 있다.
이전에 생성했던 Build Steps 를 불러와 간단한 파이프라인을 생성해 볼 것임
파이프라인을 구성하는 파일은 jenkinsfile로 칭하고 쉘에서 생성하고 수정한 jenkinsfile 을 Git Hub에 푸쉬한다.
root@master:~/jen# cat jenkinsfile
pipeline {
agent any
stages {
stage('git scm update') {
steps {
git url: 'https://github.com/Leeeuijooo/jen.git', branch: 'main'
}
}
stage('docker build') {
steps {
sh '''
sudo docker build -t rapa.iptime.org:5000/mynginx:joo .
sudo docker push rapa.iptime.org:5000/mynginx:joo
'''
}
}
stage('deploy k8s') {
steps {
sh '''
sudo kubectl apply -f pod.yml
'''
}
}
}
}
root@master:~/jen# git init
Reinitialized existing Git repository in /root/jen/.git/'
root@master:~/jen# git add .
root@master:~/jen# git commit -m "add Jenkinsfile"
[main 124537a] add Jenkinsfile
1 file changed, 27 insertions(+)
create mode 100644 jenkinsfile
<jenkinsfile Push>
root@master:~/jen# git push -u origin main
Username for 'https://github.com': Leeeuijooo
Password for 'https://Leeeuijooo@github.com':
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 558 bytes | 558.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/Leeeuijooo/jen
023ccc4..124537a main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.
root@master:~/jen# kubectl get pod
NAME READY STATUS RESTARTS AGE
pod-test 1/1 Running 0 54s
root@master:~/jen# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 23h
pod-test-service NodePort 10.109.51.126 <none> 80:30001/TCP 70s
root@master:~/jen# curl localhost:30001
Hello World!
Hello Long jung perfect!!
<네임스페이스 설정>
root@master:~/jen# kubectl create namespace argocd
namespace/argocd created
<설치>
root@master:~/jen# kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
<외부 접속을 위해 type을 로드밸런서로 변경>
root@master:~/jen# kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
service/argocd-server patched
<argo cli 설치>
root@master:~/jen# sudo curl -sSL -o /usr/local/bin/argocd https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
<실행 권한 변경>
root@master:~/jen# sudo chmod +x /usr/local/bin/argocd
<초기 패스워드 echo>
root@master:~/jen# kubectl get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" -n argocd | base64 -d; echo
<서비스 확인(외부주소)>
root@master:~/jen# kubectl get svc -n argocd argocd-server
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
argocd-server LoadBalancer 10.108.93.85 <pending> 80:32445/TCP,443:32040/TCP 10m
# metallb 설치가 되어야 EXTERNAL IP 가 정상적으로 할당될것임.
# 오류 문제 - 로드밸런서로 접속하지 않고 Nodeport로 접속
<외부주소를 못받아오면 노드포트로 할 것>
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
계정 ID - admin PW - 방금 받았던 초기 PWD
Settings - repositories - CONNECT REPO
깃허브 레포지토리에 등록할 것
Application - New application
Prun resources - yml 파일 까지 삭제하겠다
self heal - 문제가 생겼을 시 자동으로 pod 혹은 서비스를 띄운다
<path는 현재 디렉토리>
history & rollback - 시각화 + 롤백 (이전의 상태) 가능
Pod 를 지워보고 image를 변경해보기 <수정필요>
root@master:~/jen# kubectl delete pod pod-test
pod "pod-test" deleted