Implementando o Crossplane Estimated reading: 5 minutes 71 views 1. Pré-requisitos Um cluster Kubernetes com pelo menos 2 GB de RAM kubectl configurado Helm >=3.2 Credenciais AWS (pode ser Access Key/Secret ou IAM + IRSA se estiver no EKS) (docs.crossplane.io, reddit.com) 2. Instalar o Crossplane via Helm helm repo add crossplane-stable https://charts.crossplane.io/stable helm repo update helm install crossplane crossplane-stable/crossplane \ --namespace crossplane-system --create-namespace kubectl get pods -n crossplane-system 3. Configurar autenticação AWS 3.1. Via Secret (Access Key / Secret) Exemplo de credentials: # Criar secret com credenciais AWS kubectl create secret generic aws-secret \ -n crossplane-system \ --from-file=creds=./aws-credentials.txt # Formato do arquivo aws-credentials.txt: # [default] # aws_access_key_id = YOUR_ACCESS_KEY # aws_secret_access_key = YOUR_SECRET_KEY Aguarde até que os pods crossplane-... e rbac-manager estejam Running (medium.com). 4. Instalar o AWS Provider (Provider Family Aws v1) Crie um arquivo chamado aws-provider.yaml e coloque este blueprint abaixo apiVersion: pkg.crossplane.io/v1 kind: Provider metadata: name: upbound-provider-family-aws spec: package: xpkg.upbound.io/upbound/provider-family-aws:v1 kubectl apply -f aws-provider.yaml kubectl get providers Adicionado as configurações da aws como Access key ID e Secret access key Crie um arquivo chamado aws-providerconfig.yaml e coloque este blueprint abaixo apiVersion: aws.upbound.io/v1beta1 kind: ProviderConfig metadata: name: default spec: credentials: source: Secret secretRef: namespace: crossplane-system name: aws-secret key: creds kubectl apply -f aws-providerconfig.yaml kubectl get providerconfigs -A A coluna HEALTHY deve ficar como True após alguns segundos (cloud.theodo.com, docs.crossplane.io, github.com). 5. Criar um recurso AWS de exemplo (S3 Bucket) Configurando provider para S3, crie um arquivo chamado provider-s3.yaml e coloque este blueprint abaixo apiVersion: pkg.crossplane.io/v1 kind: Provider metadata: name: upbound-provider-aws-s3 spec: package: xpkg.upbound.io/upbound/provider-aws-s3:v1 kubectl apply -f provider-s3.yaml kubectl get providers Agora vamos criar o bucket S3 para teste, crie um arquivo chamado s3-bucket.yaml apiVersion: s3.aws.upbound.io/v1beta2 kind: Bucket metadata: annotations: meta.upbound.io/example-id: s3/v1beta2/bucket labels: testing.upbound.io/example-name: s3 name: s3-uday-com-br12124 spec: forProvider: objectLockEnabled: true region: us-east-1 tags: Name: SampleBucket kubectl apply -f s3-bucket.yaml kubectl get bucket Agora acesse a console aws e veja se o bucket foi criado, pode acontecer e alguém esta utilizando este nome então mude o name para qualquer nome. Para remover e so usar o mesmo arquivo com o delete do kubernetes kubectl delete -f s3-bucket.yaml Crossplane provisionará o bucket no AWS (medium.com, barunavo.medium.com). 6. (Opcional) Composições & Blueprints AWS Se quiser abstrair vários serviços em APIs customizadas, use: AWS Crossplane Blueprints em EKS (via Helm ou Terraform)(awslabs.github.io)Ou defina suas próprias Compositions com XRDs. 7. Upgrade do provider Para mudar versão: kubectl edit provider provider-aws # altere spec.package para: crossplane/provider-aws:v1.21.0 # > kubectl get providerrevisions Crossplane gerencia múltiplas revisões e mantém apenas uma ativa (awslabs.github.io, github.com) 🧠 Dicas da comunidade O AWS Provider instala centenas de CRDs — monitore uso de API do servidor (reddit.com). Pode gerar loops de reconciliação que podem estourar limites da API da AWS, em especial para RDS (reddit.com). ✅ Resumo dos passos: Instalar Crossplane via Helm Instalar AWS Provider (v1) Configurar autenticação (Secret ou IRSA) Criar ProviderConfig Provisionar recursos AWS com CRDs Remover tudo (CUIDADO) Para deletar completamente o Crossplane e tudo o que foi instalado por ele no seu cluster Kubernetes, incluindo os providers, configurations, CRDs e quaisquer recursos gerenciados, você pode seguir os passos abaixo. 🧨 ATENÇÃO Esse procedimento irá remover completamente o Crossplane, incluindo todos os: Providers (ex: AWS, GCP, Azure) Custom Resources criados por ele (como XRDs, CompositeResources) CRDs instaladas Configurations Recursos gerenciados por providers (se aplicável) ⚠️ Se você usou Crossplane para criar recursos em nuvens públicas, como buckets, VPCs, etc., eles não serão deletados automaticamente. Só os recursos dentro do cluster serão removidos, a menos que você limpe os recursos externos manualmente ou via os managed resources. ✅ Passos para deletar tudo do Crossplane 1. Delete recursos criados por você com Crossplane kubectl delete managed --all kubectl delete xr --all kubectl delete composition --all kubectl delete claim --all kubectl delete configuration --all kubectl delete provider --all Observação: alguns desses recursos podem ter nomes diferentes dependendo do seu setup. 2. Delete os Providers instalados (incluindo revisões) kubectl delete providers.pkg --all kubectl delete providerrevisions.pkg --all 3. Delete os Configurations instalados kubectl delete configurations.pkg --all kubectl delete configurationrevisions.pkg --all 4. Delete os CRDs instalados pelo Crossplane ⚠️ Esse passo remove todas as APIs do Crossplane. Faça só no final. kubectl get crds | grep crossplane | awk '{print $1}' | xargs kubectl delete crd 5. Delete o Crossplane (instalação principal) Se você instalou via Helm, remova o release: helm uninstall crossplane -n crossplane-system Se instalou via kubectl apply -f, delete o que foi aplicado: kubectl delete -f https://raw.githubusercontent.com/crossplane/crossplane/release-<VERSAO>/cluster/install.yaml (ou o seu arquivo local de instalação) 6. Delete namespace do Crossplane (opcional) kubectl delete ns crossplane-system 7. Verifique se tudo foi removido kubectl get all --all-namespaces | grep crossplane kubectl get crds | grep crossplane Se quiser, posso te ajudar com um script para fazer tudo isso em um comando só. Deseja isso?