DEV Community

Daniane P. Gomes
Daniane P. Gomes

Posted on

Crossplane: esteróides para o Kubernetes

Esses dias assisti um vídeo do sempre sensacional @badtux_ sobre Crossplane e fiquei com vontade de escrever um pouco sobre o assunto. 😁

🧵

Afinal o que é o Crossplane mesmo?

Na minha definição grosseira, é um anabolizante pro Kubernetes que permite administrar serviços na nuvem (AWS, Azure ou GCP) de dentro de um k8s cluster. Tudo isso usando só os queridos YMLs e comandos kubectl.

Mas traduzindo livremente do site oficial crossplane.io, tem uma definição mais bonita “Crossplane é um framework de código aberto de ‘control plane’ mantido pela comunidade cloud-native.”

E o que significa “control plane”?

“Control plane” e “data plane” são termos técnicos de rede, mas esses nomes também são usados no contexto de serviços na nuvem.

“Control plane” é o que trata na configuração ou modificação de recursos, enquanto “data plane” trata da entrega desses recursos.

Sendo assim, o Crossplane pode, por exemplo, provisionar um novo RDS, ou então apagar um bucket no S3, ou ainda alterar o tamanho de uma instância do Opensearch, apenas aplicando um manifesto.

Se é integrado com o ecossistema do k8s, então ele ainda precisa ser instalado em cluster que já existe, certo? Certo.

Tá, mas então qual é a vantagem disso? Porque não usar Terraform pra tudo em vez de ter uma ferramenta extra?

Com Crossplane não é necessário aprender uma nova “linguagem” como o HCL, tudo é feito em yml, então as configurações são fáceis de ler.

Integrado com as melhores práticas de GitOps, a infraestrutura provisionada se auto repara assim que detecta uma diferença entre a fonte de verdade (um repositório git onde são armazenados os yml) e os serviços que estão rodando.

Outra coisa legal do Crossplane é que dá pra criar abtrações pra estrutura dos recursos e limitar o que ou não ser feito.

Por exemplo, um time de plataforma define que instâncias de RDS só podem ser provisionadas na versão x ou y e apenas com classes “small”.

O time de aplicações vair poder criar/alterar instâncias sozinho sem o risco de usar configurações não permitidas.

Ou ainda, uma KMS pode ser automaticamente criada, simplifcando as configurações exigidas do time de aplicações.

Isso é possível através de Compositions, Composite Resource Definitions e Claims. Mas isso é assunto pra uma próxima thread. Quem sabe…

Vídeo da Linuxtips https://www.youtube.com/watch?v=Z9wXnpx9PHM

Top comments (0)