이 글에 대한 개선 버전 입니다.
https://dev-junhee.tistory.com/79
Kustomize, Helm Chart 시스템 구축
Helm은 템플릿 엔진이고 Kustomize는 오버레이 메커니즘을 따릅니다.Helm Chart에서 템플릿된 YAML 파일을 불러옵니다.Kustomize 가 환경별(Dev,Stg,Live) 로 YAML 파일을 수정(Patch/Overlay) 합니다.완성된 Yaml 이
dev-junhee.tistory.com
Helm Chart 를 S3 가 아닌 Git으로 이전
- 현재 Helm Chart 는 Object Storage 에 올라가 있어, 수정이 쉽지 않고 심지어 Public 하게 공개 되어 있다
- 수정하려면 로컬에서 Helm Package 작업을 한 뒤 S3 Upload 하는 불편한 과정을 거쳐야 함
- Helm Chart 를 Git으로 옮기고, 폴더 Hierarchy 구조 변경
├── backend
│ ├── Chart.yaml
│ ├── templates
│ │ ├── deployment.yaml
│ │ └── service.yaml
│ └── values.yaml
├── frontend
│ ├── Chart.yaml
│ ├── templates
│ │ └── job.yaml
│ └── values.yaml
└── socket
├── Chart.yaml
├── templates
│ ├── configmap.yaml
│ ├── service.yaml
│ └── statefulset.yaml
├── values-prod.yaml
└── values.yaml
ArgoCD 에서 Gitlab 으로 바로 붙는 경우, 인증도 되고 Charts 로 바로 사용 가능하다.
Kustomize 를 통해 Gitlab Repo 를 바라보려면, Repo 가 Chart 형태를 갖춰야 한다.
Kustomize 를 하는 서버에서 Charts 로 접근이 가능해야 한다.
따라서 Charts 에 대한 수정 사항을 Push 한 뒤 로컬에서 아래 명령어 실행
간단하게 object Storage 에 넣을 걸 Gitlab에 넣는 작업으로 개선하였다.
# 패키징 하기 (폴더 이름으로 수정 사항 있으면 아래 작업으로 반영)
helm package backend
# 퍼블리싱하기 (gitlab.com Access)
curl --fail-with-body --request POST \
--form 'chart=@backend-0.1.0.tgz' \
--user charts:glpat-xmEcybDSdMFaR1ZRDb_j \
https://gitlab.com/api/v4/projects/83/packages/helm/api/stable/charts
Kustomize 에서 Charts 세팅
helmCharts:
- name: backend # CHART 이름
repo: https://gitlab.com/api/v4/projects/83/packages/helm/stable # Chart 주소, Project=83 이고, channel 은 stable 이다.
version: 0.1.0
releaseName: example-helm
namespace: default
valuesFile: values.yaml
Jenkins를 이용한 자동화
@Library('shared-library-teams') _ // Shared Library (Jenkins > System > Global Pipeline)
pipeline {
agent any
stages {
stage('Checkout') {
steps {
script{
checkout([
$class: 'GitSCM',
branches: [[name: "main"]],
userRemoteConfigs: [[credentialsId: 'gitlab-access-token', url: "http://gitlab.com/helmcharts/charts.git"]]
])
}
}
}
stage("delete exist charts") {
steps {
script{
try{
def runServer = sh(script: """
helm package backend
helm package frontend
curl --fail-with-body --request POST \
--form 'chart=@backend-0.1.0.tgz' \
--user charts:glpat-access--token\
https://gitlab.com/api/v4/projects/83/packages/helm/api/stable/charts
curl --fail-with-body --request POST \
--form 'chart=@frontend-0.1.0.tgz' \
--user charts:glpat-access-token \
https://gitlab.com/api/v4/projects/83/packages/helm/api/stable/charts
""", returnStatus: true, returnStdout: true)
}catch (Exception e){
echo "fail"
}
}
}
}
}
}
- Application Kustomize 수정
기존 base/kustomization.yaml 에서 dev 로 helmChart 선언 이동
helmCharts:
- name: backend
repo: https://gitlab.com/api/v4/projects/83/packages/helm/stable
version: 0.1.0
releaseName: example
namespace: default
valuesFile: values.yaml
values.yaml 추가
# 사용하지 않는 값들은 Default 유지
# 사용 하는들에 대해서는 Values.yaml (Kustomize) 에 표기
#### Deployment Conf ####
image: example-image
imagePullSecrets:
- name: ncpsecret
replicas: 1
#### Application Conf ####
applicationPort: 8080
healthcheckPath: /
#### Security Enabled ####
security:
enable: false
#### Common Environment ####
commonEnv:
enable: true
type: "dev" # config-map, secret 등의 namesuffix 로 들어감
#### Live Mode ####
isLive:
enable: false # true or false
cpuRequest: # ex) 100m, 3, 5
memRequest: # 1Gi, 512Mi
diskRequest: # 옵션, 1Gi, 500Mi
minReplicas:
maxReplicas:
hpaCpu: # request 기반 Percentage
hpaMem:
###################
ArgoCD 에서 공통 리소스를 공유 하다보니 Out Of Sync 발생
https://argo-cd.readthedocs.io/en/stable/user-guide/diffing/
System-level diff 적용 (argocd-cm)
resource.customizations.ignoreDifferences.all:
managedFieldsManagers:
- kube-controller-manager
jsonPointers:
- /metadata/labels
'Cloud' 카테고리의 다른 글
[Gitlab] Backup, Restore 이후 500 에러 트러블 슈팅 (1) | 2025.01.13 |
---|---|
[CSAP] K8S Node Init Script (2) | 2024.12.27 |
[ArgoCD] 계정 생성 (2) | 2024.12.27 |
[ArgoCD] FE 배포 Helm 구성기 (3) | 2024.12.27 |
[Tempo] Grafana Tempo 적용기 (2) (1) | 2024.11.19 |
댓글