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가 설치되어있다.