groups: - name: "Plex Configuration" description: "Configure plex deployment" - name: "Networking" description: "Configure networking for container" - name: "Storage" description: "Persist and share data that is separate from the lifecycle of the container" - 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" - name: "Advanced DNS Settings" description: "Configure DNS settings" - name: "Resource Limits" description: "Set CPU/memory limits for Kubernetes Pod" portals: web_portal: protocols: - "http" host: - "$node_ip" ports: - "$variable-plexServiceTCP.port" path: "/web" questions: - variable: enablePlexPass label: "Use PlexPass" group: "Plex Configuration" schema: type: boolean default: false - variable: dnsConfig label: "DNS Configuration" group: "Advanced DNS Settings" schema: type: dict attrs: - variable: options label: "DNS Options" schema: type: list items: - variable: optionsEntry label: "Option Entry Configuration" schema: type: dict attrs: - variable: name label: "Option Name" schema: type: string required: true - variable: value label: "Option Value" schema: type: string required: true - variable: claimToken label: "Plex Claim Token" group: "Plex Configuration" description: "The claim token for the server to obtain a real server token. If not provided, server is will not be automatically logged in. If server is already logged in, this parameter is ignored. You can obtain a claim token to login your server to your plex account by visiting https://www.plex.tv/claim." schema: type: string default: "" - variable: hostNetwork label: "Configure Host Network" group: "Networking" schema: type: boolean default: false - variable: environmentVariables label: "Environment Variables for Plex" group: "Plex Configuration" schema: type: list default: [] items: - variable: environmentVariable label: "Environment Variable" schema: type: dict attrs: - variable: name label: "Name" schema: type: string - variable: value label: "Value" schema: type: string - variable: timezone label: "Plex container timezone" group: "Plex Configuration" schema: type: string default: "Etc/UTC" $ref: - "definitions/timezone" # Update strategy - variable: updateStrategy 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 # Specify GPU configuration - variable: gpuConfiguration label: "GPU Configuration" group: "Resource Reservation" schema: type: dict $ref: - "definitions/gpuConfiguration" attrs: [] - variable: appVolumeMounts label: "Plex Storage" group: "Storage" schema: type: dict attrs: - variable: transcode label: "Transcode Volume" schema: type: dict attrs: - variable: datasetName label: "Plex Transcode Volume Name" schema: type: string $ref: - "normalize/ixVolume" show_if: [["hostPathEnabled", "=", false]] default: "ix-plex_transcode" hidden: true editable: false - variable: mountPath label: "Plex Transcode Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path hidden: true editable: false default: "/transcode" - variable: hostPathEnabled label: "Enable Host Path for Plex Transcode Volume" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: hostPath label: "Host Path for Plex Transcode Volume" schema: type: hostpath required: true $ref: - "validations/lockedHostPath" - variable: data label: "Data Volume" schema: type: dict attrs: - variable: datasetName label: "Plex Data Volume Name" schema: type: string $ref: - "normalize/ixVolume" show_if: [["hostPathEnabled", "=", false]] default: "ix-plex_data" editable: false hidden: true - variable: mountPath label: "Plex Data Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path hidden: true editable: false default: "/data" - variable: hostPathEnabled label: "Enable Host Path for Plex Data Volume" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: hostPath label: "Host Path for Plex Data Volume" schema: type: hostpath required: true $ref: - "validations/lockedHostPath" - variable: config label: "Config Volume" schema: type: dict attrs: - variable: datasetName label: "Plex Config Volume Name" schema: type: string $ref: - "normalize/ixVolume" show_if: [["hostPathEnabled", "=", false]] default: "ix-plex_config" editable: false hidden: true - variable: mountPath label: "Plex Config Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path editable: false hidden: true default: "/config" - variable: hostPathEnabled label: "Enable Host Path for Plex Config Volume" schema: type: boolean default: false show_subquestions_if: true subquestions: - variable: hostPath label: "Host Path for Plex Config Volume" schema: type: hostpath required: true $ref: - "validations/lockedHostPath" - variable: shared label: "Shared Volume" schema: type: dict hidden: true attrs: - variable: emptyDir label: "Temporary Volume" schema: type: boolean default: true editable: false - variable: mountPath label: "Plex Shared Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path editable: false default: "/shared" - variable: shared-logs label: "Shared Logs Volume" schema: type: dict hidden: true attrs: - variable: emptyDir label: "Temporary Volume" schema: type: boolean default: true editable: false - variable: mountPath label: "Plex Shared Logs Mount Path" description: "Path where the volume will be mounted inside the pod" schema: type: path editable: false default: "/config/Library/Application Support/Plex Media Server/Logs" - variable: extraAppVolumeMounts label: "Plex Extra Host Path Volumes" group: "Storage" schema: type: list items: - variable: extraAppVolume label: "Plex Host Path Volume" description: "Add an extra host path volume for plex application" schema: type: dict attrs: - variable: mountPath label: "Mount Path in Pod" description: "Path where the volume will be mounted inside the pod" schema: type: path required: true - variable: hostPath label: "Host Path" description: "Host path" schema: type: hostpath required: true $ref: - "validations/lockedHostPath" - variable: readOnly label: "Read Only" description: "Mount hostpath in read-only mode" schema: type: boolean default: false - variable: enableResourceLimits label: "Enable Pod resource limits" group: "Resource Limits" schema: type: boolean default: false - variable: cpuLimit label: "CPU Limresource limitsit" description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100." group: "Resource Limits" schema: type: string show_if: [["enableResourceLimits", "=", true]] valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)" default: "4000m" - variable: memLimit label: "Memory Limit" group: "Resource Limits" description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi" schema: type: string show_if: [["enableResourceLimits", "=", true]] valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" default: "8Gi"