View a markdown version of this page

Configuração do acesso ao repositório - Amazon EKS

Ajudar a melhorar esta página

Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.

Configuração do acesso ao repositório

Antes de implantar aplicações, configure o Argo CD para acessar os repositórios do Git e os registros do chart do Helm. O Argo CD oferece suporte a diversos métodos de autenticação para GitHub, GitLab, Bitbucket, AWS CodeCommit e AWS ECR.

nota

No caso de integrações diretas com serviços da AWS (como charts do Helm do ECR, repositórios do CodeCommit e CodeConnections), é possível referenciá-los diretamente nos recursos da Application sem a necessidade de criar configurações de Repository. O perfil da funcionalidade deve ter as permissões do IAM necessárias. Para mais detalhes, consulte Configuração das permissões do Argo CD.

Pré-requisitos

  • Um cluster de EKS com a funcionalidade para o Argo CD criada

  • Repositórios do Git que contêm manifestos do Kubernetes

  • kubectl configurado para o estabelecimento de comunicação com o cluster

nota

OAWS CodeConnections pode se conectar a servidores Git localizados na nuvem AWS ou on-premises. Para obter mais informações, consulte AWS CodeConnections.

Métodos de autenticação

Método Caso de uso Permissões do IAM necessárias

Integração direta com serviços da AWS

CodeCommit

Integração direta com repositórios do Git do AWS CodeCommit. Nenhuma configuração de Repository é necessária.

codecommit:GitPull

CodeConnections

Estabeleça conexão com o GitHub, o GitLab ou o Bitbucket usando autenticação gerenciada. Requer configuração da conexão.

codeconnections:UseConnection

Artefatos da OCI do ECR

Integração direta com o AWS ECR para charts do Helm baseados em OCI e imagens de manifestos. Nenhuma configuração de Repository é necessária.

arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly

Configuração do repositório com credenciais

AWS Secrets Manager (nome do usuário/token)

Armazene tokens de acesso pessoal ou senhas Permite a alternância de credenciais sem acesso ao Kubernetes.

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

AWS Secrets Manager (chave SSH)

Use a autenticação por chave SSH. Permite a alternância de credenciais sem acesso ao Kubernetes.

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

AWS Secrets Manager (aplicativo do GitHub)

Autenticação pela aplicação do GitHub com chave privada Permite a alternância de credenciais sem acesso ao Kubernetes.

arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess

Kubernetes Secret

Método padrão do Argo CD usando segredos “in-cluster”

Nenhuma (permissões gerenciadas pelo EKS Access Entry com Kubernetes RBAC)

Acesso direto aos serviços da AWS

No caso de serviços da AWS, é possível referenciá-los diretamente nos recursos da Application sem precisar criar configurações de Repository. O perfil da funcionalidade deve ter as permissões do IAM necessárias.

Repositórios do CodeCommit

Referencie repositórios do CodeCommit diretamente nas Applications:

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

Permissões obrigatórias do perfil da funcionalidade:

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

CodeConnections

Referencie repositórios do GitHub, do GitLab ou do Bitbucket por meio do CodeConnections. O formato do URL do repositório é derivado do ARN da conexão do CodeConnections.

O formato do URL do repositório é:

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

Permissões obrigatórias do perfil da funcionalidade:

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

Charts do Helm do ECR

O ECR armazena charts do Helm como artefatos OCI. O Argo CD oferece duas maneiras de referenciá-los:

