mirror of
https://github.com/fcwu/docker-ubuntu-vnc-desktop
synced 2025-12-06 16:32:47 +01:00
RND-18206 create helm chart
This commit is contained in:
parent
ef9bf81efd
commit
c5208ca108
8 changed files with 344 additions and 0 deletions
23
helm/.helmignore
Normal file
23
helm/.helmignore
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
||||||
6
helm/Chart.yaml
Normal file
6
helm/Chart.yaml
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
apiVersion: v2
|
||||||
|
name: uv-portal-desktop
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
type: application
|
||||||
|
version: 0.0.1
|
||||||
|
appVersion: "0.0.1"
|
||||||
1
helm/templates/NOTES.txt
Normal file
1
helm/templates/NOTES.txt
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
1. Get the application URL by running these commands:
|
||||||
71
helm/templates/_helpers.tpl
Normal file
71
helm/templates/_helpers.tpl
Normal file
|
|
@ -0,0 +1,71 @@
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "uv-portal-desktop.name" -}}
|
||||||
|
uv-portal-desktop
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "uv-portal-desktop.db.name" -}}
|
||||||
|
uvportal-postgres
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "uv-portal-desktop.namespace" -}}
|
||||||
|
{{- default .Release.Namespace .Values.namespace -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{- define "uv-portal-desktop.matchLabels" -}}
|
||||||
|
k8s-app: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
app.kubernetes.io/name: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "uv-portal-desktop.common.metaLabels" -}}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion }}
|
||||||
|
helm.sh/chart: {{ include "uv-portal-desktop.chart" . }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
app.kubernetes.io/part-of: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
{{- with .Values.commonMetaLabels}}
|
||||||
|
{{ toYaml . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- define "uv-portal-desktop.labels" -}}
|
||||||
|
{{ include "uv-portal-desktop.matchLabels" . }}
|
||||||
|
{{ include "uv-portal-desktop.common.metaLabels" . }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "uv-portal-desktop.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride }}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||||
|
{{- if contains $name .Release.Name }}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- else }}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "uv-portal-desktop.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "uv-portal-desktop.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
{{- default (include "uv-portal-desktop.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else }}
|
||||||
|
{{- default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
9
helm/templates/cm.yaml
Normal file
9
helm/templates/cm.yaml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "uv-portal-desktop.labels" . | nindent 4 }}
|
||||||
|
name: system-consts
|
||||||
|
namespace: {{ include "uv-portal-desktop.namespace" . }}
|
||||||
|
data:
|
||||||
|
{{- .Values.systemConsts.configMapData | toYaml | nindent 2 }}
|
||||||
87
helm/templates/deploy.yaml
Normal file
87
helm/templates/deploy.yaml
Normal file
|
|
@ -0,0 +1,87 @@
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "uv-portal-desktop.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.labels }}
|
||||||
|
{{ toYaml .Values.labels | nindent 4 }}
|
||||||
|
{{- end}}
|
||||||
|
name: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
namespace: {{ include "uv-portal-desktop.namespace" . }}
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "uv-portal-desktop.matchLabels" . | nindent 6 }}
|
||||||
|
serviceName: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "uv-portal-desktop.matchLabels" . | nindent 8 }}
|
||||||
|
name: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
hostAliases:
|
||||||
|
- ip: 10.43.100.100
|
||||||
|
hostnames:
|
||||||
|
- uvportal.uveye.local
|
||||||
|
containers:
|
||||||
|
- name: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
ports:
|
||||||
|
- containerPort: 5900
|
||||||
|
name: vnc
|
||||||
|
- containerPort: 6080
|
||||||
|
name: http
|
||||||
|
env:
|
||||||
|
{{- toYaml .Values.env | nindent 10 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
{{- with .Values.livenessProbe }}
|
||||||
|
livenessProbe:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.readinessProbe }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.resources }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml . | nindent 12 }}
|
||||||
|
{{- end }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: x11-unix
|
||||||
|
mountPath: /tmp/.X11-unix
|
||||||
|
- name: x11-xkb
|
||||||
|
mountPath: /usr/share/X11/xkb
|
||||||
|
- name: xserver
|
||||||
|
mountPath: /root/.Xauthority
|
||||||
|
- name: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
mountPath: /etc/supervisor/conf.d/
|
||||||
|
- name: cache-volume
|
||||||
|
mountPath: /dev/shm
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccount: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
volumes:
|
||||||
|
- name: x11-unix
|
||||||
|
hostPath:
|
||||||
|
path: /tmp/.X11-unix
|
||||||
|
- name: x11-xkb
|
||||||
|
hostPath:
|
||||||
|
path: /usr/share/X11/xkb
|
||||||
|
- configMap:
|
||||||
|
name: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
name: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
- name: xserver
|
||||||
|
hostPath:
|
||||||
|
path: /home/uvadmin/.Xauthority
|
||||||
|
type: File
|
||||||
|
- name: cache-volume
|
||||||
|
emptyDir:
|
||||||
|
medium: Memory
|
||||||
|
sizeLimit: 512Mi
|
||||||
29
helm/templates/svc.yaml
Normal file
29
helm/templates/svc.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
{{- if .Values.service.enabled -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
{{- if .Values.service.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{ toYaml .Values.service.annotations | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "uv-portal-desktop.labels" . | nindent 4 }}
|
||||||
|
{{- if .Values.service.labels }}
|
||||||
|
{{ toYaml .Values.service.labels | indent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ include "uv-portal-desktop.name" . }}
|
||||||
|
namespace: {{ include "uv-portal-desktop.namespace" . }}
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
port: 30080
|
||||||
|
nodePort: 30080
|
||||||
|
targetPort: http
|
||||||
|
- name: vnc
|
||||||
|
port: 5900
|
||||||
|
nodePort: 30590
|
||||||
|
targetPort: vnc
|
||||||
|
selector:
|
||||||
|
{{- include "uv-portal-desktop.matchLabels" . | nindent 4 }}
|
||||||
|
type: "{{ .Values.service.type }}"
|
||||||
|
{{- end -}}
|
||||||
118
helm/values.yaml
Normal file
118
helm/values.yaml
Normal file
|
|
@ -0,0 +1,118 @@
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: regcred
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: 230690759643.dkr.ecr.eu-west-1.amazonaws.com/vnc-desktop
|
||||||
|
tag: ''
|
||||||
|
|
||||||
|
namespace: uveye
|
||||||
|
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
memory: 4096Mi
|
||||||
|
cpu: "2"
|
||||||
|
requests:
|
||||||
|
memory: 512Mi
|
||||||
|
cpu: "0.4"
|
||||||
|
|
||||||
|
affinity:
|
||||||
|
nodeAffinity:
|
||||||
|
requiredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
nodeSelectorTerms:
|
||||||
|
- matchExpressions:
|
||||||
|
- key: node-role.kubernetes.io/master
|
||||||
|
operator: In
|
||||||
|
values:
|
||||||
|
- "true"
|
||||||
|
|
||||||
|
service:
|
||||||
|
enabled: true
|
||||||
|
type: LoadBalancer
|
||||||
|
|
||||||
|
env:
|
||||||
|
- name: USER
|
||||||
|
value: uvdesk
|
||||||
|
- name: VNC_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: secrets-uv-portal-vnc-desktop
|
||||||
|
key: password
|
||||||
|
- name: HTTP_PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: secrets-uv-portal-vnc-desktop
|
||||||
|
key: password
|
||||||
|
- name: PASSWORD
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: secrets-uv-portal-vnc-desktop
|
||||||
|
key: password
|
||||||
|
- name: DISPLAY
|
||||||
|
value: ":1.0"
|
||||||
|
|
||||||
|
livenessProbe: {}
|
||||||
|
readinessProbe: {}
|
||||||
|
|
||||||
|
systemConsts:
|
||||||
|
configMapData:
|
||||||
|
supervisord.conf: |-
|
||||||
|
[supervisord]
|
||||||
|
redirect_stderr=true
|
||||||
|
stopsignal=QUIT
|
||||||
|
autorestart=true
|
||||||
|
directory=/root
|
||||||
|
#
|
||||||
|
[program:nginx]
|
||||||
|
priority=10
|
||||||
|
command=nginx -c /etc/nginx/nginx.conf -g 'daemon off;'
|
||||||
|
#
|
||||||
|
[program:web]
|
||||||
|
priority=10
|
||||||
|
directory=/usr/local/lib/web/backend
|
||||||
|
command=/usr/local/lib/web/backend/run.py
|
||||||
|
stdout_logfile=/dev/fd/1
|
||||||
|
stdout_logfile_maxbytes=0
|
||||||
|
stderr_logfile=/dev/fd/1
|
||||||
|
stderr_logfile_maxbytes=0
|
||||||
|
#
|
||||||
|
#
|
||||||
|
[group:x]
|
||||||
|
programs=xvfb,wm,lxpanel,pcmanfm,x11vnc,novnc
|
||||||
|
#
|
||||||
|
[program:wm]
|
||||||
|
priority=15
|
||||||
|
command=/usr/bin/openbox
|
||||||
|
environment=DISPLAY=":1",HOME="/root",USER="root"
|
||||||
|
#
|
||||||
|
[program:lxpanel]
|
||||||
|
priority=15
|
||||||
|
directory=/home/uvdesk
|
||||||
|
command=/usr/bin/lxpanel --profile LXDE
|
||||||
|
user=uvdesk
|
||||||
|
environment=DISPLAY=":1",HOME="/home/uvdesk",USER="uvdesk"
|
||||||
|
#
|
||||||
|
[program:pcmanfm]
|
||||||
|
priority=15
|
||||||
|
directory=/home/uvdesk
|
||||||
|
command=/usr/bin/pcmanfm --desktop --profile LXDE
|
||||||
|
user=uvdesk
|
||||||
|
environment=DISPLAY=":1",HOME="/home/uvdesk",USER="uvdesk"
|
||||||
|
#
|
||||||
|
[program:xvfb]
|
||||||
|
priority=10
|
||||||
|
command=/usr/local/bin/xvfb.sh
|
||||||
|
stopsignal=KILL
|
||||||
|
#
|
||||||
|
[program:x11vnc]
|
||||||
|
priority=20
|
||||||
|
command=x11vnc -display :1 -xkb -forever -shared -repeat -capslock -rfbauth /.password2
|
||||||
|
#
|
||||||
|
[program:novnc]
|
||||||
|
priority=25
|
||||||
|
directory=/usr/local/lib/web/frontend/static/novnc
|
||||||
|
command=bash /usr/local/lib/web/frontend/static/novnc/utils/launch.sh --listen 6081
|
||||||
|
stopasgroup=true
|
||||||
|
#
|
||||||
|
|
||||||
Loading…
Reference in a new issue