Welcome to the Crossplane workshop
Let’s make sure we’ve got everything.
-
You need (cluster-admin) access to a K8s cluster
-
A local one like kind, k3d, Docker Destop etc. works
-
☝️ If you just want to listen, that’s fine too ☝️
-
☝️ Just keep in mind we got some HandsOn stuff ☝️
-
Credentials for AWS
-
☝️ This ist also optional, as we repeat only stuff we did with our local Kubernetes resources ☝️
-
We start using K8s itself as a resource
-
It cumulates in using AWS
-
There will be an Digitalocean example also
The cloud native control plane framework
We just use Helm to install the framework:
kubectl api-resources --api-group=apiextensions.crossplane.io helm repo add crossplane-stable https://charts.crossplane.io/stable helm repo update helm upgrade --install crossplane --create-namespace \ -n crossplane-system --set metrics.enabled=true \ crossplane-stable/crossplane --wait kubectl api-resources --api-group=apiextensions.crossplane.io
-
Get all Crossplane related Resources
-
Yes Crossplane creates
Categories
-
As with
kubectl get all
kubectl get crossplane
-
Get all managed resources
-
Should be empty
kubectl get managed
-
Check other
Categories
:)
kubectl get crd -o custom-columns=NAME:.metadata.name,CATEGORIES:.spec.names.categories
-
The cloud native control plane framework
-
Universal control plane
-
We know control planes
-
Hey we know Kubernetes, so yes we know
-
It is about managing "cloud" resources
-
More precise:
-
It is about managing any resource behind an API
-
-
Crossplane provides a declarative API on top of the "cloud" resources
-
Allowing to bundle these resources
-
So we don’t write code (YAML-engineering)
-
Think about Crossplane like a control plane for everything
-
Giving you some gluecode CRDs on top
-
These CRDs work as usual in K8s-land
-
It is all about managing
Managed Resources
-
Like in Kubernetes
-
Think about having RDS-Object
-
Everything with an API :)
-
Later we install Providers
-
Our Cloud/API specific CRDs
Kubernetes |
AWS |
Digitalocean |
Azure |
ArgoCD |
Helm |
-
Crossplane extends the K8s-API
-
Workflow is the same:
-
Declaring API resources
-
Reconciliation (looping) API resources
-
kubectl
is still our friend <3
-
-
So Crossplane (Providers) offers something like Terraform?!
-
Jain 🇩🇪
-
It is declarative (Kubernetes way)
-
Crossplane offers CRDs on top of Providers CRDs
-
Divide between Consumers and Infra
-
Hint: Kube-bind → https://github.com/kube-bind/ (replacing providers)
-
Jain 🇩🇪
-
Infra defines an interface/API using CompositeResourceDefinition (XRD)
-
Compositions fulfill the API by bundling Managed Resources
-
Dev use Claims to instantiate Composite Resource (XR)
-
XR represents a configured Composition
A Claim is to a XR what a PVC ist to a PV
ROBERT malt ein BILD ❤️
-
Our Crossplane has no resources to access
-
We need Provider to access API driven backends
-
Providers are bundled as OCI-Images
-
Extends Crossplane with new Managed Resource Types
-
CRDs for Cloud Resources
-
Talks with the Cloud-API
-
Needs credentials (ProviderConfig)
-
Installs a Deployment
-
Lists of Providers
-
While Provider installs the provider control plane
-
ProviderConfig configures the provider control plane
-
Most likely providing Credentials ☝️
-
Reconciliation Loop all the time
-
All as Code
-
GitOps (aka everything is in Git)
-
Shifting Left (to the Devs)
-
Giving Complexity to the Ops aka Infra