SlideShare une entreprise Scribd logo
Découverte de Crossplane - Devoxx 2023 - A. Blind
Découverte de Crossplane
Devoxx 2023
Adrien Blind
05/07/2024
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 2
Il y a Crossplane… et Crossplane
« Le crossplane ou plan transversal est une
conception de vilebrequin pour moteurs à
pistons où les manetons ne sont pas sur un
même plan, mais sur des plans
perpendiculaires, calés à un angle de 90°
(phase de rotation du vilebrequin) entre les
tours de vilebrequin. Le vilebrequin
crossplane est la configuration la plus
courante pour les moteurs V8 de série. »
- Wikipedia
Crossplane Ford V8
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 3
Faisons un peu connaissance
 Je ne fais pas de mécanique !
 Data Foundation Tribe lead
 Docker Captain
 Co-animateur des communautés Docker, Kubernetes et
Serverless sur Paris
 Et vous ? Plutôt dev ? Plutôt Ops ?
?
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 4
De l’hégémonie des conteneurs… et Kubernetes
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 5
Un continuum de solutions en présence
Focus on value & better TTM
but support platform constraints
More flexibility, more tuning
capacity… but assume plumbing
Functions
ABSTRACT
FOCUS
INFRA
Microservices
Monoliths
CaaS
IaaS
FaaS
& PaaS
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 6
Les apps reposent sur une pluralité de composants
L’application repose sur des payloads applicatives variées
+
Des ressources IT plurielles : DB, queues, buckets, etc.
(parfois mutualisées, portées par des expertises et paradigmes différents, des entités distinctes, et outillées différemment)
Il y a donc un enjeu à réconcilier les différentes facettes d’une app, dans une
dynamique de delivery unifiée
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 7
Vous souvenez-vous de CNAB ?
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 8
Un projet opensource lancé par Upbound fin 2018
Il s’agit d’une control plane : framework qui orchestre le
déploiement et l’exécution de plateformes applicatives et
d’infrastructure
Il intègre le CNCF en 2020 en incubation
Il s’appuie sur les paradigmes natifs de Kubernetes
(opérateurs, CRDs, etc.) qu’il étend pour piloter avec un
même prisme l’application dans son ensemble
Actuellement en version 1.11, il est progressivement utilisé
chez de grands acteurs en production (Deutsch Bahn par
exemple)
Qu’est ce que Crossplane ?
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 9
Un système de provider pour s’adosser à de multiples
fournisseurs tiers
Crossplane
AWS Azure GCP Terrajet
Terraform
 Crossplane vous offre un point focal unique,
intermédiant l’accès aux ressource de vos cloud
providers par l’intermédiaire d’un système de
providerspropose un système de provider
 De nombreux providers sont disponibles au travers
d’une market place proposée par Upbound
 Mais cela impose aux providers de « suivre »
constamment l’évolution des produits de ces
fournisseurs (le catalogue AWS représente à lui seul
plus de 200 produits à ce jour…)
 Terrajet permet désormais une passerelle vers
Terraform (et donc tout le patrimoine
correspondant) en générant des providers
Crossplane
…
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 10
# On crée un namespace dédié
kubectl create namespace crossplane-system
# Avec Helm, on installe Crossplane sur le cluster
helm repo add crossplane-stable https://charts.crossplane.io/stable
helm repo update
helm install crossplane --namespace crossplane-system crossplane-stable/crossplane
# On étend la CLI de Kubernetes
curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh
# On vérifie enfin que tout est opérationnel
helm list -n crossplane-system
kubectl get all -n crossplane-system
Installation de Crossplane
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 11
# On crée une clé pour accéder à Azure de façon programmatique
# tt on la stocke sous forme de secret
az ad sp create-for-rbac --sdk-auth --role Owner
--scopes "/subscriptions/6f92cfb7-df60-4eb8-b3f4-cda514df96ca"
> "azure-creds.json"
kubectl create secret generic azure-creds -n crossplane-system
--from-file=creds=./azure-creds.json
# On installe le provider Azure de Crossplane
kubectl crossplane install provider xpkg.upbound.io/crossplane-
contrib/provider-azure:v0.20.1
kubectl get Provider
kubectl describe Provider
Déploiement de providers : ex. avec Azure (1/2)
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 12
# Et on configure celui-ci
# (on aurait pu le faire dans le même
# fichier yaml)
cat > azure-config.yaml <<EOF
apiVersion: azure.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
credentials:
source: Secret
secretRef:
namespace: crossplane-system
name: azure-creds
key: creds
EOF
kubectl apply -f azure-config.yaml
kubectl get ProviderConfig
kubectl describe ProviderConfig
kubectl describe ProviderConfig default
N.B. on utilise ici un provider qui sera
utilisé automatiquement par défaut
(« default »)
Déploiement de providers : ex. avec Azure (2/2)
# Remarque : on aurait pu installer le
# provider de la même façon qu’on l’a
# configuré avec ce qui suit
cat > azure-provider.yaml <<EOF
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-azure
spec:
package: "crossplane/provider-azure:master"
EOF
kubectl apply -f azure-provider.yaml
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 13
Déploiement de providers : ex. AWS ou GCP
# Pas très différent avec AWS…
kubectl crossplane install configuration
registry.upbound.io/xp/getting-started-
with-aws:v1.10.1
kubectl create secret generic aws-creds -n
crossplane-system --from-file=creds=./aws-
creds.conf
cat > aws-provider.yaml <<EOF
apiVersion: aws.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
credentials:
source: Secret
secretRef:
namespace: crossplane-system
name: aws-creds
key: creds
EOF
kubectl apply -f aws-provider.yaml
# Ou GCP
kubectl crossplane install configuration
registry.upbound.io/xp/getting-started-with-gcp:v1.10.1
cat > gcp-provider.yaml <<EOF
---
apiVersion: v1
kind: Secret
metadata:
name: gcp-account-creds
namespace: ${PROVIDER_SECRET_NAMESPACE}
type: Opaque
data:
creds: ${BASE64ENCODED_GCP_PROVIDER_CREDS}
---
apiVersion: gcp.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
projectID: ${PROJECT_ID}
credentials:
source: Secret
secretRef:
namespace: ${PROVIDER_SECRET_NAMESPACE}
name: gcp-account-creds
key: creds
EOF
kubectl apply -f "gcp-provider.yaml"
kubectl crossplane install configuration
registry.upbound.io/xp/getting-started-with-gcp:v1.10.1
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 14
Concepts essentiels
Cycle de vie de ressources
 Les ressources managées représentent des actifs tangibles provisionnés sur un
