Argo CD와 CI/CD 통합
1️⃣ Argo CD와 Jenkins 연동
Jenkins는 매우 인기 있는 CI/CD 도구로, Argo CD와 연동하여 강력한 자동화된 배포 파이프라인을 구축할 수 있습니다. Argo CD는 GitOps 방식을 따르기 때문에 Jenkins와 연동하여 CI 파이프라인을 실행한 후, Argo CD는 Kubernetes 클러스터에 애플리케이션을 배포합니다.
1. Jenkins와 Argo CD 연동 개요
Jenkins에서 애플리케이션을 빌드하고, Git 저장소에 배포 파일을 푸시하면 Argo CD가 이를 감지하고 배포합니다. Jenkins는 Argo CD API를 호출하여 Kubernetes에 애플리케이션을 배포할 수 있습니다.
2. Jenkins에서 Argo CD API 호출 예시
pipeline {
agent any
stages {
stage('Deploy to Kubernetes') {
steps {
script {
sh 'argocd app sync my-app'
sh 'argocd app wait my-app --sync'
}
}
}
}
}
이 Jenkins 파이프라인은 argocd
CLI 명령어를 통해 Argo CD에 애플리케이션을 동기화하고 기다립니다.
3. Jenkins와 Argo CD 연동을 위한 설정
Jenkins에서 Argo CD에 접근하려면 argocd
CLI를 설치하고, API 인증을 위한 토큰을 사용해야 합니다. 이 인증 정보를 Jenkins의 환경 변수로 설정해주면 됩니다.
2️⃣ Argo CD와 GitHub Actions 연동
GitHub Actions는 GitHub에서 제공하는 CI/CD 도구로, GitHub 저장소에 통합된 자동화된 워크플로를 실행할 수 있습니다. Argo CD와 함께 사용하여, GitHub에서의 변경 사항을 자동으로 Kubernetes 클러스터에 배포할 수 있습니다.
1. GitHub Actions 워크플로 예시
GitHub Actions에서 Argo CD를 호출하여 애플리케이션을 배포할 수 있습니다.
name: Deploy to Kubernetes with Argo CD
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up kubectl
uses: azure/setup-kubectl@v1
- name: Sync with Argo CD
run: |
argocd login argocd.example.com --username admin --password ${{ secrets.ARGOCD_PASSWORD }}
argocd app sync my-app
argocd app wait my-app --sync
2. GitHub Actions와 Argo CD 설정
GitHub Actions에서 Argo CD를 사용하려면 argocd
CLI가 설치된 환경에서 로그인 및 애플리케이션 동기화 작업을 해야 합니다. 환경 변수로 Argo CD의 사용자 이름과 비밀번호를 설정합니다.
3️⃣ Argo CD와 GitLab CI/CD 연동
GitLab CI/CD는 GitLab의 내장된 CI/CD 시스템으로, GitLab 저장소에서 자동화된 배포를 지원합니다. GitLab CI/CD와 Argo CD를 연동하여 애플리케이션을 자동으로 배포할 수 있습니다.
1. GitLab CI/CD 파이프라인 예시
stages:
- deploy
deploy:
stage: deploy
script:
- argocd login argocd.example.com --username admin --password $ARGOCD_PASSWORD
- argocd app sync my-app
- argocd app wait my-app --sync
only:
- master
2. GitLab과 Argo CD 설정
GitLab CI/CD에서 Argo CD를 사용하려면 GitLab Runner 환경에서 argocd
CLI를 사용할 수 있도록 설정해야 하며, 인증 정보는 GitLab의 Secret Variables에 저장해야 합니다.
4️⃣ Argo CD와 Tekton을 활용한 CI/CD
Tekton은 Kubernetes 네이티브 CI/CD 파이프라인을 생성할 수 있는 도구입니다. Argo CD와 Tekton을 연동하여 Kubernetes 환경에서 CI/CD 파이프라인을 구축할 수 있습니다.
1. Tekton과 Argo CD 연동 개요
Tekton은 파이프라인, 작업 및 리소스를 정의하여 CI/CD 파이프라인을 구축하고, Argo CD는 배포 후 애플리케이션의 상태를 관리합니다.
2. Tekton 파이프라인 예시
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: deploy-pipeline-run
spec:
pipelineRef:
name: deploy-pipeline
serviceAccountName: pipeline
params:
- name: APP_NAME
value: my-app
- name: REPO_URL
value: https://github.com/my-org/my-app.git
3. Tekton과 Argo CD 설정
Tekton에서 작업을 실행하고, Argo CD는 이를 감지하여 Kubernetes 클러스터에 애플리케이션을 배포합니다. Tekton의 PipelineRun
에서 Argo CD CLI를 호출하여 애플리케이션을 동기화하고 상태를 확인할 수 있습니다.
5️⃣ Argo CD를 활용한 Kubernetes Operator 배포
Kubernetes Operator는 Kubernetes 클러스터 내에서 애플리케이션의 생애 주기를 관리하는 데 사용됩니다. Argo CD와 Kubernetes Operator를 연동하여 애플리케이션을 관리할 수 있습니다.
1. Operator를 통한 애플리케이션 관리
Argo CD는 GitOps 방식으로 Kubernetes 리소스를 관리하는데, Kubernetes Operator는 특정 애플리케이션의 생애 주기 관리 및 상태 모니터링을 자동화합니다. 이를 통해 애플리케이션 배포 후 운영까지 Argo CD와 Kubernetes Operator가 협력하여 관리할 수 있습니다.
2. Operator 배포 예시
Operator를 배포하는 예시를 보면, 특정 애플리케이션 리소스를 관리하는 CustomResource를 정의할 수 있습니다.
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-operator
spec:
replicas: 1
template:
spec:
containers:
- name: my-operator
image: my-operator:latest
3. Argo CD와 Operator 배포 예시
Argo CD는 Git 리포지토리에서 변경 사항을 추적하여 Kubernetes 클러스터에 자동으로 배포할 수 있습니다. GitOps 방식으로 Kubernetes Operator의 배포를 관리할 수 있습니다.
argocd app sync my-operator