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: {}