## edp-install configuration
## Ref: https://github.com/epam/edp-install
##
##

global:
   # -- platform type that can be "kubernetes" or "openshift"
  platform: "kubernetes"
  # -- a cluster DNS wildcard name
  dnsWildCard:
  # Specifies the URL of the API Gateway used by widgets in the platform.
  # The 'apiGatewayUrl' should be set to the external URL of the KrakenD API Gateway exposed via Ingress.
  # Example: https://api.domain.example.com
  # By default, this value is left empty, and widgets are disabled.
  # -- API Gateway URL configuration for Widget Functionality
  apiGatewayUrl: ""
  # -- Define the list of available remote clusters to deploy applications. Example: "cluster1, cluster2, cluster3"
  availableClusters: ""
  # Specify the admin OIDC group name. If empty, default {{ .Release.Namespace }}-oidc-admins.
  adminGroupName: ""
  # Specify the developer OIDC group name. If empty, default {{ .Release.Namespace }}-oidc-developers.
  developerGroupName: ""
  # Specify the viewers OIDC group name. If empty, default {{ .Release.Namespace }}-oidc-viewers.
  viewerGroupName: ""
  # -- Can be gerrit, github, gitlab or bitbucket. Default: github
  gitProviders:
    - github
    # - gitlab
    # - gerrit
    # - bitbucket

  # Define the Image Registry that will be used in Pipelines.
  # This section is optional, and users can configure the registry within the KubeRocketCI Portal user interface.
  # Ref: https://docs.kuberocketci.io/docs/user-guide/manage-container-registries#add-container-registry
  #
  # For example to integrate platform with ecr and publish image under 'edp' prefix:
  # dockerRegistry:
  #   type: "ecr"
  #   url: "<aws_account_id>.dkr.ecr.<aws_region>.amazonaws.com"
  #   space: "edp"
  #   awsRegion: "eu-central-1"
  # As a result all image artifacts are published under "<aws_account_id>.dkr.ecr.<aws_region>.amazonaws.com/edp/simple-project:0.1.0-SNAPSHOT.1"
  #
  # For example to integrate platform with harbor and publish image under 'edp' project name:
  # dockerRegistry:
  #   type: "harbor"
  #   url: "registry.example.com"
  #   space: "edp"
  # As a result all image artifacts are published under https://registry.example.com/edp/simple-project
  #
  # For example to integrate platform with dockerhub and publish image under 'my_user' account:
  # dockerRegistry:
  #   type: "dockerhub"
  #   url: "docker.io"
  #   space: "my_user"
  # As a result all image artifacts are published under https://hub.docker.com/repository/docker/my_user
  #
  # For example to integrate platform with openshift and publish image under 'edp' project name:
  # dockerRegistry:
  #   type: "openshift"
  #   url: "image-registry.openshift-image-registry.svc:5000"
  #   space: "edp"
  # By default, Kubernetes Service Account has the ability to push images to the registry
  # within the namespace where KubeRocketCI is installed.
  # Ref: https://github.com/epam/edp-tekton/blob/master/charts/pipelines-library/templates/resources/rolebinding-tekton-registry-editor.yaml
  #
  # For example to integrate platform with nexus and publish image under 'edp' project name:
  # dockerRegistry:
  #   type: "nexus"
  #   url: "nexus-container.example.com"
  #   space: "edp"
  # As a result all image artifacts are published under https://nexus-container.example.com/edp
  #
  # For example to integrate platform with GitHub container registry and publish image under 'my_user' project name:
  # dockerRegistry:
  #   type: "ghcr"
  #   url: "ghcr.io"
  #   space: "my_user"
  # As a result all image artifacts are published under https://github.com/users/my_user/packages/container/package/simple-project
  dockerRegistry:
    # -- Defines type of registry. One of `ecr`, `harbor`, `dockerhub`, `openshift`, `nexus` or `ghcr`.
    # 'openshift' registry is available only in case if platform is deployed on the OpenShift cluster and the variable global.platform is set to 'openshift'.
    type: ""
    # Below is an example of endpoint values for each registry type:
    # type:      | url
    # =============================
    # ecr        | <aws_account_id>.dkr.ecr.<aws_region>.amazonaws.com
    # harbor     | <registry.example.com>
    # dockerhub  | 'docker.io'
    # openshift  | <image-registry.openshift-image-registry.svc:5000>
    # nexus      | <nexus-container.example.com>
    # ghcr       | 'ghcr.io'
    # -- Defines registry endpoint URL.
    url: ""
    # Below is a description of space values for each registry type:
    # type:      | description
    # =================================================
    # ecr        | The suffix project name in registry.
    # harbor     | The project name in registry.
    # dockerhub  | The user account id or community user account id with push permission.
    # openshift  | The project name in registry.
    # nexus      | The project name in registry.
    # ghcr       | The user account id or community user account id with push permission.
    # -- Defines project name.
    space: ""
    # -- Defines the geographic area where the (AWS) Elastic Container Registry repository is hosted (optional). E.g. "eu-central-1".
    # Mandatory if 'global.dockerRegistry.type=ecr' for kaniko build-task.
    # Ref: https://github.com/epam/edp-tekton/blob/release/0.10/charts/pipelines-library/templates/tasks/kaniko.yaml#L73
    awsRegion: ""

