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)