{{- if .Values.addons.gitlab.enabled }}
apiVersion: v1
kind: Namespace
metadata:
  labels:
    app.kubernetes.io/name: gitlab
    app.kubernetes.io/component: "developer-tools"
    {{- include "commonLabels" . | nindent 4}}
  name: gitlab
---
{{- if ( include "imagePullSecret" . ) }}
apiVersion: v1
kind: Secret
metadata:
  name: private-registry
  namespace: gitlab
  labels:
    app.kubernetes.io/name: gitlab
    app.kubernetes.io/component: "developer-tools"
    {{- include "commonLabels" . | nindent 4}}
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: {{ template "imagePullSecret" . }}
{{- end }}
---
# create sso secret. The assumption is OIDC
{{- if .Values.addons.gitlab.sso.enabled }}
apiVersion: v1
kind: Secret
metadata:
  name: gitlab-sso-provider
  namespace: gitlab
type: kubernetes.io/opaque
stringData:
  gitlab-sso.json: |-
    {
      "name": "openid_connect",
      "label": "{{ .Values.addons.gitlab.sso.label }}",
      "args": {
        "name": "openid_connect",
        "scope": [
          "Gitlab"
        ],
        "response_type": "code",
        "issuer": "https://{{ .Values.sso.oidc.host }}/auth/realms/{{ .Values.sso.oidc.realm }}",
        "client_auth_method": "query",
        "discovery": true,
        "uid_field": "preferred_username",
        "client_options": {
          "identifier": "{{ .Values.addons.gitlab.sso.client_id | default .Values.sso.client_id }}",
          "secret": "{{ .Values.addons.gitlab.sso.client_secret | default .Values.sso.client_secret }}",
          "redirect_uri": "https://{{ .Values.addons.gitlab.hostnames.gitlab }}/users/auth/openid_connect/callback",
          "end_session_endpoint": "https://{{ .Values.sso.oidc.host }}/auth/realms/{{ .Values.sso.oidc.realm }}/protocol/openid-connect/logout"
        }
      }
    }
{{- end }}
---
# create database secret
{{- if .Values.addons.gitlab.database.host }}
apiVersion: v1
kind: Secret
metadata:
    name: gitlab-database
    namespace: gitlab
type: kubernetes.io/opaque
stringData:
    PGPASSWORD: {{ .Values.addons.gitlab.database.password }}
{{- end }}
---
# create object storage secret
{{- if .Values.addons.gitlab.objectStorage.endpoint }}
apiVersion: v1
kind: Secret
metadata:
    name: gitlab-object-storage
    namespace: gitlab
type: kubernetes.io/opaque
stringData:
    rails: |-
      provider: AWS
      region: {{ .Values.addons.gitlab.objectStorage.region }}
      aws_access_key_id: {{ .Values.addons.gitlab.objectStorage.accessKey }}
      aws_secret_access_key: {{ .Values.addons.gitlab.objectStorage.accessSecret }}
      {{- if eq .Values.addons.gitlab.objectStorage.type "minio" }}
      aws_signature_version: 4
      host: {{ regexReplaceAll "http(s{0,1})://(.*):(\\d+)" .Values.addons.gitlab.objectStorage.endpoint "${2}" }}
      endpoint: "{{ .Values.addons.gitlab.objectStorage.endpoint }}"
      path_style: true
      {{- end }}
    registry: |-
      s3:
        {{- if .Values.addons.gitlab.objectStorage.bucketPrefix }}
        bucket: {{ .Values.addons.gitlab.objectStorage.bucketPrefix }}-gitlab-registry
        {{- else }}
        bucket: gitlab-registry
        {{- end }}
        accesskey: {{ .Values.addons.gitlab.objectStorage.accessKey }}
        secretkey: {{ .Values.addons.gitlab.objectStorage.accessSecret }}
        region: {{ .Values.addons.gitlab.objectStorage.region }}
        {{- if eq .Values.addons.gitlab.objectStorage.type "s3" }}
        v4auth: true
        {{- end }}
        {{- if eq .Values.addons.gitlab.objectStorage.type "minio" }}
        aws_signature_version: 4
        host: {{ regexReplaceAll "http(s{0,1})://(.*):(\\d+)" .Values.addons.gitlab.objectStorage.endpoint "${2}" }}
        regionendpoint: "{{ .Values.addons.gitlab.objectStorage.endpoint }}"
        path_style: true
        {{- end }}
    backups: |-
      [default]
      access_key = {{ .Values.addons.gitlab.objectStorage.accessKey }}
      secret_key = {{ .Values.addons.gitlab.objectStorage.accessSecret }}
      bucket_location = {{ .Values.addons.gitlab.objectStorage.region }}
      host_bucket = %(bucket)s.{{ regexReplaceAll "http(s*)://" .Values.addons.gitlab.objectStorage.endpoint "" }}
{{- end }}

{{- end }}