協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定儲存庫存取
部署應用程式之前,請設定 Argo CD 以存取您的 Git 儲存庫和 Helm Chart 登錄檔。Argo CD 支援 GitHub、GitLab、Bitbucket、 AWS CodeCommit 和 AWS ECR 的多種身分驗證方法。
注意
對於直接 AWS 服務整合 (ECR Helm Chart、CodeCommit 儲存庫和 CodeConnections),您可以直接在應用程式資源中參考它們,而無需建立儲存庫組態。功能角色必須具有必要的 IAM 許可。如需詳細資訊,請參閱 設定 Argo CD 許可。
先決條件
-
建立 Argo CD 功能的 EKS 叢集
-
包含 Kubernetes 資訊清單的 Git 儲存庫
-
kubectl設定為與您的叢集通訊
注意
若要在多個儲存庫中重複使用登入資料,您可以使用儲存庫登入資料範本 (已複製)。如需詳細資訊,請參閱 Argo CD 文件中的私有儲存庫
身分驗證方法
| Method | 使用案例 | 所需的 IAM 許可 |
|---|---|---|
|
直接整合 AWS 服務 |
||
|
CodeCommit: |
直接與 AWS CodeCommit Git 儲存庫整合。不需要儲存庫組態。 |
|
|
CodeConnections |
使用受管身分驗證連線至 GitHub、GitLab 或 Bitbucket。需要連線設定。 |
|
|
ECR Helm Chart |
與 OCI Helm Chart 的 AWS ECR 直接整合。不需要儲存庫組態。 |
|
|
具有登入資料的儲存庫組態 |
||
|
AWS Secrets Manager (使用者名稱/權杖) |
存放個人存取字符或密碼 |
|
|
AWS Secrets Manager (SSH 金鑰) |
使用 SSH 金鑰身分驗證 |
|
|
AWS Secrets Manager (GitHub 應用程式) |
使用私有金鑰進行 GitHub 應用程式身分驗證 |
|
|
Kubernetes 秘密 |
使用叢集內秘密的標準 Argo CD 方法 |
無 (僅限信任政策) |
直接存取 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 Helm Chart
ECR 會將 Helm Chart 儲存為 OCI 成品。Argo CD 支援兩種參考方式:
Helm 格式 (建議用於 Helm Chart):
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
注意:使用 Helm 格式時,請勿包含 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://字首。使用 path 欄位而非 chart。
必要的功能角色許可:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" } ] }
使用 AWS Secrets Manager
將儲存庫登入資料儲存在 Secrets Manager 中,並在 Argo CD 儲存庫組態中參考它們。
使用者名稱和字符身分驗證
對於具有個人存取字符或密碼的 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
重要
確保您的 IAM 功能角色具有您所建立秘密的secretsmanager:GetSecretValue許可。如需 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-----
公有儲存庫
公有儲存庫不需要其他組態:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: public-app namespace: argocd spec: source: repoURL: https://github.com/argoproj/argocd-example-apps targetRevision: HEAD path: guestbook # ... rest of configuration
CodeCommit 儲存庫
For 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 許可和安全性組態
-
私有儲存庫
- 上游儲存庫組態參考