Argo CD용 프라이빗 엔드포인트 접근 구성
Argo CD용 프라이빗 엔드포인트 접근 구성
VPC와 Argo CD 엔드포인트 간 트래픽이 공개 인터넷을 거치지 않고 AWS 네트워크 내에 머물도록 프라이빗 엔드포인트 접근을 구성하는 방법을 설명합니다.
출처: 문서
본문
기본적으로 Argo CD 엔드포인트는 공개 인터넷으로 접근할 수 있습니다. 프라이빗 엔드포인트 접근을 구성하면 VPC와 Argo CD 엔드포인트 간의 트래픽이 공개 인터넷을 거치지 않고 AWS 네트워크 내에 머물게 됩니다.
프라이빗 접근을 활성화하면 AWS가 DNS(Domain Name System)를 업데이트해 Argo CD 엔드포인트 호스트 이름이 VPC 엔드포인트와 연결된 프라이빗 IP 주소로 해석되도록 합니다. Argo CD 엔드포인트에 접근하려면 이 프라이빗 IP에 대한 네트워크 연결(VPC, 가상 사설 네트워크(VPN) 연결 또는 AWS Direct Connect를 통해)이 있어야 합니다.
프라이빗 접근 작동 방식
Argo CD 캐퍼빌리티에 프라이빗 접근을 구성하면:
- VPC에서
com.amazonaws.region-code.eks-capabilities서비스용 VPC 엔드포인트를 만듭니다. - Argo CD 캐퍼빌리티를 생성하거나 업데이트할 때 VPC 엔드포인트 ID를 제공합니다.
- AWS가 Argo CD 엔드포인트 호스트 이름이 VPC 엔드포인트와 연결된 프라이빗 IP 주소로 해석되도록 DNS 레코드를 구성합니다.
- Argo CD 엔드포인트로의 모든 트래픽이 VPC 엔드포인트를 통해 프라이빗하게 흐릅니다.
사전 요구 사항
- 활성 Argo CD 캐퍼빌리티가 있는 Amazon EKS 클러스터(Argo CD 캐퍼빌리티 생성 참고)
- 서브넷, 보안 그룹, 인터페이스 VPC 엔드포인트를 포함한 Amazon VPC 개념에 대한 이해
- 프라이빗 접근을 원하는 가용 영역에 서브넷이 있는 VPC
- AWS Command Line Interface(AWS CLI) 버전
2.12.3이상
1단계: eks-capabilities용 VPC 엔드포인트 생성
com.amazonaws.region-code.eks-capabilities 서비스용 인터페이스 VPC 엔드포인트를 만듭니다.
중요
VPC 엔드포인트에 연결된 보안 그룹이 인바운드 HTTPS(포트 443) 트래픽을 허용하는지 확인하세요. 트래픽 소스에는 Argo CD 엔드포인트에 접근하는 사용자나 애플리케이션이 있는 모든 네트워크가 포함되어야 합니다.
2단계: Argo CD 캐퍼빌리티에 프라이빗 접근 구성
VPC 엔드포인트를 사용할 수 있게 된 후 Argo CD 캐퍼빌리티가 이를 사용하도록 구성합니다. 새 캐퍼빌리티를 만들 때 또는 기존 캐퍼빌리티를 업데이트할 때 프라이빗 접근을 구성할 수 있습니다.
프라이빗 접근으로 새 캐퍼빌리티 생성
create-capability 명령에 networkAccess를 포함합니다. region-code, my-cluster 및 기타 플레이스홀더를 자신의 값으로 바꾸세요.
aws eks create-capability \
--region region-code \
--cluster-name my-cluster \
--capability-name my-argocd \
--type ARGOCD \
--role-arn arn:aws:iam::111122223333:role/ArgoCDCapabilityRole \
--configuration '{
"argoCd": {
"awsIdc": {
"idcInstanceArn": "arn:aws:sso:::instance/ssoins-1234567890abcdef",
"idcRegion": "idc-region-code"
},
"rbacRoleMappings": [{
"role": "ADMIN",
"identities": [{
"id": "user-id",
"type": "SSO_USER"
}]
}],
"networkAccess": {
"vpceIds": ["vpce-0123456789abcdef0"]
}
}
}'
기존 캐퍼빌리티를 업데이트해 프라이빗 접근 활성화
region-code, my-cluster, my-argocd, VPC 엔드포인트 ID를 자신의 값으로 바꾸세요.
aws eks update-capability \
--region region-code \
--cluster-name my-cluster \
--capability-name my-argocd \
--configuration '{
"argoCd": {
"networkAccess": {
"vpceIds": ["vpce-0123456789abcdef0"]
}
}
}'
캐퍼빌리티 업데이트가 완료될 때까지 기다립니다.
aws eks describe-capability \
--region region-code \
--cluster-name my-cluster \
--capability-name my-argocd \
--query 'capability.status' \
--output text
업데이트가 완료되면 상태가 ACTIVE로 돌아갑니다.
3단계: DNS 해석과 연결 확인
프라이빗 접근이 구성된 캐퍼빌리티가 활성화된 후 Argo CD 엔드포인트 호스트 이름이 프라이빗 IP 주소로 해석되는지 확인합니다.
어떤 네트워크에서든 다음 nslookup 명령을 실행합니다.
nslookup your-argocd-endpoint.eks-capabilities.region-code.amazonaws.com
응답에 프라이빗 IP 주소(예: 10.x.x.x 또는 172.16.x.x 같은 RFC 1918 범위의 주소)가 표시되어야 합니다.
엔드포인트가 프라이빗 IP로 해석되지 않으면 다음을 확인하세요.
- 캐퍼빌리티 상태가
ACTIVE인지(AWS는 캐퍼빌리티가 활성화된 후 DNS 레코드를 생성함) - VPC 엔드포인트가
available상태인지 - 캐퍼빌리티 구성의 VPC 엔드포인트 ID가 생성한 엔드포인트와 일치하는지
참고
프라이빗 접근을 구성한 후 Argo CD 엔드포인트 호스트 이름은 프라이빗 IP 주소로 해석됩니다. 연결하려면 VPC, VPN 연결 또는 AWS Direct Connect를 통해 해당 프라이빗 IP에 대한 네트워크 연결이 있어야 합니다.
프라이빗 접근 비활성화
프라이빗 접근을 비활성화하고 공개 엔드포인트 접근을 복원하려면 VPC 엔드포인트 ID를 제거하도록 캐퍼빌리티를 업데이트합니다.
aws eks update-capability \
--region region-code \
--cluster-name my-cluster \
--capability-name my-argocd \
--configuration '{
"argoCd": {
"networkAccess": {
"vpceIds": []
}
}
}'
고려 사항
프라이빗 접근을 활성화한 후에는 Argo CD 엔드포인트가 VPC 내부 또는 VPC에 연결된 네트워크(예: VPN 또는 AWS Direct Connect 통해)에서만 접근할 수 있습니다.
프라이빗 접근이 작동하려면 VPC 엔드포인트가 available 상태로 유지되어야 합니다. VPC 엔드포인트를 삭제하면 새 엔드포인트를 만들고 캐퍼빌리티를 업데이트하기 전까지 Argo CD 엔드포인트에 접근할 수 없게 됩니다.
- AWS는 현재
eks-capabilities서비스 엔드포인트에 대한 VPC 엔드포인트 정책을 지원하지 않습니다.