# Configure External Secrets Operator to provision secrets for Platform and/or KubeRocketCI. Required External Secrets Operator deployment: https://docs.kuberocketci.io/docs/operator-guide/secrets-management/install-external-secrets-operator
# https://external-secrets.io/latest/provider-aws-secrets-manager/
# Description of secrets that can be created using this approach - available in the documentation: https://docs.kuberocketci.io/docs/operator-guide/secrets-management/external-secrets-operator-integration
externalSecrets:
  # -- Configure External Secrets for KubeRocketCI platform. Deploy SecretStore. Default: false
  enabled: false
  # -- Defines provider type. One of `aws` or `generic`.
  type: "aws"
  secretProvider:
    aws:
      # -- Use AWS as a Secret Provider. Can be ParameterStore or SecretsManager
      service: ParameterStore
      # -- IAM Role to be used for Accessing AWS either Parameter Store or Secret Manager. Format: arn:aws:iam::<AWS_ACCOUNT_ID>:role/<AWS_IAM_ROLE_NAME>
      role:
      # -- AWS Region where secrets are stored, e.g. eu-central-1
      region: eu-central-1

    generic:
       # Defines Secret Store configuration. Used when externalSecrets.type is set to "generic".
      secretStore:
        # -- Defines SecretStore name.
        name: "example-secret-store"
        # -- Defines SecretStore provider configuration.
        providerConfig: {}
        #  gcpsm:
        #    projectID: "alphabet-123"

  # When installing KubeRocketCI, three secrets must be created: ci-argocd, ci-defectdojo, ci-dependency-track, kaniko-docker-config and other.
  # see https://github.com/epam/edp-install/tree/master/deploy-templates/templates/external-secrets, https://docs.kuberocketci.io/docs/operator-guide/secrets-management/external-secrets-operator-integration
  # manageEDPInstallSecrets creates required secrets using ExternalSecretOperator
  # Ensure external secret source is configured properly
  # -- Create necessary secrets for KubeRocketCI installation, using External Secret Operator
  manageEDPInstallSecrets: true
  # -- Value name in AWS ParameterStore or AWS SecretsManager. Used when manageEDPInstallSecrets is true
  manageEDPInstallSecretsName: /edp/deploy-secrets
  manageCodemieSecretsName: /edp/codemie-secrets
  manageGitProviderSecretsName: /edp/git-provider-secrets

annotations: {}

codebase-operator:
  enabled: true
  # image:
  #   repository: epamedp/codebase-operator
  #   tag:
  # envs:
  #   - name: RECONCILATION_PERIOD
  #     value: "360"  # The value should be typed in minutes
  #   # Maximum number of parallel reconciliation codebasebranches
  #   - name: CODEBASE_BRANCH_MAX_CONCURRENT_RECONCILES
  #     value: 3
  # jira:
  #   integration: false
  #   name: "jira"
  #   apiUrl: "https://jiraeu-api.example.com"
  #   rootUrl: "https://jiraeu.example.com"
  #   credentialName: "ci-jira"

