scaleway/crossplane-provider-scaleway
Go
Captured source
source ↗scaleway/crossplane-provider-scaleway
Description: Crossplane Scaleway Provider
Language: Go
License: Apache-2.0
Stars: 30
Forks: 12
Open issues: 7
Created: 2023-03-02T08:20:23Z
Pushed: 2026-06-09T14:47:48Z
Default branch: main
Fork: no
Archived: no
README:
Crossplane Provider Scaleway
crossplane-provider-scaleway is a Crossplane provider that is built using Upjet code generation tools and exposes XRM-conformant managed resources for Scaleway.
This provider supports Crossplane v2 and exposes both cluster-scoped and namespaced managed resources.
Complete the following steps to:
- Install Crossplane v2 into your Kubernetes cluster.
- Install the
Providerand apply aClusterProviderConfig(or namespacedProviderConfig) for managed resources. - Create a *managed resource* in Scaleway with Kubernetes.
Prerequisites
To perform the following steps, make sure you have:
- Crossplane v2 installed in your cluster
- Your Scaleway credentials
- A Kubernetes cluster with permissions to create pods and secrets
- A host with
kubectlinstalled and configured to access the Kubernetes cluster
Getting started
You can run each command individually or copy them to a local file to avoid issues related to running commands in a terminal.
_Note:_ All commands use the current kubeconfig context and configuration.
Install Crossplane
Install Crossplane v2 using the official Helm chart as described in Install Crossplane (v2.0):
helm repo add crossplane-stable https://charts.crossplane.io/stable helm repo update helm install crossplane \ --namespace crossplane-system \ --create-namespace \ crossplane-stable/crossplane
Verify with kubectl get pods -n crossplane-system.
Install the provider
1. Install the provider into the Kubernetes cluster with a Kubernetes configuration file.
cat <<EOF | kubectl apply -f - apiVersion: pkg.crossplane.io/v1 kind: Provider metadata: name: provider-scaleway spec: package: xpkg.upbound.io/scaleway/provider-scaleway:v0.6.0 EOF
2. Run kubectl get providers to verify the installed provider. The INSTALLED value should return as True.
_Note:_ The procedure may take up to 5 minutes for HEALTHY to report true.
You should get an output similar to the following one, providing details about the provider.
$ kubectl get provider NAME INSTALLED HEALTHY PACKAGE AGE provider-scaleway True True xpkg.upbound.io/scaleway/provider-scaleway:v0.6.0 11s
If there are any issues during the process of downloading and installing the provider, the INSTALLED field will return as empty. In that case, run kubectl describe providers to get more information.
$ kubectl get providers NAME INSTALLED HEALTHY PACKAGE AGE provider-scaleway xpkg.upbound.io/scaleway/provider-scaleway:v0.6.0 76s
Create a Kubernetes secret resource for Scaleway
The provider requires credentials to create and manage Scaleway resources.
1. In a new folder, create a secret.yaml file.
Modify the values in the example according to your needs, using the information in the Configuration reference table to help.
apiVersion: v1
kind: Secret
metadata:
name: example-creds
namespace: crossplane-system
type: Opaque
stringData:
credentials: |
{
"access_key": "SCWXXXXXXXXXXXXXXXXX",
"secret_key": "11111111-1111-1111-1111-111111111111",
"project_id": "11111111-1111-1111-1111-111111111111",
"organization_id": "11111111-1111-1111-1111-111111111111",
"region": "fr-par",
"zone": "fr-par-1"
}Configuration reference
| Provider Argument | Description | |-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| | access_key | Scaleway access key | | secret_key | Scaleway secret key | | project_id | The project ID that will be used as default value for project-scoped resources. | | organization_id | The organization ID that will be used as default value for organization-scoped resources. | | region | The region that will be used as default value for all resources. (fr-par if none specified) | | zone | The zone that will be used as default value for all resources. (fr-par-1 if none specified) | | api_url | The URL of the API |
Create a ProviderConfig
Managed resources in this provider use the namespaced API group (*.scaleway.m.upbound.io). You can attach credentials in either of these ways:
- ClusterProviderConfig: one cluster-wide config, reference it from any namespace.
- ProviderConfig: per-namespace config, create one in each namespace where you create resources.
The following example creates a ClusterProviderConfig so the provider can use your Scaleway credentials from any namespace.
1. Create a ClusterProviderConfig Kubernetes configuration file to attach your Scaleway credentials to the previously installed provider.
Modify the values in the example according to your needs. Refer to the configuration reference information to understand the requested values.
apiVersion: scaleway.m.upbound.io/v1beta1 kind: ClusterProviderConfig metadata: name: default spec: credentials: source: Secret secretRef: name: example-creds namespace: crossplane-system key: credentials
2. Run kubectl apply -f your-folder/ to apply this configuration with the secret.
3. Run kubectl describe clusterproviderconfigs.scaleway.m.upbound.io to verify the ClusterProviderConfig.
For per-namespace credentials, create a ProviderConfig (apiVersion: scaleway.m.upbound.io/v1beta1) in the same namespace as your resources and add metadata.namespace to it. Legacy cluster-scoped resources (*.scaleway.upbound.io) use a cluster-scoped ProviderConfig from scaleway.upbound.io/v1beta1.
Configuration reference
The spec.secretRef describes the parameters of the secret to use.
namespaceis the Kubernetes…
Excerpt shown — open the source for the full document.