Crossplane · Schema

Crossplane Provider Configuration

Schema for Crossplane Provider and ProviderConfig resources that install and configure cloud provider integrations for infrastructure provisioning.

Apache 2.0CNCFCloud NativeCompositionControl PlaneCustom Resource DefinitionsGraduatedInfrastructure as CodeKubernetesMulti-CloudOpen SourcePlatform EngineeringProviders
View JSON Schema on GitHub

JSON Schema

crossplane-provider-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-evangelist/crossplane/blob/main/provider-schema.json",
  "title": "Crossplane Provider Configuration",
  "description": "Schema for Crossplane Provider and ProviderConfig resources that install and configure cloud provider integrations for infrastructure provisioning.",
  "type": "object",
  "oneOf": [
    { "$ref": "#/$defs/Provider" },
    { "$ref": "#/$defs/ProviderConfig" },
    { "$ref": "#/$defs/DeploymentRuntimeConfig" }
  ],
  "$defs": {
    "Provider": {
      "type": "object",
      "description": "A Crossplane Provider package that extends Crossplane with managed resources for a specific infrastructure platform.",
      "required": ["apiVersion", "kind", "metadata", "spec"],
      "properties": {
        "apiVersion": {
          "type": "string",
          "const": "pkg.crossplane.io/v1",
          "description": "API version for the Provider package resource."
        },
        "kind": {
          "type": "string",
          "const": "Provider",
          "description": "Resource kind identifier."
        },
        "metadata": {
          "type": "object",
          "required": ["name"],
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of the Provider installation."
            },
            "labels": {
              "type": "object",
              "additionalProperties": { "type": "string" }
            },
            "annotations": {
              "type": "object",
              "additionalProperties": { "type": "string" }
            }
          }
        },
        "spec": {
          "type": "object",
          "required": ["package"],
          "properties": {
            "package": {
              "type": "string",
              "description": "OCI image reference for the Provider package."
            },
            "packagePullPolicy": {
              "type": "string",
              "enum": ["Always", "IfNotPresent", "Never"],
              "description": "Image pull policy for the Provider package."
            },
            "packagePullSecrets": {
              "type": "array",
              "description": "References to secrets for pulling the package image.",
              "items": {
                "type": "object",
                "required": ["name"],
                "properties": {
                  "name": { "type": "string" }
                }
              }
            },
            "revisionActivationPolicy": {
              "type": "string",
              "enum": ["Automatic", "Manual"],
              "description": "Policy for activating new Provider revisions."
            },
            "revisionHistoryLimit": {
              "type": "integer",
              "minimum": 0,
              "description": "Number of inactive revisions to retain."
            },
            "controllerConfigRef": {
              "type": "object",
              "description": "Reference to a ControllerConfig for the Provider pod.",
              "required": ["name"],
              "properties": {
                "name": { "type": "string" }
              }
            },
            "runtimeConfigRef": {
              "type": "object",
              "description": "Reference to a DeploymentRuntimeConfig for the Provider.",
              "required": ["name"],
              "properties": {
                "name": { "type": "string" },
                "apiVersion": { "type": "string" },
                "kind": { "type": "string" }
              }
            }
          }
        }
      }
    },
    "ProviderConfig": {
      "type": "object",
      "description": "Configuration for authenticating a Crossplane Provider with a cloud platform.",
      "required": ["apiVersion", "kind", "metadata", "spec"],
      "properties": {
        "apiVersion": {
          "type": "string",
          "description": "Provider-specific API version, e.g. 'aws.upbound.io/v1beta1'."
        },
        "kind": {
          "type": "string",
          "const": "ProviderConfig",
          "description": "Resource kind identifier."
        },
        "metadata": {
          "type": "object",
          "required": ["name"],
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of the ProviderConfig, often 'default'."
            },
            "labels": {
              "type": "object",
              "additionalProperties": { "type": "string" }
            },
            "annotations": {
              "type": "object",
              "additionalProperties": { "type": "string" }
            }
          }
        },
        "spec": {
          "type": "object",
          "description": "Provider-specific authentication and configuration.",
          "properties": {
            "credentials": {
              "type": "object",
              "description": "Credentials for authenticating with the cloud platform.",
              "required": ["source"],
              "properties": {
                "source": {
                  "type": "string",
                  "enum": ["Secret", "InjectedIdentity", "Environment", "Filesystem", "Upbound"],
                  "description": "Source of the credentials."
                },
                "secretRef": {
                  "type": "object",
                  "description": "Reference to a Kubernetes secret containing credentials.",
                  "required": ["name", "namespace", "key"],
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "Name of the credentials secret."
                    },
                    "namespace": {
                      "type": "string",
                      "description": "Namespace of the credentials secret."
                    },
                    "key": {
                      "type": "string",
                      "description": "Key within the secret containing the credentials."
                    }
                  }
                }
              }
            },
            "projectID": {
              "type": "string",
              "description": "Cloud provider project or account identifier."
            },
            "region": {
              "type": "string",
              "description": "Default region for provisioned resources."
            },
            "assumeRoleChain": {
              "type": "array",
              "description": "Chain of IAM roles to assume for authentication.",
              "items": {
                "type": "object",
                "required": ["roleARN"],
                "properties": {
                  "roleARN": { "type": "string" },
                  "externalID": { "type": "string" }
                }
              }
            }
          }
        }
      }
    },
    "DeploymentRuntimeConfig": {
      "type": "object",
      "description": "Runtime configuration for Provider deployments.",
      "required": ["apiVersion", "kind", "metadata"],
      "properties": {
        "apiVersion": {
          "type": "string",
          "const": "pkg.crossplane.io/v1beta1",
          "description": "API version for the DeploymentRuntimeConfig."
        },
        "kind": {
          "type": "string",
          "const": "DeploymentRuntimeConfig",
          "description": "Resource kind identifier."
        },
        "metadata": {
          "type": "object",
          "required": ["name"],
          "properties": {
            "name": { "type": "string" }
          }
        },
        "spec": {
          "type": "object",
          "description": "Runtime configuration specification.",
          "properties": {
            "deploymentTemplate": {
              "type": "object",
              "description": "Template for the Provider deployment.",
              "properties": {
                "spec": {
                  "type": "object",
                  "description": "Deployment spec overrides.",
                  "properties": {
                    "replicas": { "type": "integer" },
                    "selector": { "type": "object" },
                    "template": { "type": "object" }
                  }
                }
              }
            },
            "serviceAccountTemplate": {
              "type": "object",
              "description": "Template for the Provider service account.",
              "properties": {
                "metadata": {
                  "type": "object",
                  "properties": {
                    "annotations": {
                      "type": "object",
                      "additionalProperties": { "type": "string" }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}