Skip to content

Commit ccee2df

Browse files
feat: PAAL-201 add env and envFromSource to agentGateway CRD (#38)
1 parent e4ff2bb commit ccee2df

File tree

3 files changed

+233
-0
lines changed

3 files changed

+233
-0
lines changed

api/v1alpha1/agentgateway_types.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ limitations under the License.
1717
package v1alpha1
1818

1919
import (
20+
corev1 "k8s.io/api/core/v1"
2021
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2122
)
2223

@@ -34,6 +35,16 @@ type AgentGatewaySpec struct {
3435
// Timeout specifies the gateway timeout for requests
3536
// +kubebuilder:default="360s"
3637
Timeout *metav1.Duration `json:"timeout,omitempty"`
38+
39+
// Environment variables to pass to the AgentGateway container.
40+
// These can include configuration values, credentials, or feature flags.
41+
// +optional
42+
Env []corev1.EnvVar `json:"env,omitempty"`
43+
44+
// List of sources to populate environment variables in the AgentGateway container.
45+
// This allows loading variables from ConfigMaps and Secrets.
46+
// +optional
47+
EnvFrom []corev1.EnvFromSource `json:"envFrom,omitempty"`
3748
}
3849

3950
// AgentGatewayStatus defines the observed state of AgentGateway

api/v1alpha1/zz_generated.deepcopy.go

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/runtime.agentic-layer.ai_agentgateways.yaml

Lines changed: 208 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,214 @@ spec:
4444
AgentGatewayClassName specifies which AgentGatewayClass to use for this gateway instance.
4545
This is only needed if multiple gateway classes are defined in the cluster.
4646
type: string
47+
env:
48+
description: |-
49+
Environment variables to pass to the AgentGateway container.
50+
These can include configuration values, credentials, or feature flags.
51+
items:
52+
description: EnvVar represents an environment variable present in
53+
a Container.
54+
properties:
55+
name:
56+
description: |-
57+
Name of the environment variable.
58+
May consist of any printable ASCII characters except '='.
59+
type: string
60+
value:
61+
description: |-
62+
Variable references $(VAR_NAME) are expanded
63+
using the previously defined environment variables in the container and
64+
any service environment variables. If a variable cannot be resolved,
65+
the reference in the input string will be unchanged. Double $$ are reduced
66+
to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.
67+
"$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)".
68+
Escaped references will never be expanded, regardless of whether the variable
69+
exists or not.
70+
Defaults to "".
71+
type: string
72+
valueFrom:
73+
description: Source for the environment variable's value. Cannot
74+
be used if value is not empty.
75+
properties:
76+
configMapKeyRef:
77+
description: Selects a key of a ConfigMap.
78+
properties:
79+
key:
80+
description: The key to select.
81+
type: string
82+
name:
83+
default: ""
84+
description: |-
85+
Name of the referent.
86+
This field is effectively required, but due to backwards compatibility is
87+
allowed to be empty. Instances of this type with an empty value here are
88+
almost certainly wrong.
89+
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
90+
type: string
91+
optional:
92+
description: Specify whether the ConfigMap or its key
93+
must be defined
94+
type: boolean
95+
required:
96+
- key
97+
type: object
98+
x-kubernetes-map-type: atomic
99+
fieldRef:
100+
description: |-
101+
Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
102+
spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
103+
properties:
104+
apiVersion:
105+
description: Version of the schema the FieldPath is
106+
written in terms of, defaults to "v1".
107+
type: string
108+
fieldPath:
109+
description: Path of the field to select in the specified
110+
API version.
111+
type: string
112+
required:
113+
- fieldPath
114+
type: object
115+
x-kubernetes-map-type: atomic
116+
fileKeyRef:
117+
description: |-
118+
FileKeyRef selects a key of the env file.
119+
Requires the EnvFiles feature gate to be enabled.
120+
properties:
121+
key:
122+
description: |-
123+
The key within the env file. An invalid key will prevent the pod from starting.
124+
The keys defined within a source may consist of any printable ASCII characters except '='.
125+
During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.
126+
type: string
127+
optional:
128+
default: false
129+
description: |-
130+
Specify whether the file or its key must be defined. If the file or key
131+
does not exist, then the env var is not published.
132+
If optional is set to true and the specified key does not exist,
133+
the environment variable will not be set in the Pod's containers.
134+
135+
If optional is set to false and the specified key does not exist,
136+
an error will be returned during Pod creation.
137+
type: boolean
138+
path:
139+
description: |-
140+
The path within the volume from which to select the file.
141+
Must be relative and may not contain the '..' path or start with '..'.
142+
type: string
143+
volumeName:
144+
description: The name of the volume mount containing
145+
the env file.
146+
type: string
147+
required:
148+
- key
149+
- path
150+
- volumeName
151+
type: object
152+
x-kubernetes-map-type: atomic
153+
resourceFieldRef:
154+
description: |-
155+
Selects a resource of the container: only resources limits and requests
156+
(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
157+
properties:
158+
containerName:
159+
description: 'Container name: required for volumes,
160+
optional for env vars'
161+
type: string
162+
divisor:
163+
anyOf:
164+
- type: integer
165+
- type: string
166+
description: Specifies the output format of the exposed
167+
resources, defaults to "1"
168+
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
169+
x-kubernetes-int-or-string: true
170+
resource:
171+
description: 'Required: resource to select'
172+
type: string
173+
required:
174+
- resource
175+
type: object
176+
x-kubernetes-map-type: atomic
177+
secretKeyRef:
178+
description: Selects a key of a secret in the pod's namespace
179+
properties:
180+
key:
181+
description: The key of the secret to select from. Must
182+
be a valid secret key.
183+
type: string
184+
name:
185+
default: ""
186+
description: |-
187+
Name of the referent.
188+
This field is effectively required, but due to backwards compatibility is
189+
allowed to be empty. Instances of this type with an empty value here are
190+
almost certainly wrong.
191+
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
192+
type: string
193+
optional:
194+
description: Specify whether the Secret or its key must
195+
be defined
196+
type: boolean
197+
required:
198+
- key
199+
type: object
200+
x-kubernetes-map-type: atomic
201+
type: object
202+
required:
203+
- name
204+
type: object
205+
type: array
206+
envFrom:
207+
description: |-
208+
List of sources to populate environment variables in the AgentGateway container.
209+
This allows loading variables from ConfigMaps and Secrets.
210+
items:
211+
description: EnvFromSource represents the source of a set of ConfigMaps
212+
or Secrets
213+
properties:
214+
configMapRef:
215+
description: The ConfigMap to select from
216+
properties:
217+
name:
218+
default: ""
219+
description: |-
220+
Name of the referent.
221+
This field is effectively required, but due to backwards compatibility is
222+
allowed to be empty. Instances of this type with an empty value here are
223+
almost certainly wrong.
224+
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
225+
type: string
226+
optional:
227+
description: Specify whether the ConfigMap must be defined
228+
type: boolean
229+
type: object
230+
x-kubernetes-map-type: atomic
231+
prefix:
232+
description: |-
233+
Optional text to prepend to the name of each environment variable.
234+
May consist of any printable ASCII characters except '='.
235+
type: string
236+
secretRef:
237+
description: The Secret to select from
238+
properties:
239+
name:
240+
default: ""
241+
description: |-
242+
Name of the referent.
243+
This field is effectively required, but due to backwards compatibility is
244+
allowed to be empty. Instances of this type with an empty value here are
245+
almost certainly wrong.
246+
More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
247+
type: string
248+
optional:
249+
description: Specify whether the Secret must be defined
250+
type: boolean
251+
type: object
252+
x-kubernetes-map-type: atomic
253+
type: object
254+
type: array
47255
replicas:
48256
default: 1
49257
description: Replicas is the number of gateway replicas

0 commit comments

Comments
 (0)