Configurable Settings - Server on Kubernetes



How to apply changes to the Kubernetes environment

Changes in the installation.yaml can be applied by running the install.sh script or the upgrade.sh script in a Kubernetes environment. Note that re-running the install.sh script will delete any database information that would have been stored previously.


Required fields in installation.yaml

Variable Name
Key Value
Explanation of the Variable and Key Values
server.host
String The server.host value needs to start with http:// or https://. The value can be an IP Address or a FQDN. This value needs to match the URL that Developers will use in a browser to access this server.
server.org_name
String Used as an identifier for the Organization using vFunction
server.admin.email
String Accepted characters include A-Z a-z 0-9 . _ % + - @
server.admin.name
String Used an an identifier for the logged in user in the vFunction Server UI
server.admin.password
String Used for the Admin as the password for first logging into the Server UI. The Admin can then change the password from the Server UI if desired. Minimum requirements: 8 characters, lower & uppercase letter, number and a special character ! @ # $ % ^ &
server.measurement.min_num_of_services
Integer The default value is 2. The Nodes in the Cluster may need to be adjusted to accomodate the two Measurements Pods Replicas created by default
server.measurement.max_num_of_services
Integer The default value is 10.
server.measurement.max_pod_memory_capacity
String Default value for the Maximum Memory used by each Measurements Pod is 16gb. The Nodes in the Cluster may need to be adjusted to accomodate the two Measurements Pods Replicas created by default. The Maximum Meory can be increased with guidance from the vFunction Support Team if needed
server.measurements.max_pod_cpu_capacity
String Default value for the Maximum CPU used by the Measurements Pods is 1. This value can be increased if needed
server.measurements.pod_ephemeral_storage
String Default value for the Ephemeral Storage used by the Measurements Pod(s) is 2500M. This value is used for temporary storage on the Pod
server.measurements.quality_of_service_class
String

The default value for the Quality of Service Class is Burstable. This is used for flexible resource usage where a Pod is created based on the CPU and Memory Requests and can burst up to the Limits if needed.

A second values is BestEffort where no CPU nor Memory Requests and Limits are provided. When allocating Nodes for Pods, this Pod will receive the lowest priority and will be evicted if other Pods need additional resources and the Node is throttled.

A third value is Guaranteed where a Pod's Request size for CPU and Memory are equal to its Limits size. This provides predictable performance and may be require for some Resource Management Tools like Karpenter.

server.tls.use_letsencrypt
String Default value is No. With the Value set to, "Yes", a Persistent Volume will be created to manage the SSL Certificate through Let's Encrypt to auto-renew the expired Certificate
server.nginx.force_http
String Default value is No. The force_http key can be used if the SSL certificate used in the environment is not going to be added to the vFunction Nginx Pod. With force_http set to Yes, TLS will be terminated on the route. And, the vFunction Nginx Pod will listen to http traffic on Port 80 even if https is used in the server.host field
server.nginx.ipv6_disabled
String Default value is No. When set to, "Yes", the ipv6_disabled key will disable the vFunction Nginx pod from listening to and from sending traffic to other Pods over IPv6. The default value is, "No" to allow the Nginx Pod to listen for IPv6 traffic
server.ingress.use_ingress
String

The default value is Yes. "Yes" is required if allowing the installation to create an Ingress, or if using a third-party Ingress.

Use value, "No" if no Ingress is planned at all in the environment.

server.ingress.external_ingress
String

Default value is No. "No" will create a vFunction Ingress based on the supported options Nginx, Istio, Kong, ALB or Traefik.

Changing the value to, "Yes" should be used to send traffic through a third-party Ingress. If using a third-party Ingress, also configure the third-party Ingress to send traffic from the External Ingress to the vfunction-nginx Pod

server.ingress.tls_termination
String

Default value is edge. "edge" will terminate TLS traffic on the Ingress Controller. The Ingress Controller should have its own SSL certificate that can terminate TLS, e.g. kubernetes.mycompany.com. Traffic will be sent from the ingress to the vfunction-nginx Pod on HTTP and the vfunction-nginx Pod will listen on Port 80.

