이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
리포지토리 액세스 구성
애플리케이션을 배포하기 전에 Git 리포지토리 및 헬름 차트 레지스트리에 액세스하도록 Argo CD를 구성합니다. Argo CD는 GitHub, GitLab, Bitbucket, AWS CodeCommit 및 AWS ECR에 대해 여러 인증 방법을 지원합니다.
참고
직접 AWS 서비스 통합(ECR 헬름 차트, CodeCommit 리포지토리 및 CodeConnections)의 경우 리포지토리 구성을 생성하지 않고도 애플리케이션 리소스에서 직접 참조할 수 있습니다. 용량 역할에는 필요한 IAM 권한이 있어야 합니다. 세부 정보는 Argo CD 권한 구성 섹션을 참조하세요.
사전 조건
-
Argo CD 기능이 생성된 EKS 클러스터
-
Kubernetes 매니페스트를 포함하는 Git 리포지토리
-
클러스터와 통신하도록 구성된
kubectl
참고
AWS CodeConnections는 AWS 클라우드 또는 온프레미스에 있는 Git 서버에 연결할 수 있습니다. 자세한 내용은 AWS CodeConnections를 참조하세요.
인증 방법
| 방법 | 사용 사례 | 필요한 IAM 권한 |
|---|---|---|
|
AWS 서비스와 직접 통합 |
||
|
CodeCommit |
AWS CodeCommit Git 리포지토리와 직접 통합. 리포지토리 구성이 필요하지 않습니다. |
|
|
CodeConnections |
관리형 인증을 사용하여 GitHub, GitLab 또는 Bitbucket에 연결합니다. 연결 설정이 필요합니다. |
|
|
ECR OCI 아티팩트 |
OCI 헬름 차트 및 매니페스트 이미지에 대한 AWS ECR과 직접 통합. 리포지토리 구성이 필요하지 않습니다. |
|
|
자격 증명을 사용하는 리포지토리 구성 |
||
|
AWS Secrets Manager(사용자 이름/토큰) |
개인 액세스 토큰 또는 암호를 저장합니다. Kubernetes 액세스 권한 없이 자격 증명 교체를 활성화합니다. |
|
|
AWS Secrets Manager(SSH 키) |
SSH 키 인증을 사용합니다. Kubernetes 액세스 권한 없이 자격 증명 교체를 활성화합니다. |
|
|
AWS Secrets Manager(GitHub 앱) |
프라이빗 키를 사용하는 GitHub 앱 인증. Kubernetes 액세스 권한 없이 자격 증명 교체를 활성화합니다. |
|
|
Kubernetes 보안 암호 |
클러스터 내 보안 암호를 사용하는 표준 Argo CD 메서드 |
없음(Kubernetes RBAC를 사용하여 EKS 액세스 항목에 의해 처리되는 권한) |
AWS 서비스에 대한 직접 액세스
AWS 서비스의 경우 리포지토리 구성을 생성하지 않고도 애플리케이션 리소스에서 직접 참조할 수 있습니다. 용량 역할에는 필요한 IAM 권한이 있어야 합니다.
CodeCommit 리포지토리
애플리케이션에서 직접 CodeCommit 리포지토리 참조:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-nametargetRevision: main path: kubernetes/manifests
필요한 용량 역할 권한:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codecommit:GitPull", "Resource": "arn:aws:codecommit:region:account-id:repository-name" } ] }
CodeConnections
CodeConnections를 통해 GitHub, GitLab 또는 Bitbucket 리포지토리를 참조합니다. 리포지토리 URL 형식은 CodeConnections 연결 ARN에서 파생됩니다.
리포지토리 URL 형식은 다음과 같습니다.
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: source: repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git targetRevision: main path: kubernetes/manifests
필요한 용량 역할 권한:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codeconnections:UseConnection", "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id" } ] }
ECR 헬름 차트
ECR은 헬름 차트를 OCI 아티팩트로 저장합니다. Argo CD는 이를 참조하는 다음과 같은 두 가지 방법을 지원합니다.
헬름 형식(헬름 차트의 경우 권장):
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-helm namespace: argocd spec: source: repoURL:account-id.dkr.ecr.region.amazonaws.com/repository-nametargetRevision:chart-versionchart:chart-namehelm: valueFiles: - values.yaml
참고: 헬름 형식을 사용할 때는 oci:// 접두사를 포함하지 마세요. chart 필드를 사용하여 차트 이름을 지정합니다.
OCI 형식(Kubernetes 매니페스트가 있는 OCI 아티팩트의 경우):
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-oci namespace: argocd spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-nametargetRevision:artifact-versionpath:path-to-manifests
참고: OCI 형식을 사용할 때 oci:// 접두사를 포함합니다. chart 대신 path 필드를 사용합니다.
필수 기능 역할 권한 - 관리형 정책을 연결합니다.
arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly
이 정책에는 ecr:GetAuthorizationToken, ecr:BatchGetImage, ecr:GetDownloadUrlForLayer와 같은 필수 ECR 권한이 포함되어 있습니다.
AWS Secrets Manager 사용
Secrets Manager에 리포지토리 자격 증명을 저장하고 Argo CD 리포지토리 구성에서 참조합니다. Secrets Manager를 사용하면 Kubernetes RBAC 액세스 권한 없이도 자동화된 자격 증명 교체가 지원됩니다. 자격 증명은 Secrets Manager에 대한 IAM 권한을 사용하여 교체할 수 있으며 Argo CD는 업데이트된 값을 자동으로 읽습니다.
참고
여러 리포지토리(예: GitHub 조직의 모든 리포지토리)에서 자격 증명을 재사용하려면 argocd.argoproj.io/secret-type: repo-creds에서 리포지토리 자격 증명 템플릿을 사용합니다. 그러면 개별 리포지토리 보안 암호를 생성할 때보다 사용자 경험이 개선됩니다. 자세한 내용은 Argo CD 설명서의 Repository Credentials
사용자 이름 및 토큰 인증
개인 액세스 토큰 또는 암호가 있는 HTTPS 리포지토리의 경우:
Secrets Manager에서 보안 암호 생성:
aws secretsmanager create-secret \ --name argocd/my-repo \ --description "GitHub credentials for Argo CD" \ --secret-string '{"username":"your-username","token":"your-personal-access-token"}'
선택적 TLS 클라이언트 인증서 필드(프라이빗 Git 서버의 경우):
aws secretsmanager create-secret \ --name argocd/my-private-repo \ --secret-string '{ "username":"your-username", "token":"your-token", "tlsClientCertData":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi4uLgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t", "tlsClientCertKey":"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t" }'
참고
tlsClientCertData 및 tlsClientCertKey 값은 base64로 인코딩해야 합니다.
Secrets Manager를 참조하는 리포지토리 보안 암호 생성:
apiVersion: v1 kind: Secret metadata: name: my-repo namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: https://github.com/your-org/your-repo secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-AbCdEf project: default
SSH 키 인증
SSH 기반 Git 액세스의 경우 프라이빗 키를 일반 텍스트(JSON 아님)로 저장합니다.
SSH 프라이빗 키를 사용하여 보안 암호 생성:
aws secretsmanager create-secret \ --name argocd/my-repo-ssh \ --description "SSH key for Argo CD" \ --secret-string "-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn ... -----END OPENSSH PRIVATE KEY-----"
SSH에 대한 리포지토리 보안 암호 생성:
apiVersion: v1 kind: Secret metadata: name: my-repo-ssh namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: git@github.com:your-org/your-repo.git secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/my-repo-ssh-AbCdEf project: default
GitHub 앱 인증
프라이빗 키를 사용하는 GitHub 앱 인증의 경우:
GitHub 앱 자격 증명을 사용하여 보안 암호 생성:
aws secretsmanager create-secret \ --name argocd/github-app \ --description "GitHub App credentials for Argo CD" \ --secret-string '{ "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=", "githubAppID":"123456", "githubAppInstallationID":"12345678" }'
참고
githubAppPrivateKeySecret 값은 base64로 인코딩해야 합니다.
GitHub Enterprise의 선택적 필드:
aws secretsmanager create-secret \ --name argocd/github-enterprise-app \ --secret-string '{ "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=", "githubAppID":"123456", "githubAppInstallationID":"12345678", "githubAppEnterpriseBaseUrl":"https://github.example.com/api/v3" }'
GitHub 앱에 대한 리포지토리 보안 암호 생성:
apiVersion: v1 kind: Secret metadata: name: my-repo-github-app namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: https://github.com/your-org/your-repo secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-app-AbCdEf project: default
리포지토리 자격 증명 템플릿
여러 리포지토리(예: GitHub 조직 또는 사용자의 모든 리포지토리)에서 자격 증명을 재사용하려면 argocd.argoproj.io/secret-type: repo-creds에서 리포지토리 자격 증명 템플릿을 사용합니다. 그러면 각 리포지토리에 대해 개별 리포지토리 보안 암호를 생성할 때보다 사용자 경험이 개선됩니다.
리포지토리 자격 증명 템플릿 생성:
apiVersion: v1 kind: Secret metadata: name: github-org-creds namespace: argocd labels: argocd.argoproj.io/secret-type: repo-creds stringData: type: git url: https://github.com/your-org secretArn: arn:aws:secretsmanager:us-west-2:111122223333:secret:argocd/github-org-AbCdEf
이 자격 증명 템플릿은 URL 접두사 https://github.com/your-org와 일치하는 모든 리포지토리에 적용됩니다. 그런 다음 추가 보안 암호를 생성하지 않고 애플리케이션에서 이 조직의 모든 리포지토리를 참조할 수 있습니다.
자세한 내용은 Argo CD 설명서의 Repository Credentials
중요
IAM 기능 역할에 관리형 정책 arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess 또는 secretsmanager:GetSecretValue 및 KMS 복호화 권한을 포함한 동등한 권한이 있는지 확인합니다. IAM 정책 구성은 Argo CD 고려 사항 섹션을 참조하세요.
AWS CodeConnections 사용
CodeConnections 통합은 AWS CodeConnections를 사용하여 Git 리포지토리에 연결 섹션을 참조하세요.
CodeConnections는 자격 증명을 저장하지 않고도 GitHub, GitLab 및 Bitbucket에 대한 관리형 인증을 제공합니다.
Kubernetes 보안 암호 사용
표준 Argo CD 메서드를 사용하여 Kubernetes에 직접 자격 증명을 저장합니다.
개인 액세스 토큰을 사용하는 HTTPS의 경우:
apiVersion: v1 kind: Secret metadata: name: my-repo namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: https://github.com/your-org/your-repo username: your-username password: your-personal-access-token
SSH의 경우:
apiVersion: v1 kind: Secret metadata: name: my-repo-ssh namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: git@github.com:your-org/your-repo.git sshPrivateKey: | -----BEGIN OPENSSH PRIVATE KEY----- ... your private key ... -----END OPENSSH PRIVATE KEY-----
CodeCommit 리포지토리
AWS CodeCommit의 경우 IAM 기능 역할 CodeCommit 권한(codecommit:GitPull)을 부여합니다.
리포지토리를 구성합니다.
apiVersion: v1 kind: Secret metadata: name: codecommit-repo namespace: argocd labels: argocd.argoproj.io/secret-type: repository stringData: type: git url: https://git-codecommit.us-west-2.amazonaws.com/v1/repos/my-repo project: default
자세한 IAM 정책 구성은 Argo CD 고려 사항 섹션을 참조하세요.
리포지토리 연결 확인
Argo CD UI의 설정 → 리포지토리에서 연결 상태를 확인합니다. UI에 연결 상태 및 모든 인증 오류가 표시됩니다.
리포지토리 보안 암호에는 상태 정보가 포함되지 않습니다.
추가 리소스
-
대상 클러스터 등록 - 배포에 대한 대상 클러스터 등록
-
애플리케이션 생성 - 첫 번째 애플리케이션 생성
-
Argo CD 고려 사항 - IAM 권한 및 보안 구성
-
프라이빗 리포지토리
- 업스트림 리포지토리 구성 참조