[![Go Report Card](https://goreportcard.com/badge/gitlab.com/gitlab-org/cloud-native/gitlab-operator "Go Report Card")](https://goreportcard.com/report/gitlab.com/gitlab-org/cloud-native/gitlab-operator)

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

[![Go Reference](https://pkg.go.dev/badge/gitlab.com/gitlab-org/cloud-native/gitlab-operator.svg)](https://pkg.go.dev/gitlab.com/gitlab-org/cloud-native/gitlab-operator)

# GitLab Operator

**Note:** The GitLab Operator has [known limitations](doc/index.md#known-issues) and is only suitable for specific scenarios in production use. For more details see the [install guide](doc/installation.md).

The GitLab Operator aims to manage the full lifecycle of GitLab instances in your Kubernetes or OpenShift container platforms.

While new and still actively being developed, the operator aims to:

- ease installation and configuration of GitLab instances
- offer seamless upgrades from version to version
- ease backup and restore of GitLab and its components
- aggregate and visualize metrics using Prometheus and Grafana
- setup auto-scaling

Note that this does not include the GitLab Runner. For more information, see the [GitLab Runner Operator repository](https://gitlab.com/gitlab-org/gl-openshift/gitlab-runner-operator).

## Documentation

Information on installation, usage, and contributing to the GitLab Operator can be found at the [documentation site](https://docs.gitlab.com/operator).

## Owned Custom Resource: GitLab

The operator is responsible for owning, watching, and reconciling the GitLab custom resource.

An example GitLab object is shown below:

```yaml
apiVersion: apps.gitlab.com/v1beta1
kind: GitLab
metadata:
  name: gitlab
spec:
  chart:
    version: "X.Y.Z"
    values:
      global:
        hosts:
          domain: example.com
```
