

 **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.

# Considerações sobre o ACK para o EKS
<a name="ack-considerations"></a>

Este tópico aborda considerações importantes para o uso da funcionalidade do EKS para o ACK, incluindo a configuração do IAM, os padrões para várias contas e a integração com outras funcionalidades do EKS.

## Padrões de configuração do IAM
<a name="_iam_configuration_patterns"></a>

A funcionalidade do ACK usa um perfil de funcionalidade do IAM para se autenticar na AWS. Escolha o padrão do IAM mais adequado às suas necessidades.

### Simples: um único perfil de funcionalidade
<a name="_simple_single_capability_role"></a>

Para ambientes de desenvolvimento, testes ou casos de uso simples, atribua todas as permissões necessárias diretamente ao perfil de funcionalidade.

 **Quando utilizar**:
+ Conceitos básicos do ACK
+ Implantações em uma única conta
+ Todos os recursos são gerenciados por uma única equipe
+ Ambientes de desenvolvimento e de teste

 **Exemplo**: adicione permissões do S3 e do RDS ao seu perfil de funcionalidade com condições de marcação de recursos:

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:*"],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": ["us-west-2", "us-east-1"]
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": ["rds:*"],
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:RequestedRegion": ["us-west-2", "us-east-1"]
        },
      }
    }
  ]
}
```

Este exemplo restringe as operações do S3 e do RDS a regiões específicas e requer que os recursos do RDS tenham uma etiqueta `ManagedBy: ACK`.

### Produção: seletores de perfil do IAM
<a name="_production_iam_role_selectors"></a>

Para ambientes de produção, use os seletores de perfil do IAM para implementar o acesso de privilégio mínimo e o isolamento em nível de namespace.

 **Quando utilizar**:
+ Ambientes de produção
+ Clusters gerenciados por várias equipes
+ Gerenciamento de recursos em várias contas
+ Requisitos de segurança de privilégio mínimo
+ Diferentes serviços que necessitam de permissões distintas

 **Benefícios**:
+ Cada namespace recebe apenas as permissões de que necessita
+ Isolamento de equipes, portanto, a Equipe A não pode usar as permissões da Equipe B
+ Auditoria e conformidade facilitadas
+ Obrigatório para o gerenciamento de recursos entre contas

Para obter a configuração detalhada do seletor de perfil do IAM, consulte [Configuração das permissões do ACK](ack-permissions.md).

## Integração com outras funcionalidades do EKS
<a name="_integration_with_other_eks_capabilities"></a>

### GitOps com Argo CD
<a name="_gitops_with_argo_cd"></a>

Empregue a funcionalidade do EKS para o Argo CD a fim de implantar recursos do ACK de repositórios do Git, permitindo fluxos de trabalho do GitOps para o gerenciamento de infraestrutura.

 **Considerações**:
+ Armazene os recursos do ACK junto aos manifestos da aplicação para um GitOps de ponta a ponta
+ Organize por ambiente, serviço ou tipo de recurso com base na estrutura da sua equipe
+ Use a sincronização automática do Argo CD para reconciliação contínua
+ Habilite a supressão para remover automaticamente recursos excluídos
+ Considere o uso de padrões hub-and-spoke para o gerenciamento da infraestrutura de vários clusters

O GitOps oferece trilhas de auditoria, funcionalidades de reversão e gerenciamento declarativo da infraestrutura. Para saber mais sobre o Argo CD, consulte [Como trabalhar com o Argo CD](working-with-argocd.md).

### Composição de recursos com o kro
<a name="_resource_composition_with_kro"></a>

Use a funcionalidade do EKS para o kro (Kube Resource Orchestrator) para compor vários recursos do ACK em abstrações de nível superior e APIs personalizadas.

 **Situações para o uso do kro com o ACK**:
+ Criação de padrões reutilizáveis para pilhas de infraestrutura comuns (banco de dados \$1 backup \$1 monitoramento)
+ Desenvolvimento de plataformas de autoatendimento com APIs simplificadas para as equipes destinadas ao trabalho com APIs aplicação
+ Gerenciamento de dependências de recursos e transferência de valores entre recursos (como o ARN de um bucket do S3 para uma função do Lambda)
+ Padronização das configurações de infraestrutura entre as equipes
+ Redução da complexidade ao ocultar detalhes de implementação atrás de recursos personalizados

 **Padrões de exemplo**:
+ Pilha da aplicação: bucket do S3 \$1 fila do SQS \$1 configuração de notificação
+ Configuração do banco de dados: instância do RDS \$1 grupo de parâmetros \$1 grupo de segurança \$1 segredos
+ Rede: VPC \$1 sub-redes \$1 tabelas de rotas \$1 grupos de segurança

O kro gerencia a ordenação de dependências, a propagação de status e o gerenciamento do ciclo de vida dos recursos compostos. Para saber mais sobre o kro, consulte [Conceitos do kro](kro-concepts.md).

## Organização dos recursos
<a name="_organizing_your_resources"></a>

Organize os recursos do ACK usando namespaces do Kubernetes e etiquetas de recursos da AWS para obter melhor gerenciamento, controle de acesso e rastreamento de custos.

### Organização de namespaces
<a name="_namespace_organization"></a>

Use namespaces do Kubernetes para a separação lógica de recursos do ACK por ambiente (por exemplo, produção, preparação e desenvolvimento), equipe (como plataforma, dados e ML) ou aplicação.

 **Benefícios**:
+ RBAC com escopo de namespace para controle de acesso
+ Definição de regiões padrão por namespace usando anotações
+ Gerenciamento e limpeza de recursos facilitados
+ Separação lógica alinhada à estrutura organizacional

### Marcação de recursos
<a name="_resource_tagging"></a>

A funcionalidade ACK do EKS aplica automaticamente as tags padrão a todos os recursos da AWS que ele cria. Essas tags diferem do ACK autogerenciado e fornecem rastreabilidade aprimorada.

 **Tags padrão aplicadas pela funcionalidade**:


| Chave de tag | Descrição | 
| --- | --- | 
|   `eks:controller-version`   |  A versão do controlador ACK  | 
|   `eks:kubernetes-namespace`   |  O namespace do Kubernetes do recurso ACK  | 
|   `eks:kubernetes-resource-name`   |  O nome do recurso do Kubernetes  | 
|   `eks:kubernetes-api-group`   |  O grupo de API do Kubernetes (por exemplo, `s3.services.k8s.aws`)  | 
|   `eks:eks-capability-arn`   |  O ARN da funcionalidade ACK do EKS  | 

**nota**  
O ACK autogerenciado usa tags padrão diferentes: `services.k8s.aws/controller-version` e `services.k8s.aws/namespace`. As tags da funcionalidade usam o prefixo `eks:` para manter a consistência com outros recursos do EKS.

 **Tags adicionais recomendadas**:

Adicione tags personalizadas para alocação de custos, rastreamento de propriedade e fins organizacionais.
+ Ambiente (por exemplo, produção, preparação e desenvolvimento)
+ Propriedade da equipe ou do departamento
+ Centro de custo para alocação de faturamento
+ Nome da aplicação ou do serviço

## Migração de outras ferramentas de infraestrutura como código
<a name="_migration_from_other_infrastructure_as_code_tools"></a>

Muitas organizações estão encontrando valor na padronização do Kubernetes além da orquestração de suas workloads. Migrar a infraestrutura e o gerenciamento de recursos da AWS para o ACK permite que você padronize o gerenciamento da infraestrutura utilizando as APIs do Kubernetes em conjunto com as workloads da aplicação.

 **Benefícios da padronização no Kubernetes para infraestrutura**:
+  **Fonte única de verdade**: gerencie tanto aplicações quanto infraestrutura no Kubernetes, permitindo uma prática de GitOps de ponta a ponta
+  **Ferramentas unificadas**: as equipes usam recursos e ferramentas do Kubernetes em vez de aprender diversas ferramentas e frameworks
+  **Reconciliação consistente**: o ACK reconcilia continuamente os recursos da AWS assim como o Kubernetes faz com as workloads, detectando e corrigindo desvios em comparação com ferramentas imperativas
+  **Composições nativas**: com o kro e o ACK juntos, referencie recursos da AWS diretamente nos manifestos da aplicação e de recursos, transferindo strings de conexão e ARNs entre os recursos
+  **Operações simplificadas**: um único ambiente de gerenciamento para implantações, reversões e observabilidade em todo o sistema

O ACK permite a adoção de recursos da AWS já existentes sem recriá-los, possibilitando migrações sem tempo de inatividade provenientes do CloudFormation, do Terraform ou de recursos externos ao cluster.

 **Adote um recurso existente**:

```
apiVersion: s3.services.k8s.aws/v1alpha1
kind: Bucket
metadata:
  name: existing-bucket
  annotations:
    services.k8s.aws/adoption-policy: "adopt-or-create"
