provider-openstack

module
v0.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 13, 2026 License: Apache-2.0

README

Crossplane Provider OpenStack

GitHub release Go Version

provider-openstack is a Crossplane provider that is built using Upjet code generation tools and exposes XRM-conformant managed resources for the OpenStack API.

Features

The provider is compatible with Crossplane 1.x and 2.x

Feature Status
Cluster Scoped Managed Resources ✅ Supported
Namespace Scoped Managed Resources ✅ Supported (Crossplane 2+)
Management Policies (Beta) ✅ Supported
Init Providers (Beta) ✅ Supported
Safe Start/MRDs (Alpha) ✅ Supported (Crossplane 2+)
Change Logs (Alpha) ❌ Planned, see #141
External Secret Stores (Alpha) ❌ Not Planned

Getting Started

Installation

You can use declarative installation to install the provider:

apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-openstack
spec:
  # Replace by the latest version
  package: xpkg.crossplane.io/crossplane-contrib/provider-openstack:vX.Y.Z

You can see the API reference here as well as examples of managed resources in the examples-generated folder.

Configuration
---
# Providerconfig that referers to the secret
apiVersion: openstack.crossplane.io/v1beta1
kind: ProviderConfig
metadata:
  name: provider-openstack-config
spec:
  credentials:
    source: Secret
    secretRef:
      key: config
      name: provider-openstack-config
      namespace: crossplane

---
# Secret that stores credentials and other configuration
apiVersion: v1
kind: Secret
metadata:
  name: provider-openstack-config
  namespace: crossplane
type: Opaque
data:
  config: <see below>

The secret key must contain a json dictionary that provides the authentication data. You can create the secret via this command:

kubectl create secret generic provider-openstack-config --from-file=config=config.json --namespace crossplane
// config.json
{
  "auth_url": "https://auth.openstack.example/",
  "application_credential_id": "123456789",
  "application_credential_secret": "secret-key"
}

Check Terraform OpenStack provider docs to see available configuration settings. Currently not all options of the upstream provider are supported. Check client code to see if your option is supported. If something is missing, please open a new issue.

Deployment Customization

You can use a DeploymentRuntimeConfig to provide custom arguments or otherwise modify the provider deployment

Available command line arguments can be found here

---
# Create a DeploymentRuntimeConfig to customize the provider deployment
apiVersion: pkg.crossplane.io/v1beta1
kind: DeploymentRuntimeConfig
metadata:
  name: provider-openstack
spec:
  deploymentTemplate:
    spec:
      # Control replica count to temporary disable deployment. Do not scale more than 1 replica.
      replicas: 1
      selector: {}
      template:
        metadata:
          annotations:
            # Add annotations, e.g. to enable metrics scraping
            prometheus.io/path: /metrics
            prometheus.io/port: "8080"
            prometheus.io/scrape: "true"
        spec:
          containers:
          - args:
            # Add command line arguments, e.g. to enable management policies
            - --enable-management-policies
            name: package-runtime

---
# Add this to your provider resource to reference the DeploymentRuntimeConfig
spec:
  runtimeConfigRef:
    apiVersion: pkg.crossplane.io/v1beta1
    kind: DeploymentRuntimeConfig
    name: provider-openstack

Report a Bug

For filing bugs, suggesting improvements, or requesting new features, please open an issue.

Directories

