images/controller/build.yaml (289 lines of code) (raw):

apiVersion: v1 kind: Namespace metadata: annotations: app.broker/app: xfce-desktop cnrm.cloud.google.com/project-id: code-server-gcp-solutions labels: app.kubernetes.io/managed-by: pod-broker name: xfce-desktop --- apiVersion: v1 kind: ServiceAccount metadata: annotations: app.broker/app: xfce-desktop iam.gke.io/gcp-service-account: broker-user@code-server-gcp-solutions.iam.gserviceaccount.com labels: app.kubernetes.io/managed-by: pod-broker name: xfce-desktop namespace: xfce-desktop --- apiVersion: v1 kind: Service metadata: annotations: app.broker/app: xfce-desktop labels: app.kubernetes.io/managed-by: pod-broker name: xfce-desktop namespace: xfce-desktop spec: clusterIP: None --- apiVersion: apps/v1 kind: Deployment metadata: annotations: app.broker/app: xfce-desktop labels: app.kubernetes.io/managed-by: pod-broker name: xfce-desktop namespace: xfce-desktop spec: replicas: 2 selector: matchLabels: app: xfce-desktop app.kubernetes.io/managed-by: pod-broker template: metadata: annotations: app.broker/app: xfce-desktop labels: app: xfce-desktop app.kubernetes.io/managed-by: pod-broker spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: app.broker/initialized operator: In values: - "true" weight: 100 automountServiceAccountToken: false containers: - env: - name: VDI_USER value: xfce-desktop - name: LD_LIBRARY_PATH value: /usr/local/nvidia/lib64:/usr/local/nvidia/lib32 - name: PULSE_SERVER value: 127.0.0.1:4713 image: gcr.io/disla-goog-dev/webrtc-gpu-streaming-desktop:latest name: desktop resources: limits: {} requests: cpu: 500m securityContext: privileged: false runAsGroup: 1000 runAsUser: 1000 volumeMounts: - mountPath: /tmp/.X11-unix name: x11 - mountPath: /var/run/appconfig name: config - mountPath: /dev/shm name: dshm - args: - -ec - | echo "Waiting for host X server at ${DISPLAY}" until [[ -e /var/run/appconfig/xserver_ready ]]; do sleep 1; done echo "Host X server is ready" exec /usr/bin/python3 /opt/app/xserver_watchdog.py --on_timeout=/opt/app/watchdog.sh command: - /bin/bash env: - name: DISPLAY value: :0 - name: BROKER_COOKIE value: broker_xfce-desktop= - name: BROKER_ENDPOINT value: https://test.domain/broker - name: BROKER_HOST value: test.domain - name: IN_CLUSTER value: "true" - name: CLIENT_ID value: test.clientid - name: POD_USER value: xfce-desktop - name: APP_NAME value: xfce-desktop - name: WATCHDOG_TIMEOUT value: "3600" image: gcr.io/disla-goog-dev/webrtc-gpu-streaming-gst-webrtc-app:latest imagePullPolicy: IfNotPresent name: watchdog volumeMounts: - mountPath: /tmp/.X11-unix name: x11 - mountPath: /var/run/appconfig name: config - image: gcr.io/disla-goog-dev/webrtc-gpu-streaming-pulseaudio:latest imagePullPolicy: IfNotPresent name: pulseaudio ports: - containerPort: 4713 name: pulseaudio protocol: TCP - env: - name: VDI_USER value: xfce-desktop - name: X11_DRIVER value: xdummy - name: X11_DRIVER value: xdummy image: gcr.io/disla-goog-dev/webrtc-gpu-streaming-xserver:latest imagePullPolicy: IfNotPresent lifecycle: preStop: exec: command: - sh - -c - kill $(pidof Xorg tail bash) name: xserver resources: limits: {} requests: {} securityContext: privileged: false volumeMounts: - mountPath: /tmp/.X11-unix name: x11 - mountPath: /var/run/appconfig name: config - env: - name: GST_DEBUG value: '*:2' - name: LD_LIBRARY_PATH value: /usr/local/nvidia/lib64:/usr/local/nvidia/cuda/lib64:/usr/local/nvidia/lib32 - name: DISPLAY value: :0 - name: PULSE_SERVER value: 127.0.0.1:4713 - name: SIGNALLING_SERVER value: ws://127.0.0.1:8080 - name: COTURN_AUTH_HEADER_NAME value: x-goog-authenticated-user-email - name: COTURN_WEB_URI value: http://turn.pod-broker-system.svc.cluster.local/ - name: APP_AUTO_INIT value: "true" - name: ENABLE_AUDIO value: "false" - name: WEBRTC_ENCODER value: vp8enc image: gcr.io/disla-goog-dev/webrtc-gpu-streaming-gst-webrtc-app:latest imagePullPolicy: IfNotPresent name: webrtc resources: limits: {} requests: {} securityContext: privileged: false tty: true volumeMounts: - mountPath: /tmp/.X11-unix name: x11 - mountPath: /var/run/appconfig name: config - image: gcr.io/disla-goog-dev/webrtc-gpu-streaming-signaling:latest imagePullPolicy: IfNotPresent name: signalling ports: - containerPort: 8080 name: signalling readinessProbe: tcpSocket: port: signalling - args: - -exc - | sed -i \ -e 's/listen.*80;/listen 8082;/g' \ /etc/nginx/conf.d/default.conf exec nginx -g 'daemon off;' command: - /bin/sh image: gcr.io/disla-goog-dev/webrtc-gpu-streaming-gst-web:latest imagePullPolicy: IfNotPresent name: web ports: - containerPort: 8082 name: web readinessProbe: httpGet: path: / port: web enableServiceLinks: false initContainers: [] nodeSelector: app.broker/tier: tier1 cloud.google.com/gke-nodepool: tier1 serviceAccount: xfce-desktop terminationGracePeriodSeconds: 5 tolerations: - effect: NoSchedule key: app.broker/tier operator: Exists - effect: NoSchedule key: app.broker/node-init operator: Exists volumes: - emptyDir: medium: Memory sizeLimit: 10Mi name: x11 - emptyDir: medium: Memory sizeLimit: 10Mi name: config - emptyDir: medium: Memory sizeLimit: 1Gi name: dshm --- apiVersion: iam.cnrm.cloud.google.com/v1beta1 kind: IAMPolicyMember metadata: annotations: app.broker/app: xfce-desktop cnrm.cloud.google.com/deletion-policy: abandon labels: app.kubernetes.io/managed-by: pod-broker name: xfce-desktop-wi namespace: xfce-desktop spec: member: serviceAccount:code-server-gcp-solutions.svc.id.goog[xfce-desktop/xfce-desktop] resourceRef: apiVersion: iam.cnrm.cloud.google.com/v1beta1 external: projects/code-server-gcp-solutions/serviceAccounts/broker-user@code-server-gcp-solutions.iam.gserviceaccount.com kind: IAMServiceAccount role: roles/iam.workloadIdentityUser --- apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: annotations: app.broker/app: xfce-desktop labels: app.kubernetes.io/managed-by: pod-broker name: deny-all namespace: xfce-desktop spec: ingress: - from: - namespaceSelector: matchLabels: install.operator.istio.io/owner-kind: IstioControlPlane podSelector: {} policyTypes: - Ingress