spec:
  name: my-existing-bucket-name
```

Após a adoção, o recurso passa a ser gerenciado pelo ACK e pode ser atualizado por meio de manifestos do Kubernetes. É possível realizar a migração de forma incremental, adotando recursos conforme necessário, enquanto mantém as ferramentas de IaC existentes para outros recursos.

O ACK também oferece suporte a recursos somente de leitura. Para recursos gerenciados por outras equipes ou ferramentas que você deseja referenciar, mas não modificar, combine a adoção com a política de exclusão `retain` e conceda permissões somente de leitura no IAM. Isso permite que as aplicações localizem infraestruturas compartilhadas (por exemplo, VPCs, perfis de funcionalidade do IAM e chaves do KMS) por meio das APIs do Kubernetes, sem o risco de modificações acidentais.

Para obter mais informações sobre a adoção de recursos, consulte [Conceitos do ACK](ack-concepts.md).

## Políticas de exclusão
<a name="_deletion_policies"></a>

As políticas de exclusão controlam o que acontece com os recursos da AWS quando você exclui o recurso correspondente no Kubernetes. Escolha a política adequada com base no ciclo de vida do recurso e em seus requisitos operacionais.

### Exclusão (padrão)
<a name="_delete_default"></a>

O recurso da AWS é excluído quando você exclui o recurso correspondente no Kubernetes. Isso mantém a consistência entre o cluster e a AWS, garantindo que não ocorra o acúmulo de recursos.

 **Situações para o uso da exclusão**:
+ Ambientes de desenvolvimento e de teste nos quais a limpeza é importante
+ Recursos efêmeros vinculados ao ciclo de vida da aplicação (por exemplo, bancos de dados de teste e buckets temporários)
+ Recursos que não devem existir sem a aplicação (por exemplo filas do SQS e clusters do ElastiCache)
+ Otimização de custos com a limpeza automática de recursos não utilizados
+ Ambientes gerenciados com GitOps, nos quais a remoção do recurso no Git deve excluir a infraestrutura

A política de exclusão padrão alinha-se ao modelo declarativo do Kubernetes, ou seja, o que está no cluster corresponde ao que existe na AWS.

### Reter
<a name="_retain"></a>

O recurso da AWS é mantido quando você exclui o recurso correspondente no Kubernetes. Esta opção protege dados críticos e permite que os recursos permaneçam ativos mesmo após a remoção da representação no Kubernetes.

 **Situações para o uso da retenção**:
+ Bancos de dados de produção com dados críticos que devem ser mantidos apesar de mudanças no cluster
+ Buckets de armazenamento de longo prazo com requisitos de conformidade ou auditoria
+ Recursos compartilhados usados por diversas aplicações ou equipes
+ Recursos em processo de migração para diferentes ferramentas de gerenciamento
+ Cenários de recuperação de desastres em que você deseja preservar a infraestrutura
+ Recursos com dependências complexas que exigem uma desativação cuidadosa

```
apiVersion: rds.services.k8s.aws/v1alpha1
kind: DBInstance
metadata:
  name: production-db
  annotations:
    services.k8s.aws/deletion-policy: "retain"