With, "passthrough" set, the Kubernetes Cluster will ignore the TLS termination even if there is an Ingress Controller. Termination of TLS will be done on the vfunction-nginx Pod. A valid SSL certificate is needed in the tls.crt along with the Key in tls.key.

With, "reencrypt" set, the Kubernetes Cluster will terminate TLS termination on the Ingress Controller using one SSL certificate and key. The traffic will be reencrypted and will be decrypted again on the vfunction-nginx Pod. A valid SSL certificate is needed in the tls.crt along with the Key in tls.key for the vfunction-nginx Pod's decryption.

server.ingress.use_tls_certificate
String The default value is set to No. Setting , "Yes" will require the installation.yaml's tls.crt to be populated with the SSL Certificate and tls.key with the Key
server.ingress.ingress_type
String

Default value is set to nginx. Other supported Ingress Types which can be used as values include, "istio", "kong", "alb" and "traefik".

If using a separate third-party External Ingress, please contact the vFunction Support Team and provide the name of this product so we can work towards adding support. In the meantime, set ingress.external_ingress: Yes and set ingress.use_ingress: Yes. Then point the External Ingress to the vfunction-nginx Pod once the installation is complete.

server.ingress.nginx.controller_type
String

Default value is set to ingress-nginx. This is the Community Controller, e.g. "kubernetes/ingress-nginx"

Alternatively, the commerical Nginx Inc. controller value, "nginx-ingress-controller" can also be used manage this Ingress from the vFunction installation

server.ingress.nginx.class
String Default value is nginx. This key is only relevant if the tls.ingress_type: "nginx". If an organization uses a third-party Nginx Ingress but this Ingress uses a different class, such as "nginx-v2", this value can be modified. The organization can then manage this Ingress from the vFunction installation
server.ingress.kong.class
String Default value is kong. This key is only relevant if the server.tls.ingress_type: "kong"
server.ingress.alb.scheme
String Default value is set to internet-facing. "Internal" is another available option. This key is only relevant if the server.tls.ingress_type: "alb"
server.ingress.traefik.class
String Default value is traefik which refers to the IngressClass name. This key is only relevant if the server.tls.ingress_type: "traefik"
server.ingress.traefik.entrypoint_http
String Default value is web. This key is only relevant if the server.tls.ingress_type: "traefik"
server.ingress.traefik.entrypoint_https
String Default value is websecure. This key is only relevant if the server.tls.ingress_type: "traefik"
server.ingress.traefik.api_version
String Default value is set to traefik.io/v1alpha1 as the Traefik v3+ CRD API version for IngressRouteTCP is using passthrough mode. Alternatively, use, "traefik.containo.us/v1alpha1" for Traefik v2. This key is only relevant if the server.tls.ingress_type: "traefik"
server.ingress.istio.external_gateway
String Default value is No. This key is only relevant if the server.tls.ingress_type: "istio"
server.ingress.istio.gateway_namespace
String Default value is istio-system. This key is only relevant if the server.tls.ingress_type: "istio"
server.mysql.max_pod_memory_capacity
String Default value is 4gb. This value can be increased if needed
server.mysql.max_pod_cpu_capacity
String Default value is 1. This value can be increased if needed
server.mysql.pod_ephemeral_storage
String Default value is 1G. This is used for temporary storage on the MySQL Pod
server.mysql.quality_of_service_class
String

Default value is Burstable. This is used for flexible resource usage where a Pod is created based on the CPU and Memory Requests and can burst up to the Limits if needed.

A second values is, "BestEffort" where no CPU nor Memory Requests and Limits are provided. When allocating Nodes for Pods, this Pod will receive the lowest priority and will be evicted if other Pods need additional resources and the Node is throttled.

A third value is, "Guaranteed" where a Pod's Request size for CPU and Memory are equal to its Limits size. This provides predictable performance and may be require for some Resource Management Tools like Karpenter.

