Construye una plataforma de identidad con Crossplane: Ingeniería de plataformas
En el actual panorama de la computación en la nube, la tensión entre la estabilidad operativa y la velocidad del desarrollo sigue siendo un cuello de botella crucial. A medida que las organizaciones crecen, los sistemas tradicionales de gestión de tickets utilizados para aprovisionar infraestructura se vuelven insostenibles. La solución radica en la ingeniería de plataformas: crear una Plataforma de desarrollo interna (IDP) que posibilite capacidades de autoservicio sin comprometer el control o la seguridad.
Mientras herramientas como <s1>TerraformTerraform<s3>CrossplaneCrossplane, un marco de código abierto que extiende <s5><s6>KubernetesKubernetespara gestionar la infraestructura. Al aprovechar Crossplane, podemos crear un IDP que trate la infraestructura como datos, aplicando una conciliación continua y detección de desviaciones.
Para las organizaciones que buscan acelerar esta transición, colaborar con expertos en servicios de ingeniería en la nube y equipos remotos puede reducir significativamente la carga arquitectónica necesaria para implementar estos sistemas de control de forma eficaz.cloud engineering services remote teams puede reducir significativamente la carga arquitectónica necesaria para implementar estos sistemas de control de forma eficaz.
Servicios de Ingeniería de Productos
Trabaje con nuestros gestores de proyectos, ingenieros de software y testers de calidad internos para desarrollar su nuevo producto de software personalizado o para apoyar su flujo de trabajo actual, siguiendo metodologías Agile, DevOps y Lean.
¿Por qué Crossplane para tu IDP?
Las herramientas estándar de IaC a menudo son "de configurar y olvidar." Una vez que se ejecuta la pipeline, el estado de la infraestructura en tiempo real puede desviarse del código de configuración sin una detección inmediata. Crossplane cambia fundamentalmente este paradigma utilizando el patrón del Operador de Kubernetes.
- Reconciliación Continua: Al igual que Kubernetes asegura que un Pod está en ejecución, Crossplane monitoriza activamente los recursos externos (como AWS RDS o Google Cloud SQL) y garantiza que coincidan con el estado deseado definido en su clúster.
- Abstracción basada en API: Crossplane permite a los ingenieros de la plataforma definir Definiciones de Recursos Compuestos (XRDs). Estas exponen APIs de alto nivel y simplificadas para los desarrolladores (p. ej.,
PostgresDB), mientras ocultan los detalles complejos de la infraestructura (p. ej., emparejamiento VPC, grupos de subredes, grupos de parámetros) en segundo plano en Composiciones. - Control Centralizado: Gestiona las cargas de trabajo y la infraestructura utilizando la misma API y herramientas de Kubernetes (kubectl, Helm, ArgoCD).
Arquitectura: El Modelo de Composición
Para crear un IDP, debemos distinguir entre dos roles:
- Ingenieros de Plataforma: Definan los XRD y las Composiciones (las "Clases").
- Desarrolladores de Aplicaciones: Crean Reclamaciones (las "Instancias").
Implementaremos un escenario en el que un desarrollador necesita una base de datos PostgreSQL. En lugar de escribir 500 líneas de código Terraform, aplicarán un manifiesto sencillo de Kubernetes.
Paso 1: Instalación de Crossplane
Primero, instale Crossplane en su clúster de gestión de Kubernetes utilizando 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
Paso 2: Configurar el proveedor
Necesitamos un Proveedor para comunicarse con el proveedor de la nube. Utilizaremos AWS para este ejemplo.
Nota: Asegúrese de crear un Secreto de Kubernetes que contenga sus credenciales de AWS (llamado aws-creds) antes de aplicar la Configuración del Proveedor.
apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
name: provider-aws-s3
spec:
package: xpkg.upbound.io/crossplane-contrib/provider-aws:v0.47.0
---
apiVersion: aws.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
name: default
spec:
credentials:
source: Secret
secretRef:
namespace: crossplane-system
name: aws-creds
key: creds
Paso 3: Definir la API (XRD)
LaDefinición de Recurso Combinado (XRD) define el esquema de la API que está ofreciendo a los desarrolladores. Aquí, definimos un tipo de recurso XPostgresInstance.
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: xpostgresinstances.database.example.org
spec:
group: database.example.org
names:
kind: XPostgresInstance
plural: xpostgresinstances
claimNames:
kind: PostgresInstance
plural: postgresinstances
versions:
- name: v1alpha1
served: true
referenceable: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
properties:
parameters:
type: object
properties:
storageGB:
type: integer
nodeSize:
type: string
enum: [ "small", "medium", "large" ]
required:
- parameters
Paso 4: Creación de la composición
La Composición mapea las entradas de alto nivel del XRD (como pequeñas o grandes) a recursos específicos en la nube. Aquí es donde se garantiza el cumplimiento (por ejemplo, asegurándose de que el cifrado siempre esté activo).
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: postgres-aws-composition
labels:
provider: aws
type: backend-db
spec:
compositeTypeRef:
apiVersion: database.example.org/v1alpha1
kind: XPostgresInstance
resources:
- name: rds-instance
base:
apiVersion: database.aws.crossplane.io/v1beta1
kind: RDSInstance
spec:
forProvider:
region: us-east-1
dbInstanceClass: db.t3.micro
masterUsername: masteruser
engine: postgres
engineVersion: "13.4"
skipFinalSnapshot: true
publiclyAccessible: false
storageEncrypted: true # Enforcing security policy
writeConnectionSecretToRef:
namespace: crossplane-system
patches:
- fromFieldPath: "spec.parameters.storageGB"
toFieldPath: "spec.forProvider.allocatedStorage"
- fromFieldPath: "spec.parameters.nodeSize"
toFieldPath: "spec.forProvider.dbInstanceClass"
transforms:
- type: map
map:
small: "db.t3.micro"
medium: "db.t3.medium"
large: "db.m5.large"
Paso 5: La experiencia del Desarrollador (La Afirmación)
Una vez que el equipo de Ingeniería de Plataforma aplica el XRD y la Composición, los desarrolladores pueden crear una base de datos a través de un Claim. Este manifiesto es lo que se almacena en el repositorio de aplicaciones.
apiVersion: database.example.org/v1alpha1
kind: PostgresInstance
metadata:
name: my-service-db
namespace: app-team-a
spec:
parameters:
storageGB: 20
nodeSize: small
compositionSelector:
matchLabels:
provider: aws
type: backend-db
Cuando se aplica este archivo YAML, Crossplane crea instantáneamente la instancia de AWS RDS subyacente, configura la red (si está definida en la Composición) y genera la cadena de conexión en un secreto de Kubernetes dentro del espacio de nombres del desarrollador.
Servicios de Ingeniería de Productos
Trabaje con nuestros gestores de proyectos, ingenieros de software y probadores de calidad internos para desarrollar su nuevo producto de software personalizado o para apoyar su flujo de trabajo actual, siguiendo metodologías ágiles, DevOps y Lean.
Manejo de la complejidad y gobernanza
Construir una solución de gestión de identidades y acceso (IDP) sólida va más allá de la simple configuración.
- Integración de GitOps: Debido a que los recursos de Crossplane son objetos estándar de Kubernetes, puede gestionar toda su plataforma utilizando ArgoCD o Flux.. Los cambios en la infraestructura se convierten en solicitudes de extracción. Política como Código: Integre
- Política como código:IntegrarOpen Policy Agent (OPA) o Kyverno</s10<s11> para validar las reclamaciones antes de que se apliquen. Por ejemplo, puede impedir que los desarrolladores soliciten instancias grandes en el entorno dev para controlar los costes.para validar las reclamaciones antes de que se apliquen. Por ejemplo, puede evitar que los desarrolladores soliciten
grandeinstancias en eldesarrolladorentorno para controlar los costos. - Gestión de secretos:Crossplane puede integrarse conHashiCorp Vaulto al Administrador de Secretos de AWS para garantizar que las credenciales de la base de datos nunca se almacenen en texto plano dentro del clúster.
Conclusión
La transición a una solución de gestión basada en IDP con Crossplane empodera a los desarrolladores para que puedan gestionar todo de forma autónoma, al tiempo que permite a la dirección mantener estándares estrictos relacionados con la seguridad y el coste. Convierte la infraestructura en un producto.
Sin embargo, este cambio implica una pronunciada curva de aprendizaje con respecto a los Operadores de Kubernetes y el diseño de API. Para las organizaciones que buscan implementar servicios de ingeniería en la nube para equipos remotos, 4Geeks ofrece la experiencia especializada necesaria para construir, proteger y mantener plataformas internas de desarrollo de alto rendimiento.servicios de ingeniería en la nube para equipos remotosPara implementar esta arquitectura, 4Geeks proporciona la experiencia especializada necesaria para construir, asegurar y mantener plataformas internas de desarrollo de alto rendimiento.
Preguntas frecuentes
¿Por qué se considera que Crossplane es mejor que Terraform para crear una Plataforma de Desarrollo Interna?
A diferencia de las herramientas tradicionales de Infraestructura como Código (IaC) como Terraform, que operan con un enfoque "haz y olvida", Crossplane utiliza el patrón de Operador de Kubernetespara proporcionar reconciliación continua. Esto significa que la plataforma supervisa activamente su infraestructura para detectar y corregir automáticamente el desfase de configuración, asegurando que el estado en vivo siempre coincida con el estado deseado definido en su plano de control.
¿Cómo simplifica Crossplane la gestión de infraestructura para los desarrolladores de aplicaciones?
Crossplane separa las responsabilidades al permitir que los ingenieros de la plataforma definan Definiciones de Recursos Compuestos (XRD)y Composiciones. Esto crea una abstracción de API de alto nivel que oculta los detalles complejos del entorno en la nube (como la configuración de redes y subredes). Los desarrolladores pueden entonces simplemente enviar un Solicitud—un simple manifiesto de Kubernetes—para aprovisionar recursos como bases de datos sin necesidad de una profunda experiencia en infraestructura.
¿Cómo puedo hacer cumplir los estándares de seguridad y cumplimiento en un IDP basado en Crossplane?
La gobernanza está integrada directamente en la arquitectura de la plataforma. Los ingenieros de la plataforma pueden hacer cumplir los estándares (como el cifrado obligatorio o tamaños de instancia específicos) dentro de la capa de Composición, asegurando que cada recurso provisto cumpla con las políticas de la empresa. Además, Crossplane se integra perfectamente con Política como códigoherramientas como Open Policy Agent (OPA) o Kyverno para validar las solicitudes antes de que se apliquen, y trabaja con administradores de secretos externos para gestionar las credenciales de forma segura.