cd-pipeline-operator:
  enabled: true
  # image:
  #   repository: epamedp/cd-pipeline-operator
  #   tag:
  # -- Defines the type of the tenant engine that can be "none", "kiosk" or "capsule";
  # for Stages with external cluster tenancyEngine will be ignored. Default: none
  tenancyEngine: "none"
  # -- Required tenancyEngine: capsule. Specify Capsule Tenant specification for Environments.
  capsuleTenant:
    # Enable Capsule Tenant creation as a part of cd-pipeline-operator deployment. Active if tenancyEngine="capsule"
    create: true
    spec:
    #   ingressOptions:
    #     allowWildcardHostnames: false
    #     allowedHostnames:
    #       # Enable restriction pattern for ingress hostname creation.
    #       allowedRegex: ^.*example.com$
    #     hostnameCollisionScope: Tenant
    #   limitRanges:
    #     items:
    #       - limits:
    #            # Default limits for cintainer if not specified in upstream manifest
    #           - default:
    #               cpu: 256m
    #               memory: 512Mi
    #             # Default requests for cintainer if not specified in upstream manifest
    #             defaultRequest:
    #               cpu: 128m
    #               memory: 128Mi
    #             type: Container
    #         # Manage PVC creation
    #       - limits:
    #           - max:
    #               storage: 0Gi
    #             min:
    #               storage: 0Gi
    #             type: PersistentVolumeClaim
    #   # Maximum count of namespace to be created by cd-pipeline-operator
    #   namespaceOptions:
    #     quota: 3
    #   networkPolicies:
    #     items:
    #       - ingress:
    #           - from:
    #               - namespaceSelector:
    #                   matchLabels:
    #                     # Please fill namespace for match selector
    #                     capsule.clastix.io/tenant: <namespace>
    #               - podSelector: {}
    #               - ipBlock:
    #                   cidr: 172.16.0.0/16
    #         podSelector: {}
    #         policyTypes:
    #           - Ingress
    #   resourceQuotas:
    #     items:
    #       - hard:
    #           limits.cpu: 512m
    #           limits.memory: 512Mi
    #       - hard:
    #           # Maximum count of pods to be deployed
    #           pods: '5'
    #     scope: Tenant
    #   serviceOptions:
    #     allowedServices:
    #       # Restrict 'externalName', 'LoadBalancer' and 'NodePort' service type creation
    #       externalName: false
    #       loadBalancer: false
    #       nodePort: false

  # -- should the operator manage(create/delete) namespaces for stages
  # Refer to the guide for managing namespace (https://docs.kuberocketci.io/docs/operator-guide/auth/namespace-management)
  manageNamespace: true

  # -- Flag indicating whether the operator should manage secrets for stages.
  # This parameter controls the provisioning of the 'regcred' secret within deployed environments, facilitating access to private container registries.
  # Set the parameter to "none" under the following conditions:
  #   - If 'global.dockerRegistry.type=ecr' and IRSA is enabled, or
  #   - If 'global.dockerRegistry.type=openshift'.
  # For private registries, choose the most appropriate method to provide credentials to deployed environments. Refer to the guide for managing container registries (https://docs.kuberocketci.io/docs/user-guide/manage-container-registries).
  # Possible values: own/eso/none.
  #   - own: Copies the secret once from the parent namespace, without subsequent reconciliation. If updated in the parent namespace, manual updating in all created namespaces is required.
  #   - eso: The secret will be managed by the External Secrets Operator (requires installation and configuration in the cluster: https://docs.kuberocketci.io/docs/operator-guide/secrets-management/install-external-secrets-operator).
  #   - none: Disables secrets management logic.
  secretManager: own

