You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2430 lines
77 KiB
2430 lines
77 KiB
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"affinity": {
|
|
"additionalProperties": true,
|
|
"description": "For more information checkout: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity",
|
|
"required": [],
|
|
"title": "affinity",
|
|
"type": "object"
|
|
},
|
|
"artifactRoot": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"defaultArtifactRoot": {
|
|
"default": "./mlruns",
|
|
"description": "Specifies the default artifact root.",
|
|
"required": [],
|
|
"title": "defaultArtifactRoot",
|
|
"type": "string"
|
|
},
|
|
"defaultArtifactsDestination": {
|
|
"default": "./mlartifacts",
|
|
"description": "Specifies the default artifacts destination",
|
|
"required": [],
|
|
"title": "defaultArtifactsDestination",
|
|
"type": "string"
|
|
},
|
|
"azureBlob": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"accessKey": {
|
|
"default": "",
|
|
"description": "Azure Cloud Storage Account Access Key for the container",
|
|
"required": [],
|
|
"title": "accessKey",
|
|
"type": "string"
|
|
},
|
|
"connectionString": {
|
|
"default": "",
|
|
"description": "Azure Cloud Connection String for the container. Only connectionString or accessKey required",
|
|
"required": [],
|
|
"title": "connectionString",
|
|
"type": "string"
|
|
},
|
|
"container": {
|
|
"default": "",
|
|
"description": "Azure blob container name",
|
|
"required": [],
|
|
"title": "container",
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Specifies if you want to use Azure Blob Storage Mlflow Artifact Root",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"path": {
|
|
"default": "",
|
|
"description": "Azure blob container folder. If you want to use root level, please don't set anything.",
|
|
"required": [],
|
|
"title": "path",
|
|
"type": "string"
|
|
},
|
|
"storageAccount": {
|
|
"default": "",
|
|
"description": "Azure storage account name",
|
|
"required": [],
|
|
"title": "storageAccount",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"container",
|
|
"storageAccount",
|
|
"path",
|
|
"connectionString",
|
|
"accessKey"
|
|
],
|
|
"title": "azureBlob",
|
|
"type": "object"
|
|
},
|
|
"gcs": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"bucket": {
|
|
"default": "",
|
|
"description": "Google Cloud Storage bucket name",
|
|
"required": [],
|
|
"title": "bucket",
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Specifies if you want to use Google Cloud Storage Mlflow Artifact Root",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"path": {
|
|
"default": "",
|
|
"description": "Google Cloud Storage bucket folder. If you want to use root level, please don't set anything.",
|
|
"required": [],
|
|
"title": "path",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["enabled", "bucket", "path"],
|
|
"title": "gcs",
|
|
"type": "object"
|
|
},
|
|
"proxiedArtifactStorage": {
|
|
"default": false,
|
|
"description": "Specifies if you want to enable proxied artifact storage access",
|
|
"required": [],
|
|
"title": "proxiedArtifactStorage",
|
|
"type": "boolean"
|
|
},
|
|
"s3": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"awsAccessKeyId": {
|
|
"default": "",
|
|
"description": "AWS IAM user AWS_ACCESS_KEY_ID which has attached policy for access to the S3 bucket",
|
|
"required": [],
|
|
"title": "awsAccessKeyId",
|
|
"type": "string"
|
|
},
|
|
"awsSecretAccessKey": {
|
|
"default": "",
|
|
"description": "AWS IAM user AWS_SECRET_ACCESS_KEY which has attached policy for access to the S3 bucket",
|
|
"required": [],
|
|
"title": "awsSecretAccessKey",
|
|
"type": "string"
|
|
},
|
|
"existingSecret": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "Existing secret for AWS IAM user AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY secrets.",
|
|
"properties": {
|
|
"name": {
|
|
"default": "",
|
|
"description": "This is for setting up the AWS IAM user secrets existing secret name.",
|
|
"required": [],
|
|
"title": "name",
|
|
"type": "string"
|
|
},
|
|
"keyOfAccessKeyId": {
|
|
"default": "",
|
|
"description": "This is for setting up the key for AWS_ACCESS_KEY_ID secret. If it's set, awsAccessKeyId will be ignored.",
|
|
"required": [],
|
|
"title": "keyOfAccessKeyId",
|
|
"type": "string"
|
|
},
|
|
"keyOfSecretAccessKey": {
|
|
"default": "",
|
|
"description": "This is for setting up the key for AWS_SECRET_ACCESS_KEY secret. If it's set, awsSecretAccessKey will be ignored.",
|
|
"required": [],
|
|
"title": "keyOfSecretAccessKey",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"keyOfAccessKeyId",
|
|
"keyOfSecretAccessKey"
|
|
]
|
|
},
|
|
"bucket": {
|
|
"default": "",
|
|
"description": "S3 bucket name",
|
|
"required": [],
|
|
"title": "bucket",
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Specifies if you want to use AWS S3 Mlflow Artifact Root",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"path": {
|
|
"default": "",
|
|
"description": "S3 bucket folder. If you want to use root level, please don't set anything.",
|
|
"required": [],
|
|
"title": "path",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"bucket",
|
|
"path",
|
|
"awsAccessKeyId",
|
|
"awsSecretAccessKey",
|
|
"existingSecret"
|
|
],
|
|
"title": "s3",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": ["proxiedArtifactStorage", "defaultArtifactRoot", "defaultArtifactsDestination", "azureBlob", "s3", "gcs"],
|
|
"title": "artifactRoot",
|
|
"type": "object"
|
|
},
|
|
"backendStore": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"defaultSqlitePath": {
|
|
"default": ":memory:",
|
|
"description": "Specifies the default sqlite path",
|
|
"required": [],
|
|
"title": "defaultSqlitePath",
|
|
"type": "string"
|
|
},
|
|
"databaseConnectionCheck": {
|
|
"default": false,
|
|
"description": "Add an additional init container, which checks for database availability",
|
|
"required": [],
|
|
"title": "databaseConnectionCheck",
|
|
"type": "boolean"
|
|
},
|
|
"databaseMigration": {
|
|
"default": false,
|
|
"description": "Specifies if you want to run database migration",
|
|
"required": [],
|
|
"title": "databaseMigration",
|
|
"type": "boolean"
|
|
},
|
|
"mysql": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"database": {
|
|
"default": "",
|
|
"description": "mlflow database name created before in the mysql instance",
|
|
"required": [],
|
|
"title": "database",
|
|
"type": "string"
|
|
},
|
|
"driver": {
|
|
"default": "pymysql",
|
|
"description": "mysql database connection driver. e.g.: \"pymysql\"",
|
|
"required": [],
|
|
"title": "driver",
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Specifies if you want to use mysql backend storage",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"host": {
|
|
"default": "",
|
|
"description": "MySQL host address. e.g. your Amazon RDS for MySQL",
|
|
"required": [],
|
|
"title": "host",
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"default": "",
|
|
"description": "mysql database user password which can access to mlflow database",
|
|
"required": [],
|
|
"title": "password",
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"default": 3306,
|
|
"description": "MySQL service port",
|
|
"required": [],
|
|
"title": "port",
|
|
"type": "integer"
|
|
},
|
|
"user": {
|
|
"default": "",
|
|
"description": "mysql database user name which can access to mlflow database",
|
|
"required": [],
|
|
"title": "user",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"host",
|
|
"port",
|
|
"database",
|
|
"user",
|
|
"password",
|
|
"driver"
|
|
],
|
|
"title": "mysql",
|
|
"type": "object"
|
|
},
|
|
"postgres": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"database": {
|
|
"default": "",
|
|
"description": "mlflow database name created before in the postgres instance",
|
|
"required": [],
|
|
"title": "database",
|
|
"type": "string"
|
|
},
|
|
"driver": {
|
|
"default": "",
|
|
"description": "postgres database connection driver. e.g.: \"psycopg2\"",
|
|
"required": [],
|
|
"title": "driver",
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Specifies if you want to use postgres backend storage",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"host": {
|
|
"default": "",
|
|
"description": "Postgres host address. e.g. your RDS or Azure Postgres Service endpoint",
|
|
"required": [],
|
|
"title": "host",
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"default": "",
|
|
"description": "postgres database user password which can access to mlflow database",
|
|
"required": [],
|
|
"title": "password",
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"default": 5432,
|
|
"description": "Postgres service port",
|
|
"required": [],
|
|
"title": "port",
|
|
"type": "integer"
|
|
},
|
|
"user": {
|
|
"default": "",
|
|
"description": "postgres database user name which can access to mlflow database",
|
|
"required": [],
|
|
"title": "user",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"host",
|
|
"port",
|
|
"database",
|
|
"user",
|
|
"password",
|
|
"driver"
|
|
],
|
|
"title": "postgres",
|
|
"type": "object"
|
|
},
|
|
"mssql": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"database": {
|
|
"default": "",
|
|
"description": "mlflow database name created before in the mssql instance",
|
|
"required": [],
|
|
"title": "database",
|
|
"type": "string"
|
|
},
|
|
"driver": {
|
|
"default": "pymssql",
|
|
"description": "mssql database connection driver. e.g.: \"pymssql\"",
|
|
"required": [],
|
|
"title": "driver",
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Specifies if you want to use mssql backend storage",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"host": {
|
|
"default": "",
|
|
"description": "mssql host address",
|
|
"required": [],
|
|
"title": "host",
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"default": "",
|
|
"description": "mssql database user password which can access to mlflow database",
|
|
"required": [],
|
|
"title": "password",
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"default": 1433,
|
|
"description": "mssql service port",
|
|
"required": [],
|
|
"title": "port",
|
|
"type": "integer"
|
|
},
|
|
"user": {
|
|
"default": "",
|
|
"description": "mssql database user name which can access to mlflow database",
|
|
"required": [],
|
|
"title": "user",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"host",
|
|
"port",
|
|
"database",
|
|
"user",
|
|
"password",
|
|
"driver"
|
|
],
|
|
"title": "mssql",
|
|
"type": "object"
|
|
},
|
|
"existingDatabaseSecret": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "Specifies if you want to use an existing database secret.",
|
|
"properties": {
|
|
"name": {
|
|
"default": "",
|
|
"description": "The name of the existing database secret.",
|
|
"required": [],
|
|
"title": "name",
|
|
"type": "string"
|
|
},
|
|
"usernameKey": {
|
|
"default": "username",
|
|
"description": "The key of the username in the existing database secret.",
|
|
"required": [],
|
|
"title": "usernameKey",
|
|
"type": "string"
|
|
},
|
|
"passwordKey": {
|
|
"default": "password",
|
|
"description": "The key of the password in the existing database secret.",
|
|
"required": [],
|
|
"title": "passwordKey",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["name", "usernameKey", "passwordKey"],
|
|
"title": "existingDatabaseSecret"
|
|
}
|
|
},
|
|
"required": [
|
|
"databaseMigration",
|
|
"databaseConnectionCheck",
|
|
"defaultSqlitePath",
|
|
"postgres",
|
|
"mysql",
|
|
"existingDatabaseSecret"
|
|
],
|
|
"title": "backendStore",
|
|
"type": "object"
|
|
},
|
|
"postgresql": {
|
|
"additionalProperties": true,
|
|
"description": "Bitnami PostgreSQL configuration",
|
|
"properties": {
|
|
"architecture": {
|
|
"default": "standalone",
|
|
"required": [],
|
|
"title": "architecture",
|
|
"type": "string"
|
|
},
|
|
"auth": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"database": {
|
|
"default": "mlflow",
|
|
"description": "The name of the PostgreSQL database.",
|
|
"required": [],
|
|
"title": "database",
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "password",
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "username",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["username", "password", "database"],
|
|
"title": "auth",
|
|
"type": "object"
|
|
},
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Enable postgresql",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"primary": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"persistence": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"enabled": {
|
|
"default": true,
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"existingClaim": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "existingClaim",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["enabled", "existingClaim"],
|
|
"title": "persistence",
|
|
"type": "object"
|
|
},
|
|
"service": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"ports": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"postgresql": {
|
|
"default": 5432,
|
|
"required": [],
|
|
"title": "postgresql",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": ["postgresql"],
|
|
"title": "ports",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": ["ports"],
|
|
"title": "service",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": ["service", "persistence"],
|
|
"title": "primary",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": ["enabled", "architecture", "primary", "auth"],
|
|
"title": "postgresql",
|
|
"type": "object"
|
|
},
|
|
"mysql": {
|
|
"additionalProperties": true,
|
|
"description": "Bitnami MySQL configuration",
|
|
"properties": {
|
|
"architecture": {
|
|
"default": "standalone",
|
|
"required": [],
|
|
"title": "architecture",
|
|
"type": "string"
|
|
},
|
|
"auth": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"database": {
|
|
"default": "mlflow",
|
|
"description": "The name of the MySQL database.",
|
|
"required": [],
|
|
"title": "database",
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "password",
|
|
"type": "string"
|
|
},
|
|
"username": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "username",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["username", "password", "database"],
|
|
"title": "auth",
|
|
"type": "object"
|
|
},
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Enable mysql",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"primary": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"persistence": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"enabled": {
|
|
"default": true,
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"existingClaim": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "existingClaim",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["enabled", "existingClaim"],
|
|
"title": "persistence",
|
|
"type": "object"
|
|
},
|
|
"service": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"ports": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"mysql": {
|
|
"default": 3306,
|
|
"required": [],
|
|
"title": "mysql",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": ["mysql"],
|
|
"title": "ports",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": ["ports"],
|
|
"title": "service",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": ["service", "persistence"],
|
|
"title": "primary",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": ["enabled", "architecture", "primary", "auth"],
|
|
"title": "mysql",
|
|
"type": "object"
|
|
},
|
|
"extraArgs": {
|
|
"additionalProperties": true,
|
|
"description": "A map of arguments and values to pass to the `mlflow server` command. Keys must be camelcase. Helm will turn them to kebabcase style.",
|
|
"properties": {
|
|
"workers": {
|
|
"default": "4",
|
|
"required": [],
|
|
"title": "workers",
|
|
"type": "string"
|
|
},
|
|
"staticPrefix": {
|
|
"default": "/mlflow",
|
|
"required": [],
|
|
"title": "staticPrefix",
|
|
"type": "string"
|
|
},
|
|
"gunicornOpts": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "gunicornOpts",
|
|
"type": "string"
|
|
},
|
|
"waitressOpts": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "waitressOpts",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "extraArgs",
|
|
"type": "object"
|
|
},
|
|
"extraContainers": {
|
|
"description": "Extra containers for the mlflow pod",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "extraContainers",
|
|
"type": "array"
|
|
},
|
|
"extraEnvVars": {
|
|
"additionalProperties": true,
|
|
"description": "Extra environment variables",
|
|
"properties": {
|
|
"MLFLOW_S3_IGNORE_TLS": {
|
|
"default": "true",
|
|
"required": [],
|
|
"title": "MLFLOW_S3_IGNORE_TLS",
|
|
"type": ["boolean", "string"]
|
|
},
|
|
"MLFLOW_S3_UPLOAD_EXTRA_ARGS": {
|
|
"default": "{\"ServerSideEncryption\": \"aws:kms\", \"SSEKMSKeyId\": \"1234\"}",
|
|
"required": [],
|
|
"title": "MLFLOW_S3_UPLOAD_EXTRA_ARGS",
|
|
"type": ["object", "string"]
|
|
},
|
|
"AWS_DEFAULT_REGION": {
|
|
"default": "us-east-1",
|
|
"required": [],
|
|
"title": "AWS_DEFAULT_REGION",
|
|
"type": "string"
|
|
},
|
|
"MLFLOW_S3_ENDPOINT_URL": {
|
|
"default": "http://1.2.3.4:9000",
|
|
"required": [],
|
|
"title": "MLFLOW_S3_ENDPOINT_URL",
|
|
"type": "string"
|
|
},
|
|
"AWS_CA_BUNDLE": {
|
|
"default": "/some/ca/bundle.pem",
|
|
"required": [],
|
|
"title": "AWS_CA_BUNDLE",
|
|
"type": "string"
|
|
},
|
|
"MLFLOW_GCS_DEFAULT_TIMEOUT": {
|
|
"default": "60",
|
|
"description": "Sets the standard timeout for transfer operations in seconds (Default: 60). Use -1 for indefinite timeout.",
|
|
"required": [],
|
|
"title": "MLFLOW_GCS_DEFAULT_TIMEOUT",
|
|
"type": "string"
|
|
},
|
|
"MLFLOW_GCS_UPLOAD_CHUNK_SIZE": {
|
|
"default": "104857600",
|
|
"description": "Sets the standard upload chunk size for bigger files in bytes (Default: 104857600 ≙ 100MiB), must be multiple of 256 KB.",
|
|
"required": [],
|
|
"title": "MLFLOW_GCS_UPLOAD_CHUNK_SIZE",
|
|
"type": "string"
|
|
},
|
|
"MLFLOW_GCS_DOWNLOAD_CHUNK_SIZE": {
|
|
"default": "104857600",
|
|
"description": "Sets the standard download chunk size for bigger files in bytes (Default: 104857600 ≙ 100MiB), must be multiple of 256 K",
|
|
"required": [],
|
|
"title": "MLFLOW_GCS_DOWNLOAD_CHUNK_SIZE",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "extraEnvVars",
|
|
"type": "object"
|
|
},
|
|
"extraFlags": {
|
|
"description": "A list of flags to pass to `mlflow server` command\nItems must be camelcase. Helm will turn them to kebabcase style.",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "extraFlags",
|
|
"type": "array"
|
|
},
|
|
"extraSecretNamesForEnvFrom": {
|
|
"description": "Extra secrets for environment variables",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "extraSecretNamesForEnvFrom",
|
|
"type": "array"
|
|
},
|
|
"extraVolumeMounts": {
|
|
"description": "Extra Volume Mounts for the mlflow container",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "extraVolumeMounts",
|
|
"type": "array"
|
|
},
|
|
"extraVolumes": {
|
|
"description": "Extra Volumes for the pod",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "extraVolumes",
|
|
"type": "array"
|
|
},
|
|
"fullnameOverride": {
|
|
"default": "",
|
|
"description": "String to override the default generated fullname",
|
|
"required": [],
|
|
"title": "fullnameOverride",
|
|
"type": "string"
|
|
},
|
|
"global": {
|
|
"additionalProperties": true,
|
|
"description": "Global values are values that can be accessed from any chart or subchart by exactly the same name.",
|
|
"required": [],
|
|
"title": "global",
|
|
"type": "object"
|
|
},
|
|
"image": {
|
|
"additionalProperties": false,
|
|
"description": "Image of mlflow",
|
|
"properties": {
|
|
"pullPolicy": {
|
|
"default": "IfNotPresent",
|
|
"description": "The docker image pull policy",
|
|
"required": [],
|
|
"title": "pullPolicy",
|
|
"type": "string",
|
|
"enum": ["IfNotPresent", "Never", "Always"]
|
|
},
|
|
"repository": {
|
|
"default": "burakince/mlflow",
|
|
"description": "The docker image repository to use",
|
|
"required": [],
|
|
"title": "repository",
|
|
"type": "string"
|
|
},
|
|
"tag": {
|
|
"default": "",
|
|
"description": "The docker image tag to use. Default app version",
|
|
"required": [],
|
|
"title": "tag",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["repository", "pullPolicy", "tag"],
|
|
"title": "image",
|
|
"type": "object"
|
|
},
|
|
"initImages": {
|
|
"additionalProperties": false,
|
|
"description": "mlflow init images",
|
|
"properties": {
|
|
"dbchecker": {
|
|
"additionalProperties": false,
|
|
"description": "dbchecker init container image configuration",
|
|
"properties": {
|
|
"repository": {
|
|
"default": "busybox",
|
|
"description": "dbchecker init container image repository to use",
|
|
"required": [],
|
|
"title": "repository",
|
|
"type": "string"
|
|
},
|
|
"pullPolicy": {
|
|
"default": "IfNotPresent",
|
|
"description": "dbchecker init container image pull policy",
|
|
"required": [],
|
|
"title": "pullPolicy",
|
|
"type": "string",
|
|
"enum": ["IfNotPresent", "Never", "Always"]
|
|
},
|
|
"tag": {
|
|
"default": "1.32",
|
|
"description": "dbchecker init container image tag to use",
|
|
"required": [],
|
|
"title": "tag",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["repository", "pullPolicy", "tag"],
|
|
"title": "dbchecker",
|
|
"type": "object"
|
|
},
|
|
"mlflowDbMigration": {
|
|
"additionalProperties": false,
|
|
"description": "mlflow-db-migration init container image configuration",
|
|
"properties": {
|
|
"repository": {
|
|
"default": "burakince/mlflow",
|
|
"description": "mlflow-db-migration init container image repository to use",
|
|
"required": [],
|
|
"title": "repository",
|
|
"type": "string"
|
|
},
|
|
"pullPolicy": {
|
|
"default": "IfNotPresent",
|
|
"description": "mlflow-db-migration init container image pull policy",
|
|
"required": [],
|
|
"title": "pullPolicy",
|
|
"type": "string",
|
|
"enum": ["IfNotPresent", "Never", "Always"]
|
|
},
|
|
"tag": {
|
|
"default": "",
|
|
"description": "mlflow-db-migration init container image tag to use. Default app version",
|
|
"required": [],
|
|
"title": "tag",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["repository", "pullPolicy", "tag"],
|
|
"title": "mlflowDbMigration",
|
|
"type": "object"
|
|
},
|
|
"iniFileInitializer": {
|
|
"additionalProperties": false,
|
|
"description": "ini-file-initializer init container image configuration",
|
|
"properties": {
|
|
"repository": {
|
|
"default": "busybox",
|
|
"description": "ini-file-initializer init container image repository to use",
|
|
"required": [],
|
|
"title": "repository",
|
|
"type": "string"
|
|
},
|
|
"pullPolicy": {
|
|
"default": "IfNotPresent",
|
|
"description": "ini-file-initializer init container image pull policy",
|
|
"required": [],
|
|
"title": "pullPolicy",
|
|
"type": "string",
|
|
"enum": ["IfNotPresent", "Never", "Always"]
|
|
},
|
|
"tag": {
|
|
"default": "1.32",
|
|
"description": "ini-file-initializer init container image tag to use",
|
|
"required": [],
|
|
"title": "tag",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["repository", "pullPolicy", "tag"],
|
|
"title": "iniFileInitializer",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": ["dbchecker", "mlflowDbMigration", "iniFileInitializer"],
|
|
"title": "initImages",
|
|
"type": "object"
|
|
},
|
|
"imagePullSecrets": {
|
|
"description": "Image pull secrets for private docker registry usages",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "imagePullSecrets",
|
|
"type": "array"
|
|
},
|
|
"ingress": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"annotations": {
|
|
"additionalProperties": true,
|
|
"description": "Additional ingress annotations",
|
|
"required": [],
|
|
"title": "annotations",
|
|
"type": "object"
|
|
},
|
|
"className": {
|
|
"default": "",
|
|
"description": "New style ingress class name. Only possible if you use K8s 1.18.0 or later version",
|
|
"required": [],
|
|
"title": "className",
|
|
"type": "string"
|
|
},
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Specifies if you want to create an ingress access",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"hosts": {
|
|
"description": "kubernetes.io/ingress.class: nginx\nkubernetes.io/tls-acme: \"true\"",
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"host": {
|
|
"default": "chart-example.local",
|
|
"required": [],
|
|
"title": "host",
|
|
"type": "string"
|
|
},
|
|
"paths": {
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"path": {
|
|
"default": "/",
|
|
"required": [],
|
|
"title": "path",
|
|
"type": "string"
|
|
},
|
|
"pathType": {
|
|
"default": "ImplementationSpecific",
|
|
"description": "Ingress path type",
|
|
"required": [],
|
|
"title": "pathType",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["path", "pathType"],
|
|
"type": "object"
|
|
}
|
|
],
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "paths",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": ["host", "paths"],
|
|
"type": "object"
|
|
}
|
|
],
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "hosts",
|
|
"type": "array"
|
|
},
|
|
"tls": {
|
|
"description": "Ingress tls configuration for https access",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "tls",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": ["enabled", "className", "annotations", "hosts", "tls"],
|
|
"title": "ingress",
|
|
"type": "object"
|
|
},
|
|
"initContainers": {
|
|
"description": "Init Containers for Mlflow Pod",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "initContainers",
|
|
"type": "array"
|
|
},
|
|
"livenessProbe": {
|
|
"additionalProperties": true,
|
|
"description": "Liveness probe configurations. Please look to [here](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes).",
|
|
"properties": {
|
|
"failureThreshold": {
|
|
"default": 5,
|
|
"required": [],
|
|
"title": "failureThreshold",
|
|
"type": "integer"
|
|
},
|
|
"initialDelaySeconds": {
|
|
"default": 10,
|
|
"required": [],
|
|
"title": "initialDelaySeconds",
|
|
"type": "integer"
|
|
},
|
|
"periodSeconds": {
|
|
"default": 30,
|
|
"required": [],
|
|
"title": "periodSeconds",
|
|
"type": "integer"
|
|
},
|
|
"timeoutSeconds": {
|
|
"default": 3,
|
|
"required": [],
|
|
"title": "timeoutSeconds",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "livenessProbe",
|
|
"type": "object"
|
|
},
|
|
"nameOverride": {
|
|
"default": "",
|
|
"description": "String to override the default generated name",
|
|
"required": [],
|
|
"title": "nameOverride",
|
|
"type": "string"
|
|
},
|
|
"nodeSelector": {
|
|
"additionalProperties": true,
|
|
"description": "Set the node selector for the pod.",
|
|
"required": [],
|
|
"title": "nodeSelector",
|
|
"type": "object"
|
|
},
|
|
"podAnnotations": {
|
|
"additionalProperties": true,
|
|
"description": "Annotations for the pod",
|
|
"required": [],
|
|
"title": "podAnnotations",
|
|
"type": "object"
|
|
},
|
|
"extraPodLabels": {
|
|
"additionalProperties": true,
|
|
"description": "Extra labels for the pod",
|
|
"required": [],
|
|
"title": "extraPodLabels",
|
|
"type": "object"
|
|
},
|
|
"podSecurityContext": {
|
|
"additionalProperties": true,
|
|
"description": "Security context for all pod",
|
|
"properties": {
|
|
"runAsUser": {
|
|
"default": 1000,
|
|
"required": [],
|
|
"title": "runAsUser",
|
|
"type": "integer"
|
|
},
|
|
"runAsGroup": {
|
|
"default": 3000,
|
|
"required": [],
|
|
"title": "runAsGroup",
|
|
"type": "integer"
|
|
},
|
|
"fsGroup": {
|
|
"default": 2000,
|
|
"required": [],
|
|
"title": "fsGroup",
|
|
"type": "integer"
|
|
},
|
|
"supplementalGroups": {
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "runAsUser",
|
|
"type": "array"
|
|
},
|
|
"fsGroupChangePolicy": {
|
|
"default": "OnRootMismatch",
|
|
"required": [],
|
|
"title": "fsGroupChangePolicy",
|
|
"type": "string",
|
|
"enum": ["OnRootMismatch", "Always"]
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "podSecurityContext",
|
|
"type": "object"
|
|
},
|
|
"readinessProbe": {
|
|
"additionalProperties": true,
|
|
"description": "Readiness probe configurations. Please look to [here](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#configure-probes).",
|
|
"properties": {
|
|
"failureThreshold": {
|
|
"default": 5,
|
|
"required": [],
|
|
"title": "failureThreshold",
|
|
"type": "integer"
|
|
},
|
|
"initialDelaySeconds": {
|
|
"default": 10,
|
|
"required": [],
|
|
"title": "initialDelaySeconds",
|
|
"type": "integer"
|
|
},
|
|
"periodSeconds": {
|
|
"default": 30,
|
|
"required": [],
|
|
"title": "periodSeconds",
|
|
"type": "integer"
|
|
},
|
|
"timeoutSeconds": {
|
|
"default": 3,
|
|
"required": [],
|
|
"title": "timeoutSeconds",
|
|
"type": "integer"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "readinessProbe",
|
|
"type": "object"
|
|
},
|
|
"replicaCount": {
|
|
"default": 1,
|
|
"description": "Numbers of replicas",
|
|
"required": [],
|
|
"title": "replicaCount",
|
|
"type": "integer"
|
|
},
|
|
"resources": {
|
|
"additionalProperties": true,
|
|
"description": "This block is for setting up the resource management for the pod more information can be found here: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/",
|
|
"properties": {
|
|
"limits": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"cpu": {
|
|
"default": "500m",
|
|
"required": [],
|
|
"title": "cpu",
|
|
"type": "string"
|
|
},
|
|
"memory": {
|
|
"default": "2Gi",
|
|
"required": [],
|
|
"title": "memory",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "limits",
|
|
"type": "object"
|
|
},
|
|
"requests": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"cpu": {
|
|
"default": "200m",
|
|
"required": [],
|
|
"title": "cpu",
|
|
"type": "string"
|
|
},
|
|
"memory": {
|
|
"default": "1Gi",
|
|
"required": [],
|
|
"title": "memory",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "requests",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "resources",
|
|
"type": "object"
|
|
},
|
|
"securityContext": {
|
|
"additionalProperties": true,
|
|
"description": "Security context for the mlflow container",
|
|
"properties": {
|
|
"allowPrivilegeEscalation": {
|
|
"default": false,
|
|
"required": [],
|
|
"title": "allowPrivilegeEscalation",
|
|
"type": "boolean"
|
|
},
|
|
"readOnlyRootFilesystem": {
|
|
"default": true,
|
|
"required": [],
|
|
"title": "readOnlyRootFilesystem",
|
|
"type": "boolean"
|
|
},
|
|
"runAsNonRoot": {
|
|
"default": true,
|
|
"required": [],
|
|
"title": "runAsNonRoot",
|
|
"type": "boolean"
|
|
},
|
|
"runAsUser": {
|
|
"default": 1000,
|
|
"required": [],
|
|
"title": "runAsUser",
|
|
"type": "integer"
|
|
},
|
|
"capabilities": {
|
|
"additionalProperties": true,
|
|
"properties": {
|
|
"drop": {
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "drop",
|
|
"type": "array"
|
|
},
|
|
"add": {
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "add",
|
|
"type": "array"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "capabilities",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "securityContext",
|
|
"type": "object"
|
|
},
|
|
"service": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"default": true,
|
|
"description": "Specifies if you want to create a service",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"annotations": {
|
|
"additionalProperties": true,
|
|
"description": "Additional service annotations",
|
|
"required": [],
|
|
"title": "annotations",
|
|
"type": "object"
|
|
},
|
|
"name": {
|
|
"default": "http",
|
|
"description": "Default Service name",
|
|
"required": [],
|
|
"title": "name",
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"default": 5000,
|
|
"description": "Default Service port",
|
|
"required": [],
|
|
"title": "port",
|
|
"type": "integer"
|
|
},
|
|
"containerPort": {
|
|
"default": 5000,
|
|
"description": "Default container port",
|
|
"required": [],
|
|
"title": "containerPort",
|
|
"type": "integer"
|
|
},
|
|
"containerPortName": {
|
|
"default": "mlflow",
|
|
"description": "Default container port name",
|
|
"required": [],
|
|
"title": "containerPortName",
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"default": "ClusterIP",
|
|
"description": "Specifies what type of Service should be created",
|
|
"required": [],
|
|
"title": "type",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["enabled", "type", "port", "containerPort", "name", "containerPortName", "annotations"],
|
|
"title": "service",
|
|
"type": "object"
|
|
},
|
|
"log": {
|
|
"additionalProperties": true,
|
|
"description": "Mlflow logging settings",
|
|
"properties": {
|
|
"enabled": {
|
|
"default": true,
|
|
"description": "Specifies if you want to enable mlflow logging",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"level": {
|
|
"default": "info",
|
|
"description": "Mlflow logging level",
|
|
"required": [],
|
|
"title": "level",
|
|
"enum": ["debug", "info", "warning", "error", "critical"],
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["enabled", "level"],
|
|
"title": "log",
|
|
"type": "object"
|
|
},
|
|
"telemetry": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "Mlflow Usage Tracking settings. More information can be found here: https://mlflow.org/docs/latest/community/usage-tracking/",
|
|
"properties": {
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "Specifies if you want to enable collecting anonymized usage data about how core features of the platform are used.",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": ["enabled"],
|
|
"title": "telemetry"
|
|
},
|
|
"serviceAccount": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"annotations": {
|
|
"additionalProperties": true,
|
|
"description": "Annotations to add to the service account. AWS EKS users can assign role arn from here.\nPlease find more information from here:\nhttps://docs.aws.amazon.com/eks/latest/userguide/specify-service-account-role.html",
|
|
"required": [],
|
|
"title": "annotations",
|
|
"type": "object"
|
|
},
|
|
"automount": {
|
|
"default": true,
|
|
"description": "Automatically mount a ServiceAccount's API credentials?",
|
|
"required": [],
|
|
"title": "automount",
|
|
"type": "boolean"
|
|
},
|
|
"create": {
|
|
"default": true,
|
|
"description": "Specifies whether a ServiceAccount should be created",
|
|
"required": [],
|
|
"title": "create",
|
|
"type": "boolean"
|
|
},
|
|
"name": {
|
|
"default": "",
|
|
"description": "The name of the ServiceAccount to use.\nIf not set and create is true, a name is generated using the fullname template",
|
|
"required": [],
|
|
"title": "name",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["create", "automount", "annotations", "name"],
|
|
"title": "serviceAccount",
|
|
"type": "object"
|
|
},
|
|
"serviceMonitor": {
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "When set true then use a ServiceMonitor to configure scraping",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"interval": {
|
|
"default": "30s",
|
|
"description": "Set how frequently Prometheus should scrape",
|
|
"required": [],
|
|
"title": "interval",
|
|
"type": "string"
|
|
},
|
|
"labels": {
|
|
"additionalProperties": true,
|
|
"description": "Set labels for the ServiceMonitor, use this to define your scrape label for Prometheus Operator",
|
|
"properties": {
|
|
"release": {
|
|
"default": "prometheus",
|
|
"required": [],
|
|
"title": "release",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [],
|
|
"title": "labels",
|
|
"type": "object"
|
|
},
|
|
"metricRelabelings": {
|
|
"description": "Set of rules to relabel your exist metric labels",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "metricRelabelings",
|
|
"type": "array"
|
|
},
|
|
"namespace": {
|
|
"default": "monitoring",
|
|
"description": "Set the namespace the ServiceMonitor should be deployed",
|
|
"required": [],
|
|
"title": "namespace",
|
|
"type": "string"
|
|
},
|
|
"targetLabels": {
|
|
"description": "Set of labels to transfer on the Kubernetes Service onto the target.",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "targetLabels",
|
|
"type": "array"
|
|
},
|
|
"telemetryPath": {
|
|
"default": "/metrics",
|
|
"description": "Set path to mlflow telemetry-path",
|
|
"required": [],
|
|
"title": "telemetryPath",
|
|
"type": "string"
|
|
},
|
|
"timeout": {
|
|
"default": "10s",
|
|
"description": "Set timeout for scrape",
|
|
"required": [],
|
|
"title": "timeout",
|
|
"type": "string"
|
|
},
|
|
"useServicePort": {
|
|
"default": false,
|
|
"description": "When set true then use a service port. On default use a pod port.",
|
|
"required": [],
|
|
"title": "useServicePort",
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"useServicePort",
|
|
"namespace",
|
|
"interval",
|
|
"telemetryPath",
|
|
"labels",
|
|
"timeout",
|
|
"targetLabels",
|
|
"metricRelabelings"
|
|
],
|
|
"title": "serviceMonitor",
|
|
"type": "object"
|
|
},
|
|
"strategy": {
|
|
"additionalProperties": true,
|
|
"description": "This will set the deployment strategy more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy",
|
|
"properties": {
|
|
"type": {
|
|
"default": "RollingUpdate",
|
|
"required": [],
|
|
"title": "type",
|
|
"type": "string",
|
|
"enum": ["RollingUpdate", "Recreate"]
|
|
}
|
|
},
|
|
"required": ["type"],
|
|
"title": "strategy",
|
|
"type": "object"
|
|
},
|
|
"tolerations": {
|
|
"description": "Set the tolerations for the pod.",
|
|
"items": {
|
|
"required": []
|
|
},
|
|
"required": [],
|
|
"title": "tolerations",
|
|
"type": "array"
|
|
},
|
|
"flaskServerSecretKey": {
|
|
"default": "",
|
|
"description": "Mlflow flask server secret key",
|
|
"required": [],
|
|
"title": "flaskServerSecretKey",
|
|
"type": "string"
|
|
},
|
|
"auth": {
|
|
"additionalProperties": false,
|
|
"description": "Mlflow authentication settings",
|
|
"properties": {
|
|
"enabled": {
|
|
"default": "false",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"adminUsername": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "adminUsername",
|
|
"type": "string"
|
|
},
|
|
"adminPassword": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "adminPassword",
|
|
"type": "string"
|
|
},
|
|
"existingAdminSecret": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "Specifies if you want to use an existing admin credentials secret for auth. If it's set, adminUsername and adminPassword will be ignored.",
|
|
"properties": {
|
|
"name": {
|
|
"default": "",
|
|
"description": "The name of the existing admin credentials secret.",
|
|
"required": [],
|
|
"title": "name",
|
|
"type": "string"
|
|
},
|
|
"usernameKey": {
|
|
"default": "username",
|
|
"description": "The key of the admin username in the existing admin credentials secret.",
|
|
"required": [],
|
|
"title": "usernameKey",
|
|
"type": "string"
|
|
},
|
|
"passwordKey": {
|
|
"default": "password",
|
|
"description": "The key of the admin password in the existing admin credentials secret.",
|
|
"required": [],
|
|
"title": "passwordKey",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["name", "usernameKey", "passwordKey"],
|
|
"title": "existingAdminSecret"
|
|
},
|
|
"defaultPermission": {
|
|
"default": "READ",
|
|
"required": [],
|
|
"title": "defaultPermission",
|
|
"type": "string",
|
|
"enum": ["READ", "EDIT", "MANAGE", "NO_PERMISSIONS"]
|
|
},
|
|
"appName": {
|
|
"default": "basic-auth",
|
|
"required": [],
|
|
"title": "appName",
|
|
"type": "string"
|
|
},
|
|
"authorizationFunction": {
|
|
"default": "mlflow.server.auth:authenticate_request_basic_auth",
|
|
"required": [],
|
|
"title": "authorizationFunction",
|
|
"type": "string"
|
|
},
|
|
"sqliteFile": {
|
|
"default": "basic_auth.db",
|
|
"required": [],
|
|
"title": "sqliteFile",
|
|
"type": "string"
|
|
},
|
|
"sqliteFullPath": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "sqliteFullPath",
|
|
"type": "string"
|
|
},
|
|
"configPath": {
|
|
"default": "/etc/mlflow/",
|
|
"required": [],
|
|
"title": "configPath",
|
|
"type": "string"
|
|
},
|
|
"configFile": {
|
|
"default": "basic_auth.ini",
|
|
"required": [],
|
|
"title": "configFile",
|
|
"type": "string"
|
|
},
|
|
"postgres": {
|
|
"additionalProperties": false,
|
|
"description": "PostgreSQL based centrilised authentication database",
|
|
"properties": {
|
|
"enabled": {
|
|
"default": "false",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"host": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "host",
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"default": 5432,
|
|
"required": [],
|
|
"title": "port",
|
|
"type": "integer"
|
|
},
|
|
"database": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "database",
|
|
"type": "string"
|
|
},
|
|
"user": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "user",
|
|
"type": "string"
|
|
},
|
|
"password": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "password",
|
|
"type": "string"
|
|
},
|
|
"driver": {
|
|
"default": "",
|
|
"required": [],
|
|
"title": "driver",
|
|
"type": "string"
|
|
},
|
|
"existingSecret": {
|
|
"additionalProperties": false,
|
|
"type": "object",
|
|
"description": "Specifies if you want to use an existing database secret for auth. If it's set, user and password will be ignored.",
|
|
"properties": {
|
|
"name": {
|
|
"default": "",
|
|
"description": "The name of the existing database secret.",
|
|
"required": [],
|
|
"title": "name",
|
|
"type": "string"
|
|
},
|
|
"usernameKey": {
|
|
"default": "username",
|
|
"description": "The key of the username in the existing database secret.",
|
|
"required": [],
|
|
"title": "usernameKey",
|
|
"type": "string"
|
|
},
|
|
"passwordKey": {
|
|
"default": "password",
|
|
"description": "The key of the password in the existing database secret.",
|
|
"required": [],
|
|
"title": "passwordKey",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["name", "usernameKey", "passwordKey"],
|
|
"title": "existingSecret"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"host",
|
|
"port",
|
|
"database",
|
|
"user",
|
|
"password",
|
|
"driver",
|
|
"existingSecret"
|
|
],
|
|
"title": "postgres",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"adminUsername",
|
|
"adminPassword",
|
|
"existingAdminSecret",
|
|
"defaultPermission",
|
|
"appName",
|
|
"authorizationFunction",
|
|
"sqliteFile",
|
|
"sqliteFullPath",
|
|
"configPath",
|
|
"configFile",
|
|
"postgres"
|
|
],
|
|
"title": "auth",
|
|
"type": "object"
|
|
},
|
|
"ldapAuth": {
|
|
"additionalProperties": false,
|
|
"description": "Mlflow Basic Authentication with LDAP backend settings",
|
|
"properties": {
|
|
"enabled": {
|
|
"default": "false",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"uri": {
|
|
"default": "",
|
|
"description": "LDAP URI. e.g.: ldap://lldap:3890/dc=mlflow,dc=test",
|
|
"required": [],
|
|
"title": "uri",
|
|
"type": "string"
|
|
},
|
|
"tlsVerification": {
|
|
"default": "required",
|
|
"description": "TLS verification mode. Options: required, optional, none",
|
|
"required": [],
|
|
"title": "tlsVerification",
|
|
"type": "string",
|
|
"enum": ["required", "optional", "none"]
|
|
},
|
|
"lookupBind": {
|
|
"default": "",
|
|
"description": "LDAP Loopup Bind. e.g.: uid=%s,ou=people,dc=mlflow,dc=test",
|
|
"required": [],
|
|
"title": "lookupBind",
|
|
"type": "string"
|
|
},
|
|
"groupAttribute": {
|
|
"default": "dn",
|
|
"description": "LDAP group attribute",
|
|
"required": [],
|
|
"title": "groupAttribute",
|
|
"type": "string"
|
|
},
|
|
"groupAttributeKey": {
|
|
"default": "",
|
|
"description": "Optional group attribute key for Active Directory users. e.g.: attributes",
|
|
"required": [],
|
|
"title": "groupAttributeKey",
|
|
"type": "string"
|
|
},
|
|
"searchBaseDistinguishedName": {
|
|
"default": "",
|
|
"description": "LDAP base DN for the search. e.g.: ou=groups,dc=mlflow,dc=test",
|
|
"required": [],
|
|
"title": "searchBaseDistinguishedName",
|
|
"type": "string"
|
|
},
|
|
"searchFilter": {
|
|
"default": "(&(objectclass=groupOfUniqueNames)(uniquemember=%s))",
|
|
"description": "LDAP query filter for search",
|
|
"required": [],
|
|
"title": "searchFilter",
|
|
"type": "string"
|
|
},
|
|
"adminGroupDistinguishedName": {
|
|
"default": "",
|
|
"description": "LDAP DN for the admin group. e.g.: cn=test-admin,ou=groups,dc=mlflow,dc=test",
|
|
"required": [],
|
|
"title": "adminGroupDistinguishedName",
|
|
"type": "string"
|
|
},
|
|
"userGroupDistinguishedName": {
|
|
"default": "",
|
|
"description": "LDAP DN for the user group. e.g.: cn=test-user,ou=groups,dc=mlflow,dc=test",
|
|
"required": [],
|
|
"title": "userGroupDistinguishedName",
|
|
"type": "string"
|
|
},
|
|
"encodedTrustedCACertificate": {
|
|
"default": "",
|
|
"description": "Base64 encoded trusted CA certificate for LDAP server connection.",
|
|
"required": [],
|
|
"title": "encodedTrustedCACertificate",
|
|
"type": "string"
|
|
},
|
|
"externalSecretForTrustedCACertificate": {
|
|
"default": "",
|
|
"description": "External secret name for trusted CA certificate for LDAP server connection.",
|
|
"required": [],
|
|
"title": "externalSecretForTrustedCACertificate",
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"enabled",
|
|
"uri",
|
|
"tlsVerification",
|
|
"lookupBind",
|
|
"groupAttribute",
|
|
"groupAttributeKey",
|
|
"searchBaseDistinguishedName",
|
|
"searchFilter",
|
|
"adminGroupDistinguishedName",
|
|
"userGroupDistinguishedName"
|
|
],
|
|
"title": "ldapAuth",
|
|
"type": "object"
|
|
},
|
|
"autoscaling": {
|
|
"additionalProperties": false,
|
|
"description": "Autoscaling settings. Can be enabled only when backendStore is not sqlite and artifactRoot is one of blob storage systems.",
|
|
"properties": {
|
|
"enabled": {
|
|
"default": false,
|
|
"description": "If true, the number of replicas will be automatically scaled based on default metrics. On default, it will scale based on CPU and memory. For more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/",
|
|
"required": [],
|
|
"title": "enabled",
|
|
"type": "boolean"
|
|
},
|
|
"minReplicas": {
|
|
"default": 1,
|
|
"description": "The minimum number of replicas.",
|
|
"required": [],
|
|
"title": "minReplicas",
|
|
"type": "integer"
|
|
},
|
|
"maxReplicas": {
|
|
"default": 5,
|
|
"description": "The maximum number of replicas.",
|
|
"required": [],
|
|
"title": "maxReplicas",
|
|
"type": "integer"
|
|
},
|
|
"metrics": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"description": "The metrics to use for autoscaling.",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["type"],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["Resource", "Pods", "Object", "External"]
|
|
}
|
|
},
|
|
"oneOf": [
|
|
{
|
|
"properties": {
|
|
"type": { "const": "Resource" },
|
|
"resource": {
|
|
"type": "object",
|
|
"required": ["name", "target"],
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"enum": ["cpu", "memory"]
|
|
},
|
|
"target": {
|
|
"type": "object",
|
|
"required": ["type"],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["Utilization", "AverageValue", "Value"]
|
|
},
|
|
"averageUtilization": { "type": "integer", "minimum": 0 },
|
|
"averageValue": { "type": "string" },
|
|
"value": { "type": "string" }
|
|
},
|
|
"if": { "properties": { "type": { "const": "Utilization" } } },
|
|
"then": { "required": ["averageUtilization"] },
|
|
"else": {
|
|
"if": { "properties": { "type": { "const": "AverageValue" } } },
|
|
"then": { "required": ["averageValue"] },
|
|
"else": { "required": ["value"] }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": ["resource"]
|
|
},
|
|
{
|
|
"properties": {
|
|
"type": { "const": "Pods" },
|
|
"pods": {
|
|
"type": "object",
|
|
"required": ["metric", "target"],
|
|
"properties": {
|
|
"metric": {
|
|
"type": "object",
|
|
"required": ["name"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"selector": {
|
|
"type": "object",
|
|
"properties": {
|
|
"matchLabels": { "type": "object" },
|
|
"matchExpressions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["key", "operator"],
|
|
"properties": {
|
|
"key": { "type": "string" },
|
|
"operator": { "type": "string" },
|
|
"values": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"target": {
|
|
"type": "object",
|
|
"required": ["type"],
|
|
"properties": {
|
|
"type": { "type": "string", "enum": ["AverageValue", "Value"] },
|
|
"averageValue": { "type": "string" },
|
|
"value": { "type": "string" }
|
|
},
|
|
"if": { "properties": { "type": { "const": "AverageValue" } } },
|
|
"then": { "required": ["averageValue"] },
|
|
"else": { "required": ["value"] }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": ["pods"]
|
|
},
|
|
{
|
|
"properties": {
|
|
"type": { "const": "Object" },
|
|
"object": {
|
|
"type": "object",
|
|
"required": ["metric", "describedObject", "target"],
|
|
"properties": {
|
|
"metric": {
|
|
"type": "object",
|
|
"required": ["name"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"selector": {
|
|
"type": "object",
|
|
"properties": {
|
|
"matchLabels": { "type": "object" },
|
|
"matchExpressions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["key", "operator"],
|
|
"properties": {
|
|
"key": { "type": "string" },
|
|
"operator": { "type": "string" },
|
|
"values": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"describedObject": {
|
|
"type": "object",
|
|
"required": ["apiVersion", "kind", "name"],
|
|
"properties": {
|
|
"apiVersion": { "type": "string" },
|
|
"kind": { "type": "string" },
|
|
"name": { "type": "string" }
|
|
}
|
|
},
|
|
"target": {
|
|
"type": "object",
|
|
"required": ["type"],
|
|
"properties": {
|
|
"type": { "type": "string", "enum": ["Value", "AverageValue"] },
|
|
"value": { "type": "string" },
|
|
"averageValue": { "type": "string" }
|
|
},
|
|
"if": { "properties": { "type": { "const": "Value" } } },
|
|
"then": { "required": ["value"] },
|
|
"else": { "required": ["averageValue"] }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": ["object"]
|
|
},
|
|
{
|
|
"properties": {
|
|
"type": { "const": "External" },
|
|
"external": {
|
|
"type": "object",
|
|
"required": ["metric", "target"],
|
|
"properties": {
|
|
"metric": {
|
|
"type": "object",
|
|
"required": ["name"],
|
|
"properties": {
|
|
"name": { "type": "string" },
|
|
"selector": {
|
|
"type": "object",
|
|
"properties": {
|
|
"matchLabels": { "type": "object" },
|
|
"matchExpressions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"required": ["key", "operator"],
|
|
"properties": {
|
|
"key": { "type": "string" },
|
|
"operator": { "type": "string" },
|
|
"values": { "type": "array", "items": { "type": "string" } }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"target": {
|
|
"type": "object",
|
|
"required": ["type"],
|
|
"properties": {
|
|
"type": { "type": "string", "enum": ["Value", "AverageValue"] },
|
|
"value": { "type": "string" },
|
|
"averageValue": { "type": "string" }
|
|
},
|
|
"if": { "properties": { "type": { "const": "Value" } } },
|
|
"then": { "required": ["value"] },
|
|
"else": { "required": ["averageValue"] }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": ["external"]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"behavior": {
|
|
"type": "object",
|
|
"description": "The behavior of the autoscaler. Only supported on K8s 1.18.0 or later.",
|
|
"properties": {
|
|
"scaleUp": {
|
|
"type": "object",
|
|
"description": "The behavior of the autoscaler when scaling up.",
|
|
"properties": {
|
|
"stabilizationWindowSeconds": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "Time in seconds to wait before scaling up again (default: 0)"
|
|
},
|
|
"policies": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"minItems": 1,
|
|
"required": ["type", "value", "periodSeconds"],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["Pods", "Percent"],
|
|
"description": "Type of scaling policy: Pods (fixed number) or Percent (percentage of current replicas)"
|
|
},
|
|
"value": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "The value to scale by (number of pods or percentage)"
|
|
},
|
|
"periodSeconds": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"description": "Time in seconds over which the policy is evaluated"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"description": "List of scaling policies for scale-up"
|
|
},
|
|
"selectPolicy": {
|
|
"type": "string",
|
|
"enum": ["Max", "Min", "Disabled"],
|
|
"description": "Policy to select among multiple policies: Max (default), Min, or Disabled"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"scaleDown": {
|
|
"type": "object",
|
|
"description": "The behavior of the autoscaler when scaling down.",
|
|
"properties": {
|
|
"stabilizationWindowSeconds": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "Time in seconds to wait before scaling down again (default: 300)"
|
|
},
|
|
"policies": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"minItems": 1,
|
|
"required": ["type", "value", "periodSeconds"],
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["Pods", "Percent"],
|
|
"description": "Type of scaling policy: Pods (fixed number) or Percent (percentage of current replicas)"
|
|
},
|
|
"value": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"description": "The value to scale by (number of pods or percentage)"
|
|
},
|
|
"periodSeconds": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"description": "Time in seconds over which the policy is evaluated"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"description": "List of scaling policies for scale-down"
|
|
},
|
|
"selectPolicy": {
|
|
"type": "string",
|
|
"enum": ["Max", "Min", "Disabled"],
|
|
"description": "Policy to select among multiple policies: Max (default), Min, or Disabled"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": ["enabled", "minReplicas", "maxReplicas", "metrics", "behavior"],
|
|
"title": "autoscaling",
|
|
"type": "object"
|
|
}
|
|
},
|
|
"required": [
|
|
"replicaCount",
|
|
"image",
|
|
"initImages",
|
|
"strategy",
|
|
"imagePullSecrets",
|
|
"nameOverride",
|
|
"fullnameOverride",
|
|
"serviceAccount",
|
|
"podAnnotations",
|
|
"extraPodLabels",
|
|
"podSecurityContext",
|
|
"securityContext",
|
|
"service",
|
|
"log",
|
|
"telemetry",
|
|
"backendStore",
|
|
"postgresql",
|
|
"mysql",
|
|
"artifactRoot",
|
|
"extraArgs",
|
|
"extraFlags",
|
|
"extraEnvVars",
|
|
"extraSecretNamesForEnvFrom",
|
|
"ingress",
|
|
"resources",
|
|
"serviceMonitor",
|
|
"nodeSelector",
|
|
"tolerations",
|
|
"affinity",
|
|
"initContainers",
|
|
"extraContainers",
|
|
"extraVolumes",
|
|
"extraVolumeMounts",
|
|
"livenessProbe",
|
|
"readinessProbe",
|
|
"flaskServerSecretKey",
|
|
"auth",
|
|
"ldapAuth",
|
|
"autoscaling"
|
|
],
|
|
"allOf": [
|
|
{
|
|
"not": {
|
|
"properties": {
|
|
"auth": {
|
|
"properties": {
|
|
"enabled": {
|
|
"const": true
|
|
}
|
|
}
|
|
},
|
|
"ldapAuth": {
|
|
"properties": {
|
|
"enabled": {
|
|
"const": true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"description": "Ensures only one of backendStore.postgres.enabled, backendStore.mysql.enabled, postgresql.enabled can be true, or mysql.enabled can be true",
|
|
"if": {
|
|
"properties": {
|
|
"backendStore": {
|
|
"properties": {
|
|
"postgres": {
|
|
"properties": {
|
|
"enabled": { "const": true }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": ["backendStore"]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"backendStore": {
|
|
"properties": {
|
|
"mysql": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"postgresql": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
},
|
|
"mysql": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
}
|
|
},
|
|
"required": ["backendStore", "postgresql", "mysql"]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"backendStore": {
|
|
"properties": {
|
|
"mysql": {
|
|
"properties": {
|
|
"enabled": { "const": true }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"required": ["backendStore"]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"backendStore": {
|
|
"properties": {
|
|
"postgres": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"postgresql": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
},
|
|
"mysql": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
}
|
|
},
|
|
"required": ["backendStore", "postgresql", "mysql"]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"postgresql": {
|
|
"properties": {
|
|
"enabled": { "const": true }
|
|
}
|
|
}
|
|
},
|
|
"required": ["postgresql"]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"backendStore": {
|
|
"properties": {
|
|
"postgres": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
},
|
|
"mysql": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"mysql": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
}
|
|
},
|
|
"required": ["backendStore", "mysql"]
|
|
}
|
|
},
|
|
{
|
|
"if": {
|
|
"properties": {
|
|
"mysql": {
|
|
"properties": {
|
|
"enabled": { "const": true }
|
|
}
|
|
}
|
|
},
|
|
"required": ["mysql"]
|
|
},
|
|
"then": {
|
|
"properties": {
|
|
"backendStore": {
|
|
"properties": {
|
|
"postgres": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
},
|
|
"mysql": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"postgresql": {
|
|
"properties": {
|
|
"enabled": { "const": false }
|
|
}
|
|
}
|
|
},
|
|
"required": ["backendStore", "postgresql"]
|
|
}
|
|
}
|
|
],
|
|
"type": "object"
|
|
}
|
|
|