Search

ArgoCD - Cross Account EKS Cluster 연동

PublishDate
2023/07/13
Category
AWS
Kubernetes
ArgoCD
Tag & Keyword
IRSA
OIDC
EKS

1. Overview

ArgoCD가 다른 계정의 EKS Cluster에 배포하길 희망 때 이 문서를 활용할 수 있습니다. 아래 사진은 이 문서에서 전달할 내용에 대한 아키텍처입니다.
이 문서를 통해 다음과 같은 설정이 가능합니다.
Source계정의 ArgoCD가 Target계정의 EKS Cluster에 CD를 하기 위한 설정을 다룹니다.
Target IAM Role을 위임받아서 사용하기 때문에 EKS Cluster 뿐만 아니라, Target IAM Role이 가진 권한 범위 내에서 AWS Resource 또한 관리할 수 있습니다.
IRSA(IAM Role for Service Account)를 사용해서, EKS 내부의 Resource별로 권한을 제어할 수 있습니다.

2. Scenario

Source 계정의 EKS (Source-EKS) 에는 ArgoCD가 설치되어 있습니다.
ArgoCD는 Source-EKS 뿐만 아니라 Target 계정의 EKS (Target-EKS) 에도 배포하고 싶습니다.
이 경우, Cross-EKS 통신을 하기 위해서 IRSA를 사용합니다.
Pod에게 IAM Role (Source-Role)과 연동된 Service Account를 부여하고, Source-Role이 Target Account의 IAM Role (Target-Role)을 사용할 수 있도록 설정합니다.
Target-Role은 Target-EKS에 대한 접근 권한을 가지고, 결과적으로 다음 순서로 Cross EKS 통신이 작동ㄹㄹ합니다.
ArgoCD → Source-Role → Target-Role → Target-EKS(or Target Account AWS Resource)

3. Prerequisite

아래 내용은 이 문서에서 다루지 않습니다. 해당 내용들은 이미 수행되어있거나, 중간 과정에서 설정할 수 있다는 전제로 작성한 문서입니다.
양쪽 계정에 EKS Cluster가 생성 되어있다.
양쪽 EKS에 접근 권한을 가지고 있다.
각 Cluster에 OIDC가 연동 되어있다.
양쪽 계정의 Network는 연결되어있다. (Peering, TGW 등)
Source-EKS의 ArgoCD를 외부로 노출할 수 있다. (Ingress, 포트포워딩 등 사용)
Source 계정에 ArgoCD가 설치되어있다.

4. Setting

4.1. Source Account 설정

4.2. Target Account 설정

4.3. ArgoCD에 Target-EKS 등록

5. 참고