# *****************************************************************************
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#
# ******************************************************************************

# Default values for datalab-billing.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

replicaCount: 1

image:
  repository: epamdlab/billing
  tag: '0.1-gcp'
  # pullPolicy: IfNotPresent
  pullPolicy: Always

#imagePullSecrets: []
#nameOverride: ""
#fullnameOverride: ""

service:
  type: ClusterIP
  port: 58334

ingress:
  enabled: false
  host: ""
  annotations:
  # kubernetes.io/ingress.class: nginx
  # nginx.ingress.kubernetes.io/ssl-redirect: "false"
  # kubernetes.io/tls-acme: "true"

  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local
labels: {}

billing:
  mongo:
    host: ${mongo_service_name}
    port: ${mongo_port}
    username: ${mongo_user}
    db_name: ${mongo_db_name}
  keycloak:
    auth_server_url: https://${ssn_k8s_alb_dns_name}/auth
    redirect_uri: https://${ssn_k8s_alb_dns_name}/
    realm_name: ${keycloak_realm_name}
    client_id: ${keycloak_client_id}
  service_base_name: ${service_base_name}
  big_query_dataset: ${big_query_dataset}