Browse Source

Properly use host network when configured

Waqar Ahmed 4 năm trước cách đây
mục cha
commit
36eee5eccb

+ 15 - 3
test/plex/2.1.0/questions.yaml

@@ -127,6 +127,21 @@ questions:
         - 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
+
   # Persistence
   - variable: persistence
     label: "Configure Persistent Storage"
@@ -151,7 +166,6 @@ questions:
                       schema:
                         type: hostpath
                         required: true
-                        default: ""
               - variable: volume
                 label: "Configure iXVolume"
                 schema:
@@ -190,7 +204,6 @@ questions:
                       schema:
                         type: hostpath
                         required: true
-                        default: ""
               - variable: volume
                 label: "Configure iXVolume"
                 schema:
@@ -229,7 +242,6 @@ questions:
                       schema:
                         type: hostpath
                         required: true
-                        default: ""
               - variable: volume
                 label: "Configure iXVolume"
                 schema:

+ 8 - 21
test/plex/2.1.0/templates/deployment.yaml

@@ -32,7 +32,7 @@ spec:
             protocol: TCP
             containerPort: 32400
           {{- if .Values.hostNetwork }}
-            hostPort: {{ .Values.serviceTCP.port }}
+            hostPort: {{ .Values.plexServiceTCP.port }}
           {{- end }}
           - name: plex-dlna
             protocol: TCP
@@ -110,21 +110,21 @@ spec:
             httpGet:
               path: /identity
               port: 32400
-            failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
-            periodSeconds: {{ .Values.probes.readiness.periodSeconds }}
+            failureThreshold: 5
+            periodSeconds: 15
           livenessProbe:
             httpGet:
               path: /identity
               port: 32400
-            failureThreshold: {{ .Values.probes.liveness.failureThreshold }}
-            periodSeconds: {{ .Values.probes.liveness.periodSeconds }}
+            failureThreshold: 5
+            periodSeconds: 15
           startupProbe:
             httpGet:
               path: /identity
               port: 32400
-            initialDelaySeconds: {{ .Values.probes.startup.initialDelaySeconds }}
-            failureThreshold: {{ .Values.probes.startup.failureThreshold }}
-            periodSeconds: {{ .Values.probes.startup.periodSeconds }}
+            initialDelaySeconds: 5
+            failureThreshold: 40
+            periodSeconds: 15
           volumeMounts:
           - name: data
             mountPath: /data
@@ -136,12 +136,6 @@ spec:
             mountPath: /shared
           - name: shared-logs
             mountPath: "/config/Library/Application Support/Plex Media Server/Logs"
-          {{- if .Values.plexPreferences.enabled }}
-          - name: {{ .Values.plexPreferences.volume.name }}
-            mountPath: {{ .Values.plexPreferences.volume.mountPath }}
-            subPath: {{ .Values.plexPreferences.volume.subPath }}
-          {{- end }}
-##### VOLUMES START #####
       volumes:
       - name: data
         hostPath:
@@ -156,10 +150,3 @@ spec:
         emptyDir: {}
       - name: shared-logs
         emptyDir: {}
-      {{- if .Values.plexPreferences.enabled }}
-      - name: {{ .Values.plexPreferences.volume.name }}
-        configMap:
-          name: {{ .Values.plexPreferences.configmap.name }}
-          defaultMode: {{ .Values.plexPreferences.volume.defaultMode }}
-      {{- end }}
-##### VOLUMES END #####

+ 12 - 11
test/plex/2.1.0/templates/service-tcp.yaml

@@ -1,25 +1,27 @@
-{{- if eq .Values.hostNetwork false }}
 apiVersion: v1
 kind: Service
 metadata:
+  {{- if .Values.hostNetwork }}
+  name: {{ include "plex.fullname" . }}-tcp-cluster-ip
+  {{- else }}
   name: {{ include "plex.fullname" . }}-tcp
+  {{- end }}
   labels:
     {{- include "plex.labels" . | nindent 4 }}
-{{- if .Values.serviceTCP.labels }}
-{{ toYaml .Values.serviceTCP.labels | indent 4 }}
-{{- end }}
-{{- with .Values.serviceTCP.annotations }}
-  annotations:
-{{ toYaml . | indent 4 }}
-{{- end }}
 spec:
+  {{- if .Values.hostNetwork }}
+  type: ClusterIP
+  {{- else }}
   type: NodePort
+  {{- end }}
   ports:
     - name: pms
-      port: {{ .Values.serviceTCP.port }}
+      port: {{ .Values.plexServiceTCP.port }}
       protocol: TCP
       targetPort: pms
-      nodePort: {{.Values.serviceTCP.nodePort}}
+      {{- if eq .Values.hostNetwork false }}
+      nodePort: {{.Values.plexServiceTCP.port}}
+      {{- end }}
     - name: http
       port: 80
       targetPort: pms
@@ -31,4 +33,3 @@ spec:
       targetPort: plex-dlna
   selector:
     {{- include "plex.selectorLabels" . | nindent 4 }}
-{{- end }}

+ 1 - 58
test/plex/2.1.0/values.yaml

@@ -52,75 +52,18 @@ timezone: "UTC"
 # upgrade strategy type (e.g. Recreate or RollingUpdate)
 strategyType: Recreate
 
-nameOverride: ""
-fullnameOverride: ""
-
-serviceTCP:
+plexServiceTCP:
   port: 32400
 
-plexPreferences:
-  # Enable init script that will read all environment variables starting with PLEX_PREFERENCE_
-  # and take the value (of PLEX_PREFERENCE_<whatever>) as the Key:Value option to set in Plex Preference.xml
-  # You can use extraEnv to add the addtional ENV's to the container.
-  # NOTE: Plex preference options are camelCase and CASE SENSITIVE!
-  # You can do horrible things to your PLEX configuration if you are not careful.
-  # --set extraEnv.PLEX_PREFERENCE_1="FriendlyName=plex-kubeernetes-test1" `
-  # --set extraEnv.PLEX_PREFERENCE_2="EnableIPv6=0" `
-  # --set extraEnv.PLEX_PREFERENCE_3="logDebug=0" `
-  # --set extraEnv.PLEX_PREFERENCE_4="DisableTLSv1_0=1" `
-  # --set extraEnv.PLEX_PREFERENCE_5="LanNetworksBandwidth=xxx.xxx.xxx.0/18\,xxx.xxx.xxx.0/24\,xxx.xxx.xxx.0/24" `
-  # --set extraEnv.PLEX_PREFERENCE_6="TranscoderQuality=2" `
-  # --set extraEnv.PLEX_PREFERENCE_7="TreatWanIpAsLocal=0" `
-  # --set extraEnv.PLEX_PREFERENCE_8="TranscoderH264BackgroundPreset=fast"
-  # Why not use a single ENV?
-  #      I thought using multiple environment variables would be less confusing
-  #      It should work easily with CLI and value.yaml usage
-  #      There is only minimal parsing required on the ENV value, as the only deliminator is =
-  #      From what I can see, all the PLEX preferences that are NOT currently supported by the OFFICIAL
-  #      Container are simple enough to work with this.
-  enabled: false
-  configmap:
-    labels: {}
-    annotations: {}
-    # Right now you can't really change this, additionally the configmap data is
-    # not configurable.
-    name: 41-plex-preferences
-  volume:
-    name: 41-plex-preferences
-    defaultMode: 493  # 0755 in octal permission notation
-    # Using mountPath & SubPath allow you to volume mount a configMap AS A FILE
-    # Unfortunately this also means that updates to the configMap are not automtically
-    # propagated to the file contents. But it's better then replacing the entire
-    # /etc/cont-init.d/ directory which is the "normal" behavior when doing volume
-    # mounts.
-    mountPath: /etc/cont-init.d/41-plex-preferences
-    subPath: 41-plex-preferences
-
 hostNetwork: false
 
 persistence:
   transcode:
     hostPathEnabled: false
-    hostPath: ""
   data:
     hostPathEnabled: false
-    hostPath: ""
   config:
     hostPathEnabled: false
-    hostPath: ""
-
-# Probes configuration
-probes:
-  liveness:
-    failureThreshold: 5
-    periodSeconds: 10
-  readiness:
-    failureThreshold: 5
-    periodSeconds: 10
-  startup:
-    initialDelaySeconds: 5
-    failureThreshold: 30
-    periodSeconds: 10
 
 proxy:
   # This allows to set a proxy environment variable, which PMS uses to fetch the token and assets like movie cover