server.storage.mysql_persistent_volume_claim_access_mode
String Default value is ReadWriteOnce. Defines the way that the MySQL Pod connects to the MySQL Persistent Volume
server.storage.storage_persistent_volume_claim_access_mode
String Default value is ReadWriteOnce. Defines the way that the Storage Pod connects to the Storage Persistent Volume
server.storage.lets_encrypt_persistent_volume_claim_access_mode
String Default value is ReadWriteOnce. Defines the way that the Nginx Pod connects to the Lets Encrypt Persistent Volume. This setting is only relevant if tls.use_letsencrypt = "Yes"
server.storage.logs_pvc_claim_access_mode
String Default value is ReadWriteOnce. Defines the way that the Fluentd Pod connects to the Fluentd Volume. This setting is only relevant if logging.use_fluentd = "Yes"
server.logging.use_fluentd
String Default value is No. Setting, "Yes" allows for persistent logs to be written to a Fluentd Persistent Volume so that, if a Container crashes, the vFunction logging will remain available for troubleshooting purposes. This setting adds a Fluentd Pod and a Fluentd Persistent Volume to the Namespace. A Fluentd Container is added to each vFunction Pod in the Namespace.
server.distributed.otlp.min_num_of_services
Integer Default value is 1. This defines the minimum number of OTLP Pods in the environment. This Pod is used to receive Open Telemetry Protocol traces for Distributed Applications
server.distributed.otlp.max_num_of_services
Integer Default value is 10. This defines the maximum number of OTLP Pods in the environment
server.distributed.otlp.max_pod_memory_capacity
String Default value is 8G. This can be increased if needed
server.distributed.otlp.max_pod_cpu_capacity
String Default value is 1. This value can be increased if needed
server.distributed.otlp.pod_ephemeral_storage
String Default value is 1G. This value is used for the size of the temporary storage on the Pod
server.distributed.otlp.max_folder_size_in_mb
String Default value is 200. This value denotes the maximum storage per Distributed Application in MB. The Best Practice is to set this value at roughly twice what the OTLP Service is receiving and can handle per minute
server.distributed.otlp.quality_of_service_class
String

Default value is Burstable. This is used for flexible resource usage where a Pod is created based on the CPU and Memory Requests and can burst up to the Limits if needed.

A second values is, "BestEffort" where no CPU nor Memory Requests and Limits are provided. When allocating Nodes for Pods, this Pod will receive the lowest priority and will be evicted if other Pods need additional resources and the Node is throttled.

A third value is, "Guaranteed" where a Pod's Request size for CPU and Memory are equal to its Limits size. This provides predictable performance and may be require for some Resource Management Tools like Karpenter.

server.distributed.dm.min_num_of_services
Integer Default value is 1. This defines the minimum number of DM Pods in the environment. This Pod is used for Distributed Measurements to analyze local Service Maps received from the OTLP Pod during Learning to display the Architecture for a Distributed Architecture Application
server.distributed.dm.max_num_of_services
Integer Default value is 10. This defines the maximum number of DM Pods in the environment
server.distributed.dm.max_pod_memory_capacity
String Default value is 8G. This can be increased if needed
server.distributed.dm.max_pod_cpu_capacity
String Default value is 1. This can be increased if needed
server.distributed.dm.pod_ephemeral_storage
String Default value is 1G. This is used for the temporary storage size on the DM Pods
server.distributed.dm.quality_of_service_class
String

Default value is Burstable. This is used for flexible resource usage where a Pod is created based on the CPU and Memory Requests and can burst up to the Limits if needed.

A second values is, "BestEffort" where no CPU nor Memory Requests and Limits are provided. When allocating Nodes for Pods, this Pod will receive the lowest priority and will be evicted if other Pods need additional resources and the Node is throttled.

A third value is, "Guaranteed" where a Pod's Request size for CPU and Memory are equal to its Limits size. This provides predictable performance and may be require for some Resource Management Tools like Karpenter.

server.backup.mysql.restore_during_installation
String

Default value is No. This value indicates if the DB should be restored during installation from the latest kept backup with the same major version (if available on attached DB storage or S3 bucket)

