IaC/CI CD Tool

5. GitLab ArgoCD 연동

Somaz 2023. 8. 10. 21:34
728x90
반응형

Overview

오늘은 GitLab을 ArgoCD와 연동하여 GitOps 방식으로 애플리케이션을 배포하는 방법을 알아본다.
ArgoCD는 Git 저장소의 상태를 Kubernetes 클러스터에 자동으로 반영하는 GitOps 도구이고, GitLab은 CI/CD를 위한 버전 관리 플랫폼으로 널리 활용된다.

 

하지만 GitLab과 ArgoCD의 SSH 연동은 사내 GitLab 서버를 사용할 경우 특히 SSH `known_hosts` 설정이 필요해 다소 까다로울 수 있다.

 

GitLab과 ArgoCD의 연동을 통해 CI(Build) → CD(Deploy)의 자동화를 실현하고자 하는 팀에게 실용적인 참고가 될 수 있을 것이다.

 

 

 

https://medium.com/@andrew.kaczynski/gitops-in-kubernetes-argo-cd-and-gitlab-ci-cd-5828c8eb34d6

 

 

 

📅 관련 글

 

Gitlab

2023.04.20 - [IaC/CI CD Tool] - 1. GitLab이란? / 개념 및 설치

2023.04.23 - [IaC/CI CD Tool] - 2. GitLab이란? / GitLab Runner 개념 및 설치

2023.04.24 - [IaC/CI CD Tool] - 3. GitLab이란? / GitLab CI/CD

2023.08.08 - [IaC/CI CD Tool] - 4. GitLab 버전 업그레이드

2023.08.08 - [IaC/CI CD Tool] - 5. GitLab ArgoCD 연동

2024.05.28 - [IaC/CI CD Tool] - 6. Gitlab CI Build(with GCP Artifact Registry, Harbor)

2024.06.18 - [IaC/CI CD Tool] - 7. Gitlab CI Template 활용

2025.01.09 - [IaC/CI CD Tool] - 8. Gitlab Repository Mirroring 방법

 

 

ArgoCD

2023.05.16 - [IaC/CI CD Tool] - ArgoCD란?

2023.08.09 - [IaC/CI CD Tool] - ArgoCD 설치 AWS & GCP

2023.10.02 - [IaC/CI CD Tool] - ArgoCD ApplicationSet이란? (작성 방법)

2023.10.08 - [Container Orchestration/Kubernetes] - 2. Kustomize + ArgoCD ApplicationSet

2024.02.02 - [IaC/CI CD Tool] - Argo Workflow란?

2024.04.09 - [IaC/CI CD Tool] - ArgoCD SSO 구성 가이드(GCP Oauth)

2025.02.19 - [IaC/CI CD Tool] - ArgoCD SSO 구성 가이드(Gitlab)

 

 

 

 

 


 

 

 

GitLab ArgoCD 연동

 

ArgoCD와 GitLab 연동방법은 아주 간단하다. 생각보다 자료가 없어서 연동하는데 고생을 했다.

 

Settings - Repository certificates and known hosts를 보면 bitbucket.org와 github와 gitlab 그리고 azure등의 ssh key가 들어가 있다.

 

그러나 사내에서 구축한 gitlab을 연동하려면 known hosts에 ssh key를 새로 등록해줘야 한다.

 

 

 

아래의 명령어를 사용해서 ssh key를 가져온다.

$ ssh-keyscan gitlab.somaz.link
# gitlab.somaz.link:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
gitlab.somaz.link ssh-rsa AAAAB3NzaC1y...
# gitlab.somaz.link:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
gitlab.somaz.link ecdsa-sha2-nistp256 AAAAE2V...
# gitlab.nerdystar.io:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
gitlab.somaz.link ssh-ed25519 AAAAC3...
# gitlab.somaz.link:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3
# gitlab.somaz.link:22 SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.3

 

 

 

그리고 아래와 같이 `Settings- Repository certificates and known hosts` 에 등록해준다.

Settings- Repository certificates and known hosts

 

 

 

 

Helm Chart로 Gitlab ssh key 등록

  • 2025 04.03 기준
global:
  # -- Default domain used by all components
  ## Used for ingresses, certificates, SSO, notifications, etc.
  domain: argocd.somaz.link
  # SSH known hosts for Git repositories
  ## Ref: https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#ssh-known-host-public-keys

configs:
  cm:
    timeout.reconciliation: 180s # default is 180s
  params:
    create: true
    server.insecure: false  # default: false
  # SSH known hosts for Git repositories
  ## Ref: https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#ssh-known-host-public-keys
  ssh:
    # -- Additional known hosts for private repositories
    extraHosts: |
      gitlab.somaz.link ssh-rsa AAAAB3...
      gitlab.somaz.link ecdsa-sha2-nistp256 AAAA...
      gitlab.somaz.link ssh-ed25519 AAAA...

 

 

 

 

 

 

 


 

 

 

 

마무리

 

ArgoCD와 GitLab의 연동은 단순히 저장소를 등록하는 것을 넘어, Git 기반의 선언적 배포 자동화(GitOps)를 실현하는 핵심 요소다.


특히 사내 GitLab 서버를 운영 중이라면, `ssh-keyscan` 을 통해 SSH 공개키를 수동 등록해주는 과정은 반드시 필요하며, 이 과정을 생략하면 인증 오류로 인해 Application Sync가 실패할 수 있다.

 

이번 글에서 설명한 과정을 통해 GitLab과 ArgoCD를 안정적으로 연동하고, 향후 Helm Chart, Kustomize, ApplicationSet 등 다양한 방식으로 확장할 수 있다.

 

향후에는 GitLab CI 파이프라인에서 Helm chart 버전을 자동 커밋하고, ArgoCD가 이를 감지해 자동 배포하도록 구성하는 완전 자동화 GitOps 환경 구성도 다뤄볼 예정이다.

 

GitOps를 구축 중이라면, GitLab과 ArgoCD의 연동은 반드시 익혀야 할 기본기다.

 

 

 

 

 

 


Reference

https://github.com/somaz94/helm-chart-template

 

 

728x90
반응형

'IaC > CI CD Tool' 카테고리의 다른 글

Argo Workflow란?  (2) 2024.02.09
ArgoCD ApplicationSet이란? (작성 방법)  (0) 2023.10.06
ArgoCD 설치 AWS & GCP  (0) 2023.08.09
4. GitLab 버전 업그레이드  (0) 2023.08.08
3. Github Action (With Automate Pull Request)  (0) 2023.05.23