Skip to content
Snippets Groups Projects
values.schema.json 19.1 KiB
Newer Older
{
  "$schema": "http://json-schema.org/schema#",
  "type": "object",
  "properties": {
    "service": {
      "description": "Service 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": "supported versions",
              "type": "string",
              "enum": [
                "inseefrlab/onyxia-jupyter-tensorflow:py3.10.4-gpu",
                "inseefrlab/onyxia-jupyter-tensorflow:py3.9.13-gpu"
              ],
              "pattern": "^[a-z0-9-_./]+(:[a-z0-9-_.]+)?$",
              "hidden": {
                "value": true,
                "path": "service/image/custom/enabled"
              },
              "default": "inseefrlab/onyxia-jupyter-tensorflow:py3.10.4-gpu"
            },
            "custom": {
              "description": "use a custom jupyter docker image",
              "type": "object",
              "properties": {
                "enabled": {
                  "title": "custom image",
                  "type": "boolean",
                  "description": "use a custom jupyter docker image",
                  "default": false
                },
                "version": {
                  "description": "jupyter unsupported version",
                  "type": "string",
                  "default": "inseefrlab/onyxia-jupyter-tensorflow:py3.10.4-gpu",
                  "pattern": "^[a-z0-9-_./]+(:[a-z0-9-_.]+)?$",
                  "hidden": {
                    "value": false,
                    "path": "service/image/custom/enabled"
                  }
                }
              }
            }
          }
        }
      }
    },
    "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
        }
      }
    },
    "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"
            },
            "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"
            }
          }
        },
        "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"
            },
            "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"
            },
            "nvidia.com/gpu": {
              "description": "GPU to allocate to this instance. This is also requested",
              "type": "string",
              "default": "1",
              "render": "slider",
              "sliderMin": 1,
              "sliderMax": 3,
              "sliderStep": 1,
              "sliderUnit": ""
            }
          }
        }
      }
    },
    "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",
          "hidden": {
            "value": false,
            "path": "persistence/enabled"
          }
        }
      }
    },
    "security": {
      "description": "security specific configuration",
      "type": "object",
      "properties": {
        "password": {
          "type": "string",
          "description": "Password",
          "default": "changeme",
fcomte's avatar
fcomte committed
          "render": "password",
          "x-form": {
            "value": "{{project.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-form": {
                "value": "{{region.defaultIpProtection}}"
              },
              "x-onyxia": {
                "overwriteDefaultWith": "region.defaultIpProtection"
              }
            },
            "ip": {
              "type": "string",
              "description": "the white list of IP is whitespace",
              "title": "Whitelist of IP",
              "x-form": {
                "value": "{{user.ip}}"
              },
              "x-onyxia": {
                "overwriteDefaultWith": "{{user.ip}}"
              },
              "hidden": {
                "value": false,
                "path": "security/allowlist/enabled"
              }
            }
          }
        },
        "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-form": {
                "value": "{{region.defaultNetworkPolicy}}"
              },
              "x-onyxia": {
                "overwriteDefaultWith": "region.defaultNetworkPolicy"
              }
            },
            "from": {
              "type": "array",
              "description": "Array of source allowed to have network access to your service",
              "default": [],
              "x-form": {
                "hidden": true,
                "value": "{{region.from}}"
              },
              "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-form": {
            "value": "{{git.name}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{git.name}}"
          },
          "hidden": {
            "value": false,
            "path": "git/enabled"
          }
        },
        "email": {
          "type": "string",
          "description": "user email for git",
          "default": "",
          "x-form": {
            "value": "{{git.email}}"
          },
          "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-form": {
            "value": "{{git.credentials_cache_duration}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{git.credentials_cache_duration}}"
          },
          "hidden": {
            "value": false,
            "path": "git/enabled"
          }
        },
        "token": {
          "type": "string",
          "description": "personal access token",
          "default": "",
fcomte's avatar
fcomte committed
          "render": "password",
          "x-form": {
            "value": "{{git.token}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{git.token}}"
          },
          "hidden": {
            "value": false,
            "path": "git/enabled"
          }
        },
        "repository": {
          "type": "string",
          "description": "Repository url",
          "default": "",
          "x-form": {
            "value": "{{git.project}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{git.project}}"
          },
          "hidden": {
            "value": false,
            "path": "git/enabled"
          }
        },
        "branch": {
          "type": "string",
          "description": "Brach automatically checkout",
          "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",
fcomte's avatar
fcomte committed
          "render": "password",
          "x-form": {
            "value": "{{vault.VAULT_TOKEN}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{vault.VAULT_TOKEN}}"
          },
          "hidden": {
            "value": false,
            "path": "vault/enabled"
          }
        },
        "url": {
          "description": "url of vault server",
          "type": "string",
          "x-form": {
            "value": "{{vault.VAULT_ADDR}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{vault.VAULT_ADDR}}"
          },
          "hidden": {
            "value": false,
            "path": "vault/enabled"
          }
        },
        "mount": {
          "description": "mount of the v2 secret engine",
          "type": "string",
          "x-form": {
            "value": "{{vault.VAULT_MOUNT}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{vault.VAULT_MOUNT}}"
          },
          "hidden": {
            "value": false,
            "path": "vault/enabled"
          }
        },
        "directory": {
          "description": "top level directory",
          "type": "string",
          "x-form": {
            "value": "{{vault.VAULT_TOP_DIR}}"
          },
          "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-form": {
            "value": "{{s3.AWS_ACCESS_KEY_ID}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{s3.AWS_ACCESS_KEY_ID}}"
          },
          "hidden": {
            "value": false,
            "path": "s3/enabled"
          }
        },
        "endpoint": {
          "description": "AWS S3 Endpoint",
          "type": "string",
          "x-form": {
            "value": "{{s3.AWS_S3_ENDPOINT}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{s3.AWS_S3_ENDPOINT}}"
          },
          "hidden": {
            "value": false,
            "path": "s3/enabled"
          }
        },
        "defaultRegion": {
          "description": "AWS S3 default region",
          "type": "string",
          "x-form": {
            "value": "{{s3.AWS_DEFAULT_REGION}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{s3.AWS_DEFAULT_REGION}}"
          },
          "hidden": {
            "value": false,
            "path": "s3/enabled"
          }
        },
        "secretAccessKey": {
          "description": "AWS S3 secret access key",
          "type": "string",
fcomte's avatar
fcomte committed
          "render": "password",
          "x-form": {
            "value": "{{s3.AWS_SECRET_ACCESS_KEY}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{s3.AWS_SECRET_ACCESS_KEY}}"
          },
          "hidden": {
            "value": false,
            "path": "s3/enabled"
          }
        },
        "sessionToken": {
          "description": "AWS S3 session Token",
          "type": "string",
fcomte's avatar
fcomte committed
          "render": "password",
          "x-form": {
            "value": "{{s3.AWS_SESSION_TOKEN}}"
          },
          "x-onyxia": {
            "overwriteDefaultWith": "{{s3.AWS_SESSION_TOKEN}}"
          },
          "hidden": {
            "value": false,
            "path": "s3/enabled"
          }
        }
      }
    },
    "ingress": {
      "type": "object",
      "form": true,
      "title": "Ingress Details",
      "properties": {
        "hostname": {
          "type": "string",
          "form": true,
          "title": "Hostname",
          "x-form": {
            "hidden": true,
            "value": "{{project.id}}-{{k8s.randomSubdomain}}-0.{{k8s.domain}}"
          },
          "x-onyxia": {
            "hidden": true,
            "overwriteDefaultWith": "{{project.id}}-{{k8s.randomSubdomain}}-0.{{k8s.domain}}"
          }
        },
        "userHostname": {
          "type": "string",
          "form": true,
          "title": "Hostname",
          "x-form": {
            "hidden": true,
            "value": "{{project.id}}-{{k8s.randomSubdomain}}-user.{{k8s.domain}}"
          },
          "x-onyxia": {
            "hidden": true,
            "overwriteDefaultWith": "{{project.id}}-{{k8s.randomSubdomain}}-user.{{k8s.domain}}"
          }
        },
        "ingressClassName": {
          "type": "string",
          "form": true,
          "title": "ingressClassName",
          "default": "",
          "x-form": {
            "hidden": true,
            "value": "{{k8s.ingressClassName}}"
          },
          "x-onyxia": {
            "hidden": true,
            "overwriteDefaultWith": "{{k8s.ingressClassName}}"
          }
        }
      }
    },
    "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-form": {
            "hidden": true,
            "value": "{{k8s.initScriptUrl}}"
          },
          "x-onyxia": {
            "hidden": true,
            "overwriteDefaultWith": "{{k8s.initScriptUrl}}"
          }
        },
        "personalInit": {
          "type": "string",
          "description": "user initialization script",
          "default": ""
        },
        "personalInitArgs": {
          "type": "string",
          "description": "args for user initialization script",
          "default": ""
        }
      }
    }
  }
}