/crossplane-provider-rediscloud

Primary LanguageMakefileApache License 2.0Apache-2.0

Provider RedisCloud

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

Overview

This provider enables management of RedisCloud resources through Kubernetes Custom Resources. It includes support for:

  • ACL Management - Roles, Rules, and Users
  • Active-Active Databases - Multi-region deployments
  • Cloud Accounts - AWS and GCP integrations
  • Essentials Tier - Free and fixed plans
  • Pro Subscriptions - Full-featured Redis deployments
  • Private Connectivity - VPC peering and private endpoints
  • Transit Gateways - AWS Transit Gateway attachments

Getting Started

Prerequisites

  1. Kubernetes cluster (1.26+)
  2. Crossplane installed
  3. RedisCloud API credentials

Installation

Install the provider by using the following command after changing the image tag to the latest release:

kubectl crossplane install provider xpkg.crossplane.io/RedisLabs/provider-rediscloud:v0.1.0

Alternatively, you can use declarative installation:

apiVersion: pkg.crossplane.io/v1
kind: Provider
metadata:
  name: provider-rediscloud
spec:
  package: xpkg.crossplane.io/RedisLabs/provider-rediscloud:v0.1.0

Configuration

  1. Create a secret with your RedisCloud credentials:
kubectl create secret generic rediscloud-creds \
  --namespace crossplane-system \
  --from-literal=credentials='{"api_key":"YOUR_API_KEY","secret_key":"YOUR_SECRET_KEY"}'
  1. Create a ProviderConfig:
apiVersion: rediscloud.redis.io/v1beta1
kind: ProviderConfig
metadata:
  name: default
spec:
  credentials:
    source: Secret
    secretRef:
      name: rediscloud-creds
      namespace: crossplane-system
      key: credentials

Usage Example

Create an Essentials subscription:

apiVersion: essentials.redis.io/v1alpha1
kind: Subscription
metadata:
  name: my-redis-subscription
spec:
  forProvider:
    name: "My Redis Subscription"
    planId: 1  # Free plan
  providerConfigRef:
    name: default

Developing

Prerequisites

  • Go 1.21+
  • Docker or Podman
  • Make

Development Environment

This project uses devenv for development environment management. To enter the development shell:

devenv shell

Building

Generate CRDs and controllers:

make generate

Build the provider:

make build

Testing

Run the test harness (uses podman by default):

./scripts/test-provider.sh

For detailed testing instructions, see TESTING.md.

Local Development

Run against a Kubernetes cluster:

make run

Deploy locally for testing:

make local-deploy

Documentation

Contributing

We welcome contributions! Please see our Contributing Guide for details.

License

This project is licensed under the Apache 2.0 License - see the LICENSE file for details.

Report a Bug

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