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.
Composição de recursos com o kro (Kube Resource Orchestrator)
O kro (Kube Resource Orchestrator) é um projeto de código aberto nativo do Kubernetes que permite definir APIs personalizadas do Kubernetes usando uma configuração simples e direta. Com o kro, é fácil configurar novas APIs personalizadas para criar grupos de objetos do Kubernetes e definir operações lógicas entre esses recursos.
Com as funcionalidades do EKS, o kro torna-se uma funcionalidade totalmente gerenciada pela AWS, dispensando a instalação, a manutenção e a escalabilidade de controladores do kro nos clusters.
Funcionamento do kro
O kro introduz uma definição de recurso personalizado (CRD, na sigla em inglês), chamada ResourceGraphDefinition (RGD), que viabiliza a criação simples e otimizada de APIs personalizadas do Kubernetes. Ao criar uma ResourceGraphDefinition, o kro usa extensões nativas do Kubernetes para a criação e o gerenciamento de novas APIs no cluster. A partir desta especificação exclusiva de recurso, o kro criará e registrará uma nova CRD para você com base na sua especificação e se adaptará para gerenciar os recursos personalizados definidos recentemente.
As RGDs podem conter vários recursos, cabendo ao kro determinar as interdependências e a sequência de criação de recursos, para que você não precise fazer isso. É possível usar uma sintaxe simples para injetar configurações de um recurso em outro, simplificando significativamente as composições e eliminando a necessidade de operadores de integração no cluster. Com o kro, os recursos personalizados podem incluir tanto recursos nativos do Kubernetes quanto quaisquer definições de recursos personalizados (CRDs) instaladas no cluster.
O kro oferece suporte a um tipo principal de recurso:
-
ResourceGraphDefinition (RGD): define um recurso personalizado do Kubernetes, encapsulando um ou mais recursos nativos ou personalizados subjacentes
Além deste recurso, o kro criará e gerenciará o ciclo de vida dos recursos personalizados criados com ele, bem como de todos os recursos constituintes.
O kro se integra perfeitamente ao AWS Controllers for Kubernetes (ACK), permitindo que você componha recursos de workloads com recursos da AWS para criar abstrações de alto nível. Isso possibilita a criação de seus próprios blocos de criação na nuvem, simplificando o gerenciamento de recursos e permitindo padrões reutilizáveis com configurações padrão e imutáveis, baseadas nos padrões da organização.
Benefícios do kro
Com o kro, as equipes responsáveis pela plataforma podem criar APIs personalizadas do Kubernetes que agrupam vários recursos em abstrações de alto nível. Isso simplifica o gerenciamento de recursos ao permitir que desenvolvedores implantem aplicações complexas por meio de recursos personalizados que são simples, padronizados e versionados. Você define padrões reutilizáveis para combinações comuns de recursos, permitindo a criação consistente de recursos em toda a organização.
O kro faz uso da Common Expression Language (CEL) no Kubernetes
O kro oferece suporte à configuração declarativa por meio de manifestos do Kubernetes, permitindo fluxos de trabalho de GitOps e práticas de infraestrutura como código que se integram perfeitamente aos processos de desenvolvimento existentes. Como parte das funcionalidades do EKS, o kro é totalmente gerenciado pela AWS, dispensando a instalação, a configuração e a manutenção de controladores do kro nos clusters.
Exemplo: criação de uma ResourceGraphDefinition
O seguinte exemplo apresenta uma ResourceGraphDefinition simples para a criação de uma aplicação web contendo um Deployment e um Service:
apiVersion: kro.run/v1alpha1 kind: ResourceGraphDefinition metadata: name: web-application spec: schema: apiVersion: v1alpha1 kind: WebApplication spec: name: string replicas: integer | default=3 resources: - id: deployment template: apiVersion: apps/v1 kind: Deployment metadata: name: ${schema.spec.name} spec: replicas: ${schema.spec.replicas} - id: service template: apiVersion: v1 kind: Service metadata: name: ${schema.spec.name}
Quando os usuários criam instâncias do recurso personalizado WebApplication, o kro cria automaticamente os recursos correspondentes de Deployment e Service, gerenciando o ciclo de vida junto com o do recurso personalizado.
Integração com outras funcionalidades gerenciadas do EKS
O kro pode ser integrado a outras funcionalidades gerenciadas do EKS.
-
AWS Controllers for Kubernetes (ACK): use o kro para compor recursos do ACK em abstrações de alto nível, simplificando o gerenciamento de recursos da AWS.
-
Argo CD: use o Argo CD para gerenciar a implantação de recursos personalizados do kro em diversos clusters, possibilitando fluxos de trabalho GitOps para os blocos de criação de plataforma e de pilhas de aplicações.
Conceitos básicos do kro
Para começar a usar a funcionalidade do EKS para o kro:
-
Crie um recurso da funcionalidade do kro em seu cluster do EKS por meio do Console da AWS, da AWS CLI ou da ferramenta de infraestrutura como código de sua preferência.
-
Crie ResourceGraphDefinitions (RGDs) que definam APIs personalizadas e composições de recursos.
-
Aplique instâncias dos recursos personalizados para realizar o provisionamento e o gerenciamento dos recursos subjacentes do Kubernetes e da AWS.