munnerz/kube-plex

Kube Plex behind Ingress. Not available outside your network. Direct connection is not available.

Opened this issue · 1 comments

I'm using plex in my kubernetes cluster. I access it via nginx ingress.
But in the "Remote Access" Tab . I have the error: "Not available outside your network"

These are my settings:

deployment.yaml
kind: Deployment
apiVersion: apps/v1
metadata:
  name: plex-kube-plex
  namespace: media
  labels:
    app: kube-plex
    app.kubernetes.io/managed-by: Helm
    chart: kube-plex-0.2.7
    heritage: Helm
    release: plex
  annotations:
    deployment.kubernetes.io/revision: '8'
    meta.helm.sh/release-name: plex
    meta.helm.sh/release-namespace: media
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kube-plex
      release: plex
  template:
    metadata:
      labels:
        app: kube-plex
        release: plex
    spec:
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: plex-kube-plex-data
        - name: config
          persistentVolumeClaim:
            claimName: plex-kube-plex-config
        - name: shared
          emptyDir: {}
      containers:
        - name: plex
          image: plexinc/pms-docker:1.25.5.5492-12f6b8c83
          ports:
            - name: pms
              containerPort: 32400
              protocol: TCP
            - name: http
              containerPort: 32400
              protocol: TCP
            - name: https
              containerPort: 32443
              protocol: TCP
          env:
            - name: TZ
              value: Europe/Paris
            - name: PLEX_CLAIM
              value: some-claim
            - name: PMS_INTERNAL_ADDRESS
              value: http://plex-kube-plex:32400
            - name: PMS_IMAGE
              value: plexinc/pms-docker:1.25.5.5492-12f6b8c83
            - name: KUBE_NAMESPACE
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            - name: TRANSCODE_PVC
              value: plex-kube-plex-data
            - name: DATA_PVC
              value: plex-kube-plex-data
            - name: CONFIG_PVC
              value: plex-kube-plex-config
          resources: {}
          volumeMounts:
            - name: data
              mountPath: /data
            - name: config
              mountPath: /config
            - name: transcode
              mountPath: /transcode
            - name: shared
              mountPath: /shared
          livenessProbe:
            httpGet:
              path: /identity
              port: 32400
              scheme: HTTP
            initialDelaySeconds: 10
            timeoutSeconds: 10
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          readinessProbe:
            httpGet:
              path: /identity
              port: 32400
              scheme: HTTP
            initialDelaySeconds: 15
            timeoutSeconds: 5
            periodSeconds: 10
            successThreshold: 1
            failureThreshold: 3
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: plex-kube-plex
      serviceAccount: plex-kube-plex
      securityContext: {}
      hostname: plex-kube-plex
      schedulerName: default-scheduler
service.yaml
kind: Service
apiVersion: v1
metadata:
  name: plex-kube-plex
  namespace: media
  labels:
    app: kube-plex
    app.kubernetes.io/managed-by: Helm
    chart: kube-plex-0.2.7
    heritage: Helm
    release: plex
  annotations:
    meta.helm.sh/release-name: plex
    meta.helm.sh/release-namespace: media
spec:
  ports:
    - name: pms
      protocol: TCP
      port: 32400
      targetPort: pms
    - name: http
      protocol: TCP
      port: 80
      targetPort: pms
    - name: https
      protocol: TCP
      port: 443
      targetPort: 32443
  selector:
    app: kube-plex
    release: plex
  type: ClusterIP

This works perfectly for me, besides the remote access issue.

I need this, because right now, I cannot stream using devices outside the network at more than 240p. I'm getting the error:

Video quality limited: a direct connection to the server is not available.

This only happens on my iOS client app. On pcs and on phone browser it works correctly.

I could never get it to work regardless of kube-plex or not so what I did instead was just expose 32400 as a NodePort and used external-dns to update the DNS record to point to the corresponding node/pod.
I originally followed this guide: https://mike.sg/2021/08/31/digitalocean-kubernetes-without-a-load-balancer/

Works fine for me and I've even disabled relay so it won't even play at limited streaming