GlobalConfig CRD

EnRoute Technical Reference

GlobalConfig CRD

GlobalConfig provides a mechanism to provide configuration global to the system. Such configuration may include configuring the rate-limit engine in EnRoute, configuring mesh integration options (like options for linkerd and istio), configuring a devportal for EnRoute

Here is an example GlobalConfig for the EnRoute devportal

---
apiVersion: enroute.saaras.io/v1
kind: GlobalConfig
metadata:
  name: devportal-config
  namespace: portal
spec:
  name: devportal-config
  type: globalconfig_devportal
  config: |
    {
      "service_docs" : [
        {"service" : "namespace2.httpbin", "doc_url" : "https://httpbin.org/spec.json" },
        {"service" : "namespace2.petstore","doc_url" : "https://petstore.swagger.io/v2/swagger.json" },
        {"service" : "namespace2.k8s-1-dot-24-api","doc_url" : "https://raw.githubusercontent.com/kubernetes/kubernetes/release-1.24/api/openapi-spec/swagger.json" }
                       ]
    }

Similarly a GlobalConfig to enable/disable mesh integration (like Linkerd and istio) and specify global TLS options can be specified like this -

---
apiVersion: enroute.saaras.io/v1
kind: GlobalConfig
metadata:
  labels:
    app: web
  name: enable-linkerd
  namespace: default
spec:
  name: linkerd-global-config
  type: globalconfig_globals
  config: |
        {
          "linkerd_enabled": true,
          "linkerd_header_disabled": false,
          "linkerd_servicemode_disabled": false,
          "istio_enabled": false,
          "tlsContext" : { "alpnProtos" : ["http/1.1"] }
        }

GlobalConfig to Envoy configuration

GlobalConfig configuration influences multiple parts of Envoy config

Complete GlobalConfig CRD Spec

A complete description of the GlobalConfig CRD spec is located in github