locostack.com_externaltools.yaml 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384
  1. ---
  2. apiVersion: apiextensions.k8s.io/v1
  3. kind: CustomResourceDefinition
  4. metadata:
  5. annotations:
  6. controller-gen.kubebuilder.io/version: v0.20.1
  7. name: externaltools.locostack.com
  8. spec:
  9. group: locostack.com
  10. names:
  11. kind: ExternalTool
  12. listKind: ExternalToolList
  13. plural: externaltools
  14. shortNames:
  15. - et
  16. singular: externaltool
  17. scope: Namespaced
  18. versions:
  19. - additionalPrinterColumns:
  20. - jsonPath: .status.conditions[?(@.type=='Ready')].status
  21. name: Ready
  22. type: string
  23. name: v1alpha1
  24. schema:
  25. openAPIV3Schema:
  26. description: ExternalTool is the Schema for the externaltools API
  27. properties:
  28. apiVersion:
  29. description: |-
  30. APIVersion defines the versioned schema of this representation of an object.
  31. Servers should convert recognized schemas to the latest internal value, and
  32. may reject unrecognized values.
  33. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
  34. type: string
  35. kind:
  36. description: |-
  37. Kind is a string value representing the REST resource this object represents.
  38. Servers may infer this from the endpoint the client submits requests to.
  39. Cannot be updated.
  40. In CamelCase.
  41. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
  42. type: string
  43. metadata:
  44. type: object
  45. spec:
  46. description: spec defines the desired state of ExternalTool
  47. properties:
  48. auth:
  49. description: |-
  50. auth describes how to authenticate to the remote MCP server.
  51. Omit only for unauthenticated endpoints.
  52. properties:
  53. apiKey:
  54. description: apiKeySecretRef references a Secret key holding an
  55. API key and the header name to carry it in.
  56. properties:
  57. headerName:
  58. description: headerName is the HTTP header used to carry the
  59. key.
  60. type: string
  61. secretRef:
  62. description: secretRef references the Secret key holding the
  63. API key value.
  64. properties:
  65. key:
  66. description: The key of the secret to select from. Must
  67. be a valid secret key.
  68. type: string
  69. name:
  70. default: ""
  71. description: |-
  72. Name of the referent.
  73. This field is effectively required, but due to backwards compatibility is
  74. allowed to be empty. Instances of this type with an empty value here are
  75. almost certainly wrong.
  76. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  77. type: string
  78. optional:
  79. description: Specify whether the Secret or its key must
  80. be defined
  81. type: boolean
  82. required:
  83. - key
  84. type: object
  85. x-kubernetes-map-type: atomic
  86. required:
  87. - secretRef
  88. type: object
  89. bearerToken:
  90. description: |-
  91. bearerTokenSecretRef references a Secret key holding a bearer token.
  92. Injected as Authorization: Bearer <token> on every request.
  93. properties:
  94. key:
  95. description: The key of the secret to select from. Must be
  96. a valid secret key.
  97. type: string
  98. name:
  99. default: ""
  100. description: |-
  101. Name of the referent.
  102. This field is effectively required, but due to backwards compatibility is
  103. allowed to be empty. Instances of this type with an empty value here are
  104. almost certainly wrong.
  105. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  106. type: string
  107. optional:
  108. description: Specify whether the Secret or its key must be
  109. defined
  110. type: boolean
  111. required:
  112. - key
  113. type: object
  114. x-kubernetes-map-type: atomic
  115. headers:
  116. description: |-
  117. headers are arbitrary HTTP headers sourced from Secrets.
  118. Use for providers requiring multiple credentials or non-standard auth schemes.
  119. items:
  120. description: |-
  121. HTTPHeaderSpec defines an HTTP header whose value is sourced from a Secret.
  122. Used wherever arbitrary headers must be sent with outbound requests without
  123. inlining credential values into the CR.
  124. properties:
  125. name:
  126. description: name is the HTTP header name (e.g. X-Api-Key,
  127. Authorization).
  128. type: string
  129. valueFrom:
  130. description: valueFrom is the source for the header value
  131. — typically a secretKeyRef.
  132. properties:
  133. configMapKeyRef:
  134. description: Selects a key of a ConfigMap.
  135. properties:
  136. key:
  137. description: The key to select.
  138. type: string
  139. name:
  140. default: ""
  141. description: |-
  142. Name of the referent.
  143. This field is effectively required, but due to backwards compatibility is
  144. allowed to be empty. Instances of this type with an empty value here are
  145. almost certainly wrong.
  146. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  147. type: string
  148. optional:
  149. description: Specify whether the ConfigMap or its
  150. key must be defined
  151. type: boolean
  152. required:
  153. - key
  154. type: object
  155. x-kubernetes-map-type: atomic
  156. fieldRef:
  157. description: |-
  158. Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
  159. spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
  160. properties:
  161. apiVersion:
  162. description: Version of the schema the FieldPath
  163. is written in terms of, defaults to "v1".
  164. type: string
  165. fieldPath:
  166. description: Path of the field to select in the
  167. specified API version.
  168. type: string
  169. required:
  170. - fieldPath
  171. type: object
  172. x-kubernetes-map-type: atomic
  173. fileKeyRef:
  174. description: |-
  175. FileKeyRef selects a key of the env file.
  176. Requires the EnvFiles feature gate to be enabled.
  177. properties:
  178. key:
  179. description: |-
  180. The key within the env file. An invalid key will prevent the pod from starting.
  181. The keys defined within a source may consist of any printable ASCII characters except '='.
  182. During Alpha stage of the EnvFiles feature gate, the key size is limited to 128 characters.
  183. type: string
  184. optional:
  185. default: false
  186. description: |-
  187. Specify whether the file or its key must be defined. If the file or key
  188. does not exist, then the env var is not published.
  189. If optional is set to true and the specified key does not exist,
  190. the environment variable will not be set in the Pod's containers.
  191. If optional is set to false and the specified key does not exist,
  192. an error will be returned during Pod creation.
  193. type: boolean
  194. path:
  195. description: |-
  196. The path within the volume from which to select the file.
  197. Must be relative and may not contain the '..' path or start with '..'.
  198. type: string
  199. volumeName:
  200. description: The name of the volume mount containing
  201. the env file.
  202. type: string
  203. required:
  204. - key
  205. - path
  206. - volumeName
  207. type: object
  208. x-kubernetes-map-type: atomic
  209. resourceFieldRef:
  210. description: |-
  211. Selects a resource of the container: only resources limits and requests
  212. (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported.
  213. properties:
  214. containerName:
  215. description: 'Container name: required for volumes,
  216. optional for env vars'
  217. type: string
  218. divisor:
  219. anyOf:
  220. - type: integer
  221. - type: string
  222. description: Specifies the output format of the
  223. exposed resources, defaults to "1"
  224. pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
  225. x-kubernetes-int-or-string: true
  226. resource:
  227. description: 'Required: resource to select'
  228. type: string
  229. required:
  230. - resource
  231. type: object
  232. x-kubernetes-map-type: atomic
  233. secretKeyRef:
  234. description: Selects a key of a secret in the pod's
  235. namespace
  236. properties:
  237. key:
  238. description: The key of the secret to select from. Must
  239. be a valid secret key.
  240. type: string
  241. name:
  242. default: ""
  243. description: |-
  244. Name of the referent.
  245. This field is effectively required, but due to backwards compatibility is
  246. allowed to be empty. Instances of this type with an empty value here are
  247. almost certainly wrong.
  248. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  249. type: string
  250. optional:
  251. description: Specify whether the Secret or its key
  252. must be defined
  253. type: boolean
  254. required:
  255. - key
  256. type: object
  257. x-kubernetes-map-type: atomic
  258. type: object
  259. required:
  260. - name
  261. - valueFrom
  262. type: object
  263. type: array
  264. type: object
  265. endpoint:
  266. description: endpoint is the base URL of the remote MCP server (e.g.
  267. https://tools.example.com/mcp).
  268. pattern: ^https?://
  269. type: string
  270. stackRef:
  271. description: stackRef associates this tool with a stack.
  272. properties:
  273. name:
  274. default: ""
  275. description: |-
  276. Name of the referent.
  277. This field is effectively required, but due to backwards compatibility is
  278. allowed to be empty. Instances of this type with an empty value here are
  279. almost certainly wrong.
  280. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
  281. type: string
  282. type: object
  283. x-kubernetes-map-type: atomic
  284. toolName:
  285. description: toolName is the logical name for this tool as seen by
  286. the gateway and agents.
  287. type: string
  288. transport:
  289. default: http
  290. description: transport is the MCP transport protocol spoken by the
  291. remote server.
  292. enum:
  293. - sse
  294. - http
  295. type: string
  296. required:
  297. - endpoint
  298. - toolName
  299. type: object
  300. status:
  301. description: status defines the observed state of ExternalTool
  302. properties:
  303. conditions:
  304. description: |-
  305. conditions represent the current state of the ExternalTool resource.
  306. Each condition has a unique type and reflects the status of a specific aspect of the resource.
  307. Standard condition types include:
  308. - "Available": the resource is fully functional
  309. - "Progressing": the resource is being created or updated
  310. - "Degraded": the resource failed to reach or maintain its desired state
  311. The status of each condition is one of True, False, or Unknown.
  312. items:
  313. description: Condition contains details for one aspect of the current
  314. state of this API Resource.
  315. properties:
  316. lastTransitionTime:
  317. description: |-
  318. lastTransitionTime is the last time the condition transitioned from one status to another.
  319. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
  320. format: date-time
  321. type: string
  322. message:
  323. description: |-
  324. message is a human readable message indicating details about the transition.
  325. This may be an empty string.
  326. maxLength: 32768
  327. type: string
  328. observedGeneration:
  329. description: |-
  330. observedGeneration represents the .metadata.generation that the condition was set based upon.
  331. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
  332. with respect to the current state of the instance.
  333. format: int64
  334. minimum: 0
  335. type: integer
  336. reason:
  337. description: |-
  338. reason contains a programmatic identifier indicating the reason for the condition's last transition.
  339. Producers of specific condition types may define expected values and meanings for this field,
  340. and whether the values are considered a guaranteed API.
  341. The value should be a CamelCase string.
  342. This field may not be empty.
  343. maxLength: 1024
  344. minLength: 1
  345. pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
  346. type: string
  347. status:
  348. description: status of the condition, one of True, False, Unknown.
  349. enum:
  350. - "True"
  351. - "False"
  352. - Unknown
  353. type: string
  354. type:
  355. description: type of condition in CamelCase or in foo.example.com/CamelCase.
  356. maxLength: 316
  357. pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
  358. type: string
  359. required:
  360. - lastTransitionTime
  361. - message
  362. - reason
  363. - status
  364. - type
  365. type: object
  366. type: array
  367. x-kubernetes-list-map-keys:
  368. - type
  369. x-kubernetes-list-type: map
  370. observedGeneration:
  371. description: observedGeneration is the .metadata.generation last reconciled.
  372. format: int64
  373. type: integer
  374. type: object
  375. required:
  376. - spec
  377. type: object
  378. served: true
  379. storage: true
  380. subresources:
  381. status: {}