Skip to content

Editions & Licensing

GitLab ships in two editions: Community Edition (CE) and Enterprise Edition (EE). The operator supports both.

Community Edition (CE)

CE is the default. No license is needed.

spec:
  edition: ce    # default; can be omitted

CE includes the full GitLab feature set except Enterprise-only features. With the operator, CE supports:

  • Managed or BYO PostgreSQL and Redis
  • External object storage (S3)
  • All GitLab CI/CD, repository, issue, and merge-request features
  • Container registry
  • GitLab Agent Server (KAS)
  • GitLab Pages

Elasticsearch / Advanced Search is not available in CE.

Enterprise Edition (EE)

EE requires a valid GitLab license. You must provide the license as a Kubernetes Secret before the operator will emit the HelmRelease.

spec:
  edition: ee
  licenseSecret: my-gitlab-ee-license

The license Secret

Create the Secret from your GitLab EE license file (.gitlab-license):

kubectl create secret generic my-gitlab-ee-license \
  --from-file=license=/path/to/my.gitlab-license \
  -n my-gitlab-ee

The Secret must have a key named license containing the raw license file content.

# Equivalent YAML form
apiVersion: v1
kind: Secret
metadata:
  name: my-gitlab-ee-license
  namespace: my-gitlab-ee
stringData:
  license: |
    <base64-encoded GitLab EE license content>

licenseSecret is required for EE

Setting edition: ee without licenseSecret causes the operator to emit a Failed condition with reason ValidationFailed. The instance will not progress past validation until a valid license Secret is provided.

What EE unlocks

Feature CE EE
All GitLab CI/CD, SCM, DevOps Yes Yes
Container Registry Yes Yes
GitLab Pages Yes Yes
GitLab Agent Server (KAS) Yes Yes
Advanced Search (Elasticsearch) No Yes
Managed Elasticsearch (spec.elasticsearch.managed: true) No Yes
GitLab Geo No Yes
Compliance features Limited Full
Security scanning features Limited Full

The operator's specific EE additions are:

  • spec.licenseSecret is consumed; the operator emits global.gitlab.license.{secret,key} to the chart.
  • spec.elasticsearch.managed: true is honoured; an ECK Elasticsearch cluster is provisioned and wired to the chart via global.appConfig.elasticsearch.{enabled,url,username}.

On CE, the licenseSecret and elasticsearch spec fields are silently ignored.

Switching editions

To switch from CE to EE:

  1. Obtain a GitLab EE license and create the license Secret.
  2. Update the GitlabInstance:
spec:
  edition: ee
  licenseSecret: my-gitlab-ee-license

The operator will re-compose the Helm values with the license wired in and emit an updated HelmRelease. Flux will run helm upgrade, which applies the license.

CE to EE data migration

Switching from CE to EE does not require a database migration — GitLab CE and EE share the same schema. The chart upgrade handles the transition.

Switching from EE to CE is not supported by GitLab (EE-only schema extensions may be present). Consult GitLab's official documentation before attempting a downgrade.