server.resources.set_pod_resources
String Default value is Yes. With "Yes" set, the vFunction resource settings are used with the deployment to set minimum and maximum CPU and RAM levels. For environments that prefer / require Best Effort resource utilization rather than reserving resources, set the value to, "No" and the resources will scale until environmental limits are hit. With, "No" in place, all other installation.yaml settings for CPU and RAM are ignored
server.resources.set_pod_memory_capacity_resource
String Default value is Yes. With "Yes" set, the vFunction resource settings are used with the deployment to set minimum and maximum RAM levels. For environments that prefer / require Best Effort resource utilization rather than reserving resources, set the value to, "No" and the resources will scale until environmental limits are hit. With, "No" in place, all other installation.yaml settings for RAM are ignored
server.resources.default_pod_memory_capacity
String Default value is 1G. This setting sets the RAM Limit for all Pods besides the DM, OTLP, Measurements and MySQL Pods
server.resources.set_pod_cpu_capacity_resource
String Default value is Yes. With "Yes" set, the vFunction resource settings are used with the deployment to set minimum and maximum CPU levels. For environments that prefer / require Best Effort resource utilization rather than reserving resources, set the value to, "No" and the resources will scale until environmental limits are hit. With, "No" in place, all other installation.yaml settings for CPU are ignored
server.resources.default_pod_memory_capacity
String Default value is 1. This setting sets the CPU Limit for all Pods besides the DM, OTLP, Measurements and MySQL Pods
server.resources.set_pod_cpu_capacity_resource
String Default value is Yes. With "Yes" set, the vFunction resource settings are used with the deployment to set Pod Ephemeral Storage levels. For environments that prefer / require Best Effort resource utilization rather than reserving resources, set the value to, "No" and the Cluster defaults will be used. With, "No" in place, all other installation.yaml settings for CPU are ignored
server.resources.default_pod_memory_capacity
String Default value is 1. This setting sets the Pod Ephemeral Storage Limit for all Pods besides the DM, OTLP, Measurements and MySQL Pods
server.resources.quality_of_service_class
String Default value is Burstable. This setting sets the Pod Quality of Service Class for all Pods besides the DM, OTLP, Measurements and MySQL Pods
server.security.use_network_policies
String Default value is No. Setting value to, "Yes" implements ingress and egress rules within the cluster to limit how traffic flows between Services
server.security.use_rate_limiting
String Default value is No. Setting value to, "No" ensures that the vFunction Server will try to process every request that it receives. This creates a risk that excessive requests will slow down the Server or result in a Denial of Service attack. By setting, "Yes", an organization can also use server.security.proxy.requests_per_second to define how many of the same API the Server will answer per second before throwing an error
server.security.requests_per_second
String Default value is 10. This value is only relevant if security.use_rate_limiting: "Yes". This value defines how many of the same API the Server will answer per second before throwing an error

Sample installation.yaml with required fields