provider : une VM, une database, un cluster K8S, un VPC, une policy IAM…
 Il s’agit plutôt d’une machine à état : on déclare la cible souhaitée, et le système
converge progressivement en prenant les actions nécessaires
 La réconciliation est permanente, on ne fait pas que provisionner oneshot ! Les
divergences ne peuvent donc pas perdurer. Essayez de supprimer une ressource
dans la console de votre cloud vendor préféré…
 Les paramètres en dépendance d’une ressource à une autre sont déclarés dans les
manifests
 Les suppressions peuvent être effectives, ou rendre les ressources orphelines. Ce
dernier cas est typiquement utile dans le cas des ressources impliquant de la
persistance (une DB, un bucket S3, …)
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 15
# Azure impose de créer toutes ses ressources dans un resourcegroup, allons-y !
cat > azure-resourcegroup.yaml <<EOF
apiVersion: azure.crossplane.io/v1alpha3
kind: ResourceGroup
metadata:
name: test-rg-crossplane
spec:
location: eastus
EOF
kubectl apply -f azure-resourcegroup.yaml
kubectl get ResourceGroup
kubectl describe ResourceGroup
kubectl describe ResourceGroup test-rg-crossplane
# Que se passe t’il si je supprime le resource group sur la console ?
Déploiement direct de ressources (1/2)
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 16
# Créons une base de données
cat > azure-db.yaml <<EOF
apiVersion: database.azure.crossplane.io/v1beta1
kind: PostgreSQLServer
metadata:
name: sqlserverpostgresql
spec:
forProvider:
administratorLogin: myadmin
resourceGroupNameRef:
name: test-rg-crossplane
location: West US 2
sslEnforcement: Disabled
version: "9.6"
sku:
tier: GeneralPurpose
capacity: 2
family: Gen5
storageProfile:
storageMB: 20480
writeConnectionSecretToRef:
namespace: crossplane-system
name: sqlserverpostgresql-conn
EOF
kubectl apply -f azure-db.yaml
kubectl get Postgresqlserver
Déploiement direct de ressources (2/2)
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 17
Des ressources concrètes et des compositions abstraites,
séparation des concerns
 Les compositeResourceDefinition (XRDs) sont des
interfaces définissant un ensemble de ressources et créent
une forme d’abstraction. Elles déclinent du principe de CRD
de K8S.
 Les compositeResources implémentent les XRDs et sont
sollicitées par les claims : ce sont des définitions de groupes
de ressources tangibles.
 Les compositions matérialisent des configurations
opinionées d’une ressource composite et adossée à des
ressources tangibles (par ex. une composition de
« production », une composition par cloud vendor…)
 Les claims permettent optionnellement aux applications,
isolées au sein de leur propre namespaces, d’accéder
indirectement aux ressources, qui sont elles cluster-wide.
Les ressources peuvent être provisionnées
automatiquement à l’occasion de la sollicitation. C’est une
sorte de proxy dédié à une app.
 Les composite ressources peuvent être récursives pour
