/hydra-maester

Kuberenetes CRD Controller for ORY Hydra

Primary LanguageGoApache License 2.0Apache-2.0

Table of Contents generated with DocToc

Hydra-maester

This project contains a Kubernetes controller that uses Custom Resources (CR) to manage Hydra Oauth2 clients. ORY Hydra Maester watches for instances of oauth2clients.hydra.ory.sh/v1alpha1 CR and creates, updates, or deletes corresponding OAuth2 clients by communicating with ORY Hydra's API.

Visit Hydra-maester's chart documentation and view sample OAuth2 client resources to learn more about the oauth2clients.hydra.ory.sh/v1alpha1 CR.

The project is based on Kubebuilder.

Prerequisites

  • recent version of Go language with support for modules (e.g: 1.12.6)
  • make
  • kubectl
  • kustomize
  • kubebuilder for running tests
  • ginkgo for local integration testing
  • access to K8s environment: minikube or a remote K8s cluster
  • mockery to generate mocks for testing purposes

Design

Take a look at Design Readme.

How to use it

  • make test to run tests
  • make test-integration to run integration tests
  • make install to generate CRD file from go sources and install it on the cluster
  • export HYDRA_URL={HYDRA_SERVICE_URL} && make run to run the controller

To deploy the controller, edit the value of the --hydra-url argument in the manager.yaml file and run make deploy.

Command-line flags

Name Required Description Default value Example values
hydra-url yes ORY Hydra's service address - ory-hydra-admin.ory.svc.cluster.local
hydra-port no ORY Hydra's service port 4445 4445

Development

Testing

Use mockery to generate mock types that implement existing interfaces. To generate a mock type for an interface, navigate to the directory containing that interface and run this command:

mockery -name={INTERFACE_NAME}