github.com/metaprov/modela-operator@v0.0.0-20240118193048-f378be8b74d2/config/crd/bases/management.modela.ai_modelas.yaml (about) 1 --- 2 apiVersion: apiextensions.k8s.io/v1 3 kind: CustomResourceDefinition 4 metadata: 5 annotations: 6 controller-gen.kubebuilder.io/version: v0.13.0 7 name: modelas.management.modela.ai 8 spec: 9 group: management.modela.ai 10 names: 11 categories: 12 - data 13 - modela 14 - all 15 kind: Modela 16 listKind: ModelaList 17 plural: modelas 18 shortNames: 19 - md 20 singular: modela 21 scope: Namespaced 22 versions: 23 - name: v1alpha1 24 schema: 25 openAPIV3Schema: 26 description: Modela defines the configuration of the Modela operator 27 properties: 28 apiVersion: 29 description: 'APIVersion defines the versioned schema of this representation 30 of an object. Servers should convert recognized schemas to the latest 31 internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' 32 type: string 33 kind: 34 description: 'Kind is a string value representing the REST resource this 35 object represents. Servers may infer this from the endpoint the client 36 submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 37 type: string 38 metadata: 39 type: object 40 spec: 41 description: ModelaSpec defines the desired state of Modela 42 properties: 43 apiGateway: 44 properties: 45 replicas: 46 default: 0 47 description: Define the number of API Gateway replicas 48 format: int32 49 type: integer 50 resources: 51 description: 'Resources specifies resource requests and limits 52 for the data plane deployment. Default values: 100m CPU request, 53 200m CPU limit, 128Mi memory request, 256Mi memory limit.' 54 properties: 55 limits: 56 additionalProperties: 57 anyOf: 58 - type: integer 59 - type: string 60 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 61 x-kubernetes-int-or-string: true 62 description: 'Limits describes the maximum amount of compute 63 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 64 type: object 65 requests: 66 additionalProperties: 67 anyOf: 68 - type: integer 69 - type: string 70 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 71 x-kubernetes-int-or-string: true 72 description: 'Requests describes the minimum amount of compute 73 resources required. If Requests is omitted for a container, 74 it defaults to Limits if that is explicitly specified, otherwise 75 to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 76 type: object 77 type: object 78 type: object 79 certManager: 80 properties: 81 install: 82 default: true 83 description: Indicates if cert-manager should be installed. 84 type: boolean 85 values: 86 description: ChartValues is the set of Helm values that is used 87 to render the Cert Manager Chart. Values are determined from 88 https://artifacthub.io/packages/helm/cert-manager/cert-manager. 89 type: object 90 x-kubernetes-preserve-unknown-fields: true 91 type: object 92 controlPlane: 93 properties: 94 replicas: 95 default: 0 96 description: The number of Control Plane replicas 97 format: int32 98 type: integer 99 resources: 100 description: 'Resources specifies resource requests and limits 101 for the control plane deployment. Default values: 256m CPU request, 102 512m CPU limit, 256Mi memory request, 512Mi memory limit.' 103 properties: 104 limits: 105 additionalProperties: 106 anyOf: 107 - type: integer 108 - type: string 109 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 110 x-kubernetes-int-or-string: true 111 description: 'Limits describes the maximum amount of compute 112 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 113 type: object 114 requests: 115 additionalProperties: 116 anyOf: 117 - type: integer 118 - type: string 119 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 120 x-kubernetes-int-or-string: true 121 description: 'Requests describes the minimum amount of compute 122 resources required. If Requests is omitted for a container, 123 it defaults to Limits if that is explicitly specified, otherwise 124 to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 125 type: object 126 type: object 127 type: object 128 dataPlane: 129 properties: 130 replicas: 131 default: 0 132 description: The number of Data Plane replicas 133 format: int32 134 type: integer 135 resources: 136 description: 'Resources specifies resource requests and limits 137 for the data plane deployment. Default values: 100m CPU request, 138 200m CPU limit, 256Mi memory request, 512Mi memory limit.' 139 properties: 140 limits: 141 additionalProperties: 142 anyOf: 143 - type: integer 144 - type: string 145 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 146 x-kubernetes-int-or-string: true 147 description: 'Limits describes the maximum amount of compute 148 resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 149 type: object 150 requests: 151 additionalProperties: 152 anyOf: 153 - type: integer 154 - type: string 155 pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ 156 x-kubernetes-int-or-string: true 157 description: 'Requests describes the minimum amount of compute 158 resources required. If Requests is omitted for a container, 159 it defaults to Limits if that is explicitly specified, otherwise 160 to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/' 161 type: object 162 type: object 163 type: object 164 database: 165 properties: 166 installMongoDB: 167 default: true 168 description: InstallMongoDB indicates if MongoDB will be installed. 169 MongoDB is a required component of the Modela LLM RAG engine. 170 type: boolean 171 installPgvector: 172 default: true 173 description: InstallPgvector indicates if Postgres will be installed 174 with the pgvector vector database extension. Pgvector is required 175 to use Postgres as a vector database with the Modela LLM RAG 176 engine. 177 type: boolean 178 mongoDBValues: 179 description: ChartValues is the set of Helm values that is used 180 to render the MongoDB Chart. 181 type: object 182 x-kubernetes-preserve-unknown-fields: true 183 postgresValues: 184 description: ChartValues is the set of Helm values that is used 185 to render the Postgres Chart. 186 type: object 187 x-kubernetes-preserve-unknown-fields: true 188 type: object 189 distribution: 190 default: develop 191 description: Distribution denotes the desired version of Modela. This 192 version will determine the Docker image tags for all Modela images 193 provided by Metaprov 194 type: string 195 license: 196 description: License specifies the license information that will be 197 applied to the installation of Modela 198 properties: 199 licenseKey: 200 type: string 201 linkLicense: 202 description: If LinkLicense is enabled, the Modela Operator will 203 open a linking session through modela.ai which a system administrator 204 can use to log in to their modela.ai account and link their 205 license. The URL which must be opened by the administrator will 206 be stored in the status of the Modela resource. 207 type: boolean 208 type: object 209 network: 210 description: Network specifies the configuration to make Modela accessible 211 through networking features 212 properties: 213 ingress: 214 description: The configuration to create Ingress resources 215 properties: 216 enabled: 217 default: false 218 description: Enabled indicates if Ingress resources will be 219 created to expose the Modela API gateway and frontend. 220 type: boolean 221 hostname: 222 default: localhost 223 description: Hostname specifies the host domain which will 224 be used as the hostname for rules in Ingress resources managed 225 by the Modela operator. By default, the hostname will default 226 to a localhost alias. 227 type: string 228 type: object 229 nginx: 230 description: The configuration to install Nginx 231 properties: 232 install: 233 default: true 234 description: Indicates if Nginx should be installed 235 type: boolean 236 values: 237 description: ChartValues is the set of Helm values that is 238 used to render the Nginx Ingress Chart. Values are determined 239 from https://artifacthub.io/packages/helm/ingress-nginx/ingress-nginx 240 type: object 241 x-kubernetes-preserve-unknown-fields: true 242 type: object 243 nodePort: 244 description: The configuration to create NodePort services 245 properties: 246 enabled: 247 default: false 248 description: Indicates if Node Port services will be created 249 type: boolean 250 nodeSelector: 251 additionalProperties: 252 type: string 253 description: A map of labels that will select which Node to 254 use when determining an external IP for the cluster. The 255 external IP of the Node will be used to configure the frontend. 256 type: object 257 port: 258 default: 30000 259 description: The port which Modela will be exposed through. 260 The port, and the two ports above it, must be available. 261 NodePort services will be allocated for the API Gateway, 262 Proxy, and Frontend 263 exclusiveMaximum: true 264 format: int32 265 maximum: 32766 266 minimum: 30000 267 type: integer 268 type: object 269 type: object 270 objectStore: 271 properties: 272 install: 273 default: true 274 description: Indicates if Minio should be installed. 275 type: boolean 276 values: 277 description: ChartValues is the set of Helm values that is used 278 to render the Minio Chart. 279 type: object 280 type: object 281 observability: 282 description: Observability specifies the configuration to install 283 monitoring tools (Prometheus, Loki, Grafana) 284 properties: 285 grafanaValues: 286 description: ChartValues is the set of Helm values that is used 287 to render the Grafana Chart. Values are determined from https://artifacthub.io/packages/helm/grafana/grafana 288 type: object 289 x-kubernetes-preserve-unknown-fields: true 290 installGrafana: 291 description: Grafana indicates if the Grafana Helm Chart will 292 be installed 293 type: boolean 294 installLoki: 295 description: Loki indicates if the Loki Helm Chart will be installed 296 type: boolean 297 installPrometheus: 298 description: Prometheus indicates if the Prometheus Helm Chart 299 will be installed 300 type: boolean 301 lokiValues: 302 description: ChartValues is the set of Helm values that is used 303 to render the Loki Chart. Values are determined from https://artifacthub.io/packages/helm/grafana/loki 304 type: object 305 x-kubernetes-preserve-unknown-fields: true 306 prometheusValues: 307 description: ChartValues is the set of Helm values that is used 308 to render the Prometheus Chart. Values are determined from https://artifacthub.io/packages/helm/prometheus-community/prometheus 309 type: object 310 x-kubernetes-preserve-unknown-fields: true 311 type: object 312 onlineStore: 313 properties: 314 install: 315 default: true 316 description: Indicates if Redis should be installed as part of 317 the built-in online store. 318 type: boolean 319 values: 320 description: ChartValues is the set of Helm values that is used 321 to render the Redis Chart. 322 type: object 323 x-kubernetes-preserve-unknown-fields: true 324 type: object 325 tenants: 326 description: Tenants contains the collection of tenants that will 327 be installed 328 items: 329 properties: 330 adminPassword: 331 description: The password for the default admin account (with 332 the username "admin"). If empty, then the Modela Operator 333 will set the password to "default". Setting a secure password 334 is highly recommended. 335 type: string 336 name: 337 description: The name of the Tenant. This will determine the 338 name of the namespace containing the Tenant's resources. 339 type: string 340 type: object 341 type: array 342 vault: 343 properties: 344 install: 345 default: true 346 description: Indicates if Vault should be installed. Enabling 347 installation will initialize Vault on the modela-system namespace 348 and configure it with the appropriate secret engine and policies. 349 This option is not recommended for production environments as 350 the root token and vault keys will be stored inside Kubernetes 351 secrets. When installed this way, the Modela Operator will automatically 352 unseal the Vault when necessary. 353 type: boolean 354 mountPath: 355 default: modela/secrets 356 description: MountPath specifies the path where secrets consumed 357 by Modela will be stored. 358 type: string 359 values: 360 description: ChartValues is the set of Helm values that are used 361 to render the Vault Chart. 362 type: object 363 x-kubernetes-preserve-unknown-fields: true 364 vaultAddress: 365 description: VaultAddress specifies the address for an external 366 Vault server. If specified, the Vault server must be configured 367 with a KVv2 secret engine mounted at MountPath. It must also 368 be configured to authorize the modela-operator-controller-manager 369 ServiceAccount with read/write permissions 370 type: string 371 type: object 372 required: 373 - distribution 374 type: object 375 status: 376 description: ModelaStatus defines the observed state of Modela 377 properties: 378 conditions: 379 items: 380 description: ClusterCondition describes the state of a cluster object 381 at a certain point 382 properties: 383 lastTransitionTime: 384 description: Last time the condition transitioned from one status 385 to another. 386 format: date-time 387 type: string 388 message: 389 description: A human-readable message indicating details about 390 the transition. 391 type: string 392 reason: 393 description: The reason for the condition's last transition. 394 type: string 395 status: 396 description: Status of the condition, one of True, False, Unknown. 397 type: string 398 type: 399 description: Type of the condition. 400 type: string 401 type: object 402 type: array 403 failureMessage: 404 description: The Modela resource controller will update FailureMessage 405 with an error message in the case of a failure 406 type: string 407 installedTenants: 408 description: Tenants contains the names of installed Tenant 409 items: 410 type: string 411 type: array 412 installedVersion: 413 description: InstalledVersion denotes the live image tags of all Modela 414 images 415 type: string 416 lastUpdated: 417 description: The last time the Modela resource was updated 418 format: date-time 419 type: string 420 licenseTokenRef: 421 description: LicenseToken contains the reference to the license token 422 generated by the license linking process, which can be used to fetch 423 the active license of a modela.ai 424 properties: 425 apiVersion: 426 description: API version of the referent. 427 type: string 428 fieldPath: 429 description: 'If referring to a piece of an object instead of 430 an entire object, this string should contain a valid JSON/Go 431 field access statement, such as desiredState.manifest.containers[2]. 432 For example, if the object reference is to a container within 433 a pod, this would take on a value like: "spec.containers{name}" 434 (where "name" refers to the name of the container that triggered 435 the event) or if no container name is specified "spec.containers[2]" 436 (container with index 2 in this pod). This syntax is chosen 437 only to have some well-defined way of referencing a part of 438 an object. TODO: this design is not final and this field is 439 subject to change in the future.' 440 type: string 441 kind: 442 description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' 443 type: string 444 name: 445 description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names' 446 type: string 447 namespace: 448 description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/' 449 type: string 450 resourceVersion: 451 description: 'Specific resourceVersion to which this reference 452 is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency' 453 type: string 454 uid: 455 description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids' 456 type: string 457 type: object 458 x-kubernetes-map-type: atomic 459 linkLicenseUrl: 460 description: LinkLicenseUrl contains the URL which the system administrator 461 must open in order to link their https://modela.ai account to the 462 Modela Operator. Once linked, the Modela Operator will automatically 463 fetch the license of their account in the case that will it will 464 expire. 465 type: string 466 phase: 467 description: The current phase of a Modela installation 468 type: string 469 type: object 470 type: object 471 served: true 472 storage: true 473 subresources: 474 status: {}