from:
  - postgresql/standalone
  - elastic/elasticsearch/standalone
  - gravitee-io/oss/apim/jdbc/base
vars:
  postgresql:
    standalone:
      imageTag:
        default: "17"
      imageRepository:
        default: "postgres"
  elastic:
    elasticsearch:
      standalone:
        imageTag:
          default: "9.3.1"
        imageRepository:
          default: "docker.elastic.co/elasticsearch/elasticsearch"
  jdbcUrl:
    default: "jdbc:postgresql://postgresql:5432/gravitee"
    description: "JDBC connection URL"
  jdbcDriver:
    default: "https://repo1.maven.org/maven2/org/postgresql/postgresql/42.7.4/postgresql-42.7.4.jar"
    description: "JDBC driver download URL"
  jdbcUsername:
    default: "postgres"
    description: "JDBC username"
  jdbcPassword:
    default: "postgres"
    description: "JDBC password"
components:
  - name: postgresql
    namespace: gravitee
    k8s:
      manifests:
        - apiVersion: v1
          kind: Service
          metadata:
            name: postgresql
            labels:
              app: postgresql
          spec:
            type: ClusterIP
            ports:
              - port: 5432
                targetPort: 5432
                name: postgresql
            selector:
              app: postgresql
  - name: elasticsearch
    namespace: gravitee
    helm:
      values:
        service:
          type: ClusterIP
          nodePort: null
  - name: apim
    requires:
      - component: postgresql
        conditions:
          ready: true
        selector:
          matchLabels:
            app: postgresql
        timeout: 15m
      - component: elasticsearch
        conditions:
          ready: true
        selector:
          matchLabels:
            app: elasticsearch-master
        timeout: 15m
    helm:
      values:
        jdbc:
          url: "{{ .jdbcUrl }}"
          driver: "{{ .jdbcDriver }}"
          username: "{{ .jdbcUsername }}"
          password: "{{ .jdbcPassword }}"
        gateway:
          env:
            - name: gravitee_ratelimit_jdbc_uri
              value: "{{ .jdbcUrl }}"
            - name: gravitee_ratelimit_jdbc_username
              value: "{{ .jdbcUsername }}"
            - name: gravitee_ratelimit_jdbc_password
              value: "{{ .jdbcPassword }}"