Path Synopsis
apis
cluster
Package cluster contains Kubernetes API for the provider.
Package cluster contains Kubernetes API for the provider.
cluster/blockstorage/v1alpha1
+kubebuilder:object:generate=true +groupName=blockstorage.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=blockstorage.openstack.crossplane.io +versionName=v1alpha1
cluster/compute/v1alpha1
+kubebuilder:object:generate=true +groupName=compute.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=compute.openstack.crossplane.io +versionName=v1alpha1
cluster/containerinfra/v1alpha1
+kubebuilder:object:generate=true +groupName=containerinfra.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=containerinfra.openstack.crossplane.io +versionName=v1alpha1
cluster/db/v1alpha1
+kubebuilder:object:generate=true +groupName=db.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=db.openstack.crossplane.io +versionName=v1alpha1
cluster/dns/v1alpha1
+kubebuilder:object:generate=true +groupName=dns.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=dns.openstack.crossplane.io +versionName=v1alpha1
cluster/fw/v1alpha1
+kubebuilder:object:generate=true +groupName=fw.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=fw.openstack.crossplane.io +versionName=v1alpha1
cluster/identity/v1alpha1
+kubebuilder:object:generate=true +groupName=identity.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=identity.openstack.crossplane.io +versionName=v1alpha1
cluster/images/v1alpha1
+kubebuilder:object:generate=true +groupName=images.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=images.openstack.crossplane.io +versionName=v1alpha1
cluster/keymanager/v1alpha1
+kubebuilder:object:generate=true +groupName=keymanager.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=keymanager.openstack.crossplane.io +versionName=v1alpha1
cluster/lb/v1alpha1
+kubebuilder:object:generate=true +groupName=lb.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=lb.openstack.crossplane.io +versionName=v1alpha1
cluster/networking/v1alpha1
+kubebuilder:object:generate=true +groupName=networking.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=networking.openstack.crossplane.io +versionName=v1alpha1
cluster/objectstorage/v1alpha1
+kubebuilder:object:generate=true +groupName=objectstorage.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=objectstorage.openstack.crossplane.io +versionName=v1alpha1
cluster/orchestration/v1alpha1
+kubebuilder:object:generate=true +groupName=orchestration.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=orchestration.openstack.crossplane.io +versionName=v1alpha1
cluster/sharedfilesystem/v1alpha1
+kubebuilder:object:generate=true +groupName=sharedfilesystem.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=sharedfilesystem.openstack.crossplane.io +versionName=v1alpha1
cluster/v1alpha1
Package v1alpha1 contains the core resources of the openstack jet provider.
Package v1alpha1 contains the core resources of the openstack jet provider.
cluster/v1beta1
Package v1beta1 contains the core resources of the openstack upjet provider.
Package v1beta1 contains the core resources of the openstack upjet provider.
cluster/vpnaas/v1alpha1
+kubebuilder:object:generate=true +groupName=vpnaas.openstack.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=vpnaas.openstack.crossplane.io +versionName=v1alpha1
namespaced
Package namespaced contains Kubernetes API for the provider.
Package namespaced contains Kubernetes API for the provider.
namespaced/blockstorage/v1alpha1
+kubebuilder:object:generate=true +groupName=blockstorage.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=blockstorage.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/compute/v1alpha1
+kubebuilder:object:generate=true +groupName=compute.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=compute.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/containerinfra/v1alpha1
+kubebuilder:object:generate=true +groupName=containerinfra.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=containerinfra.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/db/v1alpha1
+kubebuilder:object:generate=true +groupName=db.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=db.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/dns/v1alpha1
+kubebuilder:object:generate=true +groupName=dns.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=dns.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/fw/v1alpha1
+kubebuilder:object:generate=true +groupName=fw.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=fw.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/identity/v1alpha1
+kubebuilder:object:generate=true +groupName=identity.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=identity.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/images/v1alpha1
+kubebuilder:object:generate=true +groupName=images.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=images.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/keymanager/v1alpha1
+kubebuilder:object:generate=true +groupName=keymanager.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=keymanager.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/lb/v1alpha1
+kubebuilder:object:generate=true +groupName=lb.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=lb.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/networking/v1alpha1
+kubebuilder:object:generate=true +groupName=networking.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=networking.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/objectstorage/v1alpha1
+kubebuilder:object:generate=true +groupName=objectstorage.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=objectstorage.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/orchestration/v1alpha1
+kubebuilder:object:generate=true +groupName=orchestration.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=orchestration.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/sharedfilesystem/v1alpha1
+kubebuilder:object:generate=true +groupName=sharedfilesystem.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=sharedfilesystem.openstack.m.crossplane.io +versionName=v1alpha1
namespaced/v1alpha1
Package v1alpha1 contains the core resources of the openstack jet provider.
Package v1alpha1 contains the core resources of the openstack jet provider.
namespaced/v1beta1
Package v1beta1 contains the core resources of the openstack upjet provider.
Package v1beta1 contains the core resources of the openstack upjet provider.
namespaced/vpnaas/v1alpha1
+kubebuilder:object:generate=true +groupName=vpnaas.openstack.m.crossplane.io +versionName=v1alpha1
+kubebuilder:object:generate=true +groupName=vpnaas.openstack.m.crossplane.io +versionName=v1alpha1
cmd
generator command
provider command
internal

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL