groups: - name: "Container Images" description: "Image to be used for container" - name: "Container Entrypoint" description: "Configuration of the executable that will be run when the container is started" - name: "Container Environment Variables" description: "Set the environment that will be visible to the container" - name: "Networking" description: "Configure networking for container" - name: "Storage" description: "Persist and share data that is separate from the lifecycle of the container" - name: "Plex Configuration" description: "Configure plex deployment" - name: "Workload Details" description: "Configure how workload should be deployed" - name: "Scaling/Upgrade Policy" description: "Configure how pods are replaced when configuration is upgraded" - name: "Restart Policy" description: "Configure when pod should be restarted in case of failure" - name: "Resource Reservation" description: "Specify resources to be allocated to workload" portals: web_portal: protocols: - "http" host: - "$node_ip" ports: - "$variable-plexServiceTCP.port" questions: # Image related - variable: image description: "Docker Image Details" label: "Docker Image" group: "Container Images" schema: type: dict required: true attrs: - variable: repository description: "Docker image repository" label: "Image repository" schema: type: string required: true default: "plexinc/pms-docker" - variable: tag description: "Tag to use for specified image" label: "Image Tag" schema: type: string default: "1.20.2.3402-0fec14d92" - variable: pullPolicy description: "Docker Image Pull Policy" label: "Image Pull Policy" schema: type: string default: "IfNotPresent" enum: - value: "IfNotPresent" description: "Only pull image if not present on host" - value: "Always" description: "Always pull image even if present on host" - value: "Never" description: "Never pull image even if it's not present on host" - variable: claimToken label: "Plex Claim Token" group: "Plex Configuration" schema: type: string default: "" - variable: advertiseIp label: "Plex Advertise IP" group: "Plex Configuration" schema: type: string - variable: extraEnv label: "Environment variables for plex" group: "Plex Configuration" schema: type: dict additional_attrs: true attrs: [] - variable: proxy label: "Configure Proxy environment variable" group: "Plex Configuration" schema: type: dict attrs: - variable: enabled label: "Enable Proxy" schema: type: boolean default: false - variable: http label: "HTTP Proxy" schema: type: string - variable: https label: "HTTPS Proxy" schema: type: string - variable: hostNetwork label: "Configure Host Network" group: "Networking" schema: type: boolean default: false # TODO: Add timezone validation $ref - variable: timezone label: "Plex container timezone" group: "Plex Configuration" schema: type: string default: "Etc/UTC" $ref: - "definitions/timezone" # Update strategy - variable: strategyType description: "Upgrade Policy" label: "Update Strategy" group: "Scaling/Upgrade Policy" schema: type: string default: "Recreate" enum: - value: "RollingUpdate" description: "Create new pods and then kill old ones" - value: "Recreate" description: "Kill existing pods before creating new ones" # Port configuration - variable: plexServiceTCP label: "Configure Plex TCP Service" group: "Networking" schema: type: dict attrs: - variable: port label: "Port to expose for Plex UI" schema: type: int min: 9000 max: 65535 default: 32400 - variable: transcodeHostPathEnabled label: "Configure Host Path for Transcode" group: "Storage" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: transcodeHostPath label: "Specify HostPath for Transcode" schema: type: hostpath required: true - variable: transcodeVolume label: "Configure iXVolume" group: "Storage" schema: type: dict show_if: [["transcodeHostPathEnabled", "=", false]] $ref: - "normalize/ixVolume" attrs: - variable: mountPath label: "Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path editable: false default: "/transcode" - variable: datasetName label: "Dataset Name" schema: type: string default: "ix-plex_transcode" editable: false - variable: dataHostPathEnabled label: "Configure Host Path for Data" group: "Storage" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: dataHostPath label: "Specify HostPath for Data" schema: type: hostpath required: true - variable: dataVolume label: "Configure data iXVolume" group: "Storage" schema: type: dict show_if: [["dataHostPathEnabled", "=", false]] $ref: - "normalize/ixVolume" attrs: - variable: mountPath label: "Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path editable: false default: "/data" - variable: datasetName label: "Dataset Name" schema: type: string default: "ix-plex_data" editable: false - variable: configHostPathEnabled label: "Configure Host Path for Config" group: "Storage" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: configHostPath label: "Specify HostPath for Config" schema: type: hostpath required: true - variable: configVolume label: "Configure iXVolume" group: "Storage" schema: type: dict show_if: [["configHostPathEnabled", "=", false]] $ref: - "normalize/ixVolume" attrs: - variable: mountPath label: "Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path editable: false default: "/config" - variable: datasetName label: "Dataset Name" schema: type: string default: "ix-plex_config" editable: false # Specify GPU configuration - variable: gpuConfiguration label: "GPU Configuration" group: "Resource Reservation" schema: type: dict $ref: - "definitions/gpuConfiguration"