{ "$schema": "http://json-schema.org/schema#", "type": "object", "properties": { "resources": { "description": "Your service will have at least the requested resources and never more than its limits. No limit for a resource and you can consume everything left on the host machine.", "type": "object", "properties": { "requests": { "description": "Guaranteed resources", "type": "object", "properties": { "cpu": { "description": "The amount of cpu guaranteed", "title": "CPU", "type": "string", "default": "100m", "render": "slider", "sliderMin": 50, "sliderMax": 40000, "sliderStep": 50, "sliderUnit": "m", "sliderExtremity": "down", "sliderExtremitySemantic": "guaranteed", "sliderRangeId": "cpu", "x-onyxia": { "overwriteDefaultWith": "region.resources.cpuRequest", "useRegionSliderConfig": "cpu" } }, "memory": { "description": "The amount of memory guaranteed", "title": "memory", "type": "string", "default": "2Gi", "render": "slider", "sliderMin": 1, "sliderMax": 200, "sliderStep": 1, "sliderUnit": "Gi", "sliderExtremity": "down", "sliderExtremitySemantic": "guaranteed", "sliderRangeId": "memory", "x-onyxia": { "overwriteDefaultWith": "region.resources.memoryRequest", "useRegionSliderConfig": "memory" } } } }, "limits": { "description": "max resources", "type": "object", "properties": { "cpu": { "description": "The maximum amount of cpu", "title": "CPU", "type": "string", "default": "30000m", "render": "slider", "sliderMin": 50, "sliderMax": 40000, "sliderStep": 50, "sliderUnit": "m", "sliderExtremity": "up", "sliderExtremitySemantic": "Maximum", "sliderRangeId": "cpu", "x-onyxia": { "overwriteDefaultWith": "region.resources.cpuLimit", "useRegionSliderConfig": "cpu" } }, "memory": { "description": "The maximum amount of memory", "title": "Memory", "type": "string", "default": "50Gi", "render": "slider", "sliderMin": 1, "sliderMax": 200, "sliderStep": 1, "sliderUnit": "Gi", "sliderExtremity": "up", "sliderExtremitySemantic": "Maximum", "sliderRangeId": "memory", "x-onyxia": { "overwriteDefaultWith": "region.resources.memoryLimit", "useRegionSliderConfig": "memory" } } } } } }, "discovery": { "description": "configure your service to autodetect some ressources.", "type": "object", "properties": { "hive": { "type": "boolean", "title": "Enable hive metastore discovery", "description": "discover your hive metastore service", "default": true }, "mlflow": { "type": "boolean", "title": "Enable mlflow discovery", "description": "discover your mlflow service", "default": true }, "metaflow": { "type": "boolean", "title": "Enable metaflow discovery", "description": "discover your metaflow service", "default": true } } }, "service": { "description": "spark-history specific configuration", "type": "object", "properties": { "image": { "description": "image docker", "type": "object", "properties": { "pullPolicy": { "type": "string", "description": "option when pulling the docker image", "default": "IfNotPresent", "enum": [ "IfNotPresent", "Always", "Never" ] }, "version": { "description": "vscode supported version", "type": "string", "default": "inseefrlab/onyxia-vscode-python:py3.11.6", "listEnum": [ "inseefrlab/onyxia-vscode-python:py3.11.6", "inseefrlab/onyxia-vscode-python:py3.10.13" ], "render": "list", "hidden": { "value": true, "path": "service/image/custom/enabled" } }, "custom": { "description": "use a custom vscode docker image", "type": "object", "properties": { "enabled": { "title": "custom image", "type": "boolean", "description": "use a custom vscode docker images", "default": false }, "version": { "description": "vscode unsupported version", "type": "string", "default": "inseefrlab/onyxia-vscode-python:py3.11.6", "hidden": { "value": false, "path": "service/image/custom/enabled" } } } } } } } }, "persistence": { "description": "Configuration for persistence", "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Create a persistent volume", "default": true }, "size": { "type": "string", "title": "Persistent volume size", "description": "Size of the persistent volume", "default": "10Gi", "form": true, "render": "slider", "sliderMin": 1, "sliderMax": 100, "sliderStep": 1, "sliderUnit": "Gi", "x-onyxia": { "overwriteDefaultWith": "region.resources.disk", "useRegionSliderConfig": "disk" }, "hidden": { "value": false, "path": "persistence/enabled" } } } }, "security": { "description": "security specific configuration", "type": "object", "properties": { "password": { "type": "string", "description": "Password", "default": "changeme", "render": "password", "x-onyxia": { "overwriteDefaultWith": "{{project.password}}" } }, "allowlist": { "type": "object", "description": "IP protection", "properties": { "enabled": { "type": "boolean", "title": "Enable IP protection", "description": "Only the configured set of IPs will be able to reach the service", "default": true, "x-onyxia": { "overwriteDefaultWith": "region.defaultIpProtection" } }, "ip": { "type": "string", "description": "the white list of IP is whitespace", "title": "Whitelist of IP", "x-onyxia": { "overwriteDefaultWith": "{{user.ip}}" } } } }, "networkPolicy": { "type": "object", "description": "Define access policy to the service", "properties": { "enabled": { "type": "boolean", "title": "Enable network policy", "description": "Only pod from the same namespace will be allowed", "default": true, "x-onyxia": { "overwriteDefaultWith": "region.defaultNetworkPolicy" } }, "from": { "type": "array", "description": "Array of source allowed to have network access to your service", "default": [], "x-onyxia": { "hidden": true, "overwriteDefaultWith": "region.from" } } } } } }, "kubernetes": { "description": "configuration of your kubernetes access", "type": "object", "properties": { "enabled": { "type": "boolean", "description": "allow your service to access your namespace ressources", "default": true }, "role": { "type": "string", "description": "bind your service account to this kubernetes default role", "default": "view", "hidden": { "value": false, "path": "kubernetes/enabled" }, "enum": [ "view", "edit", "admin" ] } } }, "git": { "description": "Git user configuration", "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Add git config inside your environment", "default": true }, "name": { "type": "string", "description": "user name for git", "default": "", "x-onyxia": { "overwriteDefaultWith": "{{git.name}}" }, "hidden": { "value": false, "path": "git/enabled" } }, "email": { "type": "string", "description": "user email for git", "default": "", "x-onyxia": { "overwriteDefaultWith": "{{git.email}}" }, "hidden": { "value": false, "path": "git/enabled" } }, "cache": { "type": "string", "description": "duration in seconds of the credentials cache duration", "default": "", "x-onyxia": { "overwriteDefaultWith": "{{git.credentials_cache_duration}}" }, "hidden": { "value": false, "path": "git/enabled" } }, "token": { "type": "string", "description": "personal access token", "default": "", "render": "password", "x-onyxia": { "overwriteDefaultWith": "{{git.token}}" }, "hidden": { "value": false, "path": "git/enabled" } }, "repository": { "type": "string", "description": "projet", "default": "", "x-onyxia": { "overwriteDefaultWith": "{{git.project}}" }, "hidden": { "value": false, "path": "git/enabled" } }, "branch": { "type": "string", "description": "Branch automatically checked out", "default": "", "hidden": { "value": "", "path": "git/repository" } } } }, "vault": { "description": "Configuration of vault client", "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Add vault temporary identity inside your environment", "default": true }, "token": { "description": "token vault", "type": "string", "render": "password", "x-onyxia": { "overwriteDefaultWith": "{{vault.VAULT_TOKEN}}" }, "hidden": { "value": false, "path": "vault/enabled" } }, "url": { "description": "url of vault server", "type": "string", "x-onyxia": { "overwriteDefaultWith": "{{vault.VAULT_ADDR}}" }, "hidden": { "value": false, "path": "vault/enabled" } }, "mount": { "description": "mount of the v2 secret engine", "type": "string", "x-onyxia": { "overwriteDefaultWith": "{{vault.VAULT_MOUNT}}" }, "hidden": { "value": false, "path": "vault/enabled" } }, "directory": { "description": "top level directory", "type": "string", "x-onyxia": { "overwriteDefaultWith": "{{vault.VAULT_TOP_DIR}}" }, "hidden": { "value": false, "path": "vault/enabled" } }, "secret": { "description": "the path of the secret to convert into a list of environment variables", "type": "string", "default": "", "hidden": { "value": false, "path": "vault/enabled" } } } }, "s3": { "description": "Configuration of temporary identity", "type": "object", "properties": { "enabled": { "type": "boolean", "description": "Add S3 temporary identity inside your environment", "default": true }, "accessKeyId": { "description": "AWS Access Key", "type": "string", "x-onyxia": { "overwriteDefaultWith": "s3.AWS_ACCESS_KEY_ID" }, "hidden": { "value": false, "path": "s3/enabled" } }, "endpoint": { "description": "AWS S3 Endpoint", "type": "string", "x-onyxia": { "overwriteDefaultWith": "{{s3.AWS_S3_ENDPOINT}}" }, "hidden": { "value": false, "path": "s3/enabled" } }, "defaultRegion": { "description": "AWS S3 default region", "type": "string", "x-onyxia": { "overwriteDefaultWith": "{{s3.AWS_DEFAULT_REGION}}" }, "hidden": { "value": false, "path": "s3/enabled" } }, "secretAccessKey": { "description": "AWS S3 secret access key", "type": "string", "render": "password", "x-onyxia": { "overwriteDefaultWith": "{{s3.AWS_SECRET_ACCESS_KEY}}" }, "hidden": { "value": false, "path": "s3/enabled" } }, "sessionToken": { "description": "AWS S3 session Token", "type": "string", "render": "password", "x-onyxia": { "overwriteDefaultWith": "{{s3.AWS_SESSION_TOKEN}}" }, "hidden": { "value": false, "path": "s3/enabled" } } } }, "ingress": { "type": "object", "form": true, "title": "Ingress Details", "properties": { "enabled": { "description": "Enable Ingress", "type": "boolean", "default": true, "x-onyxia": { "hidden": true, "overwriteDefaultWith": "k8s.ingress" } }, "hostname": { "type": "string", "form": true, "title": "Hostname", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "{{project.id}}-{{k8s.randomSubdomain}}-0.{{k8s.domain}}" } }, "userHostname": { "type": "string", "form": true, "title": "Hostname", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "{{project.id}}-{{k8s.randomSubdomain}}-user.{{k8s.domain}}" } }, "ingressClassName": { "type": "string", "form": true, "title": "ingressClassName", "default": "", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "{{k8s.ingressClassName}}" } }, "useCertManager": { "type": "boolean", "description": "Whether CertManager should be used to generate a certificate", "default": false, "x-onyxia": { "hidden": true, "overwriteDefaultWith": "k8s.useCertManager" } }, "certManagerClusterIssuer":{ "type": "string", "description": "certManager cluster issuer", "title": "CertManager Cluster Issuer", "default": "", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "k8s.certManagerClusterIssuer" } } } }, "route": { "type": "object", "form": true, "title": "Route details", "properties": { "enabled": { "description": "Enable route", "type": "boolean", "default": false, "x-onyxia": { "hidden": true, "overwriteDefaultWith": "k8s.route" } }, "hostname": { "type": "string", "form": true, "title": "Hostname", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "{{project.id}}-{{k8s.randomSubdomain}}-0.{{k8s.domain}}" } }, "userHostname": { "type": "string", "form": true, "title": "Hostname", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "{{project.id}}-{{k8s.randomSubdomain}}-user.{{k8s.domain}}" } } } }, "networking": { "type": "object", "form": true, "title": "Networking detail", "properties": { "user": { "type": "object", "description": "user defined port", "properties": { "enabled": { "type": "boolean", "title": "Enable a custom service port", "description": "Enable a custom service port", "default": false }, "port": { "type": "integer", "description": "port of the custom service", "title": "Custom service port", "hidden": { "value": false, "path": "networking/user/enabled" }, "default": 5000 } } } } }, "init": { "description": "Init parameters", "type": "object", "properties": { "regionInit": { "type": "string", "description": "region initialization script", "default": "", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "{{k8s.initScriptUrl}}" } }, "regionInitCheckSum": { "type": "string", "description": "region initialization script", "default": "", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "{{k8s.initScriptCheckSum}}" } }, "personalInit": { "type": "string", "description": "user initialization script", "default": "" }, "personalInitArgs": { "type": "string", "description": "args for user initialization script", "default": "" } } }, "repository": { "description": "python repositories for pip and conda", "type": "object", "properties": { "pipRepository": { "type": "string", "description": "python repository for pip", "default": "", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "{{packageRepositoryInjection.pypiProxyUrl}}" } }, "condaRepository": { "type": "string", "description": "python repository for pip", "default": "", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "{{packageRepositoryInjection.condaProxyUrl}}" } } } }, "startupProbe": { "type": "object", "description": "Start up probe", "default": {}, "x-onyxia": { "hidden": true, "overwriteDefaultWith": "region.startupProbe" } }, "tolerations": { "type": "array", "description": "Array of tolerations", "default": [], "x-onyxia": { "hidden": true, "overwriteDefaultWith": "region.tolerations" } }, "nodeSelector": { "type": "object", "description": "NodeSelector", "default": {}, "x-onyxia": { "hidden": true, "overwriteDefaultWith": "region.nodeSelector" } }, "userPreferences": { "description": "User Preferences", "type": "object", "properties": { "darkMode": { "type": "boolean", "description": "dark mode is or is not enabled", "default": false, "x-onyxia": { "hidden": true, "overwriteDefaultWith": "user.darkMode" } }, "language": { "type": "string", "description": "Preferred language", "default": "en", "x-onyxia": { "hidden": true, "overwriteDefaultWith": "user.lang" } } } }, "global": { "description": "Suspend", "type": "object", "properties": { "suspend": { "type": "boolean", "description": "Suspend this service", "default": false, "x-onyxia": { "hidden": true } } } } } }