gerrit-operator:
  enabled: false
  # image:
  #   repository: epamedp/gerrit-operator
  #   tag:
  # gerrit:
  #   deploy: true
  #   name: "gerrit"
  #   image: "openfrontier/gerrit"
  #   version:
  #   imagePullSecrets:
  #   storage:
  #     size: 1Gi
  #     class: gp2
  # gerrit:
  #   # Provide external endpoint access. Default Ingress/Route host pattern: gerrit-{{ .Release.Namespace }}.{{ .Values.global.dnsWildCard }}
  #   ingress:
  #     # -- Enable external endpoint access. Default Ingress/Route host pattern: gerrit-{{ .Release.Namespace }}.{{ .Values.global.dnsWildCard }}
  #     annotations: {}
  #     # --  pathType is only for k8s >= 1.1=
  #     pathType: Prefix
  #     # --  For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
  #     # --  See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
  #     # ingressClassName: nginx
  #     tls: []
  #     #  - secretName: chart-example-tls
  #     #    hosts:
  #     #      - gerrit-edp.example.com

edp-headlamp:
  enabled: true
  ingress:
    # -- Enable external endpoint access. Default Ingress/Route host pattern: portal-{{ .Release.Namespace }}.{{ .Values.global.dnsWildCard }}
    enabled: true
    # -- Annotations for Ingress resource
    annotations:
      {}
      # kubernetes.io/ingress.class: nginx
      # kubernetes.io/tls-acme: "true"
    # -- Hostname(s) for the Ingress resource
    # -- Ingress TLS configuration
    tls: []
    #  - secretName: chart-example-tls
    #    hosts:
    #      - portal-edp.example.com
  config:
    # -- base url path at which headlamp should run
    baseURL: ""
    # -- Ensure that the specified client is associated with cluster OIDC integration.
    # -- For detailed instructions, refer to: https://docs.kuberocketci.io/docs/operator-guide/auth/configure-keycloak-oidc-eks, https://docs.kuberocketci.io/docs/operator-guide/auth/ui-portal-oidc
    oidc:
      # Enable OIDC integration. Default: false
      enabled: false
      # -- OIDC Issuer URL for authentication.
      # -- This URL identifies the OpenID Connect provider endpoint. Examples:
      # -- Keycloak: https://keycloak.example.com/auth/realms/<realm-name>
      # -- Azure Entra: https://sts.windows.net/<tenant-id>/
      issuerUrl: ""
      # -- OIDC client ID
      clientID: ""
      # -- OIDC client secret name
      clientSecretName: "keycloak-client-headlamp-secret"
      # -- OIDC client secret key
      clientSecretKey: "clientSecret"
      # -- OIDC scopes to be used
      scopes: ""
  # image:
  #   repository: epamedp/edp-headlamp
  #   tag:

edp-tekton:
  enabled: true

  pipelines:
    image:
      # -- Registry for tekton pipelines images. Default: docker.io
      registry: "docker.io"

    # -- This section contains the list of pipelines and tasks that will be installed.
    deployableResources:
      # -- This flag control the installation of the tasks.
      tasks: true
      # -- This flag control the installation of the Deploy pipelines.
      deploy: true
      # -- This section control the installation of the review and build pipelines.
      c:
        cmake: true
        make: true
      cs:
        dotnet3.1: false
        dotnet6.0: false
      docker: true
      groovy: true
      go:
        beego: true
        gin: true
        operatorsdk: true
      helm: true
      helm-pipeline: true
      infrastructure: true
      java:
        java8: false
        java11: true
        java17: true
      js:
        angular: true
        antora: true
        express: true
        next: true
        react: true
        vue: true
      opa: false
      python:
        ansible: true
        flask: true
        fastapi: true
        python3.8: false
      terraform: true

    # -- This section allows to determine on which nodes to run tekton pipelines
    podTemplate: []
      # nodeSelector:
      #   role: tekton
      # tolerations:
      #   - effect: NoSchedule
      #     key: role
      #     operator: Equal
      #     value: tekton

  tekton-cache:
    # Deploy tekton-cache helm-chart.
    enabled: true
    # Tekton cache endpoint for pipeline-library helm chart. See charts/pipelines-library/templates/resources/cm-tekton-cache.yaml
    # url: http://tekton-cache:8080

  dashboard:
    # -- Deploy Tekton Dashboard as a part of pipeline library when true. Default: false
    # -- WARNING: Default deployment of the dashboard does not involve any proxy and may be accessible to the public.
    # -- To enable proxy protect use openshift_proxy or sso.enabled sections.
    # -- More details:
    # -- https://docs.kuberocketci.io/docs/operator-guide/auth/oauth2-proxy
    enabled: false

    # -- Define mode for Tekton Dashboard. Enable/disaable capability to create/modify/remove Tekton objects via Tekton Dashboard. Default: false.
    readOnly: false

    # -- Make it possible to use openshift as OIDC provider to hide tekton-dashboard.
    # -- Only for openshift deploy scenario,
    # -- For EKS scenario - uncomment dashboard.ingress.annotations block
    # -- More details:
    # -- https://docs.kuberocketci.io/docs/operator-guide/auth/oauth2-proxy#enable-oauth2-proxy-on-tekton-dashboard
    openshift_proxy:
      # -- Enable oauth-proxy to include authorization layer on tekton-dashboard. Default: flase
      enabled: false

    ingress:
      # -- Enable external endpoint access. Default Ingress/Route host pattern: tekton-{{ .Release.Namespace }}.{{ .Values.global.dnsWildCard }}
      enabled: true
      # -- Annotations for Ingress resource
      annotations: {}
        # -- Uncomment it to enable tekton-dashboard OIDC on EKS cluster
        # nginx.ingress.kubernetes.io/auth-signin: 'https://<oauth-ingress-host>/oauth2/start?rd=https://$host$request_uri'
        # nginx.ingress.kubernetes.io/auth-url: 'http://oauth2-proxy.edp.svc.cluster.local:8080/oauth2/auth'
      tls: []
      #  - secretName: chart-example-tls
      #    hosts:
      #      - tekton-edp.example.com
  # -- Enable integration of tekton-pipelines metrics with Prometheus and Grafana monitoring stack
  # -- More details:
  # -- https://docs.kuberocketci.io/docs/operator-guide/ci/tekton-monitoring
  grafana:
    enabled: false
    # -- Labels applied to the ServiceMonitor resource.
    # -- These labels are used by Prometheus to discover and integrate the ServiceMonitor into its configuration.
    # -- The labels must match the Prometheus release labels.
    # serviceMonitor:
    #   prometheusReleaseLabels:
    #     release: prom

  # GitServers configuration section
  # GitServer creation depends on the gitProviders configuration, if gitProvider is not enabled,
  # the GitServer will not be created.
  gitServers: {}
  #   my-github:
  #     gitProvider: github
  #     host: github.com
  #     webhook:
  #       skipWebhookSSLVerification: false
  #     eventListener:
  #       # -- Enable EventListener
  #       enabled: true
  #       # -- EventListener resources
  #       resources:
  #         requests:
  #           memory: "64Mi"
  #           cpu: "50m"
  #         limits:
  #           memory: "128Mi"
  #           cpu: "500m"
  #       # -- Node labels for EventListener pod assignment
  #       nodeSelector: {}
  #       # -- Tolerations for EventListener pod assignment
  #       tolerations: []
  #       # -- Affinity for EventListener pod assignment
  #       affinity: {}

  #       ingress:
  #         # -- Enable ingress controller resource
  #         enabled: true
  #         # -- Ingress annotations
  #         annotations: {}
  #         # -- Ingress TLS configuration
  #         tls: []

  #   my-gitlab:
  #     gitProvider: gitlab
  #     host: gitlab.com
  #     webhook:
  #       skipWebhookSSLVerification: false
  #     eventListener:
  #       # -- Enable EventListener
  #       enabled: true
  #       # -- EventListener resources
  #       resources:
  #         requests:
  #           memory: "64Mi"
  #           cpu: "50m"
  #         limits:
  #           memory: "128Mi"
  #           cpu: "500m"
  #       # -- Node labels for EventListener pod assignment
  #       nodeSelector: {}
  #       # -- Tolerations for EventListener pod assignment
  #       tolerations: []
  #       # -- Affinity for EventListener pod assignment
  #       affinity: {}

  #       ingress:
  #         # -- Enable ingress controller resource
  #         enabled: true
  #         # -- Ingress annotations
  #         annotations: {}
  #         # -- Ingress TLS configuration
  #         tls: []

  #   my-gerrit:
  #     gitProvider: gerrit
  #     host: gerrit.example.com
  #     gitUser: ci-user
  #     httpsPort: 443
  #     nameSshKeySecret: gerrit-ciuser-sshkey
  #     sshPort: 30022
  #     webhook:
  #       skipWebhookSSLVerification: false
  #     eventListener:
  #       # -- Enable EventListener
  #       enabled: true
  #       # -- EventListener resources
  #       resources:
  #         requests:
  #           memory: "64Mi"
  #           cpu: "50m"
  #         limits:
  #           memory: "128Mi"
  #           cpu: "500m"
  #       # -- Node labels for EventListener pod assignment
  #       nodeSelector: {}
  #       # -- Tolerations for EventListener pod assignment
  #       tolerations: []
  #       # -- Affinity for EventListener pod assignment
  #       affinity: {}

  #       ingress:
  #         # -- Enable ingress controller resource
  #         enabled: true
  #         # -- Ingress annotations
  #         annotations: {}
  #         # -- Ingress TLS configuration
  #         tls: []

  #   my-bitbucket:
  #     gitProvider: bitbucket
  #     host: bitbucket.org
  #     webhook:
  #       skipWebhookSSLVerification: false
  #     eventListener:
  #       # -- Enable EventListener
  #       enabled: true
  #       # -- EventListener resources
  #       resources:
  #         requests:
  #           memory: "64Mi"
  #           cpu: "50m"
  #         limits:
  #           memory: "128Mi"
  #           cpu: "500m"
  #       # -- Node labels for EventListener pod assignment
  #       nodeSelector: {}
  #       # -- Tolerations for EventListener pod assignment
  #       tolerations: []
  #       # -- Affinity for EventListener pod assignment
  #       affinity: {}

  #       ingress:
  #         # -- Enable ingress controller resource
  #         enabled: true
  #         # -- Ingress annotations
  #         annotations: {}
  #         # -- Ingress TLS configuration
  #         tls: []