assembler des building blocks macroscopiques
ManagedResource
ManagedResource
ManagedResource
Composition
MyWebPlatformInstance
(XRD Claim)
Utilise
App teams
consommant des
ressources dédiées
et mutualisées
(depuis leurs
namespaces
distincts)
SRE
team gérant la
plateforme et
les ressources
mutualisées
transverses, les
res.
Préprovisionéée
s, ou portées
par ’IT (VPC…)
IAM
VPC
VM
MyWebPlatformInstance
(XRD Claim)
Utilise
SEGREGATION
-------------------
OF CONCERNS
Composite
Resource
Composite
Resource
Definition
Implem. Config
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 18
# Exemple de définition de ressource
# composite abstraite pour une base de données
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: xpostgresqlinstances.database.example.org
spec:
group: database.example.org
names:
kind: XPostgreSQLInstance
plural: xpostgresqlinstances
claimNames:
kind: PostgreSQLInstance
plural: postgresqlinstances
versions:
- name: v1alpha1
served: true
referenceable: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
parameters:
type: object
properties:
storageGB:
type: integer
required:
- storageGB
required:
- parameters
Définitions et ressources composites
# Exemple de ressource composite
# correspondant à cette XRD
apiVersion: database.example.org/v1alpha1
kind: XPostgreSQLInstance
metadata:
name: my-db
spec:
parameters:
storageGB: 20
compositionRef:
name: production
writeConnectionSecretToRef:
namespace: crossplane-system
name: my-db-connection-details
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 19
Claims et configurations
# Exemple de configuration
# Celle-ci fait la « glue » entre la ressource macro abstrait
# et les resssources réelles provisionnées
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: example
labels:
crossplane.io/xrd: xpostgresqlinstances.database.example.org
provider: gcp
spec:
writeConnectionSecretsToNamespace: crossplane-system
compositeTypeRef:
apiVersion: database.example.org/v1alpha1
kind: XPostgreSQLInstance
resources:
- name: cloudsqlinstance
base:
apiVersion: database.gcp.crossplane.io/v1beta1
kind: CloudSQLInstance
spec:
forProvider:
databaseVersion: POSTGRES_12
region: us-central1
settings:
tier: db-custom-1-3840
dataDiskType: PD_SSD
ipConfiguration:
ipv4Enabled: true
authorizedNetworks:
- value: "0.0.0.0/0"
patches:
- type: FromCompositeFieldPath
fromFieldPath: spec.parameters.storageGB
toFieldPath: spec.forProvider.settings.dataDiskSizeGb
# Exemple de claim permettant
# d’atteindre cette ressource
# composite
apiVersion:
database.example.org/v1alpha1
kind: PostgreSQLInstance
metadata:
namespace: default
name: my-db
spec:
parameters:
storageGB: 20
compositionRef:
name: production
writeConnectionSecretToRef:
name: my-db-connection-details
Découverte de Crossplane - Devoxx 2023 - A. Blind
05/07/2024 20
Kubernetes est plus que jamais l’OS du cloud. Mais pour autant, le cloud ne se
résume pas à Kubernetes ;)
Conclusions
1
2
Crossplane offre une perspective unifiée des ressources IT: il offre une interface
homogène, multicloud et universelle pour accéder à une pluralité de ressources. Et
il est extensible.
On consacre plus que jamais Kubernetes comme socle universel d’un système
d’information cloud-centric, bien au delà de sa fonction d’orchestration de conteneurs :
on déploie désormais des clusters… pour orchestrer d’autres plateformes
4
3
Mais ce n’est pas qu’un simple backend d’Ops : il permet d’unifier le cycle de vie
des apps et leurs ressources sous-jacentes. C’est un vrai outil devops, et s’insère
bien avec les paradigmes gitops (il se combine très bien avec Flux ou Argo CD)
Découverte de Crossplane - Devoxx 2023 - A. Blind
Merci.
21

Contenu connexe

Similaire à Introduction à Crossplane (Talk Devoxx 2023)

Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckvPres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
BilelBoulehmi
 
Devops d-day 2017 docker openstack docker
Devops d-day 2017  docker openstack dockerDevops d-day 2017  docker openstack docker
Devops d-day 2017 docker openstack docker
Alexis Ducastel
 
Sécurisez votre software supply chain avec SLSA, Sigstore et Kyverno
Sécurisez votre software supply chain avec SLSA, Sigstore et KyvernoSécurisez votre software supply chain avec SLSA, Sigstore et Kyverno
Sécurisez votre software supply chain avec SLSA, Sigstore et Kyverno
Mohamed Abdennebi
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
The Incredible Automation Day
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
gcatt
 
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services  Par Al...XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services  Par Al...
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
Publicis Sapient Engineering
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
Wescale
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration Docker
Jean-Baptiste Claramonte
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Publicis Sapient Engineering
 
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Ori Pekelman
 
Deep Dive: Virtual Private Cloud
Deep Dive: Virtual Private CloudDeep Dive: Virtual Private Cloud
Deep Dive: Virtual Private Cloud
Julien SIMON
 
Déploiement automatisé d'un environnement dans Azure
Déploiement automatisé d'un environnement  dans AzureDéploiement automatisé d'un environnement  dans Azure
Déploiement automatisé d'un environnement dans Azure
Manon PERNIN
 
[Gab2016] Déploiement automatisé d'un environnement dans Azure - Manon Pernin
[Gab2016] Déploiement automatisé d'un environnement dans Azure - Manon Pernin[Gab2016] Déploiement automatisé d'un environnement dans Azure - Manon Pernin
[Gab2016] Déploiement automatisé d'un environnement dans Azure - Manon Pernin
Cellenza
 
