Configuring CHF Proxy

After initial deployment of CHF Proxy, you can customize the configuration.

You can configure CHF Proxy using YAML code that is typically supplied in the Helm values file. To display a Helm values file, run a command like in the following example:
helm show values matrixx/chf-proxy --version version_number
To render Helm chart templates locally and display the output, run a command like in the following example:
helm template my-release matrixx/chf-proxy --version version_number -n matrixx
The following subsections describe application-specific configuration properties for CHF Proxy. This is an example configuration:
matrixx-app:
  # Name of the application.
  applicationName: "chf-proxy"

  namespaceOverride: "matrixx"

  # -- Same as nameOverride but for the partOf.
  partOfOverride: "MATRIXX"

  version: ${version}

  globalRegistry: "localhost:32000"

  ##########################################################
  # Deployment
  ##########################################################
  deployment:
    enabled: true

    # Volumes to be added to the pod
    volumes:
      chf-proxy-config:
        configMap:
          name: chf-proxy-config

    containers:
      chf-proxy:
        image:
          repository: chf-proxy
          tag: ${project.version}
          pullPolicy: IfNotPresent
        env:
          VERTX_CONFIG_PATH:
            value: "/opt/mtx/conf/chf-proxy.yaml"
          OTEL_SDK_DISABLED:
            value: "true"
        ports:
          8080:
            name: http
            protocol: TCP

        readinessProbe:
          httpGet:
            path: /ready
            port: http

        livenessProbe:
          httpGet:
            path: /health
            port: http

        resources:
          limits:
            cpu: 4
          requests:
            cpu: 250m

        terminationMessagePolicy: FallbackToLogsOnError

    # Role Based Access Control
    rbac:
      enabled: true

      # Service Account to use by pods
      serviceAccount:
        enabled: true
        name: "chf-proxy"

        # Additional Labels on service account
        additionalLabels: { }

        # Annotations on service account
        annotations: { }
        # key: value

      # Create Roles (Namespaced)
      roles:
        basic:
          rules:
            - apiGroups:
                - ""
              resources:
                - pods
              verbs:
                - list
                - get
                - watch


  ##########################################################
  # Service object for servicing pods
  ##########################################################
  service:
    enabled: true
    ports:
      80:
        name: http
        protocol: TCP
        targetPort: http
    type: ClusterIP
    #type: LoadBalancer
    #loadBalancerIP: 192.168.0.1

  ##########################################################
  # Ingress object for exposing services
  ##########################################################
  ingress:
    enabled: false

    # Name of the ingress class
    ingressClassName: ''

    # Port of the service that serves pods
    servicePort: http

    #Set pathType: default is ImplementationSpecific; Options: Exact, Prefix
    pathType: ImplementationSpecific

    # Map of host addresses to be exposed by this Ingress
    hosts:
      chf-chart-example.local:
        paths:
          chf-proxy:
            path: /
            serviceName: chf-proxy
            pathType: ImplementationSpecific
            servicePort: 80

    # Additional labels for this Ingress
    additionalLabels: { }

    # Add annotations to this Ingress
    annotations: { }
    # kubernetes.io/ingress.class: external-ingress
    # ingress.kubernetes.io/rewrite-target: /
    # ingress.kubernetes.io/force-ssl-redirect: true

    # TLS details for this Ingress
    tls: []

  ##########################################################
  # Additional ConfigMaps
  ##########################################################
  configMap:
    enabled: false
    annotations: { }

  ##########################################################
  # autoscaling is used for horizonal pod autoscaling
  ##########################################################
  autoscaling:
    # enabled is a boolean flag for enabling or disabling autoscaling
    enabled: false
    minReplicas: 1
    # maxReplicas sets the maximum number of replicas
    maxReplicas: 100
    # metrics is the list of metrics used for hpa
    metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 80
      - type: Resource
        resource:
          name: memory
          target:
            type: Utilization
            averageUtilization: 80

  ##########################################################
  # Service Monitor to collect Prometheus metrices
  ##########################################################
  serviceMonitor:
    enabled: false
    # Additional labels
    additionalLabels: { }
    # Additional annotations
    annotations: { }
    # List of the endpoints of service from which prometheus will scrape data
    endpoints:
      - port: http
        interval: 10s
        honorLabels: true
        path: /metrics
        relabelings:
          - sourceLabels: [ __meta_kubernetes_pod_node_name ]
            targetLabel: node_name
          - sourceLabels: [ __meta_kubernetes_pod_host_ip ]
            targetLabel: node_ip