# -- Define platform Quick Links, more details: https://github.com/epam/edp-codebase-operator/
# @default -- ``
quickLinks:
#   argocd: ""
#   defectdojo: ""
#   dependency_track: ""
#   docker_registry: ""
#   grafana: ""
#   opensearch: ""
#   nexus: ""
#   sonar: ""
#   codemie: ""

# -- Define extra Quick Links, more details: https://github.com/epam/edp-codebase-operator/
extraQuickLinks: {}
  # - prometheus:
  #     url: https://ingress-prometheus.example.com
  #     visible: true
  #     icon: icon_in_base64
  # - another_tool:
  #     url: https://ingress-anothertool.example.com
  #     visible: true
  #     icon: icon_in_base64

# -- Array of extra K8s manifests to deploy
extraObjects: []
  # - apiVersion: external-secrets.io/v1beta1
  #   kind: ExternalSecret
  #   metadata:
  #     name: example-secret-1
  #   spec:
  #     data:
  #       - remoteRef:
  #           key: /edp/deploy-secrets
  #           property: example-secret-1.username
  #         secretKey: username
  #       - remoteRef:
  #           key: /edp/deploy-secrets
  #           property: example-secret-1.password
  #         secretKey: password
  #     secretStoreRef:
  #       kind: SecretStore
  #       name: example-parameterstore
  # - |
  #       apiVersion: external-secrets.io/v1beta1
  #       kind: ExternalSecret
  #       metadata:
  #         name: example-secret-2
  #       spec:
  #         data:
  #           - remoteRef:
  #               key: /edp/deploy-secrets
  #               property: example-secret-2.username
  #             secretKey: username
  #           - remoteRef:
  #               key: /edp/deploy-secrets
  #               property: example-secret-2.password
  #             secretKey: password
  #         secretStoreRef:
  #           kind: SecretStore
  #           name: example-parameterstore
