All Projects → vshn → crossplane-service-broker

vshn / crossplane-service-broker

Licence: BSD-3-Clause license
Crossplane Open Service Broker API

Programming Languages

go
31211 projects - #10 most used programming language
shell
77523 projects
Makefile
30231 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to crossplane-service-broker

Lnmp
LEMP stack/LAMP stack/LNMP stack installation scripts for CentOS/Redhat Debian and Ubuntu
Stars: ✭ 2,488 (+14535.29%)
Mutual labels:  mariadb
phpvibe-lite
PHPVibe Open source video CMS / Video Sharing CMS / Youtube Api v3 / Video Embeds
Stars: ✭ 71 (+317.65%)
Mutual labels:  mariadb
EasyProfiler
This repo, provides query profiler for .Net
Stars: ✭ 99 (+482.35%)
Mutual labels:  mariadb
Liquibase
Main Liquibase Source
Stars: ✭ 2,910 (+17017.65%)
Mutual labels:  mariadb
docker-nextcloud
Nextcloud Docker image
Stars: ✭ 209 (+1129.41%)
Mutual labels:  mariadb
swaggerql
Easily and simply convert SQL database into a REST API with Swagger documentation
Stars: ✭ 40 (+135.29%)
Mutual labels:  mariadb
Lamp
Install LAMP(Linux + Apache + MySQL/MariaDB + PHP ) for CentOS/Debian/Ubuntu
Stars: ✭ 2,456 (+14347.06%)
Mutual labels:  mariadb
tengo
Go La Tengo: a MySQL automation library
Stars: ✭ 27 (+58.82%)
Mutual labels:  mariadb
lib mysqludf redis
Provides Mysql UDF commands to synchronize data from Mysql to Redis.
Stars: ✭ 20 (+17.65%)
Mutual labels:  mariadb
Pastebin
Modern pastebin written in golang
Stars: ✭ 111 (+552.94%)
Mutual labels:  mariadb
Machine Learning
Web-interface + rest API for classification and regression (https://jeff1evesque.github.io/machine-learning.docs)
Stars: ✭ 235 (+1282.35%)
Mutual labels:  mariadb
Developer-Examples
This repository contains samples applications demonstrating the power of MariaDB!
Stars: ✭ 35 (+105.88%)
Mutual labels:  mariadb
lgsl
LGSL v6.2.0 for PHP 5.4-8.2.0dev (Live Game Server List): online status for Discord, FiveM, Rust, CS, SA:MP, GMOD, Minecraft, Source Query, etc.
Stars: ✭ 101 (+494.12%)
Mutual labels:  mariadb
Heidisql
A lightweight client for managing MariaDB, MySQL, SQL Server, PostgreSQL and SQLite, written in Delphi
Stars: ✭ 2,864 (+16747.06%)
Mutual labels:  mariadb
LEMPer
LEMPer Stack is terminal-based LEMP / LNMP installer and manager for Debian & Ubuntu cloud or virtual server (vps) and on-premise (bare metal).
Stars: ✭ 171 (+905.88%)
Mutual labels:  mariadb
Migrate
Database migrations. CLI and Golang library.
Stars: ✭ 2,315 (+13517.65%)
Mutual labels:  mariadb
service-manager
Service Manager Core
Stars: ✭ 68 (+300%)
Mutual labels:  service-broker
matador
Take your appclication by the horns
Stars: ✭ 59 (+247.06%)
Mutual labels:  mariadb
nest-rest-typeorm-boilerplate
🍱 backend with nest (typescript), typeorm, and authentication
Stars: ✭ 142 (+735.29%)
Mutual labels:  mariadb
wordpress-ansible-playbook
An ansible playbook for setting up production and staging WordPress site(s). Nginx, php7.3, ssl ready (via letsencrypt), mariadb.
Stars: ✭ 85 (+400%)
Mutual labels:  mariadb

Build Go version Version GitHub downloads Docker image License

Crossplane Service Broker

Open Service Broker API which provisions Redis and MariaDB instances via crossplane.

Documentation

Most of the explanation on how this all works together currently lives in the VSHN Knowledgebase.

Contributing

You'll need:

  • A running kubernetes cluster (minishift, minikube, k3s, ... you name it) with crossplane installed
  • kubectl and kustomize
  • Go development environment
  • Your favorite IDE (with a Go plugin)
  • docker
  • make

These are the most common make targets: build, test, docker-build, run.

Folder structure overview

.
├── cmd
│   └── crossplane-service-broker    # main file
├── deploy
│   └── base                         # deployment files
├── docs                             # antora docs
├── e2e                              # e2e testing files
├── pkg
│   ├── api                          # exposed HTTP API server
│   ├── brokerapi                    # service broker implementation
│   ├── config                       # app config
│   ├── crossplane                   # crossplane service layer
│   ├── integration                  # utilities for integration tests
│   └── reqcontext                   # request context mapping
└── testdata                         # integration testing files

Run the service broker

You can run the operator in different ways:

  1. using make run (provide your own env variables)
  2. using make kind-run (uses KIND to install a cluster in docker and provides its own kubeconfig in testbin/)
  3. using a configuration of your favorite IDE (see below for VSCode example)

Example VSCode run configuration:

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch",
      "type": "go",
      "request": "launch",
      "mode": "auto",
      "program": "${workspaceFolder}/cmd/crossplane-service-broker/main.go",
      "env": {
        "KUBECONFIG": "path/to/kubeconfig",
        "OSB_USERNAME": "test",
        "OSB_PASSWORD": "TEST",
        "OSB_SERVICE_IDS": "PROVIDE-SERVICE-UUIDS-HERE",
        "OSB_NAMESPACE": "test",
        "OSB_PLAN_UPDATE_SIZE_RULES": "xsmall>small|xsmall>medium|small>medium"
      },
      "args": []
    }
  ]
}

Run integration tests

"Integration" testing is done using envtest and crossplane's integration test helper.

make integration-test

Example VSCode run configuration (to be able to debug things):

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Integration tests",
      "type": "go",
      "request": "launch",
      "mode": "test",
      "program": "${workspaceFolder}/pkg/brokerapi",
      "env": {
        "KUBEBUILDER_ASSETS": "../../testdata/bin",
        "DEBUG": "true" // optional
      },
      "args": [],
      "buildFlags": "-tags=integration"
    }
  ]
}

Run E2E tests

The e2e tests currently only test if the deployment works. They do not represent a real e2e test as of now but are meant as a base to build upon.

You need node and npm to run the tests, as it runs with DETIK.

To run e2e tests for newer K8s versions run

make e2e-test

To remove the local KIND cluster and other resources, run

make clean

Integration tests

The integration tests aren't very clever yet and will need some improvements to catch issues. They set the boundary at Kubernetes and avoid therefore the need to have a working crossplane installation with all the custom resources necessary set up.

This means that certain kinds of bugs can't be catched (interaction between crossplane provisioner and this code).

All integration tests are currently within the brokerapi package. envtest is used to setup a Kubernetes API server, and an etcd instance. Public CRDs from crossplane are being downloaded on first run, while the CRDs for this service broker are manually copied in and live within testdata/crds/*.syn.tools.yaml.

If tests for CRDs within the syn.tools API group are written, ensure the corresponding CRD definition is within the aforementioned directory.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].