Formato Helm (recomendado para charts do 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

Observação: não inclua o prefixo oci:// ao usar o formato Helm. Use o campo chart para especificar o nome do chart.

Formato OCI (para artefatos OCI que contêm manifestos do 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

Observação: inclua o prefixo oci:// ao usar o formato OCI. Utilize o campo path em vez de chart.

Permissões de perfil de funcionalidade necessárias - anexe a política gerenciada:

arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly

Essa política inclui as permissões ECR necessárias: ecr:GetAuthorizationToken, ecr:BatchGetImage e ecr:GetDownloadUrlForLayer.

Uso do AWS Secrets Manager

Armazene credenciais de repositório no Secrets Manager e faça referência a elas nas configurações de Repository do Argo CD. O uso do Secrets Manager permite a alternância automática de credenciais sem exigir acesso ao Kubernetes RBAC. As credenciais podem ser alternadas usando as permissões do IAM para o Secrets Manager, e o Argo CD lê automaticamente os valores atualizados.

nota

Para reutilização de credenciais em vários repositórios (por exemplo, todos os repositórios em uma organização do GitHub), use modelos de credenciais de repositório com argocd.argoproj.io/secret-type: repo-creds. Isso fornece uma melhor experiência de usuário do que criar segredos de repositórios individuais. Para obter mais informações, consulte Credenciais de repositórios na documentação do Argo CD.

Autenticação por nome de usuário e token

Para repositórios HTTPS com tokens de acesso pessoal ou senhas:

Criar o segredo no 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"}'

Campos opcionais para certificado TLS de cliente (para servidores do Git privados):

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

Os valores tlsClientCertData e tlsClientCertKey devem estar codificados em base64.

Criar um segredo de repositório referenciando o 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

Autenticação por chave SSH

Para obter acesso ao Git baseado em SSH, armazene a chave privada em texto não formatado (não em JSON):

Criar o segredo com a chave privada 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-----"

Criar um segredo de repositório para 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

Autenticação por aplicativo do GitHub

Para a autenticação pelo aplicativo do GitHub com uma chave privada:

Criar o segredo com as credenciais do aplicativo do GitHub:

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

O valor githubAppPrivateKeySecret deve estar codificado em base64.

Campo opcional para o 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" }'

Criar um segredo de repositório para o aplicativo do 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

Modelos de credencial de repositório

Para reutilização de credenciais em vários repositórios (por exemplo, todos os repositórios em uma organização ou usuário do GitHub), use modelos de credenciais de repositório com argocd.argoproj.io/secret-type: repo-creds. Isso fornece uma melhor experiência de usuário do que criar segredos de repositórios individuais para cada respositório.

Crie um modelo de credencial de repositório:

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

Esse modelo de credencial se aplica a todos os repositórios que correspondam ao prefixo https://github.com/your-org da URL. Em seguida, é possível referenciar qualquer repositório dessa organização em Applications sem criar segredos adicionais.

Para obter mais informações, consulte Credenciais de repositórios na documentação do Argo CD.

Importante

Certifique-se de que seu perfil de funcionalidade do IAM tenha a política gerenciada arn:aws:iam::aws:policy/AWSSecretsManagerClientReadOnlyAccess anexada ou permissões equivalentes, incluindo secretsmanager:GetSecretValue e permissões de descriptografia do KMS. Consulte Considerações sobre o Argo CD para obter a configuração da política do IAM.

Uso do AWS CodeConnections

Para a integração com o CodeConnections, consulte Estabelecimento de conexão com repositórios do Git usando o AWS CodeConnections.

O CodeConnections fornece autenticação gerenciada para GitHub, GitLab e Bitbucket sem armazenar credenciais.

Uso do Kubernetes Secrets

Armazene credenciais diretamente no Kubernetes usando o método padrão do Argo CD.

Para HTTPS com token de acesso pessoal:

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

Para o 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-----

Repositórios do CodeCommit

Para o AWS CodeCommit, conceda ao perfil da funcionalidade do IAM permissões do CodeCommit (codecommit:GitPull).

Configurar o repositório:

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

Para obter a configuração detalhada da política do IAM, consulte Considerações sobre o Argo CD.

Verificação da conexão do repositório

Verifique o status da conexão pela interface do usuário do Argo CD em “Settings → Repositories”. A interface do usuário apresenta o status da conexão e quaisquer erros de autenticação.

Os segredos do repositório não incluem informações de status.

Recursos adicionais