앞선 게시물을 통해 ArgoCD를 설치하였다. 그러면 이제 어떻게 Github Event를 받고 Application을 생성하는지에 대해 알아보자!
ArgoCD 동작 방식
Github Sync 방법
기본적으로 ArgoCD는 Github SSH 키를 등록해서 주기적으로 Polling하고 Code를 가지고 온다.
그래서 가장 먼저 Github SSH키를 등록하는 것이 선행되어야 한다. 그 방법은 아래와 같다.
먼저 SSH Key 생성를 생성한다.
- Local PC에서 아래 명령어를 입력하면 Public, Private Key가 생성된다.
ssh-keygen -t ed25519 -C "test@naver.com"
그리고 Github SSH 설정에서 SSH 키를 등록하면 된다.
- 이렇게 등록하게 되면 해당 Key를 이용해 Repo에 접근 할 수 있다.
- 그리고 궁극적으로는 회사 Repo에 ArgoCD가 접근해야하므로 SSO 연결까지 진행하면 된다.
마지막으로 ArgoCD에서 Git repo를 등록하면 된다.
- 위 SSH 키가 정상적으로 등록됬다면 아래와 같이 입력 후 Connect를 하면 이상이 없을 것이다.
- 아래 내용은 SSH Private key를 가지고 Repo URL에 접근하겠다는 설정이다.
위와 같이 Git에 접근을 한다면 기본적으로 ArgoCD는 3분 주기로 Polling한다.
즉, 최악의 경우에는 Git에 Merge가 되더라도 ArgoCD에서는 3분 후에 인지하게 되고 실제 배포까지 3분이 소요된다.
그래서 많은 곳에서는 Github Webhook Event를 받아서 즉시 배포가 되도록 한다.
Github Webhook 설정
Github Webhook을 설정하게 되면 GIt 변경분에 대해서 ArgoCD로 Push Event가 발생한다.
그리고 ArgoCD에서 이를 알아차리고 Application Sync를 맞추게 된다.
Webhook 설정하는 방법도 어렵지 않다. 먼저 Github Webhook에서 설정을 한다.
- URL은 https://applicationset.example.com/api/webhook 을 사용하며 각자 맞춰 사용하면 된다.
- 그리고 Secrets 값을 설정하면 된다.
- Secrests 값이 필수는 아니나, 설정하지 않으면 아무나 Push 하게 되고 설정하면 해당 Key를 확인한다.
- 즉, 보안상 더 좋은 방법은 Secrets을 설정하는 것이다.
- 각 Repo별로 설정할 수도 있지만, 그러면 ArgoCD에 연동하는 모든 Repo에 설정해야 하므로 편의상 Org로 1개만 설정한다.
Github Secrets을 설정했다면 ArgoCD Helm values에도 반영해줘야 한다.
# github secrets 설정
secret:
createSecret: true
githubSecret: "m8VZ6ovaxxxxx"
argocd-secret의 Secrets에 Base64로 인코딩되어 저장된다.
>k get secret argocd-secret -n argocd -o yaml
apiVersion: v1
data:
webhook.github.secret: xxxxxxxxxxxxxxxx
kind: Secret
metadata:
annotations:
meta.helm.sh/release-name: argocd
meta.helm.sh/release-namespace: argocd
creationTimestamp: "2023-05-09T08:34:32Z"
labels:
app.kubernetes.io/component: server
app.kubernetes.io/instance: argocd
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: argocd-secret
app.kubernetes.io/part-of: argocd
helm.sh/chart: argo-cd-5.32.1
name: argocd-secret
namespace: argocd
resourceVersion: "34022877"
uid: e5125064-8797-4bc3-8f47-5632eae51930
type: Opaque
그리고 이상이 없다면 아래와 같이 변경분에 대해서 Event가 생성되는 것을 볼 수 있다.
- 하지만, 여기서 중요한것은 ArgoCD에 설정되어 있는 WAF 또는 SecurityGroup에 Github Webhook IP가 등록되어야 한다.
- Webhook IP는 Github에서 제공해주므로 https://api.github.com/meta 에서 Hook 부분을 참고하면 된다.
즉, 아래와 같은 구성으로 동작한다고 보면 된다.
이제 ArgoCD 설치와 Github 연동 및 Webhook 연동까지 알아보았다.
그럼 이제 마지막은 배포할 Application을 등록하는 방법만 남았다. Application 생성이 가장 중요한 부분이다.
하지만 어렵지는 않다ㅎㅎ
다음 게시물에서는 Application을 설정하는 방법과 전체 적인 ArgoCD Flow에 대해 한번 알아볼 예정이다!!
끝!
'기술 이모저모 > [Ops] Devops' 카테고리의 다른 글
[AWS][istio] istio LocalityLbSetting, CrossAZ 데이터 비용 절감 (0) | 2023.11.05 |
---|---|
[ArgoCD] Application 생성 방법 = ArgoCD를 이용한 배포 (0) | 2023.05.14 |
[ArgoCD] CD Tool 도입개요 및 설치방법 (0) | 2023.05.13 |
[Vault] Vault 서비스 사용 방법[2/2] (0) | 2023.04.30 |
[Vault] Vault 서비스 사용 방법[1/2] (0) | 2023.04.30 |