Kruise 는 Kubernetes 위에서 CI/CD 파이프라인을 자동화하는 도구로, Jenkins 를 통해 Gradle 빌드와 Docker 이미지 생성/푸시를 수행하고 Argo CD 에 Helm 차트로 배포를 생성합니다.
Jenkins Job 을 통해 프로젝트를 빌드한 뒤 Argo CD 에 Application 을 생성하고 배포까지 완료합니다.
helm repo add argo https://argoproj.github.io/argo-helm
helm repo add jenkins https://charts.jenkins.io
helm dependency update ./helm
helm install argo-cd argo/argo-cd -f helm/values-argocd.yaml
helm install jenkins jenkins/jenkins -f helm/values-jenkins.yaml
kruise.init Job 실행사전 준비: Kruise 소스 저장소 접근용 Credential 생성
필요 Credential
argocd login <ARGOCD_SERVER> --username admin --password <ADMIN_PASSWORD>
argocd account generate-token --account kruise-admin
kruise.yaml 설정프로젝트 저장소 루트에 kruise.yaml(YAML)을 추가하면 Jenkins 파라미터와 병합하여 다음 작업에 사용합니다. Jenkins Job에서는 저장소 URL과 크레덴셜 정도만 입력하고, 나머지 필드는 kruise.yaml 또는 기본값을 사용합니다. projectRepositoryUrl은 Jenkins Job 필수 파라미터이며 kruise.yaml에는 포함하지 않습니다.
projectName, projectRepositoryBranch, clusterName, imagePathphase: 빈 문자열helmChartName: kruise-standard-serverhelmChartValues: Jenkins 기본값(Helm values 문자열)override: falseproxy, noProxy: 빈 문자열kruiseRepositoryUrl, kruiseBranch: Jenkins 파라미터 기본값 사용 가능예시(YAML):
projectName: sample-app
projectRepositoryBranch: main
clusterName: in-cluster
imagePath: registry.example.com/sample-app
phase: dev
helmChartName: kruise-standard-server
helmChartValues: |
replicaCount=2
ingress.enabled=true
override: true
Helm chart 가 설치될 클러스터를 지정하는 환경 변수입니다. helm 명령 실행 전에 설정해 주세요.
https://helm.sh/docs/helm/helm/#helm
export KUBECONFIG={kubeconfig yaml 파일 경로}
echo $KUBECONFIG