For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.
AgentgatewayParameters
Use AgentgatewayParameters to configure the agentgateway data plane.
Explore the configuration reference by clicking on a property name or expanding the property types. Use the in-field search bar to search for a property. The reference is also available as a table.provision the agentgateway data plane. Labels and annotations that apply to
all resources may be specified at a higher level; see
https://gateway-api.sigs.k8s.io/reference/spec/#gatewayinfrastructure
- apiVersionstring
- kindstring
- metadataobject
- *spec
- deployment
- metadata
- annotationsobject
- labelsobject
- specobject
- env
- *namestring
- valuestring
- valueFrom
- configMapKeyRef
- *keystring
- namestring
- optionalboolean
- fieldRef
- apiVersionstring
- *fieldPathstring
- fileKeyRef
- *keystring
- optionalboolean
- *pathstring
- *volumeNamestring
- resourceFieldRef
- containerNamestring
- divisor
- *resourcestring
- secretKeyRef
- *keystring
- namestring
- optionalboolean
- horizontalPodAutoscaler
- metadata
- annotationsobject
- labelsobject
- specobject
- image
- digeststring
- pullPolicystring
- registrystring
- repositorystring
- tagstring
- istio
- additionalTrustDomainsstring[]
- caAddressstring
- trustDomainstring
- logging
- formatstring
- levelstring
- podDisruptionBudget
- metadata
- annotationsobject
- labelsobject
- specobject
- rawConfigobject
- resources
- claims
- *namestring
- requeststring
- limitsobject
- requestsobject
- service
- metadata
- annotationsobject
- labelsobject
- specobject
- serviceAccount
- metadata
- annotationsobject
- labelsobject
- specobject
- shutdown
- *maxinteger
- *mininteger
- statusobject
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
deployment allows specifying overrides for the generatedDeployment resource.Documentation References (2)
metadata defines a subset of object metadata to be customized.labels and annotations are merged with existing values. If bothGatewayClass and Gateway parameters define the same label orannotation key, the
Gateway value takes precedence (applied second).Documentation References (1)
set by external tools to store and retrieve arbitrary metadata. They are not
queryable and should be preserved when modifying objects.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
Documentation References (1)
(scope and select) objects. May match selectors of replication controllers
and services.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
Documentation References (1)
spec provides an opaque mechanism to configure the resource spec.This field accepts a complete or partial Kubernetes resource spec, such
as
PodSpec or ServiceSpec, and will be merged with the generatedconfiguration using Strategic Merge Patch semantics.
The full merge order is:
GatewayClass typed configuration fields2.
Gateway typed configuration fields3.
GatewayClass overlays4.
Gateway overlays (can override all previous values)without needing to provide the entire resource definition.
Simple fields (strings, integers, booleans) in your config will overwrite the generated defaults.
Lists with "merge keys", like
containers which merges on name, ortolerations which merges on key,will append your items to the generated list, or update existing items if keys match.
To remove a field or list item from the generated resource, use the
$patch: delete directive. This works for both map fields and list items,and is the recommended approach because it works with both client-side
and server-side apply.
spec:
template:
spec:
# Delete pod-level securityContext
securityContext:
$patch: delete
# Delete nodeSelector
nodeSelector:
$patch: delete
containers:
# Be sure to use the correct proxy name here or you will add a
# container instead of modifying a container.
- name: proxy-name
# Delete container-level securityContext
securityContext:
$patch: deleteSetting a field to
null can also remove it, but this ONLY works withkubectl apply --server-side or equivalent. With regular client-sidekubectl apply, null values are stripped by kubectl before reachingthe API server, so the deletion won't occur. Prefer
$patch: deletefor consistent behavior across both apply modes.
spec:
template:
spec:
nodeSelector: null # Removes nodeSelector (server-side apply only!)To replace an entire map with your values (instead of merging), use
$patch: replace.This removes all existing keys and replaces them with only your specified keys.
spec:
template:
spec:
nodeSelector:
$patch: replace
custom-key: custom-valueIf you want to strictly define a list and ignore all generated defaults, use
$patch: replace.service:
spec:
ports:
- $patch: replace
- name: http
port: 80
targetPort: 8080
protocol: TCP
- name: https
port: 443
targetPort: 8443
protocol: TCPValidation
Documentation References (2)
values. If you want to delete an environment variable entirely, use
$patch: delete with AgentgatewayParametersOverlays instead. Note that[variable
expansion](https://kubernetes.io/docs/tasks/inject-data-application/define-interdependent-environment-variables/)
does apply, but is highly discouraged -- to set dependent environment
variables, you can use
$(VAR_NAME), but it's highly discouraged.$$(VAR_NAME) avoids expansion and results in a literal$(VAR_NAME).SESSION_KEY is specified, it takes precedence over thecontroller-managed per-
Gateway session key Secret.Documentation References (3)
May consist of any printable ASCII characters except '='.
Documentation References (3)
using the previously defined environment variables in the container and
any service environment variables. If a variable cannot be resolved,
the reference in the input string will be unchanged. Double $$ are reduced
to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
"$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
Escaped references will never be expanded, regardless of whether the variable
exists or not.
Defaults to "".
Documentation References (3)
Validation
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
metadata.labels['<KEY>'], metadata.annotations['<KEY>'],spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
Validation
Requires the EnvFiles feature gate to be enabled.
Validation
The keys defined within a source may consist of any printable ASCII characters except '='.
During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.
does not exist, then the env var is not published.
If optional is set to true and the specified key does not exist,
the environment variable will not be set in the Pod's containers.
an error will be returned during Pod creation.
Validation
Must be relative and may not contain the '..' path or start with '..'.
(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
Validation
Validation
Validation
This field is effectively required, but due to backwards compatibility is
allowed to be empty. Instances of this type with an empty value here are
almost certainly wrong.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
horizontalPodAutoscaler allows creating a HorizontalPodAutoscalerfor the agentgateway proxy. If absent, no HPA is created. If present, an
HPA is created with its
scaleTargetRef automatically configured totarget the agentgateway proxy
Deployment. The metadata and specfields from this overlay are applied to the generated HPA.
Documentation References (1)
metadata defines a subset of object metadata to be customized.labels and annotations are merged with existing values. If bothGatewayClass and Gateway parameters define the same label orannotation key, the
Gateway value takes precedence (applied second).Documentation References (1)
set by external tools to store and retrieve arbitrary metadata. They are not
queryable and should be preserved when modifying objects.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
(scope and select) objects. May match selectors of replication controllers
and services.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
Documentation References (1)
spec provides an opaque mechanism to configure the resource spec.This field accepts a complete or partial Kubernetes resource spec, such
as
PodSpec or ServiceSpec, and will be merged with the generatedconfiguration using Strategic Merge Patch semantics.
The full merge order is:
GatewayClass typed configuration fields2.
Gateway typed configuration fields3.
GatewayClass overlays4.
Gateway overlays (can override all previous values)without needing to provide the entire resource definition.
Simple fields (strings, integers, booleans) in your config will overwrite the generated defaults.
Lists with "merge keys", like
containers which merges on name, ortolerations which merges on key,will append your items to the generated list, or update existing items if keys match.
To remove a field or list item from the generated resource, use the
$patch: delete directive. This works for both map fields and list items,and is the recommended approach because it works with both client-side
and server-side apply.
spec:
template:
spec:
# Delete pod-level securityContext
securityContext:
$patch: delete
# Delete nodeSelector
nodeSelector:
$patch: delete
containers:
# Be sure to use the correct proxy name here or you will add a
# container instead of modifying a container.
- name: proxy-name
# Delete container-level securityContext
securityContext:
$patch: deleteSetting a field to
null can also remove it, but this ONLY works withkubectl apply --server-side or equivalent. With regular client-sidekubectl apply, null values are stripped by kubectl before reachingthe API server, so the deletion won't occur. Prefer
$patch: deletefor consistent behavior across both apply modes.
spec:
template:
spec:
nodeSelector: null # Removes nodeSelector (server-side apply only!)To replace an entire map with your values (instead of merging), use
$patch: replace.This removes all existing keys and replaces them with only your specified keys.
spec:
template:
spec:
nodeSelector:
$patch: replace
custom-key: custom-valueIf you want to strictly define a list and ignore all generated defaults, use
$patch: replace.service:
spec:
ports:
- $patch: replace
- name: http
port: 80
targetPort: 8080
protocol: TCP
- name: https
port: 443
targetPort: 8443
protocol: TCPValidation
Documentation References (1)
https://kubernetes.io/docs/concepts/containers/images
for details.
registry: cr.agentgateway.dev
repository: agentgateway
tag: <agentgateway version>
pullPolicy: <omitted, relying on Kubernetes defaults which depend on the tag>Documentation References (1)
sha256:12345...https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy
for details.
Documentation References (1)
Documentation References (1)
The local trust domain is always implicitly included.
https://istiod.istio-system.svc:15012.cluster.local.logging configuration for Agentgateway. By default, all logs are set toinfo level.Documentation References (2)
Validation
Documentation References (2)
RUST_LOG syntax, for example info (thedefault), or a comma-separated per-module setting such as
rmcp=warn,hickory_server::server::server_future=off,typespec_client_core::http::policies::logging=warn.podDisruptionBudget allows creating a PodDisruptionBudget for theagentgateway proxy. If absent, no PDB is created. If present, a PDB is
created with its selector automatically configured to target the
agentgateway proxy
Deployment. The metadata and spec fields fromthis overlay are applied to the generated PDB.
Documentation References (1)
metadata defines a subset of object metadata to be customized.labels and annotations are merged with existing values. If bothGatewayClass and Gateway parameters define the same label orannotation key, the
Gateway value takes precedence (applied second).Documentation References (1)
set by external tools to store and retrieve arbitrary metadata. They are not
queryable and should be preserved when modifying objects.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
(scope and select) objects. May match selectors of replication controllers
and services.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
Documentation References (1)
spec provides an opaque mechanism to configure the resource spec.This field accepts a complete or partial Kubernetes resource spec, such
as
PodSpec or ServiceSpec, and will be merged with the generatedconfiguration using Strategic Merge Patch semantics.
The full merge order is:
GatewayClass typed configuration fields2.
Gateway typed configuration fields3.
GatewayClass overlays4.
Gateway overlays (can override all previous values)without needing to provide the entire resource definition.
Simple fields (strings, integers, booleans) in your config will overwrite the generated defaults.
Lists with "merge keys", like
containers which merges on name, ortolerations which merges on key,will append your items to the generated list, or update existing items if keys match.
To remove a field or list item from the generated resource, use the
$patch: delete directive. This works for both map fields and list items,and is the recommended approach because it works with both client-side
and server-side apply.
spec:
template:
spec:
# Delete pod-level securityContext
securityContext:
$patch: delete
# Delete nodeSelector
nodeSelector:
$patch: delete
containers:
# Be sure to use the correct proxy name here or you will add a
# container instead of modifying a container.
- name: proxy-name
# Delete container-level securityContext
securityContext:
$patch: deleteSetting a field to
null can also remove it, but this ONLY works withkubectl apply --server-side or equivalent. With regular client-sidekubectl apply, null values are stripped by kubectl before reachingthe API server, so the deletion won't occur. Prefer
$patch: deletefor consistent behavior across both apply modes.
spec:
template:
spec:
nodeSelector: null # Removes nodeSelector (server-side apply only!)To replace an entire map with your values (instead of merging), use
$patch: replace.This removes all existing keys and replaces them with only your specified keys.
spec:
template:
spec:
nodeSelector:
$patch: replace
custom-key: custom-valueIf you want to strictly define a list and ignore all generated defaults, use
$patch: replace.service:
spec:
ports:
- $patch: replace
- name: http
port: 80
targetPort: 8080
protocol: TCP
- name: https
port: 443
targetPort: 8443
protocol: TCPValidation
Documentation References (1)
rawConfig provides an opaque mechanism to configure the agentgatewayconfig file. The
agentgateway binary has a -f option to specify aconfig file, and this field supplies that file. This will be merged with
configuration derived from typed fields like
logging.format, and thosetyped fields will take precedence.
rawConfig:
binds:
- port: 3000
listeners:
- routes:
- policies:
cors:
allowOrigins:
- "*"
allowHeaders:
- mcp-protocol-version
- content-type
- cache-control
backends:
- mcp:
targets:
- name: everything
stdio:
cmd: npx
args: ["@modelcontextprotocol/server-everything"]Validation
Documentation References (1)
https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
for details.
Documentation References (1)
that are used by this container.
DynamicResourceAllocation feature gate.
Validation
the Pod where this field is used. It makes that resource available
inside a container.
If empty, everything from the claim is made available, otherwise
only the result of this request.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
Documentation References (1)
If Requests is omitted for a container, it defaults to Limits if that is explicitly specified,
otherwise to an implementation-defined value. Requests cannot exceed Limits.
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
Documentation References (1)
service allows specifying overrides for the generated Serviceresource.
Documentation References (1)
metadata defines a subset of object metadata to be customized.labels and annotations are merged with existing values. If bothGatewayClass and Gateway parameters define the same label orannotation key, the
Gateway value takes precedence (applied second).Documentation References (1)
set by external tools to store and retrieve arbitrary metadata. They are not
queryable and should be preserved when modifying objects.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
Documentation References (1)
(scope and select) objects. May match selectors of replication controllers
and services.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
spec provides an opaque mechanism to configure the resource spec.This field accepts a complete or partial Kubernetes resource spec, such
as
PodSpec or ServiceSpec, and will be merged with the generatedconfiguration using Strategic Merge Patch semantics.
The full merge order is:
GatewayClass typed configuration fields2.
Gateway typed configuration fields3.
GatewayClass overlays4.
Gateway overlays (can override all previous values)without needing to provide the entire resource definition.
Simple fields (strings, integers, booleans) in your config will overwrite the generated defaults.
Lists with "merge keys", like
containers which merges on name, ortolerations which merges on key,will append your items to the generated list, or update existing items if keys match.
To remove a field or list item from the generated resource, use the
$patch: delete directive. This works for both map fields and list items,and is the recommended approach because it works with both client-side
and server-side apply.
spec:
template:
spec:
# Delete pod-level securityContext
securityContext:
$patch: delete
# Delete nodeSelector
nodeSelector:
$patch: delete
containers:
# Be sure to use the correct proxy name here or you will add a
# container instead of modifying a container.
- name: proxy-name
# Delete container-level securityContext
securityContext:
$patch: deleteSetting a field to
null can also remove it, but this ONLY works withkubectl apply --server-side or equivalent. With regular client-sidekubectl apply, null values are stripped by kubectl before reachingthe API server, so the deletion won't occur. Prefer
$patch: deletefor consistent behavior across both apply modes.
spec:
template:
spec:
nodeSelector: null # Removes nodeSelector (server-side apply only!)To replace an entire map with your values (instead of merging), use
$patch: replace.This removes all existing keys and replaces them with only your specified keys.
spec:
template:
spec:
nodeSelector:
$patch: replace
custom-key: custom-valueIf you want to strictly define a list and ignore all generated defaults, use
$patch: replace.service:
spec:
ports:
- $patch: replace
- name: http
port: 80
targetPort: 8080
protocol: TCP
- name: https
port: 443
targetPort: 8443
protocol: TCPValidation
Documentation References (1)
serviceAccount allows specifying overrides for the generatedServiceAccount resource.Documentation References (1)
metadata defines a subset of object metadata to be customized.labels and annotations are merged with existing values. If bothGatewayClass and Gateway parameters define the same label orannotation key, the
Gateway value takes precedence (applied second).Documentation References (1)
set by external tools to store and retrieve arbitrary metadata. They are not
queryable and should be preserved when modifying objects.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
Documentation References (1)
(scope and select) objects. May match selectors of replication controllers
and services.
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
spec provides an opaque mechanism to configure the resource spec.This field accepts a complete or partial Kubernetes resource spec, such
as
PodSpec or ServiceSpec, and will be merged with the generatedconfiguration using Strategic Merge Patch semantics.
The full merge order is:
GatewayClass typed configuration fields2.
Gateway typed configuration fields3.
GatewayClass overlays4.
Gateway overlays (can override all previous values)without needing to provide the entire resource definition.
Simple fields (strings, integers, booleans) in your config will overwrite the generated defaults.
Lists with "merge keys", like
containers which merges on name, ortolerations which merges on key,will append your items to the generated list, or update existing items if keys match.
To remove a field or list item from the generated resource, use the
$patch: delete directive. This works for both map fields and list items,and is the recommended approach because it works with both client-side
and server-side apply.
spec:
template:
spec:
# Delete pod-level securityContext
securityContext:
$patch: delete
# Delete nodeSelector
nodeSelector:
$patch: delete
containers:
# Be sure to use the correct proxy name here or you will add a
# container instead of modifying a container.
- name: proxy-name
# Delete container-level securityContext
securityContext:
$patch: deleteSetting a field to
null can also remove it, but this ONLY works withkubectl apply --server-side or equivalent. With regular client-sidekubectl apply, null values are stripped by kubectl before reachingthe API server, so the deletion won't occur. Prefer
$patch: deletefor consistent behavior across both apply modes.
spec:
template:
spec:
nodeSelector: null # Removes nodeSelector (server-side apply only!)To replace an entire map with your values (instead of merging), use
$patch: replace.This removes all existing keys and replaces them with only your specified keys.
spec:
template:
spec:
nodeSelector:
$patch: replace
custom-key: custom-valueIf you want to strictly define a list and ignore all generated defaults, use
$patch: replace.service:
spec:
ports:
- $patch: replace
- name: http
port: 80
targetPort: 8080
protocol: TCP
- name: https
port: 443
targetPort: 8443
protocol: TCPValidation
plane changes happen is in tension with how quickly rollouts of the data
plane complete. How long a data plane pod must wait for shutdown to be
perfectly graceful depends on how you have configured your
Gatewayresources.
Validation
Documentation References (1)
terminate. Refer to the
TERMINATION_GRACE_PERIOD_SECONDSenvironment variable for details.
Validation
Documentation References (1)
terminate. Refer to the
CONNECTION_MIN_TERMINATION_DEADLINEenvironment variable for details.