Manon Pernin - Déploiement automatisé d’un environnement dans Azure - Global ...
Manon Pernin - Déploiement automatisé d’un environnement dans Azure - Global ...Manon Pernin - Déploiement automatisé d’un environnement dans Azure - Global ...
Manon Pernin - Déploiement automatisé d’un environnement dans Azure - Global ...
AZUG FR
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Alexandre Touret
 
Gab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur AzureGab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur Azure
Vincent Thavonekham-Pro
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
Xavier MARIN
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
Jérôme Petazzoni
 
The real WAX ROADSHOW K8S 2022.pdf
The real WAX ROADSHOW K8S 2022.pdfThe real WAX ROADSHOW K8S 2022.pdf
The real WAX ROADSHOW K8S 2022.pdf
François Berthault
 
Openstack framework Iaas
Openstack framework IaasOpenstack framework Iaas
Openstack framework Iaas
Noureddine BOUYAHIAOUI
 

Similaire à Introduction à Crossplane (Talk Devoxx 2023) (20)

Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckvPres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
Pres_openshift.ppt jvjxcvcxkjvlkxcjvlkxjlkvjcxkljvlckv
 
Devops d-day 2017 docker openstack docker
Devops d-day 2017  docker openstack dockerDevops d-day 2017  docker openstack docker
Devops d-day 2017 docker openstack docker
 
Sécurisez votre software supply chain avec SLSA, Sigstore et Kyverno
Sécurisez votre software supply chain avec SLSA, Sigstore et KyvernoSécurisez votre software supply chain avec SLSA, Sigstore et Kyverno
Sécurisez votre software supply chain avec SLSA, Sigstore et Kyverno
 
Orchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp DockerOrchestrating Docker in production - TIAD Camp Docker
Orchestrating Docker in production - TIAD Camp Docker
 
Présentation CoreOS
Présentation CoreOSPrésentation CoreOS
Présentation CoreOS
 
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services  Par Al...XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services  Par Al...
XebiCon'16 : Choisissez votre style avec Docker & Amazon Web Services Par Al...
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration Docker
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
Construire Des Applications Cloud Natives - SymfonyLive Paris 2016
 
Deep Dive: Virtual Private Cloud
Deep Dive: Virtual Private CloudDeep Dive: Virtual Private Cloud
Deep Dive: Virtual Private Cloud
 
Déploiement automatisé d'un environnement dans Azure
Déploiement automatisé d'un environnement  dans AzureDéploiement automatisé d'un environnement  dans Azure
Déploiement automatisé d'un environnement dans Azure
 
[Gab2016] Déploiement automatisé d'un environnement dans Azure - Manon Pernin
[Gab2016] Déploiement automatisé d'un environnement dans Azure - Manon Pernin[Gab2016] Déploiement automatisé d'un environnement dans Azure - Manon Pernin
[Gab2016] Déploiement automatisé d'un environnement dans Azure - Manon Pernin
 
Manon Pernin - Déploiement automatisé d’un environnement dans Azure - Global ...
Manon Pernin - Déploiement automatisé d’un environnement dans Azure - Global ...Manon Pernin - Déploiement automatisé d’un environnement dans Azure - Global ...
Manon Pernin - Déploiement automatisé d’un environnement dans Azure - Global ...
 
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
Checklist pour concevoir une application dans le cloud.10 conseils à l'attent...
 
Gab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur AzureGab2015 Jean-Marie Crommen Docker sur Azure
Gab2015 Jean-Marie Crommen Docker sur Azure
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
The real WAX ROADSHOW K8S 2022.pdf
The real WAX ROADSHOW K8S 2022.pdfThe real WAX ROADSHOW K8S 2022.pdf
The real WAX ROADSHOW K8S 2022.pdf
 
Openstack framework Iaas
Openstack framework IaasOpenstack framework Iaas
Openstack framework Iaas
 

Plus de Adrien Blind

Introdution to Dataops and AIOps (or MLOps)
Introdution to Dataops and AIOps (or MLOps)Introdution to Dataops and AIOps (or MLOps)
Introdution to Dataops and AIOps (or MLOps)
Adrien Blind
 
DataOps introduction : DataOps is not only DevOps applied to data!
DataOps introduction : DataOps is not only DevOps applied to data!DataOps introduction : DataOps is not only DevOps applied to data!
DataOps introduction : DataOps is not only DevOps applied to data!
Adrien Blind
 
An introduction to Serverless
An introduction to ServerlessAn introduction to Serverless
An introduction to Serverless
Adrien Blind
 
Skynet vs planet of apes
Skynet vs planet of apesSkynet vs planet of apes
Skynet vs planet of apes
Adrien Blind
 
DevOps at scale: what we did, what we learned at Societe Generale
DevOps at scale: what we did, what we learned at Societe GeneraleDevOps at scale: what we did, what we learned at Societe Generale
DevOps at scale: what we did, what we learned at Societe Generale
Adrien Blind
 