server:
  host: "http://my.domain.com"
  org_name: "MyCompany"
  admin:
    email: "admin@mycompany.com"
    name: "Admin"
    password: "Password1!"
  upgrade: "Never"
  offline: "Yes"
  custom_docker_registry: ""
  custom_image_pull_secret: ""

  measurements:
    min_number_of_services: "2"
    max_number_of_services: "10"
    max_pod_memory_capacity: "16G"
    max_pod_cpu_capacity: "1"
    pod_ephemeral_storage: "2500M"
    quality_of_service_class: "Burstable"
    S3:
      bucket: ""
      key: ""
      secret: ""
      region: ""

  authentication:
    authority: ""
    client_id: ""
    client_secret: ""
    jwks_url: ""
    issuer: ""
    ca_root_crt: |
      -----BEGIN CERTIFICATE-----
      ...
      -----END CERTIFICATE-----      

  tls:
    use_letsencrypt: "No"
    crt: |
      -----BEGIN CERTIFICATE-----
      ...
      -----END CERTIFICATE-----      
    key: |
      -----BEGIN PRIVATE KEY-----
      ...
      -----END PRIVATE KEY-----      

  nginx:
    force_http: "No"
    ipv6_disabled: "No"
    service_type: ""

  ingress:
    use_ingress: "Yes"
    external_ingress: "No"
    tls_termination: "edge"
    use_tls_certificate: "No"
    additional_hosts: ""
    ingress_type: "nginx"
    nginx:
      controller_type: "ingress-nginx"
      class: "nginx"
      additional_annotations:
    kong:
      class: "kong"
      additional_annotations:
    alb:
      scheme: "internet-facing"
      certificate_arn: ""
      additional_annotations:
    traefik:
      class: "traefik"
      entrypoint_http: "web"
      entrypoint_https: "websecure"
      api_version: "traefik.io/v1alpha1"
      additional_annotations:
    istio:
      gateway:
        controller: ""
        external_gateway: "No"
        external_gateway_name: ""
        external_gateway_namespace: "istio-system"
        external_secret_name: ""

  mysql:
    external_mysql_ip: ""
    external_mysql_user: ""
    external_mysql_password: ""
    max_pod_memory_capacity: "4G"
    max_pod_cpu_capacity: "1"
    pod_ephemeral_storage: "1G"
    quality_of_service_class: "Burstable"

  storage:
    storage_class: ""
    mysql_persistent_volume: ""
    mysql_persistent_volume_claim: ""
    mysql_persistent_volume_claim_access_mode: "ReadWriteOnce"
    storage_persistent_volume: ""
    storage_persistent_volume_claim: ""
    storage_persistent_volume_claim_access_mode: "ReadWriteOnce"
    lets_encrypt_persistent_volume: ""
    lets_encrypt_persistent_volume_claim: ""
    lets_encrypt_persistent_volume_claim_access_mode: "ReadWriteOnce"
    logs_persistent_volume: ""
    logs_persistent_volume_claim: ""
    logs_pvc_access_mode: "ReadWriteOnce"

  logging:
    use_fluentd: "No"

  distributed:
    otlp:
      min_number_of_services: "1"
      max_number_of_services: "10"
      max_pod_memory_capacity: "8G"
      max_pod_cpu_capacity: "1"
      pod_ephemeral_storage: "1G"
      max_folder_size_in_mb: "200"
      quality_of_service_class: "Burstable"
    dm:
      min_number_of_services: "1"
      max_number_of_services: "10"
      max_pod_memory_capacity: "8G"
      max_pod_cpu_capacity: "1"
      pod_ephemeral_storage: "1G"
      quality_of_service_class: "Burstable"

  backup:
    mysql:
      restore_during_installation: "No"
      S3:
        bucket: ""
        key: ""
        secret: ""
        region: ""

  affinity:
    node_affinity:
    node_selectors:
    additional_labels:
    additional_annotations:

  resources:
    set_pod_resources: "Yes"
    set_pod_memory_capacity_resource: "Yes"
    default_pod_memory_capacity: "1G"
    set_pod_cpu_capacity_resource: "Yes"
    default_pod_cpu_capacity: "1"
    set_pod_ephemeral_storage_resource: "Yes"
    default_pod_ephemeral_storage: "1G"
    quality_of_service_class: "Burstable"

  security:
    image_pull_policy: ""
    use_network_policies: "No"
    proxy:
      http_proxy: ""
      https_proxy: ""
      additional_no_proxy: ""
    use_rate_limiting: "No"
    requests_per_second: "10"

Optional fields in installation.yaml


offline.custom_docker_registry
Installation.yaml Configuration
Details
offline:
   custom_docker_registry: private.registry.ecr.us-east-1.amazonaws.com/vfunction
  • Used with the Offline Kubernetes Installation when the Container Images cannot be downloaded from Docker Hub and must be downloaded from a Private Docker Registry instead
  • Instead of manually populating this value in the installation.yaml, this value should be populated as a Prerequisite to the installation while running the offline/init.sh script

offline.custom_image_pull_secret
Installation.yaml Configuration
Details
server:
   custom_image_pull_secret: imagePullSecretValue
  • Used with the Offline Kubernetes Installation when the Container Images cannot be downloaded from Docker Hub and must be downloaded from a Private Docker Registry instead
  • The Image Pull Secret allows for the Private Docker Registry to be accessed to pull the Container Images for the Kubernetes installation
  • Instead of manually populating this value in the installation.yaml, this value should be populated as a Prerequisite to the installation while running the offline/init.sh script

