liveBook · Manning

Crossplane Helm provider

As explained in Platform Engineering on Kubernetes

The Crossplane Helm provider is a Crossplane provider that manages Helm chart installations as infrastructure resources.

The Crossplane Helm provider manages Helm charts as cloud resources. Used with Crossplane compositions, it lets teams request infrastructure through simplified Kubernetes resources while operations teams control how that infrastructure is configured. section 5.3

For the Conference application, compositions can provision Redis, PostgreSQL, and Kafka separately from application services. The same provider can also create vclusters for isolated development environments. section 5.3 section 6.3

Listing 5.7 Key/value Database Crossplane composition
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
  name: keyvalue.db.local.salaboy.com             #1
  labels:                                         #2
    type: dev
    provider: local
    kind: keyvalue
spec:
  writeConnectionSecretsToNamespace: crossplane-system
  compositeTypeRef:                               #3
    apiVersion: salaboy.com/v1alpha1
    kind: Database
  resources:
    - name: redis-helm-release                    #4
      base:
        apiVersion: helm.crossplane.io/v1beta1
        kind: Release
        metadata:
          annotations:
            crossplane.io/external-name: # patched
        spec:
          rollbackLimit: 3
          forProvider:
            namespace: default
            chart:                                #5
              name: redis
              repository: https://charts.bitnami.com/bitnami
              version: "17.8.0"
            values:
              architecture: standalone
          providerConfigRef:                      #6
            name: default
      patches:                                    #7
        - fromFieldPath: metadata.name
          toFieldPath: metadata.annotations[crossplane.io/external-name]
          policy:
            fromFieldPath: Required
        - fromFieldPath: metadata.name
          toFieldPath: metadata.name
          transforms:
            - type: string
              string:
                fmt: "%s-redis"         
      readinessChecks:                            #8
      - type: MatchString
        fieldPath: status.atProvider.state
        matchString: deployed

This composition defines a Helm Release for Redis as one resource in a key-value Database implementation. section 5.3

How Platform Engineering on Kubernetes covers it

How deep it goes
Maps compositions to Helm Release resources, but does not detail provider installation.
Examples
Uses Redis, PostgreSQL, and Kafka dependencies, plus a Redis Helm Release in a database composition.
What you can do after
Apply a simplified Kubernetes resource to request infrastructure without specifying how operations teams configure it.
How it connects
Connects Crossplane compositions, Helm charts, Kubernetes resources, and vcluster.

Related concepts

This explainer was generated by Manning's knowledge graph from the text of Platform Engineering on Kubernetes. The section links point to the parts of the book it draws on.