Unleash software architecture leveraging on docker
Unleash software architecture leveraging on dockerUnleash software architecture leveraging on docker
Unleash software architecture leveraging on docker
Adrien Blind
 
Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]
Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]
Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]
Adrien Blind
 
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
Adrien Blind
 
Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?
Adrien Blind
 
Petit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projetsPetit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projets
Adrien Blind
 
Docker cloud hybridation & orchestration
Docker cloud hybridation & orchestrationDocker cloud hybridation & orchestration
Docker cloud hybridation & orchestration
Adrien Blind
 
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
Adrien Blind
 
Introduction to Unikernels at first Paris Unikernels meetup
Introduction to Unikernels at first Paris Unikernels meetupIntroduction to Unikernels at first Paris Unikernels meetup
Introduction to Unikernels at first Paris Unikernels meetup
Adrien Blind
 
When Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architectureWhen Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architecture
Adrien Blind
 
Full stack automation - TIAD 2015
Full stack automation - TIAD 2015Full stack automation - TIAD 2015
Full stack automation - TIAD 2015
Adrien Blind
 
Continous delivery at docker age
Continous delivery at docker ageContinous delivery at docker age
Continous delivery at docker age
Adrien Blind
 
Docker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaSDocker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaS
Adrien Blind
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?
Adrien Blind
 
Identity & Access Management in the cloud
Identity & Access Management in the cloudIdentity & Access Management in the cloud
Identity & Access Management in the cloud
Adrien Blind
 
The missing piece : when Docker networking and services finally unleashes so...
 The missing piece : when Docker networking and services finally unleashes so... The missing piece : when Docker networking and services finally unleashes so...
The missing piece : when Docker networking and services finally unleashes so...
Adrien Blind
 

Plus de Adrien Blind (20)

Introdution to Dataops and AIOps (or MLOps)
Introdution to Dataops and AIOps (or MLOps)Introdution to Dataops and AIOps (or MLOps)
Introdution to Dataops and AIOps (or MLOps)
 
DataOps introduction : DataOps is not only DevOps applied to data!
DataOps introduction : DataOps is not only DevOps applied to data!DataOps introduction : DataOps is not only DevOps applied to data!
DataOps introduction : DataOps is not only DevOps applied to data!
 
An introduction to Serverless
An introduction to ServerlessAn introduction to Serverless
An introduction to Serverless
 
Skynet vs planet of apes
Skynet vs planet of apesSkynet vs planet of apes
Skynet vs planet of apes
 
DevOps at scale: what we did, what we learned at Societe Generale
DevOps at scale: what we did, what we learned at Societe GeneraleDevOps at scale: what we did, what we learned at Societe Generale
DevOps at scale: what we did, what we learned at Societe Generale
 
Unleash software architecture leveraging on docker
Unleash software architecture leveraging on dockerUnleash software architecture leveraging on docker
Unleash software architecture leveraging on docker
 
Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]
Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]
Docker, cornerstone of cloud hybridation ? [Cloud Expo Europe 2016]
 
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
 
Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?Docker, cornerstone of an hybrid cloud?
Docker, cornerstone of an hybrid cloud?
 
Petit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projetsPetit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projets
 
Docker cloud hybridation & orchestration
Docker cloud hybridation & orchestrationDocker cloud hybridation & orchestration
Docker cloud hybridation & orchestration
 
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
DevOps, NoOps, everything-as-code, commoditisation… Quel futur pour les ops ?
 
Introduction to Unikernels at first Paris Unikernels meetup
Introduction to Unikernels at first Paris Unikernels meetupIntroduction to Unikernels at first Paris Unikernels meetup
Introduction to Unikernels at first Paris Unikernels meetup
 
When Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architectureWhen Docker Engine 1.12 features unleashes software architecture
When Docker Engine 1.12 features unleashes software architecture
 
Full stack automation - TIAD 2015
Full stack automation - TIAD 2015Full stack automation - TIAD 2015
Full stack automation - TIAD 2015
 
Continous delivery at docker age
Continous delivery at docker ageContinous delivery at docker age
Continous delivery at docker age
 
Docker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaSDocker: Redistributing DevOps cards, on the way to PaaS
Docker: Redistributing DevOps cards, on the way to PaaS
 
Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?Docker, Pierre angulaire du continuous delivery ?
Docker, Pierre angulaire du continuous delivery ?
 
Identity & Access Management in the cloud
Identity & Access Management in the cloudIdentity & Access Management in the cloud
Identity & Access Management in the cloud
 
The missing piece : when Docker networking and services finally unleashes so...
 The missing piece : when Docker networking and services finally unleashes so... The missing piece : when Docker networking and services finally unleashes so...
The missing piece : when Docker networking and services finally unleashes so...
 

Dernier

Lae-ac1-5_english-fraançais_qins italy.pdf
Lae-ac1-5_english-fraançais_qins italy.pdfLae-ac1-5_english-fraançais_qins italy.pdf
Lae-ac1-5_english-fraançais_qins italy.pdf
djelloulbra
 
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptxCours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Jacques KIZA DIMANDJA
 
