Construye una plataforma de identidad con Crossplane: Ingeniería de plataformas

Share
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.

Build with 4Geeks

¿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.

  1. 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.
  2. 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.
  3. 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.

Build with 4Geeks

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.

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.

Read more