โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ) - Spring 1, 2 ์ ๋ฃ๊ณ ์์ฑํ๋ ๋ณต์ต ๋ธ๋ก๊ทธ ์ ๋๋ค.
ํจํค์ง ๊ตฌ์กฐ ๋น๊ต ๋ฐ ๋ฐฐํฌํ๊ธฐ
1. ๋ค์ํ ๋ฐฐํฌ ํ๊ฒฝ์ ์ํ Kustomize ๋ฐฐํฌํ๊ธฐ
1-1. ์์ดํ ์์ฑ
- name : 2222-deploy-kustomize
- copy from 2221-deploy-helm
1-2. ์ต์ ์์
- Spare Checkout paths > Path : 2222
- Script Path : 2222/Jekinsfile
1-3. ๋ฐฐํฌ ์์์์ Abort ๋๋ฅด๊ธฐ
- ์ต์ด ์คํ์์ ๋งค๊ฐ๋ณ์ ์ ๋ ฅ ๋ฒํผ์ด ์๋์ค๊ณ , [dev / qa / prod] ์ค dev๊ฐ ์ ์ฉ๋๋ค
- ์คํฌ๋ฆฝํธ์ ์๋๋ฐ ์ฒ์์ ์คํํ ๋๋ ์ ํจ์ค ํ์ดํ๋ผ์ธ์ด ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ dev๋ก ์ ์ฉ
1-3-2. ๋ค์ ๋น๋ํ๋ฉด PROFILE ์ ์ ํํด์ ๋น๋ํ ์ ์๋ค
- ๊ตฌ์ฑ์ ๋ค์ด๊ฐ์ ๋ณด๋ฉด ๋งค๊ฐ๋ณ์๋ก ์ง์ ๋์ด ์๋ค
1-3-3. Stage View
1-4. ๋๋ ํ ๋ฆฌ ์ค๋ช
2. ๋ค์ํ ๋ฐฐํฌ ํ๊ฒฝ์ ์ํ Helm ๋ฐฐํฌํ๊ธฐ
1-1. ์์ดํ ์์ฑ
- name : 2223-deploy-helm
- copy from 2222-deploy-kustomize
1-2. ์ต์ ์์
- Spare Checkout paths > Path : 2223
- Script Path : 2223/Jekinsfile
2. ๋ฐฐํฌํ๊ธฐ
- ์ด์ ์์ดํ ์ ๋ณต์ฌํด์๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌ ํ๊ฒฝ์ด ๋ฏธ๋ฆฌ ๋ค์ด์๋ค
3. ์ฝ๋ ํ์ธ
stage('ํฌ๋ฆ ํ
ํ๋ฆฟ ํ์ธ') {
steps {
// K8S ๋ฐฐํฌ
sh "helm template api-tester-${CLASS_NUM} ./${CLASS_NUM}/deploy/helm/api-tester" +
" -f ./${CLASS_NUM}/deploy/helm/api-tester/values-${params.PROFILE}.yaml -n anotherclass-222-${params.PROFILE}"
// --set replicaCount='3' --set port='80' --set profile='dev' --set nodeport='32223'
}
}
stage('ํฌ๋ฆ ๋ฐฐํฌ') {
steps {
input message: '๋ฐฐํฌ ์์', ok: "Yes"
sh "kubectl apply -f ./${CLASS_NUM}/deploy/kubectl/namespace-${params.PROFILE}.yaml"
sh "helm upgrade api-tester-${CLASS_NUM} ./${CLASS_NUM}/deploy/helm/api-tester" +
" -f ./${CLASS_NUM}/deploy/helm/api-tester/values-${params.PROFILE}.yaml" +
" -n anotherclass-222-${params.PROFILE} --install" // --create-namespace
}
}
- values ํ์ผ์ dev ๋ฅผ ๋ถ์ฌ์ ํ๊ฒฝ๋ณ์ ํ์ผ์ ๋ง๋ค์ด์ค๋ค
- ํ ํ๋ฆฟ์์ ์ฌ์ฉํ๋ ๋ณ์๋ค์ values ํ์ผ์ ์ ์ฅํ๊ณ , ๊ฐ์ ๋ค์ง์ด ์ด๋ค
- set ์ต์ ์ ์ฃผ๋ฉด ์ต์ข ์ ์ผ๋ก ๋ฐ์๋๋ ๋ณ์
- helm ๋ฐฐํฌ์๋ namespace ๋ฅผ ๋ฐ์์ํค๋๊ฒ ์ข์ง ์์์ ๋ฐ๋ก ๋ถ๋ฆฌ
๋ฐฐํฌ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ ํ ๋ง์ฃผํ๊ฒ ๋๋ ๊ณ ๋ฏผ๋ค
์ค์ ๋ฐ์ดํฐ ์ํธํ ๊ด๋ฆฌ
- ์ ํจ์ค๊ฐ ์ปจํ ์ด๋ ๋น๋๋ฅผ ํตํด์ dockerhub๋ก ์ ๋ก๋๋ ํ๊ณ helm ๋ฐฐํฌ๋ ํ๋ค
- dockerhub ์ ์
๋ก๋๋ฅผ ํ๊ธฐ ์ํด์ config.json ํ์ผ์ด ์์ฑ
- ์ํธํ๊ฐ ์๋์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๋ณผ ์ ์๋ค
Jenkins ์ Credential ๋ก ๋ฑ๋ก
- ์ธ์ฆ์๋ฅผ ์ํธํํ ์ํ์์ ์ฌ์ฉํ ์ ์๋ค
- ๋ฐฐํฌ์๋ง๋ค ๋ก๊ทธ์ธ/๋ก๊ทธ์์ํ๋ ๋ช ๋ น์ด๋ฅผ ๋ฃ์ด์ผ ํ๋ค
- ๋ก๊ทธ์์์ ์ ์ ์ ๋ณด ์ญ์
- docker-credential-helpers : ์ํธํ ์ ๊ณต
- Dashboard > Jenkins ๊ด๋ฆฌ > Credentials > System > Global credentials (unrestricted) ์์ [Add Credentials]
- kind : Username with password (๋์ปค ํ๋ธ ๋ก๊ทธ์ธ ํจ์ค์๋ ์ ๋ ฅ)
- Kind : Secret file (์ฟ ๋ฒ๋คํฐ์ค ํด๋ฌ์คํฐ ์ ๊ทผ ์ธ์ฆ์)
์ ๋ก๋ ํ CI/CD Server ์ ๋ง๋ค์ด์ง ์ด๋ฏธ์ง ์ญ์
- ์ปจํ ์ด๋ ๋น๋๋ฅผ ํ๋ค๋ณด๋ฉด ์ด๋ฏธ์ง๊ฐ ๊ณ์ ์๊ธด๋ค
- ์ฉ๋์ ๋ง์ด ์ฐจ์ง ํ ์ ์๋ค.
- ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ฏธ์ง๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ์ญ์ ํด์ค์ผ ํ๋ค
- ์ฟ ๋ฒ๋คํฐ์ค๊ฐ ์ฌ์ฉ ์ํ๋ ์ด๋ฏธ์ง๋ ์๋ ์ญ์ ํด์ค๋ค
stage('์ปจํ
์ด๋ ๋น๋ ๋ฐ ์
๋ก๋') {
steps {
script{
// ๋์ปค ๋น๋
sh "docker build ./${CLASS_NUM}/build/docker -t ${DOCKERHUB_USERNAME}/api-tester:${TAG}"
sh "docker push ${DOCKERHUB_USERNAME}/api-tester:${TAG}"
sh "docker rmi ${DOCKERHUB_USERNAME}/api-tester:${TAG}" // ์ด๋ฏธ์ง ์ญ์
๋ค์์คํ์ด์ค ๋ฐฐํฌ์ ๋ณ๋๋ก ๊ด๋ฆฌ
- ๋ค์์คํ์ด์ค๋ ์ฑ๊ณผ ๋ณ๋๋ก ๊ด๋ฆฌ๋ฅผ ํด์ฃผ๋๊ฒ ์ข๋ค
stage('๋ค์์คํ์ด์ค ์์ฑ') { // ๋ฐฐํฌ์ apply๋ก Namespace ์์ฑ or ๋ฐฐํฌ์ ๋ณ๊ฐ๋ก ๋ฏธ๋ฆฌ ์์ฑ (์ถํ ์ญ์ ์ ๋ณ๋ ์ญ์ )
steps {
withCredentials([file(credentialsId: 'k8s_master_config', variable: 'KUBECONFIG')]) {
sh "kubectl apply -f ./2224/deploy/kubectl/namespace-dev.yaml --kubeconfig " + '"${KUBECONFIG}"'
...
stage('ํฌ๋ฆ ๋ฐฐํฌ') {
steps {
Helm ๋ถ๊ฐ๊ธฐ๋ฅ
- pod ๊ฐ ์์ ํ ๊ธฐ๋๋๋์ง ์ฒดํฌ ํ์
- helm command —wait
- ๋ฐฐํฌํด๋ ์
๊ทธ๋ ์ด๋๊ฐ ์งํ๋์ง ์๋ ๊ฒฝ์ฐ
- metadata.annotaions : ์ ๋ฐฐํฌ ์ ๋ง๋ค ๋๋ค๊ฐ์ ์์ฑ
- ๊ทธ๋์ ๋ฐฐํฌ์๋ง๋ค ์ ๋๋ค๊ฐ์ด ์์ฑ๋์ด์ ์ ๊ทธ๋ ์ด๋๊ฐ ์งํ
์ด๋ฏธ์ง ํ๊ทธ
- api-tester:v1.0.1
- ๋ฒ์ ๊ท์น์ v๋ฅผ ๋นผ๋๊ฒ ๋ง๋ค
- ๊ฐ๋ฐํ๊ฒฝ (์ฆ์๋ฐฐํฌ, ๋ฒ์ ๋ ๋ฌด์๋ฏธ)
- image: api-tester:latest
- pullPolicy: Always (ํญ์ hub์์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ด)
- ๊ฐ๋ฐํ๋ค๋ณด๋ฉด ์ด์ ๋ฒ์ ์ผ๋ก ๋๋ ค๋ฌ๋ผ๊ณ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์์ฒ๋ผ ๋ฒ์ ๋์ ํ๋ฉด ์ด๋ ต๋ค
- image: api-tester:1.0.1-202312.181512 (๋ฐฐํฌ ์๋ง๋ค ์ ํ๊ทธ ๋ฌ๊ธฐ, ๋ ์ง / Git์ปค๋ฐ No / Jenkins ๋น๋ seq)
- pullPolicy: ifNotPresent
- ๊ฒ์ฆํ๊ฒฝ / ์ด์ํ๊ฒฝ (๊ณํ๋ ๋ฐฐํฌ, ๋ฒ์ ๋ ํ์)
- image : api-tester:1.0.1
- pullPolicy: IfNotPresent (Node์ ํด๋น ์ด๋ฏธ์ง๊ฐ ์์ผ๋ฉด ๊ทธ๊ฑธ ๋จผ์ ์ฌ์ฉํ๊ณ , ์์ผ๋ฉด hub ํ์ธ)
'๐ฑ ์ธํ๋ฐ > โ ์ฟ ๋ฒ๋คํฐ์ค ์ด๋๋ ํด๋์ค (์ง์ํธ)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
(16) ArgoCD Image Updater ๋ฅผ ์ด์ฉํ ์ด๋ฏธ์ง ์๋๋ฐฐํฌ (0) | 2025.06.24 |
---|---|
(15) ArgoCD ์ํคํ ์ฒ, Argo Apps ์ค์น ๋ฐ ๋ฐฐํฌ ํด๋ณด๊ธฐ (0) | 2025.06.24 |
[๋ฏธ์ 5] ์ปจํ ์ด๋ ์ด๋ฏธ์ง ์ฌ๋ก ์ค์ต (1) | 2025.06.16 |
(13) Helm ๊ณผ Kustomize - 1 (Helm vs Kustomize, Helm ๋ฐฐํฌ) (1) | 2025.06.15 |
(12) Jenkins Pipeline (๊ธฐ์ด๋ถํฐ Blue/Green ๊น์ง) (1) | 2025.06.14 |