kruise

Kruise

Kruise 는 Kubernetes 위에서 CI/CD 파이프라인을 자동화하는 도구로, Jenkins 를 통해 Gradle 빌드와 Docker 이미지 생성/푸시를 수행하고 Argo CD 에 Helm 차트로 배포를 생성합니다.

Information

Jenkins Job 을 통해 프로젝트를 빌드한 뒤 Argo CD 에 Application 을 생성하고 배포까지 완료합니다.

Prerequisites

How to install

1) Helm 으로 Argo CD, Jenkins 설치

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

2) Jenkins 에서 kruise.init Job 실행

사전 준비: Kruise 소스 저장소 접근용 Credential 생성

3) 테스트 애플리케이션 배포용 seed Job 실행

필요 Credential

  1. 애플리케이션 소스 저장소 접근용
    • Kind: Username with password
    • GitHub Personal Access Token (repo 권한)
  2. 빌드된 이미지 push 용 컨테이너 레지스트리 인증
    • Kind: Username with password
  3. Kubernetes 배포를 위한 Argo CD 인증
    • Kind: Username with password
    • Argo CD Access Token 사용

Argo CD Access Token 생성 예시

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에는 포함하지 않습니다.

예시(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

Global setting

$KUBECONFIG

Helm chart 가 설치될 클러스터를 지정하는 환경 변수입니다. helm 명령 실행 전에 설정해 주세요.

https://helm.sh/docs/helm/helm/#helm

export KUBECONFIG={kubeconfig yaml 파일 경로}
echo $KUBECONFIG