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:
- The majority of configuration possible through GitLab Chart can be achieved using the
SSHServer
API. - 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
.