service-idler
by
openshift

Description: A controller for idling and unidling groups of scalable Kubernetes resources

View on GitHub ↗

Summary Information

Updated 56 minutes ago
Added to GitGenius on June 23rd, 2023
Created on April 3rd, 2018
Open Issues & Pull Requests: 1 (+0)
Number of forks: 17
Total Stargazers: 43 (+0)
Total Subscribers: 96 (+0)

Issue Activity (beta)

Open issues: 0
New in 7 days: 0
Closed in 7 days: 0
Avg open age: N/A days
Stale 30+ days: 0
Stale 90+ days: 0

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • lifecycle/rotten (2)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

The service-idler repository is a Kubernetes controller written in Go that manages the automated idling and unidling of groups of scalable Kubernetes resources. It provides both a controller implementation and a custom Kubernetes API type served via a Custom Resource Definition, enabling users to define and manage idle states for related workloads in a coordinated manner.

The core functionality revolves around the Idler object, which users create to specify groups of scalable Kubernetes resources such as Deployments and Replica Sets that should be idled and unidled together. When the `.spec.wantIdle` field is set to true, the idling controller scales all specified resources down to zero while recording their previous scale values for later restoration. When the field is flipped back to false, the controller restores all target scalables to their previously recorded scales and clears internal tracking fields for unidled scales and inactive service names.

The repository is specifically designed to integrate with network-traffic-based unidling solutions, though it does not itself provide network-based unidling capabilities. Instead, it exposes a `.status.idled` field that external network proxies can monitor to determine when services should be considered for unidling. This field transitions to true when the controller begins scaling down resources and remains true until all trigger services have at least one ready endpoint. To initiate unidling, a proxy simply patches the Idler object to set `.spec.wantIdle` to false. The OpenShift Origin project provides a reference implementation of such a proxy that leverages this design.

The repository is built using the kubebuilder toolset, a framework for building Kubernetes controllers. The build process supports multiple approaches: users can build using the provided Dockerfile.controller or by running standard Go commands with Go version 1.9 or later. Dependencies are managed through the dep tool, and the vendor directory must be restored using `dep ensure -vendor-only` before building. Installation on a Kubernetes cluster is straightforward through the `hack/install.yaml` file, which contains all necessary Kubernetes objects for deploying the CRD and launching the controller.

The repository includes RPM-based deployment options as well, with an images directory containing a Dockerfile for RPM-based setups and a corresponding service-idler.spec file for generating RPM packages, though these components are noted as having limited relevance for most users.

GitGenius activity data indicates this repository maintains connections with other significant Kubernetes projects through overlapping contributors, including kubernetes/enhancements, polymer/polymer, and jj-vcs/jj. The project is classified across multiple domains including resource optimization, cluster maintenance, workload automation, pod management, and efficiency monitoring, reflecting its role in helping OpenShift and Kubernetes clusters manage resource consumption through intelligent workload idling strategies.

service-idler
by
openshiftopenshift/service-idler

Repository Details

Fetching additional details & charts...