GitOps

Client Side Apply1. 리소스를 배포하면 kubectl.kubernetes.io/last-applied-configuration 필드가 추가된다.다음과 같은 매니페스트 파일을 kubectl apply 명령으로 리소스를 생성 후 리소스 상세 정보를 조회하면 매니페스트에는 선언하지 않았던 annotation 필드가 추가되어 있는 것을 볼 수 있다.cat curl-pod-01에는 annotation을 설정하지 않았지만 리소스 상세 정보를 조회하면 kubectl.kubernetes.io/last-applied-configuration 필드가 추가되어 있다.root@cilium-ctr:~# kubectl get po -oyaml curl-pod-01 apiVersion: v1kind: Podmetad..
ArgoCD가 변경사항을 감지한 해당 리소스만 배포 작업을 진행하도록 설정하기 위한 옵션이다.ApplyOutofSyncOnly : false변경사항이 발생한 리소스만 배포하는 것이 아니라 모든 리소스를 대상으로 kubectl apply -f 명령을 수행한다. Application 내 배포 된 리소스가 많을 경우 불필요한 동작을 수행하면서 쿠버네티스 클러스터의 API Server에 부하를 주게된다. ApplyOutofSyncOnly : true아래 명령을 통해 ApplyOutOfSyncOnly 옵션을 활성화하면 변경사항이 발생한 리소스만 배포 작업을 진행한다.argocd app set --sync-option ApplyOutOfSyncOnly=true
Auto-Sync 설정이 되어 있어도 ArgoCD는 배포된 리소스의 안전성을 위해 Git에 더이상 정의되지 않은 리소스(삭제된 리소스)를 자동으로 삭제하지 않는다. Prune Resource는 리소스를 삭제도 자동으로 처리하고 싶은 경우 사용하는 옵션이다. 그 외에도 Prune Resource와 같이 사용할 만한 Prune Last, sync-options 옵션을 같이 정리한다.Prune Resource1. Deployment 리소스 삭제 화면 (Out of Sync)별도 설정이 없는 경우 매니페스트에서 리소스를 제거 후 다시 배포하면 리소스는 삭제되지 않고 Out of Sync만 표시된다.Out of Sync 표시된 리소스는 ArgoCD Web UI에서 삭제하거나 kubectl 명령어로 삭제하면 Syn..
ArgoCD를 통한 동기화 과정에 Resource Hook을 통해 특정 시점(PreSync, Sync, PostSync)에 추가적인 작업을 할 수 있다.Resource Hook1. Resource Hook CyclePreSync : 매니페스트 적용 전에 실행된다Sync : 모든 PreSync 훅이 완료되고 성공한 후, 매니페스트 적용과 동시에 실행된다PostSync : 모든 Sync 훅이 완료되고 성공한 후, 성공적인 매니페스트 적용과 모든 리소스가 Healthy 상태인 경우에 실행된다SyncFail : 동기화 작업이 실패했을 때 실행된다PostDelete : 모든 애플리케이션 리소스가 삭제된 후 실행된다2. Resource Hook 설정 배포할 리소스에 argocd.argoproj.io/hook 어노테..
· GitOps/Git
Git을 이용한 Branch 전략개발 프로세스에서 어떤 브랜치를 구성하고 관리할지에 대한 규칙과 가이드라인이다. 다수의 개발자가 협업하는 환경에서는 개발 팀의 코드에 대한 효율적인 관리와 협업을 위한 체계적인 방법이 필요한데, 이 때 여러 브랜치로 나누어 관리하는 방식이다. Branch 전략의 필요성① 병렬 개발: 여러 개발자가 동시에 여러 기능을 개발할 때 서로의 개발 작업에 끼치는 영향을 최소화할 수 있다.② 코드 안정성: 메인 브랜치의 안정성을 유지하면서 새로운 기능을 개발할 수 있다.③ 릴리스 관리: 특정 버전의 코드를 쉽게 관리하고 배포할 수 있다.④ 버그 수정: 긴급한 버그 수정을 메인 개발 흐름과 분리하여 처리할 수 있다.⑤ 실험적 기능: 리스크가 있는 새로운 기능을 안전하게 시도해볼 수 있..
· GitOps/Git
reset실수로 커밋한 경우 이전 상태로 돌아가는 방법이다. 옵션을 값을 이용해서 soft, mixed, hard 모드로 사용한다. 지정된 커밋의 상태로 돌아가기 때문에 가장 최근 커밋한 내역과 지정한 커밋 사이에 진행했던 커밋 히스토리가 삭제된다. reset 수행 이력이 남지 않기 때문에 다수가 협업하는 브랜치나 환경에서 사용하는 것은 권장하지 않는다. 개인 브랜치에서 잘못 커밋한 최근 변경 사항을 취소하는 경우에만 사용하는 것이 좋다.① soft 모드HEAD를 지정한 커밋으로 이동 시키면서 커밋 내역만 취소하면서 스테이징 영역과 작업 디렉터리의 변경 사항은 유지된다.git reset --soft ② mixed 모드HEAD를 지정한 커밋으로 이동 시키면서 커밋 내역과 스테이징 영역을 취소한다. 작업 디..
· GitOps/Git
Branch Merge 전략 네 가지① Fast Forward자식 브랜치에서 변경 및 수정한 작업 내용이나 파일이 부모 브랜치에서 변경한 이력이 없어서 충돌 이슈가 없이 병합되는 경우다.② 3 Way Merge부모와 자식 브랜치에서 같은 파일을 수정할 경우 병합 시 충돌 문제가 발생하는데, 메인 브랜치로 병합하는 과정에 세 개의 커밋(공통 조상 커밋, 부모 브랜치 최신 커밋, 자식 브랜치 최신 커밋)을 비교해 수동으로 병합하는 방식이다. 메인 브랜치에서 충돌 이슈를 해결한다. 주로 메인 브랜치는 전체 프로젝트의 리더가 관리 및 담당하게 되는데 프로젝트의 규모가 클 수록 병합 과정이 늘어나면서 병목이 발생할 수 있다.③ Rebase자식 브랜치에서 부모 브랜치의 최신 버전으로 다운로드 및 병합하면서 자식 브..
· GitOps/Git
Git Install① WindowsGit 사이트의 다운로드 페이지로 이동해서 Click here to download 버튼을 클릭해서 설치한다.② Linux - Redhat 계열sudo yum install git③ Linux - Ubuntu 계열sudo apt-get install git 기본 설정 ① 기본 사용자 정보 설정사용자의 이름이나 이메일, 사용할 에디터 등의 기본값 설정을 CLI를 이용해서 수행할 수 있다. 설정할 때는 해당 값이 어느 범위에 걸쳐서 적용할지 지정할 수 있는데, global, system, local로 구분해서 설정한다. system : 시스템 내의 모든 사용자에게 적용 시 사용되며, /etc/gitconfig 에 설정 값이 저장된다.global : 현재 접속한 사용자에게만..
· GitOps/Git
Git 버전 제어 시스템(VCS, Version Control Service)으로 소스 제어 시스템이라고 하기도 한다. 소프트웨어, 문서 및 기타 정보의 변경 이력을 관리하는데 도움이 되는 시스템이다. Git, Subversion, Bitbucket, Vault  등 다양한 도구가 존재한다. 버전 제어거의 모든 유형의 파일을 대상으로 변경 사항을 기록하고 필요시 이전 상태로 되돌릴 수 있게 해주는 시스템이다. 마지막으로 수정한 사람, 수정 시점을 파악할 수 있고 파일을 분실한 경우에도 복구가 가능하게 해준다. 버전 제어 시스템이 있기 전에는 로컬에서 각자가 파일을 관리 했는데, 작업자 간 협업에 불편함을 해소하기 위해 중앙 집중형 버전 제어 시스템(CVCS)가 만들어 졌다. 중앙 집중형 버전 제어 시스템..
· GitOps
GitOps의 정의Weaveworks 에서 처음으로 사용한 용어로 데브옵스를 적용하는 방법 중 하나다. Git을 통해 코드로 인프라와 애플리케이션을 관리하는 방식이다. Git을 소스 제어 시스템으로 사용해서 Git 저장소에 시스템의 원하는 상태(Desired State)를 코드로 정의하고, 원하는 상태가 되도록 클러스터와 애플리케이션의 배포 상태를 비교해서 지속적으로 동기화하는 과정을 자동화한다. 이를 통해 클라우드 네티이브 환경의 애플리케이션에 대한 배포와 운영을 자동화한다. GitOps의 원칙Git을 단일 정보 소스(Single Source of Truth, SSOT)로 활용해 Git 저장소에 저장된 클러스터 설정(매니페스트 파일)을 기준으로 대상 배포 환경(개발, 운영, 스테이징 등)에 배포한다. ..
EndiYou
'GitOps' 카테고리의 글 목록