3 ms·
I wonder what this means for projects like https://crossplane.io/ https://crossplane.io/, it's a tool that lets you provision cloud resources with Kubernetes ma
by nickjj 5y ago
I wonder what this means for projects like https://crossplane.io/ https://crossplane.io/, it's a tool that lets you provision cloud resources with Kubernetes manifests. I guess this cluster API project is maybe something Crossplane would use under the hood?
I haven't used Crossplate yet but I like the idea around it and could see things moving into this direction over time. Mainly because:
I use Terraform now to set up cloud resources and ArgoCD to control what runs in the cluster but there's pain points in having things exist in both worlds as dependencies. Like if I want to Helm install the AWS Load Balancer controller into my cluster using ArgoCD it requires having a few IAM policies created by Terraform beforehand and if you use something like EKS Fargate it also means your load balancer controller needs to know your VPC ID at install time which is something only Terraform knows about since it created the VPC.
So now you end up writing glue code to extract outputs from Terraform and use sed to replace them into Kubernetes YAML files. Another example would be having access to useful Kubernetes add-ons like External DNS to update public DNS records automatically but you still need to create your AWS Hosted Zone with Terraform beforehand for new domains.
It would be way cleaner and nicer if everything was provisioned by the same tool. I know Terraform can Helm install things but I don't like this pattern where a tool that's dedicated to setting up my cloud infrastructure is now responsible for application level things. It would be like trying to use Terraform to replace Ansible, it just doesn't feel like the right tool for the job.
But a unified tool that is a reconciliation master through Kubernetes seems like a no brainer evolution in how we deal with IaC. Not just to keep things in the same universe but applying changes and drift detection.
- embik 5y ago> I guess this cluster API project is maybe something Crossplane would use under the hood? It’s more likely the other way around: Cluster API needs a so-called infrastructure provider that creates cloud resources to get a Kubernetes cluster running. The logic to join/create a Kubernetes cluster within the VMs created by that is managed by a separate provider, the bootstrap provider. So, I guess it would be possible to externalise the creation of cloud resources to Crossplane and write a small shim infrastructure provider that just translates your cluster specification into Crossplane resources. Crossplane has a different use case than Cluster API (create any cloud resources vs create a Kubernetes cluster), so Crossplane using Cluster API doesn’t make a lot of sense. Crossplane basically is „what if Terraform was a Kubernetes Operator“, so that somewhat sounds like what you’re interested in with the later parts of your post.