procede de fabrication mecanique et industriel
procede de fabrication mecanique et industrielprocede de fabrication mecanique et industriel
procede de fabrication mecanique et industriel
saadbellaari
 
Meetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances LiferayMeetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances Liferay
Sébastien Le Marchand
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
InnovaSter-Trade Ltd.
 
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Maalik Jallo
 

Dernier (6)

Lae-ac1-5_english-fraançais_qins italy.pdf
Lae-ac1-5_english-fraançais_qins italy.pdfLae-ac1-5_english-fraançais_qins italy.pdf
Lae-ac1-5_english-fraançais_qins italy.pdf
 
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptxCours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
 
procede de fabrication mecanique et industriel
procede de fabrication mecanique et industrielprocede de fabrication mecanique et industriel
procede de fabrication mecanique et industriel
 
Meetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances LiferayMeetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances Liferay
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
 
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
Transformation Digitale - Initiez-vous à l'informatique et à l'utilisation de...
 

Introduction à Crossplane (Talk Devoxx 2023)

  • 1. Découverte de Crossplane - Devoxx 2023 - A. Blind Découverte de Crossplane Devoxx 2023 Adrien Blind 05/07/2024
  • 2. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 2 Il y a Crossplane… et Crossplane « Le crossplane ou plan transversal est une conception de vilebrequin pour moteurs à pistons où les manetons ne sont pas sur un même plan, mais sur des plans perpendiculaires, calés à un angle de 90° (phase de rotation du vilebrequin) entre les tours de vilebrequin. Le vilebrequin crossplane est la configuration la plus courante pour les moteurs V8 de série. » - Wikipedia Crossplane Ford V8
  • 3. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 3 Faisons un peu connaissance  Je ne fais pas de mécanique !  Data Foundation Tribe lead  Docker Captain  Co-animateur des communautés Docker, Kubernetes et Serverless sur Paris  Et vous ? Plutôt dev ? Plutôt Ops ? ?
  • 4. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 4 De l’hégémonie des conteneurs… et Kubernetes
  • 5. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 5 Un continuum de solutions en présence Focus on value & better TTM but support platform constraints More flexibility, more tuning capacity… but assume plumbing Functions ABSTRACT FOCUS INFRA Microservices Monoliths CaaS IaaS FaaS & PaaS
  • 6. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 6 Les apps reposent sur une pluralité de composants L’application repose sur des payloads applicatives variées + Des ressources IT plurielles : DB, queues, buckets, etc. (parfois mutualisées, portées par des expertises et paradigmes différents, des entités distinctes, et outillées différemment) Il y a donc un enjeu à réconcilier les différentes facettes d’une app, dans une dynamique de delivery unifiée
  • 7. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 7 Vous souvenez-vous de CNAB ?
  • 8. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 8 Un projet opensource lancé par Upbound fin 2018 Il s’agit d’une control plane : framework qui orchestre le déploiement et l’exécution de plateformes applicatives et d’infrastructure Il intègre le CNCF en 2020 en incubation Il s’appuie sur les paradigmes natifs de Kubernetes (opérateurs, CRDs, etc.) qu’il étend pour piloter avec un même prisme l’application dans son ensemble Actuellement en version 1.11, il est progressivement utilisé chez de grands acteurs en production (Deutsch Bahn par exemple) Qu’est ce que Crossplane ?
  • 9. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 9 Un système de provider pour s’adosser à de multiples fournisseurs tiers Crossplane AWS Azure GCP Terrajet Terraform  Crossplane vous offre un point focal unique, intermédiant l’accès aux ressource de vos cloud providers par l’intermédiaire d’un système de providerspropose un système de provider  De nombreux providers sont disponibles au travers d’une market place proposée par Upbound  Mais cela impose aux providers de « suivre » constamment l’évolution des produits de ces fournisseurs (le catalogue AWS représente à lui seul plus de 200 produits à ce jour…)  Terrajet permet désormais une passerelle vers Terraform (et donc tout le patrimoine correspondant) en générant des providers Crossplane …
  • 10. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 10 # On crée un namespace dédié kubectl create namespace crossplane-system # Avec Helm, on installe Crossplane sur le cluster helm repo add crossplane-stable https://charts.crossplane.io/stable helm repo update helm install crossplane --namespace crossplane-system crossplane-stable/crossplane # On étend la CLI de Kubernetes curl -sL https://raw.githubusercontent.com/crossplane/crossplane/master/install.sh | sh # On vérifie enfin que tout est opérationnel helm list -n crossplane-system kubectl get all -n crossplane-system Installation de Crossplane
  • 11. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 11 # On crée une clé pour accéder à Azure de façon programmatique # tt on la stocke sous forme de secret az ad sp create-for-rbac --sdk-auth --role Owner --scopes "/subscriptions/6f92cfb7-df60-4eb8-b3f4-cda514df96ca" > "azure-creds.json" kubectl create secret generic azure-creds -n crossplane-system --from-file=creds=./azure-creds.json # On installe le provider Azure de Crossplane kubectl crossplane install provider xpkg.upbound.io/crossplane- contrib/provider-azure:v0.20.1 kubectl get Provider kubectl describe Provider Déploiement de providers : ex. avec Azure (1/2)
  • 12. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 12 # Et on configure celui-ci # (on aurait pu le faire dans le même # fichier yaml) cat > azure-config.yaml <<EOF apiVersion: azure.crossplane.io/v1beta1 kind: ProviderConfig metadata: name: default spec: credentials: source: Secret secretRef: namespace: crossplane-system name: azure-creds key: creds EOF kubectl apply -f azure-config.yaml kubectl get ProviderConfig kubectl describe ProviderConfig kubectl describe ProviderConfig default N.B. on utilise ici un provider qui sera utilisé automatiquement par défaut (« default ») Déploiement de providers : ex. avec Azure (2/2) # Remarque : on aurait pu installer le # provider de la même façon qu’on l’a # configuré avec ce qui suit cat > azure-provider.yaml <<EOF apiVersion: pkg.crossplane.io/v1 kind: Provider metadata: name: provider-azure spec: package: "crossplane/provider-azure:master" EOF kubectl apply -f azure-provider.yaml
  • 13. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 13 Déploiement de providers : ex. AWS ou GCP # Pas très différent avec AWS… kubectl crossplane install configuration registry.upbound.io/xp/getting-started- with-aws:v1.10.1 kubectl create secret generic aws-creds -n crossplane-system --from-file=creds=./aws- creds.conf cat > aws-provider.yaml <<EOF apiVersion: aws.crossplane.io/v1beta1 kind: ProviderConfig metadata: name: default spec: credentials: source: Secret secretRef: namespace: crossplane-system name: aws-creds key: creds EOF kubectl apply -f aws-provider.yaml # Ou GCP kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-gcp:v1.10.1 cat > gcp-provider.yaml <<EOF --- apiVersion: v1 kind: Secret metadata: name: gcp-account-creds namespace: ${PROVIDER_SECRET_NAMESPACE} type: Opaque data: creds: ${BASE64ENCODED_GCP_PROVIDER_CREDS} --- apiVersion: gcp.crossplane.io/v1beta1 kind: ProviderConfig metadata: name: default spec: projectID: ${PROJECT_ID} credentials: source: Secret secretRef: namespace: ${PROVIDER_SECRET_NAMESPACE} name: gcp-account-creds key: creds EOF kubectl apply -f "gcp-provider.yaml" kubectl crossplane install configuration registry.upbound.io/xp/getting-started-with-gcp:v1.10.1
  • 14. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 14 Concepts essentiels Cycle de vie de ressources  Les ressources managées représentent des actifs tangibles provisionnés sur un provider : une VM, une database, un cluster K8S, un VPC, une policy IAM…  Il s’agit plutôt d’une machine à état : on déclare la cible souhaitée, et le système converge progressivement en prenant les actions nécessaires  La réconciliation est permanente, on ne fait pas que provisionner oneshot ! Les divergences ne peuvent donc pas perdurer. Essayez de supprimer une ressource dans la console de votre cloud vendor préféré…  Les paramètres en dépendance d’une ressource à une autre sont déclarés dans les manifests  Les suppressions peuvent être effectives, ou rendre les ressources orphelines. Ce dernier cas est typiquement utile dans le cas des ressources impliquant de la persistance (une DB, un bucket S3, …)
  • 15. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 15 # Azure impose de créer toutes ses ressources dans un resourcegroup, allons-y ! cat > azure-resourcegroup.yaml <<EOF apiVersion: azure.crossplane.io/v1alpha3 kind: ResourceGroup metadata: name: test-rg-crossplane spec: location: eastus EOF kubectl apply -f azure-resourcegroup.yaml kubectl get ResourceGroup kubectl describe ResourceGroup kubectl describe ResourceGroup test-rg-crossplane # Que se passe t’il si je supprime le resource group sur la console ? Déploiement direct de ressources (1/2)
  • 16. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 16 # Créons une base de données cat > azure-db.yaml <<EOF apiVersion: database.azure.crossplane.io/v1beta1 kind: PostgreSQLServer metadata: name: sqlserverpostgresql spec: forProvider: administratorLogin: myadmin resourceGroupNameRef: name: test-rg-crossplane location: West US 2 sslEnforcement: Disabled version: "9.6" sku: tier: GeneralPurpose capacity: 2 family: Gen5 storageProfile: storageMB: 20480 writeConnectionSecretToRef: namespace: crossplane-system name: sqlserverpostgresql-conn EOF kubectl apply -f azure-db.yaml kubectl get Postgresqlserver Déploiement direct de ressources (2/2)
  • 17. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 17 Des ressources concrètes et des compositions abstraites, séparation des concerns  Les compositeResourceDefinition (XRDs) sont des interfaces définissant un ensemble de ressources et créent une forme d’abstraction. Elles déclinent du principe de CRD de K8S.  Les compositeResources implémentent les XRDs et sont sollicitées par les claims : ce sont des définitions de groupes de ressources tangibles.  Les compositions matérialisent des configurations opinionées d’une ressource composite et adossée à des ressources tangibles (par ex. une composition de « production », une composition par cloud vendor…)  Les claims permettent optionnellement aux applications, isolées au sein de leur propre namespaces, d’accéder indirectement aux ressources, qui sont elles cluster-wide. Les ressources peuvent être provisionnées automatiquement à l’occasion de la sollicitation. C’est une sorte de proxy dédié à une app.  Les composite ressources peuvent être récursives pour assembler des building blocks macroscopiques ManagedResource ManagedResource ManagedResource Composition MyWebPlatformInstance (XRD Claim) Utilise App teams consommant des ressources dédiées et mutualisées (depuis leurs namespaces distincts) SRE team gérant la plateforme et les ressources mutualisées transverses, les res. Préprovisionéée s, ou portées par ’IT (VPC…) IAM VPC VM MyWebPlatformInstance (XRD Claim) Utilise SEGREGATION ------------------- OF CONCERNS Composite Resource Composite Resource Definition Implem. Config
  • 18. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 18 # Exemple de définition de ressource # composite abstraite pour une base de données apiVersion: apiextensions.crossplane.io/v1 kind: CompositeResourceDefinition metadata: name: xpostgresqlinstances.database.example.org spec: group: database.example.org names: kind: XPostgreSQLInstance plural: xpostgresqlinstances claimNames: kind: PostgreSQLInstance plural: postgresqlinstances versions: - name: v1alpha1 served: true referenceable: true schema: openAPIV3Schema: type: object properties: spec: type: object properties: parameters: type: object properties: storageGB: type: integer required: - storageGB required: - parameters Définitions et ressources composites # Exemple de ressource composite # correspondant à cette XRD apiVersion: database.example.org/v1alpha1 kind: XPostgreSQLInstance metadata: name: my-db spec: parameters: storageGB: 20 compositionRef: name: production writeConnectionSecretToRef: namespace: crossplane-system name: my-db-connection-details
  • 19. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 19 Claims et configurations # Exemple de configuration # Celle-ci fait la « glue » entre la ressource macro abstrait # et les resssources réelles provisionnées apiVersion: apiextensions.crossplane.io/v1 kind: Composition metadata: name: example labels: crossplane.io/xrd: xpostgresqlinstances.database.example.org provider: gcp spec: writeConnectionSecretsToNamespace: crossplane-system compositeTypeRef: apiVersion: database.example.org/v1alpha1 kind: XPostgreSQLInstance resources: - name: cloudsqlinstance base: apiVersion: database.gcp.crossplane.io/v1beta1 kind: CloudSQLInstance spec: forProvider: databaseVersion: POSTGRES_12 region: us-central1 settings: tier: db-custom-1-3840 dataDiskType: PD_SSD ipConfiguration: ipv4Enabled: true authorizedNetworks: - value: "0.0.0.0/0" patches: - type: FromCompositeFieldPath fromFieldPath: spec.parameters.storageGB toFieldPath: spec.forProvider.settings.dataDiskSizeGb # Exemple de claim permettant # d’atteindre cette ressource # composite apiVersion: database.example.org/v1alpha1 kind: PostgreSQLInstance metadata: namespace: default name: my-db spec: parameters: storageGB: 20 compositionRef: name: production writeConnectionSecretToRef: name: my-db-connection-details
  • 20. Découverte de Crossplane - Devoxx 2023 - A. Blind 05/07/2024 20 Kubernetes est plus que jamais l’OS du cloud. Mais pour autant, le cloud ne se résume pas à Kubernetes ;) Conclusions 1 2 Crossplane offre une perspective unifiée des ressources IT: il offre une interface homogène, multicloud et universelle pour accéder à une pluralité de ressources. Et il est extensible. On consacre plus que jamais Kubernetes comme socle universel d’un système d’information cloud-centric, bien au delà de sa fonction d’orchestration de conteneurs : on déploie désormais des clusters… pour orchestrer d’autres plateformes 4 3 Mais ce n’est pas qu’un simple backend d’Ops : il permet d’unifier le cycle de vie des apps et leurs ressources sous-jacentes. C’est un vrai outil devops, et s’insère bien avec les paradigmes gitops (il se combine très bien avec Flux ou Argo CD)
  • 21. Découverte de Crossplane - Devoxx 2023 - A. Blind Merci. 21

Notes de l'éditeur

  1. Ansible, Terraform, CloudFormation, GitOps, [insert your favorite tech here]… Les solutions d’infra-as-code sont pléthores. Alors, pourquoi venir nous écouter parler du dernier rejeton à la mode, poussé par le CNCF ? Allez, on vous spoile un argument ou deux, mais pour le reste il faudra venir nous écouter ;) Bâti sur Kubernetes, Crossplane permet de faire converger élégamment le delivery d’une application complexe et ses besoins sous-jacents (de la VM aux services managés). Ajoutez à cela un multicloud facilité, ou encore une vrai capacité à s’inscrire dans une démarche GitOps, et vous avez là une solution sexy pour organiser vos prochains déploiements ! A002
  2. Double problème, double réponse
  3. Upstream & downstream