

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

# Criação de uma funcionalidade do kro por meio do eksctl
<a name="kro-create-eksctl"></a>

Este tópico descreve como criar uma funcionalidade do kro (Kube Resource Orchestrator) usando o eksctl.

**nota**  
Para realizar as etapas seguintes, você deve estar utilizando o eksctl na versão `0.220.0` ou em versões posteriores. Para verificar a versão, execute `eksctl version`.

## Etapa 1: criação de um perfil da funcionalidade do IAM
<a name="_step_1_create_an_iam_capability_role"></a>

Crie um arquivo de política de confiança:

```
cat > kro-trust-policy.json << 'EOF'
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "capabilities.eks.amazonaws.com"
      },
      "Action": [
        "sts:AssumeRole",
        "sts:TagSession"
      ]
    }
  ]
}
EOF
```

Crie o perfil do IAM:

```
aws iam create-role \
  --role-name KROCapabilityRole \
  --assume-role-policy-document file://kro-trust-policy.json
```

**nota**  
Ao contrário do ACK e do Argo CD, o kro não requer permissões do IAM adicionais além da política de confiança. O kro opera inteiramente no cluster e não faz chamadas de API da AWS.

## Etapa 2: criação da funcionalidade do kro
<a name="_step_2_create_the_kro_capability"></a>

Crie a funcionalidade do kro por meio do eksctl. Substitua *region-code* pela região AWS em que seu cluster se encontra e substitua *my-cluster* pelo nome do seu cluster.

```
eksctl create capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --type KRO \
  --role-arn arn:aws:iam::[.replaceable]111122223333:role/KROCapabilityRole
```

O comando é executado de forma imediata, mas a funcionalidade demora algum tempo para se tornar ativa.

## Etapa 3: verificação da ativação da funcionalidade
<a name="_step_3_verify_the_capability_is_active"></a>

Verifique o status da funcionalidade. Substitua *region-code* pela região AWS em que seu cluster se encontra e substitua *my-cluster* pelo nome do seu cluster.

```
eksctl get capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro
```

A funcionalidade estará pronta assim que o status mostrar `ACTIVE`.

## Etapa 4: concessão de permissões para o gerenciamento de recursos do Kubernetes
<a name="_step_4_grant_permissions_to_manage_kubernetes_resources"></a>

Por padrão, o kro pode apenas criar e gerenciar ResourceGraphDefinitions e suas respectivas instâncias. Para permitir que o kro crie e gerencie os recursos subjacentes do Kubernetes definidos em suas ResourceGraphDefinitions, associe a política de acesso `AmazonEKSClusterAdminPolicy` à entrada de acesso da funcionalidade.

Obtenha o ARN do perfil da funcionalidade:

```
CAPABILITY_ROLE_ARN=$(aws eks describe-capability \
  --region region-code \
  --cluster my-cluster \
  --name my-kro \
  --query 'capability.roleArn' \
  --output text)
```

Associe a política de administrador do cluster:

```
aws eks associate-access-policy \
  --region region-code \
  --cluster my-cluster \
  --principal-arn $CAPABILITY_ROLE_ARN \
  --policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
  --access-scope type=cluster
```

**Importante**  
A política `AmazonEKSClusterAdminPolicy` concede permissões abrangentes para criar e gerenciar todos os recursos do Kubernetes e tem como objetivo agilizar os primeiros passos. Para uso em ambientes de produção, crie políticas de RBAC mais restritivas que concedam somente as permissões necessárias para os recursos específicos que as ResourceGraphDefinitions gerenciarão. Para obter orientações sobre como configurar permissões de privilégio mínimo, consulte [Configuração de permissões do kro](kro-permissions.md) e [Considerações sobre segurança para funcionalidades do EKS](capabilities-security.md).

## Etapa 5: verificação da disponibilidade de recursos personalizados
<a name="_step_5_verify_custom_resources_are_available"></a>

Após a funcionalidade estar ativa, verifique se os recursos personalizados do kro estão disponíveis no cluster:

```
kubectl api-resources | grep kro.run
```

O tipo de recurso `ResourceGraphDefinition` deve aparecer na lista apresentada.

## Próximas etapas
<a name="_next_steps"></a>
+  [Conceitos do kro](kro-concepts.md): compreenda os conceitos do kro e a composição de recursos
+  [Conceitos do kro](kro-concepts.md): saiba mais sobre o SimpleSchema, expressões CEL e padrões de composição
+  [Como trabalhar com recursos de funcionalidade](working-with-capabilities.md): gerencie os recursos da funcionalidade do kro