Envoy · Schema

Envoy Bootstrap Configuration

The bootstrap configuration for an Envoy proxy instance, defining the static and dynamic resources, admin interface, and runtime settings needed to start the proxy.

Cloud NativeLoad BalancingProxyService Mesh

Properties

Name Type Description
node object Node identity to present to the management server and for instance identification.
static_resources object Statically specified resources including listeners, clusters, and secrets.
dynamic_resources object xDS configuration sources for dynamic resources.
admin object Configuration for the local administration HTTP server.
stats_config object Configuration for internal processing of statistics.
stats_sinks array Optional set of statistics sinks.
stats_flush_interval string Duration between stats sink flushes (e.g., '5s').
tracing object Configuration for an external tracing provider.
overload_manager object Configuration for the overload manager.
layered_runtime object Configuration for the runtime configuration provider.
View JSON Schema on GitHub

JSON Schema

envoy-bootstrap.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.envoyproxy.io/schemas/bootstrap",
  "title": "Envoy Bootstrap Configuration",
  "description": "The bootstrap configuration for an Envoy proxy instance, defining the static and dynamic resources, admin interface, and runtime settings needed to start the proxy.",
  "type": "object",
  "properties": {
    "node": {
      "type": "object",
      "description": "Node identity to present to the management server and for instance identification.",
      "properties": {
        "id": {
          "type": "string",
          "description": "An opaque node identifier for the Envoy node."
        },
        "cluster": {
          "type": "string",
          "description": "The cluster that the Envoy node belongs to."
        },
        "metadata": {
          "type": "object",
          "description": "Opaque metadata extending the node identifier.",
          "additionalProperties": true
        },
        "locality": {
          "$ref": "#/$defs/Locality"
        },
        "user_agent_name": {
          "type": "string",
          "description": "Free-form string that identifies the entity requesting config."
        },
        "extensions": {
          "type": "array",
          "description": "List of extensions and their versions supported by the node.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "category": {
                "type": "string"
              },
              "version": {
                "type": "object"
              }
            }
          }
        }
      }
    },
    "static_resources": {
      "type": "object",
      "description": "Statically specified resources including listeners, clusters, and secrets.",
      "properties": {
        "listeners": {
          "type": "array",
          "description": "Statically configured listeners.",
          "items": {
            "$ref": "#/$defs/Listener"
          }
        },
        "clusters": {
          "type": "array",
          "description": "Statically configured upstream clusters.",
          "items": {
            "$ref": "#/$defs/Cluster"
          }
        },
        "secrets": {
          "type": "array",
          "description": "Statically configured secrets.",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "dynamic_resources": {
      "type": "object",
      "description": "xDS configuration sources for dynamic resources.",
      "properties": {
        "lds_config": {
          "$ref": "#/$defs/ConfigSource",
          "description": "Listener Discovery Service (LDS) configuration source."
        },
        "cds_config": {
          "$ref": "#/$defs/ConfigSource",
          "description": "Cluster Discovery Service (CDS) configuration source."
        },
        "ads_config": {
          "$ref": "#/$defs/ApiConfigSource",
          "description": "Aggregated Discovery Service (ADS) configuration."
        }
      }
    },
    "admin": {
      "type": "object",
      "description": "Configuration for the local administration HTTP server.",
      "properties": {
        "access_log_path": {
          "type": "string",
          "description": "Path to the admin access log file."
        },
        "access_log": {
          "type": "array",
          "description": "Configuration for admin access logging.",
          "items": {
            "type": "object"
          }
        },
        "profile_path": {
          "type": "string",
          "description": "Path to save profiling data."
        },
        "address": {
          "$ref": "#/$defs/Address",
          "description": "The address the admin server listens on."
        }
      }
    },
    "stats_config": {
      "type": "object",
      "description": "Configuration for internal processing of statistics.",
      "properties": {
        "stats_tags": {
          "type": "array",
          "description": "Tags to add to all statistics.",
          "items": {
            "type": "object",
            "properties": {
              "tag_name": {
                "type": "string"
              },
              "regex": {
                "type": "string"
              },
              "fixed_value": {
                "type": "string"
              }
            }
          }
        },
        "use_all_default_tags": {
          "type": "boolean",
          "description": "Use the default list of stat tags."
        },
        "stats_matcher": {
          "type": "object",
          "description": "Controls which stats are emitted.",
          "properties": {
            "reject_all": {
              "type": "boolean"
            },
            "exclusion_list": {
              "type": "object",
              "properties": {
                "patterns": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            },
            "inclusion_list": {
              "type": "object",
              "properties": {
                "patterns": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            }
          }
        }
      }
    },
    "stats_sinks": {
      "type": "array",
      "description": "Optional set of statistics sinks.",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "typed_config": {
            "type": "object"
          }
        }
      }
    },
    "stats_flush_interval": {
      "type": "string",
      "description": "Duration between stats sink flushes (e.g., '5s').",
      "pattern": "^[0-9]+(\\.[0-9]+)?s$"
    },
    "tracing": {
      "type": "object",
      "description": "Configuration for an external tracing provider.",
      "properties": {
        "http": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "typed_config": {
              "type": "object"
            }
          }
        }
      }
    },
    "overload_manager": {
      "type": "object",
      "description": "Configuration for the overload manager.",
      "properties": {
        "refresh_interval": {
          "type": "string"
        },
        "resource_monitors": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "typed_config": {
                "type": "object"
              }
            }
          }
        },
        "actions": {
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      }
    },
    "layered_runtime": {
      "type": "object",
      "description": "Configuration for the runtime configuration provider.",
      "properties": {
        "layers": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "static_layer": {
                "type": "object"
              },
              "disk_layer": {
                "type": "object",
                "properties": {
                  "symlink_root": {
                    "type": "string"
                  },
                  "subdirectory": {
                    "type": "string"
                  }
                }
              },
              "admin_layer": {
                "type": "object"
              },
              "rtds_layer": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "rtds_config": {
                    "$ref": "#/$defs/ConfigSource"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "$defs": {
    "Locality": {
      "type": "object",
      "description": "Identifies location of where the Envoy node is running.",
      "properties": {
        "region": {
          "type": "string",
          "description": "Region this zone belongs to."
        },
        "zone": {
          "type": "string",
          "description": "Availability zone identifier."
        },
        "sub_zone": {
          "type": "string",
          "description": "Sub-zone within the zone."
        }
      }
    },
    "Address": {
      "type": "object",
      "description": "Addresses specify either a logical or physical address and port.",
      "properties": {
        "socket_address": {
          "type": "object",
          "properties": {
            "protocol": {
              "type": "string",
              "enum": ["TCP", "UDP"],
              "default": "TCP"
            },
            "address": {
              "type": "string",
              "description": "The address to bind to (IP or hostname)."
            },
            "port_value": {
              "type": "integer",
              "description": "The port to bind to.",
              "minimum": 0,
              "maximum": 65535
            }
          },
          "required": ["address", "port_value"]
        },
        "pipe": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string",
              "description": "Unix domain socket path."
            },
            "mode": {
              "type": "integer",
              "description": "File mode for the socket."
            }
          }
        }
      }
    },
    "Listener": {
      "type": "object",
      "description": "An Envoy listener configuration.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Unique name for this listener."
        },
        "address": {
          "$ref": "#/$defs/Address",
          "description": "The address the listener listens on."
        },
        "filter_chains": {
          "type": "array",
          "description": "A list of filter chains to apply to connections.",
          "items": {
            "$ref": "#/$defs/FilterChain"
          }
        },
        "listener_filters": {
          "type": "array",
          "description": "Listener-level filters applied before filter chain matching.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "typed_config": {
                "type": "object"
              }
            }
          }
        },
        "per_connection_buffer_limit_bytes": {
          "type": "integer",
          "description": "Soft limit on size of the listener's new connection read and write buffers."
        },
        "traffic_direction": {
          "type": "string",
          "description": "Traffic direction for this listener.",
          "enum": ["UNSPECIFIED", "INBOUND", "OUTBOUND"]
        }
      },
      "required": ["name", "address", "filter_chains"]
    },
    "FilterChain": {
      "type": "object",
      "description": "A filter chain wraps a set of match criteria, an option TLS context, and a set of filters.",
      "properties": {
        "filter_chain_match": {
          "type": "object",
          "description": "Criteria for matching a connection to this filter chain.",
          "properties": {
            "destination_port": {
              "type": "integer"
            },
            "server_names": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "transport_protocol": {
              "type": "string"
            },
            "application_protocols": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        },
        "filters": {
          "type": "array",
          "description": "Network filters applied to the connection.",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "typed_config": {
                "type": "object"
              }
            },
            "required": ["name"]
          }
        },
        "transport_socket": {
          "type": "object",
          "description": "Transport socket configuration (e.g., TLS).",
          "properties": {
            "name": {
              "type": "string"
            },
            "typed_config": {
              "type": "object"
            }
          }
        }
      }
    },
    "Cluster": {
      "type": "object",
      "description": "An upstream cluster configuration.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the cluster."
        },
        "type": {
          "type": "string",
          "description": "Service discovery type.",
          "enum": ["STATIC", "STRICT_DNS", "LOGICAL_DNS", "EDS", "ORIGINAL_DST"]
        },
        "connect_timeout": {
          "type": "string",
          "description": "Connection timeout (e.g., '5s')."
        },
        "lb_policy": {
          "type": "string",
          "description": "Load balancing policy.",
          "enum": ["ROUND_ROBIN", "LEAST_REQUEST", "RING_HASH", "RANDOM", "MAGLEV", "CLUSTER_PROVIDED"]
        },
        "load_assignment": {
          "$ref": "#/$defs/ClusterLoadAssignment",
          "description": "Endpoint assignment for STATIC and EDS clusters."
        },
        "eds_cluster_config": {
          "type": "object",
          "description": "EDS configuration for this cluster.",
          "properties": {
            "eds_config": {
              "$ref": "#/$defs/ConfigSource"
            },
            "service_name": {
              "type": "string"
            }
          }
        },
        "health_checks": {
          "type": "array",
          "description": "Health checking configuration.",
          "items": {
            "$ref": "#/$defs/HealthCheck"
          }
        },
        "circuit_breakers": {
          "type": "object",
          "description": "Circuit breaking configuration.",
          "properties": {
            "thresholds": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "priority": {
                    "type": "string",
                    "enum": ["DEFAULT", "HIGH"]
                  },
                  "max_connections": {
                    "type": "integer"
                  },
                  "max_pending_requests": {
                    "type": "integer"
                  },
                  "max_requests": {
                    "type": "integer"
                  },
                  "max_retries": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "outlier_detection": {
          "type": "object",
          "description": "Outlier detection configuration for removing unhealthy hosts.",
          "properties": {
            "consecutive_5xx": {
              "type": "integer"
            },
            "interval": {
              "type": "string"
            },
            "base_ejection_time": {
              "type": "string"
            },
            "max_ejection_percent": {
              "type": "integer"
            }
          }
        },
        "transport_socket": {
          "type": "object",
          "description": "Transport socket configuration for upstream connections.",
          "properties": {
            "name": {
              "type": "string"
            },
            "typed_config": {
              "type": "object"
            }
          }
        },
        "dns_lookup_family": {
          "type": "string",
          "description": "DNS lookup family for STRICT_DNS and LOGICAL_DNS clusters.",
          "enum": ["AUTO", "V4_ONLY", "V6_ONLY", "V4_PREFERRED", "ALL"]
        }
      },
      "required": ["name", "type"]
    },
    "ClusterLoadAssignment": {
      "type": "object",
      "description": "Endpoint assignments for a cluster.",
      "properties": {
        "cluster_name": {
          "type": "string",
          "description": "Name of the cluster."
        },
        "endpoints": {
          "type": "array",
          "description": "List of locality-level endpoint groups.",
          "items": {
            "type": "object",
            "properties": {
              "locality": {
                "$ref": "#/$defs/Locality"
              },
              "lb_endpoints": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "endpoint": {
                      "type": "object",
                      "properties": {
                        "address": {
                          "$ref": "#/$defs/Address"
                        }
                      }
                    },
                    "health_status": {
                      "type": "string",
                      "enum": ["UNKNOWN", "HEALTHY", "UNHEALTHY", "DRAINING", "TIMEOUT", "DEGRADED"]
                    },
                    "load_balancing_weight": {
                      "type": "integer",
                      "minimum": 1
                    }
                  }
                }
              },
              "priority": {
                "type": "integer"
              }
            }
          }
        }
      }
    },
    "HealthCheck": {
      "type": "object",
      "description": "Health check configuration.",
      "properties": {
        "timeout": {
          "type": "string",
          "description": "The time to wait for a health check response."
        },
        "interval": {
          "type": "string",
          "description": "The interval between health checks."
        },
        "unhealthy_threshold": {
          "type": "integer",
          "description": "Number of unhealthy checks before a host is marked unhealthy."
        },
        "healthy_threshold": {
          "type": "integer",
          "description": "Number of healthy checks before a host is marked healthy."
        },
        "http_health_check": {
          "type": "object",
          "properties": {
            "host": {
              "type": "string"
            },
            "path": {
              "type": "string"
            },
            "expected_statuses": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "start": {
                    "type": "integer"
                  },
                  "end": {
                    "type": "integer"
                  }
                }
              }
            }
          }
        },
        "tcp_health_check": {
          "type": "object",
          "properties": {
            "send": {
              "type": "object"
            },
            "receive": {
              "type": "array",
              "items": {
                "type": "object"
              }
            }
          }
        },
        "grpc_health_check": {
          "type": "object",
          "properties": {
            "service_name": {
              "type": "string"
            }
          }
        }
      }
    },
    "ConfigSource": {
      "type": "object",
      "description": "Configuration source for xDS API.",
      "properties": {
        "path": {
          "type": "string",
          "description": "Path on the filesystem to source from."
        },
        "path_config_source": {
          "type": "object",
          "properties": {
            "path": {
              "type": "string"
            },
            "watched_directory": {
              "type": "object"
            }
          }
        },
        "api_config_source": {
          "$ref": "#/$defs/ApiConfigSource"
        },
        "ads": {
          "type": "object",
          "description": "Use ADS for this resource."
        },
        "resource_api_version": {
          "type": "string",
          "enum": ["AUTO", "V2", "V3"]
        }
      }
    },
    "ApiConfigSource": {
      "type": "object",
      "description": "API configuration source for xDS.",
      "properties": {
        "api_type": {
          "type": "string",
          "description": "API type (REST, gRPC, delta gRPC).",
          "enum": ["DEPRECATED_AND_UNAVAILABLE_DO_NOT_USE", "REST", "GRPC", "DELTA_GRPC", "AGGREGATED_GRPC", "AGGREGATED_DELTA_GRPC"]
        },
        "transport_api_version": {
          "type": "string",
          "enum": ["AUTO", "V2", "V3"]
        },
        "cluster_names": {
          "type": "array",
          "description": "Cluster names for REST API sources.",
          "items": {
            "type": "string"
          }
        },
        "grpc_services": {
          "type": "array",
          "description": "gRPC services for gRPC API sources.",
          "items": {
            "type": "object",
            "properties": {
              "envoy_grpc": {
                "type": "object",
                "properties": {
                  "cluster_name": {
                    "type": "string"
                  }
                }
              },
              "google_grpc": {
                "type": "object"
              },
              "timeout": {
                "type": "string"
              }
            }
          }
        },
        "refresh_delay": {
          "type": "string",
          "description": "Polling interval for REST APIs."
        },
        "set_node_on_first_message_only": {
          "type": "boolean"
        }
      }
    },
    "RouteConfiguration": {
      "type": "object",
      "description": "Route configuration for HTTP connection manager.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the route configuration."
        },
        "virtual_hosts": {
          "type": "array",
          "description": "List of virtual hosts that make up the route table.",
          "items": {
            "$ref": "#/$defs/VirtualHost"
          }
        },
        "internal_only_headers": {
          "type": "array",
          "description": "Headers that will be removed from external requests.",
          "items": {
            "type": "string"
          }
        },
        "response_headers_to_add": {
          "type": "array",
          "description": "Headers to add to responses.",
          "items": {
            "$ref": "#/$defs/HeaderValueOption"
          }
        },
        "response_headers_to_remove": {
          "type": "array",
          "description": "Headers to remove from responses.",
          "items": {
            "type": "string"
          }
        },
        "request_headers_to_add": {
          "type": "array",
          "description": "Headers to add to requests.",
          "items": {
            "$ref": "#/$defs/HeaderValueOption"
          }
        }
      },
      "required": ["name", "virtual_hosts"]
    },
    "VirtualHost": {
      "type": "object",
      "description": "A virtual host configuration.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Logical name of the virtual host."
        },
        "domains": {
          "type": "array",
          "description": "List of domains that will match this virtual host.",
          "items": {
            "type": "string"
          }
        },
        "routes": {
          "type": "array",
          "description": "List of routes that will be matched in order.",
          "items": {
            "$ref": "#/$defs/Route"
          }
        },
        "require_tls": {
          "type": "string",
          "enum": ["NONE", "EXTERNAL_ONLY", "ALL"]
        },
        "rate_limits": {
          "type": "array",
          "items": {
            "type": "object"
          }
        },
        "cors": {
          "type": "object",
          "description": "CORS policy for the virtual host."
        },
        "retry_policy": {
          "$ref": "#/$defs/RetryPolicy"
        }
      },
      "required": ["name", "domains", "routes"]
    },
    "Route": {
      "type": "object",
      "description": "A route entry.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the route."
        },
        "match": {
          "type": "object",
          "description": "Route matching parameters.",
          "properties": {
            "prefix": {
              "type": "string"
            },
            "path": {
              "type": "string"
            },
            "safe_regex": {
              "type": "object",
              "properties": {
                "google_re2": {
                  "type": "object"
                },
                "regex": {
                  "type": "string"
                }
              }
            },
            "headers": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "string_match": {
                    "type": "object"
                  }
                }
              }
            },
            "case_sensitive": {
              "type": "boolean"
            }
          }
        },
        "route": {
          "type": "object",
          "description": "Route action: forward to upstream cluster.",
          "properties": {
            "cluster": {
              "type": "string"
            },
            "weighted_clusters": {
              "type": "object",
              "properties": {
                "clusters": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "weight": {
                        "type": "integer"
                      }
                    }
                  }
                }
              }
            },
            "timeout": {
              "type": "string"
            },
            "retry_policy": {
              "$ref": "#/$defs/RetryPolicy"
            },
            "prefix_rewrite": {
              "type": "string"
            },
            "host_rewrite_literal": {
              "type": "string"
            }
          }
        },
        "redirect": {
          "type": "object",
          "description": "Route action: return redirect.",
          "properties": {
            "host_redirect": {
              "type": "string"
            },
            "path_redirect": {
              "type": "string"
            },
            "prefix_rewrite": {
              "type": "string"
            },
            "response_code": {
              "type": "integer"
            },
            "https_redirect": {
              "type": "boolean"
            }
          }
        },
        "direct_response": {
          "type": "object",
          "description": "Route action: return direct response.",
          "properties": {
            "status": {
              "type": "integer"
            },
            "body": {
              "type": "object",
              "properties": {
                "inline_string": {
                  "type": "string"
                },
                "filename": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "required": ["match"]
    },
    "RetryPolicy": {
      "type": "object",
      "description": "HTTP retry policy.",
      "properties": {
        "retry_on": {
          "type": "string",
          "description": "Conditions under which retry takes place (e.g., '5xx,connect-failure')."
        },
        "num_retries": {
          "type": "integer",
          "description": "Maximum number of retries."
        },
        "per_try_timeout": {
          "type": "string",
          "description": "Timeout per retry attempt."
        },
        "retry_back_off": {
          "type": "object",
          "properties": {
            "base_interval": {
              "type": "string"
            },
            "max_interval": {
              "type": "string"
            }
          }
        }
      }
    },
    "HeaderValueOption": {
      "type": "object",
      "description": "Header name/value pair plus option to control append behavior.",
      "properties": {
        "header": {
          "type": "object",
          "properties": {
            "key": {
              "type": "string"
            },
            "value": {
              "type": "string"
            }
          },
          "required": ["key", "value"]
        },
        "append": {
          "type": "boolean"
        }
      }
    }
  }
}