

 **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 kro para o EKS
<a name="kro-considerations"></a>

Este tópico aborda considerações importantes para o uso da funcionalidade do EKS para o kro, incluindo quando utilizar a composição de recursos, os padrões de RBAC e a integração com outras funcionalidades do EKS.

## Situações para o uso do kro
<a name="_when_to_use_kro"></a>

O kro foi projetado para criar padrões de infraestrutura reutilizáveis e APIs personalizadas que simplificam o gerenciamento de recursos complexos.

 **Use o kro quando for necessário**:
+ Criar plataformas de autoatendimento com APIs simplificadas para as equipes destinadas ao trabalho com APIs aplicação
+ Padronizar padrões de infraestrutura entre diferentes equipes (banco de dados \$1 backup \$1 monitoramento)
+ Gerenciar dependências de recursos e realizar a transferência de valores entre recursos
+ Desenvolver abstrações personalizadas que ocultam a complexidade da implementação
+ Compor diversos recursos do ACK em blocos de criação de nível superior
+ Habilitar fluxos de trabalho de GitOps para pilhas de infraestrutura complexas

 **Não use kro ao**:
+ Gerenciar recursos simples e isolados (empregue recursos do Kubernetes ou do ACK diretamente)
+ Necessitar de lógica dinâmica de runtime (visto que o kro é declarativo, e não imperativo)
+ Lidar com recursos que não têm dependências nem configurações compartilhadas

O kro se destaca na criação de “caminhos pavimentados”, que são padrões opinativos e reutilizáveis que facilitam a implantação correta de infraestruturas complexas pelas equipes.

## Padrões de RBAC
<a name="_rbac_patterns"></a>

O kro permite a separação de responsabilidades entre as equipes responsáveis pela plataforma, que criam as ResourceGraphDefinitions, e as equipes responsáveis pela aplicação, que criam as instâncias.

### Responsabilidades da equipe responsável pela plataforma
<a name="_platform_team_responsibilities"></a>

As equipes responsáveis pela plataforma criam e mantêm as ResourceGraphDefinitions (RGDs) que definem as APIs personalizadas.

 **Permissões necessárias**:
+ Criar, atualizar e excluir ResourceGraphDefinitions
+ Gerenciar tipos de recursos subjacentes (como Deployments, Services e recursos do ACK)
+ Acessar a todos os namespaces nos quais as RGDs serão aplicadas

 **Exemplo de ClusterRole para a equipe responsável pela plataforma**:

```
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: platform-kro-admin
rules:
- apiGroups: ["kro.run"]
  resources: ["resourcegraphdefinitions"]
  verbs: ["*"]
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["get", "list", "watch"]
```

Para obter a configuração detalhada de RBAC, consulte [Configuração de permissões do kro](kro-permissions.md).

### Responsabilidades da equipe responsável pela aplicação
<a name="_application_team_responsibilities"></a>

As equipes responsáveis pela aplicação criam instâncias de recursos personalizados definidos por RGDs, sem a necessidade de compreender a complexidade subjacente.

 **Permissões necessárias**:
+ Criar, atualizar e excluir instâncias de recursos personalizados
+ Ter um acesso de leitura ao próprio namespace
+ Não conseguir acessar os recursos subjacentes ou as RGDs

 **Benefícios**:
+ As equipes usam APIs simplificadas de alto nível
+ As equipes responsáveis pela plataforma detêm o controle dos detalhes de implementação
+ Risco reduzido de erros de configuração
+ Integração mais rápida para os novos membros da equipe

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

### Composição de recursos do ACK
<a name="_composing_ack_resources"></a>

O kro torna-se especialmente eficiente ao ser integrado ao ACK para o desenvolvimento de padrões de infraestrutura.

 **Padrões comuns**:
+  **Aplicação com armazenamento**: bucket do S3 \$1 fila do SQS \$1 configuração de notificação
+  **Pilha de banco de dados**: instância do RDS \$1 grupo de parâmetros \$1 grupo de segurança \$1 segredo do Secrets Manager
+  **Rede**: VPC \$1 sub-redes \$1 tabelas de rotas \$1 grupos de segurança \$1 gateways NAT
+  **Computação com armazenamento**: instância do EC2 \$1 volumes do EBS \$1 perfil de instância do IAM

O kro gerencia a ordenação de dependências, transfere valores entre recursos (como ARNs e strings de conexão) e gerencia o ciclo de vida completo como uma unidade única.

Para obter exemplos da composição de recursos do ACK, consulte [Conceitos do ACK](ack-concepts.md).

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

Use a funcionalidade do EKS para o Argo CD com a finalidade de implantar tanto RGDs quanto instâncias usando repositórios do Git.

 **Organização de repositórios**:
+  **Repositório de plataforma**: contém as ResourceGraphDefinitions gerenciadas pela equipe responsável pela plataforma
+  **Repositórios de aplicação**: contêm instâncias de recursos personalizados gerenciadas pelas equipes responsáveis pela aplicação
+  **Repositório compartilhado**: contém tanto RGDs quanto instâncias para organizações de menor porte

 **Considerações**:
+ Implante as RGDs antes das instâncias (os ciclos de sincronização do Argo CD podem ser úteis)
+ Use Projects distintos do CD Argo para as equipes responsáveis pela plataforma e pela aplicação
+ A equipe responsável pela plataforma controla o acesso ao repositório de RGDs
+ As equipes responsáveis pela aplicação têm acesso somente de leitura às definições de RGDs

Para saber mais sobre o Argo CD, consulte [Como trabalhar com o Argo CD](working-with-argocd.md).

## Organização de ResourceGraphDefinitions
<a name="_organizing_resourcegraphdefinitions"></a>

Organize as RGDs por finalidade, complexidade e propriedade.

 **Por finalidade**:
+  **Infraestrutura**: pilhas de banco de dados, rede e armazenamento
+  **Aplicação**: aplicativos web, APIs e trabalhos em lote
+  **Plataforma**: serviços compartilhados, monitoramento e registro em log

 **Por complexidade**:
+  **Simples**: dois a três recursos com o mínimo de dependências
+  **Intermediária**: cinco a dez recursos com algumas dependências
+  **Complexa**: mais de dez recursos com dependências complexas

 **Convenções de nomenclatura**:
+ Use nomes descritivos: `webapp-with-database` e `s3-notification-queue` 
+ Inclua a versão no nome para alterações incompatíveis: `webapp-v2` 
+ Use prefixos consistentes para RGDs relacionadas: `platform- ` e `app-` 

 **Estratégia de namespace**:
+ As RGDs têm escopo de cluster (não pertencem a um namespace)
+ As instâncias pertencem a um namespace
+ Use seletores de namespace nas RGDs para controlar em qual local as instâncias podem ser criadas

## Versionamento e atualizações
<a name="_versioning_and_updates"></a>

Planeje a evolução das RGDs e a migração de instâncias.

 **Atualizações de RGD**:
+  **Alterações compatíveis**: atualize a RGD diretamente (adicione campos opcionais e novos recursos com includeWhen)
+  **Alterações incompatíveis**: crie uma nova RGD com um nome diferente (como webapp-v2)
+  **Descontinuação**: sinalize as RGDs antigas com anotações e comunique o cronograma de migração

 **Migração de instâncias**:
+ Crie novas instâncias com a RGD atualizada
+ Valide se as novas instâncias funcionam corretamente
+ Exclua as instâncias antigas
+ O kro gerencia as atualizações dos recursos subjacentes automaticamente

 **Práticas recomendadas**:
+ Teste as alterações de RGD primeiro em ambientes que não são de produção
+ Use o versionamento semântico nos nomes das RGDs para alterações significativas
+ Documente as alterações incompatíveis e os caminhos de migração
+ Forneça exemplos de migração para as equipes responsáveis pela aplicação

## Validação e testes
<a name="_validation_and_testing"></a>

Valide as RGDs antes de implantá-las em ambientes de produção.

 **Estratégias de validação**:
+  **Validação de esquema**: o kro valida a estrutura da RGD automaticamente
+  **Instâncias de simulação**: crie instâncias de teste em namespaces de desenvolvimento
+  **Testes de integração**: verifique se os recursos compostos funcionam em conjunto
+  **Aplicação de políticas**: use controladores de admissão para aplicar padrões organizacionais

 **Problemas comuns em testes**:
+ Dependências e ordenação de recursos
+ Transferência de valores entre recursos (expressões CEL)
+ Inclusão condicional de recursos (includeWhen)
+ Propagação de status provenientes de recursos subjacentes
+ Permissões de RBAC para criação de instâncias

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

Para obter informações detalhadas sobre o uso do kro:
+  [Getting Started with kro](https://kro.run/docs/guides/getting-started): criação de ResourceGraphDefinitions
+  [CEL Expressions](https://kro.run/docs/concepts/cel): gravação de expressões CEL
+  [kro Guides](https://kro.run/docs/guides/): padrões avançados de composição
+  [Troubleshooting](https://kro.run/docs/troubleshooting): solução de problemas e depuração

## Próximas etapas
<a name="_next_steps"></a>
+  [Configuração de permissões do kro](kro-permissions.md): configure o RBAC para as equipes responsáveis pela plataforma e pela aplicação
+  [Conceitos do kro](kro-concepts.md): compreenda os conceitos do kro e o ciclo de vida dos recursos
+  [Solução de problemas em funcionalidades do kro](kro-troubleshooting.md): solucione problemas do kro
+  [Conceitos do ACK](ack-concepts.md): saiba mais sobre os recursos do ACK para a composição
+  [Como trabalhar com o Argo CD](working-with-argocd.md): implante RGDs e instâncias utilizando GitOps