Configurare l'accesso al repository - Amazon EKS

Contribuisci a migliorare questa pagina

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Per contribuire a questa guida per l'utente, scegli il GitHub link Modifica questa pagina nel riquadro destro di ogni pagina.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurare l'accesso al repository

Prima di distribuire le applicazioni, configura Argo CD per accedere ai tuoi repository Git e ai registri cartografici Helm. Argo CD supporta diversi metodi di autenticazione per GitHub, GitLab Bitbucket ed ECR. AWS CodeCommit AWS

Nota

Per le integrazioni dirette dei AWS servizi (grafici ECR Helm, CodeCommit repository e CodeConnections), è possibile farvi riferimento direttamente nelle risorse dell'applicazione senza creare configurazioni di repository. Il Capability Role deve disporre delle autorizzazioni IAM richieste. Per informazioni dettagliate, vedi Configurare le autorizzazioni di Argo CD.

Prerequisiti

  • È stato creato un cluster EKS con funzionalità Argo CD

  • Archivi Git contenenti manifesti di Kubernetes

  • kubectlconfigurato per comunicare con il tuo cluster

Nota

Per il riutilizzo delle credenziali su più repository, è possibile utilizzare modelli di credenziali di repository (repocreds). Per ulteriori informazioni, consultate Private Repositories nella documentazione di Argo CD.

Metodi di autenticazione

Metodo Caso d'uso Autorizzazioni IAM richieste

Integrazione diretta con i servizi AWS

CodeCommit

Integrazione diretta con i AWS CodeCommit repository Git. Non è necessaria alcuna configurazione del repository.

codecommit:GitPull

CodeConnections

Connect o Bitbucket con autenticazione gestita. GitHub GitLab Richiede la configurazione della connessione.

codeconnections:UseConnection

Grafici ECR Helm

Integrazione diretta con AWS ECR per i grafici OCI Helm. Non è necessaria alcuna configurazione del repository.

ecr:GetAuthorizationToken, ecr:BatchGetImage, ecr:GetDownloadUrlForLayer

Configurazione del repository con credenziali

AWS Secrets Manager (nome utente/token)

Memorizza token o password di accesso personali

secretsmanager:GetSecretValue

AWS Secrets Manager (chiave SSH)

Usa l'autenticazione tramite chiave SSH

secretsmanager:GetSecretValue

AWS Secrets Manager (GitHub App)

GitHub Autenticazione dell'app con chiave privata

secretsmanager:GetSecretValue

Kubernetes Secret

Metodo Argo CD standard che utilizza segreti all'interno del cluster

Nessuno (solo criteri di attendibilità)

Accesso diretto ai AWS servizi

Per quanto riguarda AWS i servizi, è possibile farvi riferimento direttamente nelle risorse dell'applicazione senza creare configurazioni del repository. Il Capability Role deve disporre delle autorizzazioni IAM richieste.

CodeCommit repository

Fai riferimento ai CodeCommit repository direttamente nelle applicazioni:

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app namespace: argocd spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name targetRevision: main path: kubernetes/manifests

Autorizzazioni necessarie per il ruolo di capacità:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codecommit:GitPull", "Resource": "arn:aws:codecommit:region:account-id:repository-name" } ] }

CodeConnections

Reference GitHub o GitLab tramite Bitbucket repository. CodeConnections Il formato dell'URL del repository è derivato dall'ARN della CodeConnections connessione.

Il formato dell'URL del repository è:

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

Autorizzazioni necessarie per il ruolo di capacità:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codeconnections:UseConnection", "Resource": "arn:aws:codeconnections:region:account-id:connection/connection-id" } ] }

Grafici ECR Helm

ECR memorizza i grafici Helm come artefatti OCI. Argo CD supporta due modi per farvi riferimento:

Formato Helm (consigliato per i grafici Helm):

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-helm namespace: argocd spec: source: repoURL: account-id.dkr.ecr.region.amazonaws.com/repository-name targetRevision: chart-version chart: chart-name helm: valueFiles: - values.yaml

Nota: non includere il oci:// prefisso quando si utilizza il formato Helm. Usa il chart campo per specificare il nome del grafico.

Formato OCI (per artefatti OCI con manifesti Kubernetes):

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-name targetRevision: artifact-version path: path-to-manifests

Nota: includi il prefisso quando usi il formato OCI. oci:// Usa il path campo invece di. chart

Autorizzazioni Capability Role richieste:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" } ] }

Utilizzo di AWS Secrets Manager

Archivia le credenziali del repository in Secrets Manager e fai riferimento ad esse nelle configurazioni di Argo CD Repository.

Autenticazione con nome utente e token

Per gli archivi HTTPS con token di accesso o password personali:

Crea il segreto in 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"}'

Campi opzionali del certificato client TLS (per server Git privati):

aws secretsmanager create-secret \ --name argocd/my-private-repo \ --secret-string '{ "username":"your-username", "token":"your-token", "tlsClientCertData":"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi4uLgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t", "tlsClientCertKey":"LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi4uLgotLS0tLUVORCBQUklWQVRFIEtFWS0tLS0t" }'
Nota

I tlsClientCertKey valori tlsClientCertData and devono essere codificati in base 64.

Crea un Repository Secret facendo riferimento a 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

autenticazione con chiave SSH

Per l'accesso Git basato su SSH, memorizza la chiave privata come testo semplice (non JSON):

Crea il segreto con la chiave privata 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-----"

Crea un repository segreto per 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 Autenticazione dell'app

Per GitHub l'autenticazione dell'app con una chiave privata:

Crea il segreto con le credenziali GitHub dell'app:

aws secretsmanager create-secret \ --name argocd/github-app \ --description "GitHub App credentials for Argo CD" \ --secret-string '{ "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=", "githubAppID":"123456", "githubAppInstallationID":"12345678" }'
Nota

Il githubAppPrivateKeySecret valore deve essere codificato in base64.

Campo opzionale per Enterprise: GitHub

aws secretsmanager create-secret \ --name argocd/github-enterprise-app \ --secret-string '{ "githubAppPrivateKeySecret":"LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQouLi4KLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0=", "githubAppID":"123456", "githubAppInstallationID":"12345678", "githubAppEnterpriseBaseUrl":"https://github.example.com/api/v3" }'

Crea un Repository Secret per GitHub l'app:

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
Importante

Assicurati che il tuo IAM Capability Role disponga secretsmanager:GetSecretValue delle autorizzazioni per i segreti che crei. Vedi Considerazioni su Argo CD per la configurazione delle policy IAM.

Usando AWS CodeConnections

Per CodeConnections l'integrazione, vediConnect ai repository Git con AWS CodeConnections.

CodeConnections fornisce l'autenticazione gestita per GitHub e Bitbucket senza memorizzare le credenziali. GitLab

Utilizzo di Kubernetes Secrets

Archivia le credenziali direttamente in Kubernetes utilizzando il metodo Argo CD standard.

Per HTTPS con token di accesso personale:

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

Per 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-----

Archivi pubblici

Non è necessaria alcuna configurazione aggiuntiva per gli archivi pubblici:

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 archivi

Per AWS CodeCommit, concedi le CodeCommit autorizzazioni a IAM Capability Role ()codecommit:GitPull.

Configura il repository:

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

Per una configurazione dettagliata delle policy IAM, consultaConsiderazioni su Argo CD.

Verifica la connessione al repository

Controlla lo stato della connessione tramite l'interfaccia utente di Argo CD in Impostazioni → Repository. L'interfaccia utente mostra lo stato della connessione e gli eventuali errori di autenticazione.

I Repository Secrets non includono informazioni sullo stato.

Risorse aggiuntive