Skip to content
Kubernetes Exploration
Go Shell Makefile Dockerfile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Use ghr to automatically create draft release Aug 5, 2019
cmd Add support for `manager config` to dump the current manager configur… Jul 30, 2019
config Include version label on manager pods Aug 14, 2019
docs Fix remote documentation Aug 15, 2019
examples Update quick start to use Kustomize, add setup task example Aug 6, 2019
hack Apache License 2.0 and copyright headers Jul 14, 2019
pkg Bump version number Aug 14, 2019
.dockerignore Switch to Go modules. Finally. Jul 22, 2019
.gitignore
Dockerfile Remove working directory specification in Circle build Jul 22, 2019
LICENSE Apache License 2.0 and copyright headers Jul 14, 2019
Makefile Add app.kubernetes.io labels via Kustomize Aug 6, 2019
PROJECT
README.md Add CircleCI badge to README Aug 5, 2019
go.mod Upgrade controller runtime/tools to 0.2.0-beta.4 Jul 22, 2019
go.sum Upgrade controller runtime/tools to 0.2.0-beta.4 Jul 22, 2019

README.md

Red Sky Ops - Kubernetes Experiments

CircleCI

The Kubernetes Experiments project (k8s-experiment) supports the creation and execution of experiments used for the validation of configuration state through a series of trials.

Installation

Downloads of the Red Sky CLI can be found on the release page. Download the appropriate binary for your platform and add it to your PATH.

To install the custom Kubernetes resources to you currently configured cluster, execute the redskyctl init command. To uninstall and remove all of the Red Sky Opts data, execute redskyctl reset.

Getting Started

See the tutorials.

An experiment modifies the state of the cluster using patches (e.g. strategic merge patches) represented as Go templates with parameter assignments for input. Metrics are typically collected using PromQL queries against an in-cluster Prometheus service. Optionally, setup tasks can be run before and after each trial: these tasks create or delete Kustomizations.

Parameters

Parameters are named integers assigned from an inclusive range.

Note: when working with Kubernetes "quantity" values, you must use the integer notation (e.g. a CPU limit of "4.0" must be expressed as "4000m").

Metrics

Metrics are named floating point values collected at the conclusion of a trial run.

Note: when using Prometheus metrics, PromQL queries must evaluate to a scalar value.

Patches

Patches are Go Templates evaluated against parameter assignments that produce a patch supported by the Kubernetes API Server (e.g. strategic merge patches). Parameters are exposed via a Values map (e.g. {{ .Values.x }} would evaluate to the assignment of parameter "x").

Setup Tasks

Setup tasks can be executed before or after a trial run. Each setup task builds a Kustomization and creates (prior to the trial run) or deletes (after the trial run) the resulting manifests.

Setup tasks can reference a Helm chart which will be fetched and evaluated locally as a resource in the Kustomization. Helm values can be assigned using the same Go Templates as patches.

Development

To run the Red Sky Experiment Manager locally: first run make install to add the necessary Custom Resource Definitions (CRD) to you currently configured cluster; then run make run to start a local process (inheriting Red Sky Client API configuration from your current environment).

This project was bootstrapped by Kubebuilder and inherits many of the stock conventions. Some notable exceptions are the inclusion of the make tool target for building the Red Sky Control tool and overloading make docker-build to produce both the Red Sky Experiment Manager image and the Setup Tools image.

You can’t perform that action at this time.