Creating an extra values file in a Kubernetes environment

Describes the steps for creating an extra values file for configuration parameters that are not set by Install Assist, such as ingress annotations and resource limits. An example .yaml file is provided with entries for each subsystem.

Before you begin

Note: This article refers to third-party software that IBM does not control. As such, the software may change and this information may become outdated.

These instructions assume you have a working Kubernetes environment and understand how to manage Kubernetes.

Kubernetes is a platform for automated deployment, scaling, and operation of application containers across clusters of hosts, providing container-centric infrastructure. For more information, see https://kubernetes.io.

About this task

The APICUP installer exposes the most important parameters for configuring a subsystem using the subsys set commands. The extra values file is a .yaml file used to set additional configuration parameters contained in the Helm chart, further to those parameters that are set using APICUP. The .yaml format is required. One extra values file per subsystem is allowed. The sample file is named, for example, myExtraValues.yaml.
Syntax:
apicup subsys set <subsystem_name> extra-values-file <name_of_extra_values_file>

The <name_of_extra_values_file> parameter can include a directory path.

Example for mgmt subystem:
apicup subsys set mgmt extra-values-file myExtraValues.yaml

Procedure

  • Logging level - If you want reduced logging for the apim, lur, and ldap pods, set a DEBUG environment variable using the extra-values file. The value for modes must match the mode you are using (demo or standard). In the following example, modes is set to standard:
    apim:
      modes:
        standard:
          env:
            DEBUG: "audit,bhendi:error,bhendi:probe,bhendi:flags,apim:server,apim:error"
    lur:
      modes:
        standard:
          env:
            DEBUG: "audit,bhendi:error,bhendi:probe,bhendi:flags,lur:server,lur:error"
    ldap:
      modes:
        standard:
          env:
            DEBUG: "audit,bhendi:error,bhendi:probe,bhendi:flags,ldap:server,ldap:error"
  • Optimize subsystem sync time - You can use the extra-values file to set the pagination limit for records that are fetched by a database query. Add the flag VELOX_CASSANDRA_LIMIT to the extra-values file. The recommended value is 500. Use this setting to reduce the time needed to sync subsystems. This setting is available in Version 2018.4.1.6.iFix3, and in Version 2018.4.1.7 or later.

    For example:

    apim:
      modes:
        standard:
          env:
            VELOX_CASSANDRA_LIMIT: "500"
    lur:
      modes:
        standard:
          env:
             VELOX_CASSANDRA_LIMIT: "500"
  • Management subsystem - The following example contains entries for the extra values file to set Kubernetes ingress annotations and resource limits for the Management subsystem. By default, the APICUP installer does not specify limits for most resources. If you are using quota enforcement when sharing Kubernetes cluster resources, resource limits may be required. Adjust the values given in this example to support your resource constraints, quotas, and expected load/capacity requirements:
    Note: Setting of resource requests and limits on OpenShift is not supported for the API Connect Analytics subsystem.
    global:
      ingress:
        # cloud-admin-ui endpoint
        cm:
          annotations:
            kubernetes.io/ingress.class: "nginx"
        # api-manager-ui endpoint
        apim:
          annotations:
            kubernetes.io/ingress.class: "nginx"
        # platform-api endpoint
        platformAPI:
          annotations:
            kubernetes.io/ingress.class: "nginx"
        # consumer-api endpoint
        consumerAPI:
          annotations:
            kubernetes.io/ingress.class: "nginx"
    
    analytics-proxy:
      resources:
        limits:
          cpu: 100m
          memory: 128Mi
    
    apim:
      resources:
        limits:
          cpu: 1000m
          memory: 2Gi
    
    cassandra:
      resources:
        limits:
          cpu: 2100m
          memory: 9Gi
    
    client-downloads-server:
      resources:
        requests:
          cpu: 10m
        limits:
          cpu: 100m
          memory: 32Mi
    
    juhu:
      resources:
        limits:
          cpu: 200m
          memory: 512Mi
    
    ldap:
      resources:
        limits:
          cpu: 100m
          memory: 256Mi
    lur:
      resources:
        limits:
          cpu: 200m
          memory: 256Mi
    
    ui:
      resources:
        limits:
          cpu: 200m
          memory: 64Mi
    
  • Gateway subsystem - Refer to the following example that contains entries for the extra values file for setting Kubernetes ingress annotations, the license version (applies to v2018.4.1.4 - v2018.4.1.6 only), and an optional customDatapowerConfig setting to point to the ConfigMap for baked-in policies for the Gateway subsystem.
    Note: The licenseVersion setting shown in the datapower section applies to versions v2018.4.1.4 - v2018.4.1.6 only. For v2018.4.1.7 and later versions, the license version is set using APICUP when installing the Gateway subsystem . Delete the license version setting from the extra-values-file when upgrading to v2018.4.1.7 and configure the license version using APICUP.
    ingress:
      # api-gateway endpoint
      gateway:
        annotations:
          kubernetes.io/ingress.class: "nginx"
      # apic-gw-service endpoint
      gwd:
        annotations:
          kubernetes.io/ingress.class: "nginx"
    
    datapower:
      licenseVersion: "version - Note: Remove this setting if using v2018.4.7 or later"
      customDatapowerConfig: "custom-dp-config"
  • Portal subsystem - The following example is an extra values file that sets Kubernetes ingress annotations for the Portal subsystem and shows an example for defining multiple Portal endpoints:
    global:
      ingress:
        # portal director endpoint. used for apim -> portal comms
        portal:
          annotations:
            kubernetes.io/ingress.class: "nginx"
        # portal web site endpoint. used to access the portal web site(s)
        web:
          annotations:
            kubernetes.io/ingress.class: "nginx"
    
    apic-portal-www:
      ingress:
        web:
          hosts:
          - name: banking.example.com
            secret: banking-tls
          - name: insurance.example.com
            secret: insurance-tls
  • Analytics subsystem - The following example is an extra values file that sets Kubernetes ingress annotations for the Analytics subsystem:
    global:
      ingress:
        client:
          annotations:
            kubernetes.io/ingress.class: "nginx"
        ingestion:
          annotations:
            kubernetes.io/ingress.class: "nginx"