spec:
  dbInstanceIdentifier: prod-db
  # ... configuration
```

**Importante**  
Recursos retidos continuam a gerar custos na AWS e devem ser excluídos manualmente da AWS quando não forem mais necessários. Use a marcação de recursos para rastrear recursos retidos para limpeza posterior.

Para saber mais sobre as políticas de exclusão, consulte [Conceitos do ACK](ack-concepts.md).

## Documentação original
<a name="_upstream_documentation"></a>

Para obter informações detalhadas sobre o uso do ACK:
+  [Guia de uso do ACK](https://aws-controllers-k8s.github.io/community/docs/user-docs/usage/): criação e gerenciamento de recursos
+  [Referência da API do ACK](https://aws-controllers-k8s.github.io/community/reference/): documentação completa da API para todos os serviços
+  [Documentação do ACK](https://aws-controllers-k8s.github.io/community/docs/): documentação abrangente para o usuário

## Próximas etapas
<a name="_next_steps"></a>
+  [Configuração das permissões do ACK](ack-permissions.md): configure permissões do IAM e padrões para várias contas
+  [Conceitos do ACK](ack-concepts.md): compreenda os conceitos do ACK e o ciclo de vida dos recursos
+  [Solução de problemas em funcionalidades do ACK](ack-troubleshooting.md): solucione problemas do ACK
+  [Como trabalhar com o Argo CD](working-with-argocd.md): implante recursos do ACK com GitOps
+  [Conceitos do kro](kro-concepts.md): componha recursos do ACK em abstrações de nível superior