Crossplane and Tap Session
Crossplane and Tap Session
CODE1222LV
and Crossplane
A Match Made in Cloud
Heaven
Scott Rosenberg
Lead Architect, CTO Office - TeraSky
#vmwareexplore #CODE1222LV
Who Am I
Age: 29
From: Israel
Twitter: @vrabbi_il
#vExpert2023 #TanzuVanguard
Crossplane
General Overview
Future Looking
What We Can Expect In The Future
Summary
Tanzu
Application Secure the path to production
Platform
An app-aware platform for a
better developer experience on
Kubernetes
Coordinate the work of
dev and ops
Backstage
Tanzu Application Garnering 100+ adaptors Backstage has gained tremendous traction by helping
organizations build self-service developer portals
Platform is backed by
some of the most mature Carvel
Developers build, deploy, and manage their own apps and package them so
and popular open-source they are more easily distributable
Learn
(Learning Center)
Discover Iterate Debug Test and Build Scan, Sign Deploy Run
and Start (IDE Plugin + (IDE Plugin + (Pipeline Service + and Store (App Delivery) (CNR)
Dev Tooling) App Live View) Build Service)
(API Portal + (Pipeline Service +
App Accelerator) Build Service)
Observe At Scale
7
Confidential │ © VMware, Inc.
OOTB Paths to production for easy onboarding
and most general use cases
Meets developers where they are comfortable
with IDE Plugins, Backstage, and Git
integrations
Easily extensible to integrate your own tooling
and opinions
Full end to end supply chain visibility
Security is integrated at every step, in a non-
intrusive, yet extremely valuable manner
Built using industry standard tooling and best
practices
Constantly evolving to help solve the issues you
will encounter before they even arise
❓ DB
Service
Application
Developers
Messaging Operations
Application Service
Caching
Level 3 Level 4
Level 1 Level 2
ClassClaims with ClassClaims with
Direct Bindings Resource Claims
Pooled Classes Provisioner Classes
Platform
name: rmq-policy
Manually
Engineering
namespace: my-rmq-namespace
Provision
group: rabbitmq.com
Services
Claim kind: RabbitmqCluster
Application
Developers
Platform
name: rmq-policy
Manually
Engineering
namespace: my-rmq-namespace
Provision
group: rabbitmq.com
Services
Claim kind: RabbitmqCluster
Platform
name:rmq-class Manually Resources
Engineering
Provision can be
Services pooled
Claim
Platform
name:rmq-class Manually Resources
Engineering
Provision are
Services Dynamically
Claim Provisioned
Even faster to get started with
Pro’s ✅ the service with dynamic
provisioning
Networking
Databases
Kubernetes Clusters
IAM
VMs
Message Queues
https://marketplace.upbound.io/providers/upbound/provider-aws/latest
Caches
Certificates
…and much more…
Confidential │ © VMware, Inc. 19
Managed Resources
apiVersion: s3.aws.crossplane.io/v1beta1
kind: Bucket
metadata:
name: crossplane-deepdive-demo-bucket
spec:
forProvider:
acl: private
locationConstraint: eu-west-1
paymentConfiguration:
payer: BucketOwner
versioningConfiguration:
status: Enabled
tagging:
tagSet:
- key: Name
value:
CrossplaneDee
pDiveDemoBuck
et
Confidential │ © VMware, Inc. 20
Managed Resource Reconciliation
● Controllers reconcile Managed Resources wit h cloud
provider and on-prem APIs (e.g., GCP, AWS, or any API)
Kubernetes Cluster
apiVer: aws/v1
kind:RDS
apply
spec:
api- w atches RDS
storage:30GB
engine: mysql server
RDS controller AW S
API
XRD
Composite Resource Definition
RDS Instance
Claim
Composition
DB Subnet
Security Group
Configuration
patches:
- fromFieldPath: "spec.nodes.count"
Copy of value from XR
toFieldPath: "spec.forProvider.scalingConfig.desiredSize" spec down to MR spec
- fromFieldPath: "spec.nodes.size"
claimRef
Composite - Cluster Scope Composite
Reconciler
composite.apiextensions.crosspl
ownerRef ownerRef ane.io
Composite Composite
Crossplane creates custom resources in Kubernetes that allow us to manage any AWS resource as a Kubernetes
resource
We can bind together multiple resources into a single API exposing
a capability
• An example is an Amazon RDS instance, where we may want to create an RDS instance, security groups, subnets, IAM
roles, and so on
apiVersion: bindable.database.example.org/v1alpha1
Creating the RDS instance kind: PostgreSQLInstance
metadata:
• $ kubectl apply –f psql-rds.yaml name: rds-postgres-db
namespace: default
spec:
parameters:
storageGB: 20
compositionSelector:
matchLabels:
provider: aws
vpc: default
publishConnectionDetailsTo:
name: rds-postgres-db
metadata:
labels:
services.apps.tanzu.vmware.com/class: rds-postgres
36
Confidential │ © VMware, Inc.
What this looks like: App developer
TAP and Crossplane can be used together to provide the ultimate Developer Experience
Both TAP and Crossplane follow a Declarative model based on Kubernetes custom resources making them easy to
integrate
Crossplane can be used in TAP not just for Service bindings but also for use cases like auto creation of ECR repos using a
tool like Kyverno
Crossplane unlocks great features and TAP wraps them up in a more user friendly and consumable manner
46
Thank You
47