sf-operator

command module
v0.0.25 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2024 License: Apache-2.0 Imports: 11 Imported by: 0

README

SF-Operator: a Zuul-based CI infrastructure for OpenShift

Matrix Channel

About

SF-Operator is an Operator that simplifies the deployment and operation of Software Factory instances on the OpenShift Container Platform. An instance of Software Factory is composed of Zuul and its dependencies (NodePool, Zookeeper, MariaDB, Log Server).

It is the natural evolution of the Software Factory project: the 3.8.x release of Software Factory saw the containerization of every major service, but was still delivered as RPM packages, in the form of a custom CentOS 7 distribution. SF-Operator builds upon this containerization effort to move from a distro-centric approach to a cloud-native deployment. This is also an opportunity to focus on the leanest service suite needed to provide a working gated CI infrastructure; hence a scope reduced to Zuul and its dependencies only.

SF-Operator is built mostly in Go upon the Operator Framework, with the aim of reaching the highest capability level that can be achieved, in order to bring a modern, scalable gated CI alternative to OpenShift users, with the least friction from operation as possible.

Furthermore, SF-Operator takes advantage of some of the specificities of OpenShift as a container orchestration platform:

  • Improved routes API
  • Integration with OLM for streamlined operator and operands' lifecycle management
  • If enabled in OpenShift, SF-Operator comes with default monitoring and alerting configurations that can be used out of the box. The default alerting rules are honed from years of maintaining and running several large Zuul deployments at scale for Fedora, Ansible and RDO.
  • If enabled, OpenShift provides application logs aggregation with its logging subsystem out of the box.

Finally, we also provide a Command Line Interface (CLI) called sfconfig to simplify common tasks related to the operator, management of the operands, development and testing.

Status

The current project status is: Alpha - NOT PRODUCTION READY

Capability Levels

  • Level 1 - Basic Install - 8/10
    • Zuul Scheduler: ✅
    • Zuul Executor: ✅
    • Zuul Web: ✅
    • Zuul Merger: ❌
    • Nodepool Launcher: ✅
    • Nodepool Builder: ✅
    • Zookeeper: ✅
    • MariaDB: ✅
    • Log Server: ✅
    • Internal Config Repository, bootstrapped pipelines and default jobs: ✅
  • Level 2 - Seamless upgrades - 2/2
    • Operator: ✅
    • Operands: ✅
  • Level 3 - Full Lifecycle - 1/5
    • SF 3.8.x migration ❌
    • Backup: ❌
    • Restore: ❌
    • Rolling deployments: ❌
    • Reconfiguration: ✅
  • Level 4 - Deep Insights - 1/3
    • Operator metrics: ❌
    • Operand metrics: ✅
    • Alerts: ❌ (WIP)
  • Level 5 - Auto pilot - 0/3
    • Auto-scaling : ❌
    • Auto-healing: ❌
    • Auto-tuning: ❌

Getting Started

Documentation

  • Operator documentation: for OpenShift cluster administrators, this documentation covers installing SF-Operator and managing the operator's lifecycle.
  • Deployment documentation: this documentation covers the essentials for people or teams who intend to deploy and manage Zuul and its dependencies through the SF-Operator.
  • Developer documentation: this documentation describes how to set up a development and testing environment to develop the SF-Operator.
  • End User documentation: for users of a Software Factory instance. This documentation mostly describes the Software Factory's config repository usage (configuration-as-code).
  • CLI refererence

Getting Help

Should you have any questions or feedback concerning the SF-Operator, you can:

Contributing

Refer to CONTRIBUTING.md.

Licence

Sf-operator is distributed under the Apache License.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
api
v1
Package v1 contains API Schema definitions for the sf v1 API group +kubebuilder:object:generate=true +groupName=sf.softwarefactory-project.io
Package v1 contains API Schema definitions for the sf v1 API group +kubebuilder:object:generate=true +groupName=sf.softwarefactory-project.io
cli
cmd
Package cmd provides subcommands for the main.go CLI
Package cmd provides subcommands for the main.go CLI
cmd/bootstrap-tenant-config-repo
Package bootstraptenantconfigrepo provides facilities for the sfconfig CLI Generates pipelines, jobs and playbooks for zuul
Package bootstraptenantconfigrepo provides facilities for the sfconfig CLI Generates pipelines, jobs and playbooks for zuul
cmd/dev
Package dev subcommands can be used to manage a development environment and run tests.
Package dev subcommands can be used to manage a development environment and run tests.
cmd/dev/gerrit
Package gerrit provides gerrit related functions for the CLI
Package gerrit provides gerrit related functions for the CLI
cmd/dev/microshift
Package microshift provides tools to deploy a MicroShift host via Ansible
Package microshift provides tools to deploy a MicroShift host via Ansible
cmd/utils
Package utils provides CLI utility functions and structs
Package utils provides CLI utility functions and structs
cmd/zuul
Package zuul deals with zuul-related subcommands.
Package zuul deals with zuul-related subcommands.
Package controllers provides controller functions
Package controllers provides controller functions
libs/base
Package base provides various utility functions regarding base k8s resources used by the sf-operator
Package base provides various utility functions regarding base k8s resources used by the sf-operator
libs/cert
Package cert provides various utility functions regarding handling cert-manager for the sf-operator
Package cert provides various utility functions regarding handling cert-manager for the sf-operator
libs/conds
Package conds provides various utility functions regarding Status.Conditions for the sf-operator
Package conds provides various utility functions regarding Status.Conditions for the sf-operator
libs/logging
Package logging provides various utility functions regarding optional service log collection for the sf-operator:
Package logging provides various utility functions regarding optional service log collection for the sf-operator:
libs/monitoring
Package monitoring provides various utility functions regarding monitoring for the sf-operator:
Package monitoring provides various utility functions regarding monitoring for the sf-operator:
libs/utils
Package utils provides various utility functions
Package utils provides various utility functions
libs/zuulcf
Package zuulcf contains a library to build Zuul configurations.
Package zuulcf contains a library to build Zuul configurations.

Jump to

Keyboard shortcuts

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