clowder

command module
v0.80.0 Latest Latest
Warning

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

Go to latest
Published: Mar 26, 2024 License: Apache-2.0 Imports: 16 Imported by: 0

README

:note-caption: :information_source:
image::docs/antora/modules/ROOT/images/clowder.svg[Clowder - Clowd Platform Operator]

image:https://img.shields.io/github/actions/workflow/status/RedHatInsights/clowder/package.yml?branch=master[Build Passing]
image:https://img.shields.io/github/downloads/RedHatInsights/clowder/total.svg[Downloads]
image:https://img.shields.io/github/v/release/RedHatInsights/clowder[Release]
image:https://goreportcard.com/badge/github.com/RedHatInsights/clowder[Go Report Card]

## What is Clowder?

Clowder is a kubernetes operator designed to make it easy to deploy applications
running on the cloud.redhat.com platform in production, testing and local
development environments.

xref:docs/antora/modules/ROOT/pages/learn-more.adoc[Learn More]

## See Clowder in Action

image::docs/antora/modules/ROOT/images/terminal-example.gif[Animated GIF terminal example]

## Why use Clowder?

In addition to reducing the effort to maintain a deployment template, Clowder
provides a number of other benefits:

* **Consistent deployment** Whether you're deploying to production, running smoke
  tests on a PR, or developing your application locally, Clowder will use the
  same app definition for all three. No more endlessly tweaking environment variables!
* **Focus on development** Clowder has the best practices of running an app in
  a microservices environment as well as specific requirements from the app-sre
  team, such as pod affinity, rollout parameters etc built-in. Spend less time
  worrying about configuring deployment templates and more time writing your app.
* **Assisting Ops** Any dev or SRE that learns how Clowder deploys apps will
  implicitly understand the deployment of any other app utilizing Clowder.
* **Deploy a full environment locally** Gone are the days of hacking together
  scripts that just about get you mocked or partially working dependant services.
  With  Clowder, you can deploy an instance of the cloud.redhat.com platform on your
  local laptop, or in a dev cluster to use as you wish.

Clowder will provision resources depending on the mode choosen for each provider,
and will return a consistently formatted JSON configuration document for each app
to consume, leaving teams to focus more on writing code than differences between
environments. The Clowder config client can assist with this and currently has support
for Python, Go, Javascript and Ruby.

image::docs/antora/modules/ROOT/images/config.svg[Configuration model]

## Feature List

Clowder currently features support for:

* Kafka Topics
* Object Storage
* PostgreSQL Database
* In-Memory DB
* Feature Flags
* CronJob support
* Jobs Support
* Istio integration
* TLS Sidecar
* Simple Autoscaling

## Roadmap

Our current roadmap looks like this:

* Autoscaling (possibly via https://github.com/kedacore/keda[Keda])
* Dynamic routing for public web sevices
* Automatic metrics configuration
* Automatic network policy configuration
* Standard, configurable alerting: Error rate, latency, Kafka topic lag, etc
* Canary deployments (possibly via https://github.com/weaveworks/flagger[Flagger])
* Operational remediations
* Observe service status from a `ClowdApp` `status`, based on sevice dependencies.
* Advanced logging configurations (e.g. logging messages to kafka topics)

## Getting Clowder

**Clowder is already running in pre-prod/prod environments.**

To run Clowder locally in Minikube, obtain and install
https://minikube.sigs.k8s.io/docs/start/[Minikube].

Clowder is developed on Fedora and the kvm driver has been found to work best
initiated with the following options:

[source,shell]
minikube start --cpus 4 --disk-size 36GB --memory 16000MB --driver=kvm2 --addons registry --addons ingress  --addons=metrics-server --disable-optimizations

[NOTE]
====
Mac OS is also supported with the `virtualbox` and `hyperkit` drivers. A full
guide xref:docs/antora/modules/ROOT/pages/macos.adoc[can be found here]
====

To persist these changes for every minikube invocation, run the following:

[source,shell]
minikube config set cpus 4
minikube config set memory 16000
minikube config set disk-size 36GB
minikube config set driver kvm2

If you encounter any kvm issues, please take a look
xref:docs/antora/modules/ROOT/pages/developer-guide.adoc[at the troubleshooting guide]

The ``kube_setup.sh`` script then needs to be run by invoking

[source,shell]
....
./build/kube_setup.sh
....

Clowder can then be installed by running:

[source,shell]
----
# Be sure to get the latest release in the link above!
minikube kubectl -- apply -f $(curl https://api.github.com/repos/RedHatInsights/clowder/releases/latest | jq '.assets[0].browser_download_url' -r) --validate=false
----

## Usage

To use Clowder to deploy an application a ``ClowdEnvironment`` resource must be
present to define an environment. Once this has been deployed, a ``ClowdApp``
resource is authored for the app and deployed alongside the ``ClowdEnvironment``.

Example app developer workflow:

. Install Clowder on a minikube environment.
. Use ``kubectl apply -f clowdenv.yaml`` to apply a ``ClowdEnvironment`` resource
  to the cluster.
. Use ``kubectl apply -f clowdapp.yaml`` to apply a ``ClowdApp`` resource to the
  cluster.

More details on how to do this are present in the xref:docs/antora/modules/usage/pages/getting-started.adoc[Getting Started] section
of the documentation.

https://redhatinsights.github.io/clowder/clowder/dev/api_reference.html[API Reference]

## Building Clowder

If you want to run a version of Clowder other than the released version there
are a few prerequisites you will need. To learn about developing Clowder please
visit the xref:docs/antora/modules/ROOT/pages/developer-guide.adoc[developing clowder] page for more detailed instructions.

## History

To understand more about the design decisions made while developing Clowder,
please visit the xref:docs/antora/modules/ROOT/pages/clowder-design.adoc[design document]

## Connect

Any questions, please ask one of the Clowder development team

* https://github.com/psav[@psav]
* https://github.com/bsquizz[@bsquizz]
* https://github.com/bennyturns[@bennyturns]
* https://github.com/adamrdrew[@adamrdrew]

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
apis
cloud.redhat.com/v1alpha1
Package v1alpha1 contains API Schema definitions for the cloud.redhat.com v1alpha1 API group +kubebuilder:object:generate=true +groupName=cloud.redhat.com
Package v1alpha1 contains API Schema definitions for the cloud.redhat.com v1alpha1 API group +kubebuilder:object:generate=true +groupName=cloud.redhat.com
controllers
cloud.redhat.com/providers/metrics/subscriptions
+kubebuilder:object:generate=true +groupName=operators.coreos.com
+kubebuilder:object:generate=true +groupName=operators.coreos.com

Jump to

Keyboard shortcuts

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