server.affinity.node_affinity
Installation.yaml Configuration
Details
affinity:
   node_affinity:
      - key: "node-type"
         operator: "In"
         values: "cpu-optimized"
         services: "vfapi-measurements"
  • The node_affinity Key should be used to specify which nodes a pod should prefer based on the labels assigned to nodes by using logical operators
  • The node_affinity Key should be used when more granular control over pod placement is required when compared with the simpler node_selector workflow
  • The node_affinity Key will apply to all Services unless specified
  • Available Services are:
    • mysql
    • nginx
    • storage
    • vfapi-parser
    • vfapi-users
    • vfapi-organizations
    • vfapi-idp
    • vfapi-measurements
    • vfapi-otlp
    • vfapi-dm

server.affinity.node_selectors
Installation.yaml Configuration
Details
affinity:
   node_selectors:
      - key: "cpu"
         value: "high"
         services: "mysql"
      - key: "memory"
         ;value: "high"
         services: "vfapi-measurements,vfapi-dm,vfapi-otlp"
  • The node_selector Key allows users to reserve vFunction Services to specific Nodes in the Cluster based on defined Keys and Values
  • Common Use Cases would be to:
    • Reserve the mysql, vfapi-measurements and vfapi-dm Services to Nodes that allow Persistent Volumes to be attached
    • Reserve the mysql, vfapi-measurements and vfapi-dm Services to Nodes with higher CPU allocations
    • Reserve the vfapi-measurements and vfapi-dm Services to Nodes with higher Memory allocations
  • Available Services are:
    • mysql
    • nginx
    • storage
    • vfapi-parser
    • vfapi-users
    • vfapi-organizations
    • vfapi-idp
    • vfapi-measurements
    • vfapi-otlp
    • vfapi-dm

server.affinity.additional_labels
Installation.yaml Configuration
Details
affinity:
   additional_labels:
      - key: "memory"
        value: "high"
        services: "vfapi-measurements,vfapi-dm,vfapi-otlp"
  • The additional_labels Key allows organizations to add specific Labels to certain Pods
  • If no explicit Service is named, the Label will be applied to all Services
  • Available Services are:
    • mysql
    • nginx
    • storage
    • vfapi-parser
    • vfapi-users
    • vfapi-organizations
    • vfapi-idp
    • vfapi-measurements
    • vfapi-otlp
    • vfapi-dm

server.affinity.additional_annotations
Installation.yaml Configuration
Details
affinity:
   additional_annotations:
      - key: "owner"
        value: "peter@myorg.com"
        services: ""
  • The additional_annotations Key allows organizations to add specific Annotations to certain Pods
  • If no explicit Service is named, the Annotation will be applied to all Services
  • Available Services are:
    • mysql
    • nginx
    • storage
    • vfapi-parser
    • vfapi-users
    • vfapi-organizations
    • vfapi-idp
    • vfapi-measurements
    • vfapi-otlp
    • vfapi-dm

server.authentication
Installation.yaml Configuration
Details
authentication:
   authority: "https://accounts.google.com"
   client_id: "clientID-xyz"
   client_secret: "clientSecret-xyz"
   jwks_url: "https://www.googleapis.com/oauth2/v3/certs"
   issuer: "https://accounts.google.com"
   ca_root_crt: |
      -----BEGIN CERTIFICATE-----
      ...
      -----END CERTIFICATE-----
  • By default, a vFunction Server allows users to authenticate with a built-in OAuth username and password workflow
  • The authentication subkey is used to change the authentication workflow from this built-in OAuth username and password to integrate with an OpenID Connect identity provider

server.backup
Installation.yaml Configuration
Details
backup:
   mysql:
      S3:
         bucket: "awsBucket"
         key: "awsKey"
         secret:"awsSecret"
         region: "awsRegion"
  • The MySQL DB Persistent Volume can be backed up to an AWS S3 bucket if desired

server.ingress.additional_hosts
Installation.yaml Configuration
Details
   ingress:
      additional_hosts: ""

vFunction supports using additional hostnames to manage the flow of traffic to the vFunction Server


server.ingress.alb.additional_annotations
Installation.yaml Configuration
Details
   ingress:
      alb:
         additional annotations:
            - key: "alb.ingress.kubernetes.io/xxx"             value: "true"

vFunction supports annotations for ALB Ingress Controllers


server.ingress.nginx.additional_annotations
Installation.yaml Configuration
Details
   ingress:
      nginx:
         additional annotations:
            - key: "nginx.ingress.kubernetes.io/xxx"             value: "true"

