Skip to content

Introduce SSHServer API and custom resource definition

Summary

SSHServer API provides the interface for configuration, runtime specification, and workload definition of GitLab Shell. The interface MUST support the majority of GitLab shell runtimes configuration, including:

  • GitLab SSHD and OpenSSH support.
  • Other runtime settings that GitLab Chart supports.

Also, the API provides the Scale sub-resource, making it possible to scale a SSHServer with auto-scalers such as HorizontalPodAutoscaler or KEDA as well as kubectl scale.

Parity with GitLab Chart

The SSHServer API aims to provide feature parity with GitLab Chart for running GitLab Shell. This means:

  1. The majority of configuration possible through GitLab Chart can be achieved using the SSHServer API.
  2. The API offers the same level of configuration granularity as GitLab Chart.

It is important to note that while the capabilities are equivalent, this does not imply a direct one-to-one mapping between GitLab Chart and the SSHServer API.

Success criteria

  • API types are defined in api/v2alpha2 package and they support the majority of GitLab Shell runtimes configuration.
  • The API has Scale sub-resource.
  • CRD can be generated from API types.
  • A sample custom resource is provided in config/samples.