vFunction support annotations for ingress-nginx and for nginx-ingress-controller Nginx Ingress Controllers

Default annotations for nginx-ingress Controller Type:

  • nginx.ingress.kubernetes.io/proxy-body-size: "250m"
  • nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
  • nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
  • nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
  • nginx.ingress.kubernetes.io/rewrite-target: /

Default annotations for nginx-ingress-controller Controller Type:

  • nginx.org/client-max-body-size: "250m"
  • nginx.org/proxy-connect-timeout: "600s"
  • nginx.org/proxy-read-timeout: "600s"
  • nginx.org/proxy-send-timeout: "600s"


server.mysql.external_mysql_*
Installation.yaml Configuration
Details
mysql:
   external_mysql_ip: "ipAddress"
   external_mysql_user: "username"
   external_mysql_password: "password"
  • Used if the MySQL database is hosted outside the vFunction Kubernetes Namespace

server.nginx
Installation.yaml Configuration
Details
nginx:
   service_type: ""
  • By default, the nginx.service_type is set to the value, "LoadBalancer" when ingress.use_ingress is set to, "No". If ingress.use_ingress is set to, "Yes", the nginx.service_type is set to, "ClusterIP".

security.proxy

Installation.yaml Configuration
Details
security:
   proxy:
      http_proxy:
      https_proxy:
      additional_no_proxy:
By default, "no_proxy" entries are automatically added to the ConfigMaps for each Pod for routing to localhost,127.0.0.1,vfunction-mysql,vfunction-storage,vfunction-vfapi-idp,vfunction-vfapi-measurements,vfunction-vfapi-measurements,vfunction-vfapi-organizations,vfunction-vfapi-parser,vfunction-vfapi-users,vfunction-nginx. If additional no_proxy entries are needed or to route external traffic through a proxy via http_proxy or https_proxy, add these entries here. These proxy entries may be necessary if the environment has been configured to use a third-party OpenID Identity Provider for authentication, e.g. login.microsoftonline.com.

server.smtp
Installation.yaml Configuration
Details
smtp:
   user: notifications@mycompany.com
   password: my$uperS3cr3t
   identity:
   url: smtp://smtp.gmail.com:587
  • The vFunction Server can send notifications about upgrades, about Architectural Observability Events and about user onboarding

server.storage
Installation.yaml Configuration
Details
storage:
   storage_class: notDefault
   mysql_persistent_volume:
   mysql_persistent_volume_claim:
   storage_persistent_volume:
   storage_persistent_volume_claim:
   lets_encrypt_persistent_volume:
   lets_encrypt_persistent_volume_claim:
  • The storage.storage_class is set as "default" by default. This is the storageClass used to create the PersistentVolumeClaims for the Persistent Volumes. This value can be changed to an alternate string for the creation of the PersistentVolumeClaims.

  • The storage.mysql_persistent_volume is, by default, dynamically created. It may be preferable to manually create this Persistent Volume. If the Persistent Volume is manually created, use this field for the metadata.name of the Persistent Volume.

  • The storage.mysql_persistent_volume_claim is vfunction-mysql-pvc. If using a custom MySQL PVC to create the Persistent Volume, add that name here.

  • The storage.storage_persistent_volume is, by default, dynamically created. It may be preferable to manually create this Persistent Volume. If the Persistent Volume is manually created, use this field for the metadata.name of the Persistent Volume.

  • The storage.storage_persistent_volume_claim is vfunction-storage-pvc. If using a custom MySQL PVC to create the Persistent Volume, add that name here.


server.tls
Installation.yaml Configuration
Details
tls:
   crt: |
      -----BEGIN CERTIFICATE-----
      ...
      -----END CERTIFICATE-----
   key: |
      -----BEGIN PRIVATE KEY-----
      ...
      -----END PRIVATE KEY-----
  • The crt field can be used to place the SSL Certificate and Chain as a Bundle for Nginx. If TLS will be terminated on the route, the nginx.force_http field can be used to have traffic sent over HTTPS to the Ingress and over HTTP from the Ingress to the vFunction Nginx Pod

  • The key field can be used for the Private Key for the SSL Certificate.