Nova: add spice console
This PS adds spice remote console. User can choose a console by changing console_kind in values file. Best practice is to select one or the other to run, so choosing something other than vnc disables the vnc console. Change-Id: Ic5d361d5f344b7a078e0c3aeb5f921810101552d
This commit is contained in:
parent
44194a9291
commit
2b5525715b
@ -23,6 +23,10 @@ if [ "${console_kind}" == "novnc" ] ; then
|
|||||||
exec nova-compute \
|
exec nova-compute \
|
||||||
--config-file /etc/nova/nova.conf \
|
--config-file /etc/nova/nova.conf \
|
||||||
--config-file /tmp/pod-shared/nova-vnc.ini
|
--config-file /tmp/pod-shared/nova-vnc.ini
|
||||||
|
elif [ "${console_kind}" == "spice" ] ; then
|
||||||
|
exec nova-compute \
|
||||||
|
--config-file /etc/nova/nova.conf \
|
||||||
|
--config-file /tmp/pod-shared/nova-spice.ini
|
||||||
else
|
else
|
||||||
exec nova-compute \
|
exec nova-compute \
|
||||||
--config-file /etc/nova/nova.conf
|
--config-file /etc/nova/nova.conf
|
||||||
|
@ -18,9 +18,19 @@ limitations under the License.
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
client_address="{{- .Values.conf.nova.vnc.vncserver_proxyclient_address -}}"
|
console_kind="{{- .Values.console.console_kind -}}"
|
||||||
|
|
||||||
|
if [ "${console_kind}" == "novnc" ] ; then
|
||||||
|
client_address="{{- .Values.conf.nova.vnc.server_proxyclient_address -}}"
|
||||||
|
client_interface="{{- .Values.console.novnc.compute.server_proxyclient_interface -}}"
|
||||||
|
listen_ip="{{- .Values.conf.nova.vnc.server_listen -}}"
|
||||||
|
elif [ "${console_kind}" == "spice" ] ; then
|
||||||
|
client_address="{{- .Values.conf.nova.spice.server_proxyclient_address -}}"
|
||||||
|
client_interface="{{- .Values.console.spice.compute.server_proxyclient_interface -}}"
|
||||||
|
listen_ip="{{- .Values.conf.nova.spice.server_listen -}}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "${client_address}" ] ; then
|
if [ -z "${client_address}" ] ; then
|
||||||
client_interface="{{- .Values.console.novnc.compute.vncserver_proxyclient_interface -}}"
|
|
||||||
if [ -z "${client_interface}" ] ; then
|
if [ -z "${client_interface}" ] ; then
|
||||||
# search for interface with default routing
|
# search for interface with default routing
|
||||||
client_interface=$(ip r | grep default | awk '{print $5}')
|
client_interface=$(ip r | grep default | awk '{print $5}')
|
||||||
@ -30,15 +40,22 @@ if [ -z "${client_address}" ] ; then
|
|||||||
client_address=$(ip a s $client_interface | grep 'inet ' | awk '{print $2}' | awk -F "/" '{print $1}')
|
client_address=$(ip a s $client_interface | grep 'inet ' | awk '{print $2}' | awk -F "/" '{print $1}')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
listen_ip="{{- .Values.conf.nova.vnc.vncserver_listen -}}"
|
|
||||||
if [ -z "${listen_ip}" ] ; then
|
if [ -z "${listen_ip}" ] ; then
|
||||||
# The server component listens on all IP addresses and the proxy component
|
# The server component listens on all IP addresses and the proxy component
|
||||||
# only listens on the management interface IP address of the compute node.
|
# only listens on the management interface IP address of the compute node.
|
||||||
listen_ip=0.0.0.0
|
listen_ip=0.0.0.0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "${console_kind}" == "novnc" ] ; then
|
||||||
cat <<EOF>/tmp/pod-shared/nova-vnc.ini
|
cat <<EOF>/tmp/pod-shared/nova-vnc.ini
|
||||||
[vnc]
|
[vnc]
|
||||||
vncserver_proxyclient_address = $client_address
|
vncserver_proxyclient_address = $client_address
|
||||||
vncserver_listen = $listen_ip
|
vncserver_listen = $listen_ip
|
||||||
EOF
|
EOF
|
||||||
|
elif [ "${console_kind}" == "spice" ] ; then
|
||||||
|
cat <<EOF>/tmp/pod-shared/nova-spice.ini
|
||||||
|
[spice]
|
||||||
|
server_proxyclient_address = $client_address
|
||||||
|
server_listen = $listen_ip
|
||||||
|
EOF
|
||||||
|
fi
|
@ -18,4 +18,9 @@ limitations under the License.
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
cp -vaR /usr/share/novnc/* /tmp/usr/share/novnc/
|
console_kind="{{- .Values.console.console_kind -}}"
|
||||||
|
if [ "${console_kind}" == "novnc" ] ; then
|
||||||
|
cp -vaR /usr/share/novnc/* /tmp/usr/share/novnc/
|
||||||
|
elif [ "${console_kind}" == "spice" ] ; then
|
||||||
|
cp -vaR /usr/share/spice-html5/* /tmp/usr/share/spice-html5/
|
||||||
|
fi
|
@ -18,9 +18,19 @@ limitations under the License.
|
|||||||
|
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
client_address="{{- .Values.conf.nova.vnc.vncserver_proxyclient_address -}}"
|
console_kind="{{- .Values.console.console_kind -}}"
|
||||||
if [ -z "${client_address}" ] ; then
|
|
||||||
|
if [ "${console_kind}" == "novnc" ] ; then
|
||||||
|
client_address="{{- .Values.conf.nova.vnc.vncserver_proxyclient_address -}}"
|
||||||
client_interface="{{- .Values.console.novnc.vncproxy.vncserver_proxyclient_interface -}}"
|
client_interface="{{- .Values.console.novnc.vncproxy.vncserver_proxyclient_interface -}}"
|
||||||
|
listen_ip="{{- .Values.conf.nova.vnc.vncserver_listen -}}"
|
||||||
|
elif [ "${console_kind}" == "spice" ] ; then
|
||||||
|
client_address="{{- .Values.conf.nova.spice.server_proxyclient_address -}}"
|
||||||
|
client_interface="{{- .Values.console.spice.proxy.server_proxyclient_interface -}}"
|
||||||
|
listen_ip="{{- .Values.conf.nova.spice.server_listen -}}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "${client_address}" ] ; then
|
||||||
if [ -z "${client_interface}" ] ; then
|
if [ -z "${client_interface}" ] ; then
|
||||||
# search for interface with default routing
|
# search for interface with default routing
|
||||||
client_interface=$(ip r | grep default | awk '{print $5}')
|
client_interface=$(ip r | grep default | awk '{print $5}')
|
||||||
@ -30,13 +40,20 @@ if [ -z "${client_address}" ] ; then
|
|||||||
client_address=$(ip a s $client_interface | grep 'inet ' | awk '{print $2}' | awk -F "/" '{print $1}')
|
client_address=$(ip a s $client_interface | grep 'inet ' | awk '{print $2}' | awk -F "/" '{print $1}')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
listen_ip="{{- .Values.conf.nova.vnc.vncserver_listen -}}"
|
|
||||||
if [ -z "${listen_ip}" ] ; then
|
if [ -z "${listen_ip}" ] ; then
|
||||||
listen_ip=$client_address
|
listen_ip=$client_address
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "${console_kind}" == "novnc" ] ; then
|
||||||
cat <<EOF>/tmp/pod-shared/nova-vnc.ini
|
cat <<EOF>/tmp/pod-shared/nova-vnc.ini
|
||||||
[vnc]
|
[vnc]
|
||||||
vncserver_proxyclient_address = $client_address
|
vncserver_proxyclient_address = $client_address
|
||||||
vncserver_listen = $listen_ip
|
vncserver_listen = $listen_ip
|
||||||
EOF
|
EOF
|
||||||
|
elif [ "${console_kind}" == "spice" ] ; then
|
||||||
|
cat <<EOF>/tmp/pod-shared/nova-spice.ini
|
||||||
|
[spice]
|
||||||
|
server_proxyclient_address = $client_address
|
||||||
|
server_listen = $listen_ip
|
||||||
|
EOF
|
||||||
|
fi
|
@ -17,6 +17,14 @@ limitations under the License.
|
|||||||
*/}}
|
*/}}
|
||||||
|
|
||||||
set -x
|
set -x
|
||||||
exec nova-novncproxy \
|
|
||||||
--config-file /etc/nova/nova.conf \
|
console_kind="{{- .Values.console.console_kind -}}"
|
||||||
--config-file /tmp/pod-shared/nova-vnc.ini
|
if [ "${console_kind}" == "novnc" ] ; then
|
||||||
|
exec nova-novncproxy \
|
||||||
|
--config-file /etc/nova/nova.conf \
|
||||||
|
--config-file /tmp/pod-shared/nova-vnc.ini
|
||||||
|
elif [ "${console_kind}" == "spice" ] ; then
|
||||||
|
exec nova-spicehtml5proxy\
|
||||||
|
--config-file /etc/nova/nova.conf \
|
||||||
|
--config-file /tmp/pod-shared/nova-spice.ini
|
||||||
|
fi
|
@ -63,14 +63,14 @@ data:
|
|||||||
{{ tuple "bin/_nova-scheduler.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
{{ tuple "bin/_nova-scheduler.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
||||||
fake-iptables.sh: |
|
fake-iptables.sh: |
|
||||||
{{ tuple "bin/_fake-iptables.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
{{ tuple "bin/_fake-iptables.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
||||||
nova-novncproxy.sh: |
|
nova-console-compute-init.sh: |
|
||||||
{{ tuple "bin/_nova-novncproxy.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
{{ tuple "bin/_nova-console-compute-init.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
||||||
nova-vnc-compute-init.sh: |
|
nova-console-proxy.sh: |
|
||||||
{{ tuple "bin/_nova-vnc-compute-init.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
{{ tuple "bin/_nova-console-proxy.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
||||||
nova-vnc-proxy-init-assets.sh: |
|
nova-console-proxy-init.sh: |
|
||||||
{{ tuple "bin/_nova-vnc-proxy-init-assets.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
{{ tuple "bin/_nova-console-proxy-init.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
||||||
nova-vnc-proxy-init.sh: |
|
nova-console-proxy-init-assets.sh: |
|
||||||
{{ tuple "bin/_nova-vnc-proxy-init.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
{{ tuple "bin/_nova-console-proxy-init-assets.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
||||||
ssh-start.sh: |
|
ssh-start.sh: |
|
||||||
{{ tuple "bin/_ssh-start.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
{{ tuple "bin/_ssh-start.sh.tpl" . | include "helm-toolkit.utils.template" | indent 4 }}
|
||||||
cell-setup.sh: |
|
cell-setup.sh: |
|
||||||
|
@ -138,13 +138,26 @@ limitations under the License.
|
|||||||
{{- set .Values.conf.nova.placement "password" .Values.endpoints.identity.auth.placement.password | quote | trunc 0 -}}
|
{{- set .Values.conf.nova.placement "password" .Values.endpoints.identity.auth.placement.password | quote | trunc 0 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if eq .Values.console.console_kind "novnc"}}
|
||||||
|
{{- "true" | set .Values.conf.nova.vnc "enabled" | quote | trunc 0 -}}
|
||||||
{{- if empty .Values.conf.nova.vnc.novncproxy_base_url -}}
|
{{- if empty .Values.conf.nova.vnc.novncproxy_base_url -}}
|
||||||
{{- tuple "compute_novnc_proxy" "public" "novnc_proxy" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.nova.vnc "novncproxy_base_url" | quote | trunc 0 -}}
|
{{- tuple "compute_novnc_proxy" "public" "novnc_proxy" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.nova.vnc "novncproxy_base_url" | quote | trunc 0 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
{{- if empty .Values.conf.nova.vnc.novncproxy_port -}}
|
{{- if empty .Values.conf.nova.vnc.novncproxy_port -}}
|
||||||
{{- tuple "compute_novnc_proxy" "internal" "novnc_proxy" . | include "helm-toolkit.endpoints.endpoint_port_lookup" | set .Values.conf.nova.vnc "novncproxy_port" | quote | trunc 0 -}}
|
{{- tuple "compute_novnc_proxy" "internal" "novnc_proxy" . | include "helm-toolkit.endpoints.endpoint_port_lookup" | set .Values.conf.nova.vnc "novncproxy_port" | quote | trunc 0 -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{- if eq .Values.console.console_kind "spice"}}
|
||||||
|
{{- "false" | set .Values.conf.nova.vnc "enabled" | quote | trunc 0 -}}
|
||||||
|
{{- "true" | set .Values.conf.nova.spice "enabled" | quote | trunc 0 -}}
|
||||||
|
{{- if empty .Values.conf.nova.spice.html5proxy_base_url -}}
|
||||||
|
{{- tuple "compute_spice_proxy" "public" "spice_proxy" . | include "helm-toolkit.endpoints.keystone_endpoint_uri_lookup" | set .Values.conf.nova.spice "html5proxy_base_url" | quote | trunc 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- if empty .Values.conf.nova.spice.html5proxy_port -}}
|
||||||
|
{{- tuple "compute_spice_proxy" "internal" "spice_proxy" . | include "helm-toolkit.endpoints.endpoint_port_lookup" | set .Values.conf.nova.spice "html5proxy_port" | quote | trunc 0 -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
|
@ -92,6 +92,7 @@ spec:
|
|||||||
subPath: key
|
subPath: key
|
||||||
readOnly: true
|
readOnly: true
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
{{- if eq .Values.console.console_kind "novnc"}}
|
||||||
- name: nova-compute-vnc-init
|
- name: nova-compute-vnc-init
|
||||||
image: {{ .Values.images.tags.compute }}
|
image: {{ .Values.images.tags.compute }}
|
||||||
imagePullPolicy: {{ .Values.images.pull_policy }}
|
imagePullPolicy: {{ .Values.images.pull_policy }}
|
||||||
@ -99,14 +100,32 @@ spec:
|
|||||||
securityContext:
|
securityContext:
|
||||||
runAsUser: {{ .Values.pod.user.nova.uid }}
|
runAsUser: {{ .Values.pod.user.nova.uid }}
|
||||||
command:
|
command:
|
||||||
- /tmp/nova-vnc-compute-init.sh
|
- /tmp/nova-console-compute-init.sh
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: nova-bin
|
- name: nova-bin
|
||||||
mountPath: /tmp/nova-vnc-compute-init.sh
|
mountPath: /tmp/nova-console-compute-init.sh
|
||||||
subPath: nova-vnc-compute-init.sh
|
subPath: nova-console-compute-init.sh
|
||||||
readOnly: true
|
readOnly: true
|
||||||
- name: pod-shared
|
- name: pod-shared
|
||||||
mountPath: /tmp/pod-shared
|
mountPath: /tmp/pod-shared
|
||||||
|
{{ end }}
|
||||||
|
{{- if eq .Values.console.console_kind "spice"}}
|
||||||
|
- name: nova-compute-spice-init
|
||||||
|
image: {{ .Values.images.tags.compute }}
|
||||||
|
imagePullPolicy: {{ .Values.images.pull_policy }}
|
||||||
|
{{ tuple $envAll $envAll.Values.pod.resources.compute | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
|
||||||
|
securityContext:
|
||||||
|
runAsUser: {{ .Values.pod.user.nova.uid }}
|
||||||
|
command:
|
||||||
|
- /tmp/nova-console-compute-init.sh
|
||||||
|
volumeMounts:
|
||||||
|
- name: nova-bin
|
||||||
|
mountPath: /tmp/nova-console-compute-init.sh
|
||||||
|
subPath: nova-console-compute-init.sh
|
||||||
|
readOnly: true
|
||||||
|
- name: pod-shared
|
||||||
|
mountPath: /tmp/pod-shared
|
||||||
|
{{ end }}
|
||||||
containers:
|
containers:
|
||||||
- name: nova-compute
|
- name: nova-compute
|
||||||
image: {{ .Values.images.tags.compute }}
|
image: {{ .Values.images.tags.compute }}
|
||||||
|
@ -56,11 +56,11 @@ spec:
|
|||||||
securityContext:
|
securityContext:
|
||||||
runAsUser: {{ .Values.pod.user.nova.uid }}
|
runAsUser: {{ .Values.pod.user.nova.uid }}
|
||||||
command:
|
command:
|
||||||
- /tmp/nova-vnc-proxy-init.sh
|
- /tmp/nova-console-proxy-init.sh
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: nova-bin
|
- name: nova-bin
|
||||||
mountPath: /tmp/nova-vnc-proxy-init.sh
|
mountPath: /tmp/nova-console-proxy-init.sh
|
||||||
subPath: nova-vnc-proxy-init.sh
|
subPath: nova-console-proxy-init.sh
|
||||||
readOnly: true
|
readOnly: true
|
||||||
- name: nova-etc
|
- name: nova-etc
|
||||||
mountPath: /etc/nova/nova.conf
|
mountPath: /etc/nova/nova.conf
|
||||||
@ -73,11 +73,11 @@ spec:
|
|||||||
imagePullPolicy: {{ .Values.images.pull_policy }}
|
imagePullPolicy: {{ .Values.images.pull_policy }}
|
||||||
{{ tuple $envAll $envAll.Values.pod.resources.novncproxy | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
|
{{ tuple $envAll $envAll.Values.pod.resources.novncproxy | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
|
||||||
command:
|
command:
|
||||||
- /tmp/nova-vnc-proxy-init-assets.sh
|
- /tmp/nova-console-proxy-init-assets.sh
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: nova-bin
|
- name: nova-bin
|
||||||
mountPath: /tmp/nova-vnc-proxy-init-assets.sh
|
mountPath: /tmp/nova-console-proxy-init-assets.sh
|
||||||
subPath: nova-vnc-proxy-init-assets.sh
|
subPath: nova-console-proxy-init-assets.sh
|
||||||
readOnly: true
|
readOnly: true
|
||||||
- name: pod-usr-share-novnc
|
- name: pod-usr-share-novnc
|
||||||
mountPath: /tmp/usr/share/novnc
|
mountPath: /tmp/usr/share/novnc
|
||||||
@ -87,11 +87,11 @@ spec:
|
|||||||
imagePullPolicy: {{ .Values.images.pull_policy }}
|
imagePullPolicy: {{ .Values.images.pull_policy }}
|
||||||
{{ tuple $envAll $envAll.Values.pod.resources.novncproxy | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
|
{{ tuple $envAll $envAll.Values.pod.resources.novncproxy | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
|
||||||
command:
|
command:
|
||||||
- /tmp/nova-novncproxy.sh
|
- /tmp/nova-console-proxy.sh
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: nova-bin
|
- name: nova-bin
|
||||||
mountPath: /tmp/nova-novncproxy.sh
|
mountPath: /tmp/nova-console-proxy.sh
|
||||||
subPath: nova-novncproxy.sh
|
subPath: nova-console-proxy.sh
|
||||||
readOnly: true
|
readOnly: true
|
||||||
- name: nova-etc
|
- name: nova-etc
|
||||||
mountPath: /etc/nova/nova.conf
|
mountPath: /etc/nova/nova.conf
|
||||||
|
121
nova/templates/deployment-spiceproxy.yaml
Normal file
121
nova/templates/deployment-spiceproxy.yaml
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright 2017 The Openstack-Helm Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- if .Values.manifests.deployment_spiceproxy }}
|
||||||
|
{{- $envAll := . }}
|
||||||
|
{{ if eq .Values.console.console_kind "spice" }}
|
||||||
|
{{- $dependencies := .Values.dependencies.spiceproxy }}
|
||||||
|
|
||||||
|
{{- $mounts_nova_spiceproxy := .Values.pod.mounts.nova_spiceproxy.nova_spiceproxy }}
|
||||||
|
{{- $mounts_nova_spiceproxy_init := .Values.pod.mounts.nova_spiceproxy.init_spiceproxy }}
|
||||||
|
|
||||||
|
{{- $serviceAccountName := "nova-spiceproxy" }}
|
||||||
|
{{ tuple $envAll $dependencies $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }}
|
||||||
|
---
|
||||||
|
apiVersion: apps/v1beta1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: nova-spiceproxy
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.pod.replicas.spiceproxy }}
|
||||||
|
{{ tuple $envAll | include "helm-toolkit.snippets.kubernetes_upgrades_deployment" | indent 2 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{ tuple $envAll "nova" "spice-proxy" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 8 }}
|
||||||
|
annotations:
|
||||||
|
configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.utils.hash" }}
|
||||||
|
configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.utils.hash" }}
|
||||||
|
spec:
|
||||||
|
serviceAccountName: {{ $serviceAccountName }}
|
||||||
|
affinity:
|
||||||
|
{{ tuple $envAll "nova" "spice-proxy" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
|
||||||
|
nodeSelector:
|
||||||
|
{{ .Values.labels.spiceproxy.node_selector_key }}: {{ .Values.labels.spiceproxy.node_selector_value }}
|
||||||
|
hostNetwork: true
|
||||||
|
dnsPolicy: ClusterFirstWithHostNet
|
||||||
|
initContainers:
|
||||||
|
{{ tuple $envAll $dependencies $mounts_nova_spiceproxy_init | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
|
||||||
|
- name: nova-spiceproxy-init
|
||||||
|
image: {{ .Values.images.tags.spiceproxy }}
|
||||||
|
imagePullPolicy: {{ .Values.images.pull_policy }}
|
||||||
|
{{ tuple $envAll $envAll.Values.pod.resources.spiceproxy | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
|
||||||
|
securityContext:
|
||||||
|
runAsUser: {{ .Values.pod.user.nova.uid }}
|
||||||
|
command:
|
||||||
|
- /tmp/nova-console-proxy-init.sh
|
||||||
|
volumeMounts:
|
||||||
|
- name: nova-bin
|
||||||
|
mountPath: /tmp/nova-console-proxy-init.sh
|
||||||
|
subPath: nova-console-proxy-init.sh
|
||||||
|
readOnly: true
|
||||||
|
- name: nova-etc
|
||||||
|
mountPath: /etc/nova/nova.conf
|
||||||
|
subPath: nova.conf
|
||||||
|
readOnly: true
|
||||||
|
- name: pod-shared
|
||||||
|
mountPath: /tmp/pod-shared
|
||||||
|
- name: nova-spiceproxy-init-assets
|
||||||
|
image: {{ .Values.images.tags.spiceproxy_assets }}
|
||||||
|
imagePullPolicy: {{ .Values.images.pull_policy }}
|
||||||
|
{{ tuple $envAll $envAll.Values.pod.resources.spiceproxy | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
|
||||||
|
command:
|
||||||
|
- /tmp/nova-console-proxy-init-assets.sh
|
||||||
|
volumeMounts:
|
||||||
|
- name: nova-bin
|
||||||
|
mountPath: /tmp/nova-console-proxy-init-assets.sh
|
||||||
|
subPath: nova-console-proxy-init-assets.sh
|
||||||
|
readOnly: true
|
||||||
|
- name: pod-usr-share-spice-html5
|
||||||
|
mountPath: /tmp/usr/share/spice-html5
|
||||||
|
containers:
|
||||||
|
- name: nova-spiceproxy
|
||||||
|
image: {{ .Values.images.tags.spiceproxy }}
|
||||||
|
imagePullPolicy: {{ .Values.images.pull_policy }}
|
||||||
|
{{ tuple $envAll $envAll.Values.pod.resources.spiceproxy | include "helm-toolkit.snippets.kubernetes_resources" | indent 10 }}
|
||||||
|
command:
|
||||||
|
- /tmp/nova-console-proxy.sh
|
||||||
|
volumeMounts:
|
||||||
|
- name: nova-bin
|
||||||
|
mountPath: /tmp/nova-console-proxy.sh
|
||||||
|
subPath: nova-console-proxy.sh
|
||||||
|
readOnly: true
|
||||||
|
- name: nova-etc
|
||||||
|
mountPath: /etc/nova/nova.conf
|
||||||
|
subPath: nova.conf
|
||||||
|
readOnly: true
|
||||||
|
- name: pod-usr-share-spice-html5
|
||||||
|
mountPath: /usr/share/spice-html5
|
||||||
|
readOnly: true
|
||||||
|
- name: pod-shared
|
||||||
|
mountPath: /tmp/pod-shared
|
||||||
|
{{ if $mounts_nova_spiceproxy.volumeMounts }}{{ toYaml $mounts_nova_spiceproxy.volumeMounts | indent 12 }}{{ end }}
|
||||||
|
volumes:
|
||||||
|
- name: nova-bin
|
||||||
|
configMap:
|
||||||
|
name: nova-bin
|
||||||
|
defaultMode: 0555
|
||||||
|
- name: nova-etc
|
||||||
|
configMap:
|
||||||
|
name: nova-etc
|
||||||
|
defaultMode: 0444
|
||||||
|
- name: pod-usr-share-spice-html5
|
||||||
|
emptyDir: {}
|
||||||
|
- name: pod-shared
|
||||||
|
emptyDir: {}
|
||||||
|
{{ if $mounts_nova_spiceproxy.volumes }}{{ toYaml $mounts_nova_spiceproxy.volumes | indent 8 }}{{ end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
40
nova/templates/service-spiceproxy.yaml
Normal file
40
nova/templates/service-spiceproxy.yaml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{{/*
|
||||||
|
Copyright 2017 The Openstack-Helm Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{- if .Values.manifests.service_spiceproxy }}
|
||||||
|
{{- $envAll := . }}
|
||||||
|
{{ if eq .Values.console.console_kind "spice" }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ tuple "compute_spice_proxy" "internal" . | include "helm-toolkit.endpoints.hostname_short_endpoint_lookup" }}
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- name: nova-spiceproxy
|
||||||
|
protocol: TCP
|
||||||
|
port: {{ .Values.network.spiceproxy.port }}
|
||||||
|
targetPort: {{ .Values.network.spiceproxy.targetPort }}
|
||||||
|
{{ if .Values.network.spiceproxy.node_port.enabled }}
|
||||||
|
nodePort: {{ .Values.network.spiceproxy.node_port.port }}
|
||||||
|
{{ end }}
|
||||||
|
selector:
|
||||||
|
{{ tuple $envAll "nova" "spice-proxy" | include "helm-toolkit.snippets.kubernetes_metadata_labels" | indent 4 }}
|
||||||
|
{{ if .Values.network.spiceproxy.node_port.enabled }}
|
||||||
|
type: NodePort
|
||||||
|
{{ end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
@ -48,6 +48,9 @@ labels:
|
|||||||
novncproxy:
|
novncproxy:
|
||||||
node_selector_key: openstack-control-plane
|
node_selector_key: openstack-control-plane
|
||||||
node_selector_value: enabled
|
node_selector_value: enabled
|
||||||
|
spiceproxy:
|
||||||
|
node_selector_key: openstack-control-plane
|
||||||
|
node_selector_value: enabled
|
||||||
|
|
||||||
images:
|
images:
|
||||||
tags:
|
tags:
|
||||||
@ -63,6 +66,8 @@ images:
|
|||||||
scheduler: docker.io/kolla/ubuntu-source-nova-scheduler:3.0.3
|
scheduler: docker.io/kolla/ubuntu-source-nova-scheduler:3.0.3
|
||||||
novncproxy: docker.io/kolla/ubuntu-source-nova-novncproxy:3.0.3
|
novncproxy: docker.io/kolla/ubuntu-source-nova-novncproxy:3.0.3
|
||||||
novncproxy_assets: docker.io/kolla/ubuntu-source-nova-novncproxy:3.0.3
|
novncproxy_assets: docker.io/kolla/ubuntu-source-nova-novncproxy:3.0.3
|
||||||
|
spiceproxy: docker.io/kolla/ubuntu-source-nova-spicehtml5proxy:3.0.3
|
||||||
|
spiceproxy_assets: docker.io/kolla/ubuntu-source-nova-spicehtml5proxy:3.0.3
|
||||||
consoleauth: docker.io/kolla/ubuntu-source-nova-consoleauth:3.0.3
|
consoleauth: docker.io/kolla/ubuntu-source-nova-consoleauth:3.0.3
|
||||||
compute: docker.io/kolla/ubuntu-source-nova-compute:3.0.3
|
compute: docker.io/kolla/ubuntu-source-nova-compute:3.0.3
|
||||||
compute_ssh: docker.io/kolla/ubuntu-source-nova-ssh:3.0.3
|
compute_ssh: docker.io/kolla/ubuntu-source-nova-ssh:3.0.3
|
||||||
@ -147,9 +152,15 @@ network:
|
|||||||
novncproxy:
|
novncproxy:
|
||||||
node_port:
|
node_port:
|
||||||
enabled: false
|
enabled: false
|
||||||
port: 36080
|
port: 30680
|
||||||
port: 6080
|
port: 6080
|
||||||
targetPort: 6080
|
targetPort: 6080
|
||||||
|
spiceproxy:
|
||||||
|
node_port:
|
||||||
|
enabled: false
|
||||||
|
port: 30682
|
||||||
|
port: 6082
|
||||||
|
targetPort: 6082
|
||||||
ssh:
|
ssh:
|
||||||
name: "nova-ssh"
|
name: "nova-ssh"
|
||||||
port: 8022
|
port: 8022
|
||||||
@ -294,6 +305,12 @@ console:
|
|||||||
console_kind: novnc
|
console_kind: novnc
|
||||||
serial:
|
serial:
|
||||||
spice:
|
spice:
|
||||||
|
compute:
|
||||||
|
# IF blank, search default routing interface
|
||||||
|
server_proxyclient_interface:
|
||||||
|
proxy:
|
||||||
|
# IF blank, search default routing interface
|
||||||
|
server_proxyclient_interface:
|
||||||
novnc:
|
novnc:
|
||||||
compute:
|
compute:
|
||||||
# IF blank, search default routing interface
|
# IF blank, search default routing interface
|
||||||
@ -990,6 +1007,11 @@ conf:
|
|||||||
vncserver_listen: 0.0.0.0
|
vncserver_listen: 0.0.0.0
|
||||||
# leave blank, this should be set by each compute nodes's ip
|
# leave blank, this should be set by each compute nodes's ip
|
||||||
vncserver_proxyclient_address: null
|
vncserver_proxyclient_address: null
|
||||||
|
spice:
|
||||||
|
html5proxy_host: 0.0.0.0
|
||||||
|
server_listen: 0.0.0.0
|
||||||
|
# leave blank, this should be set by each compute nodes's ip
|
||||||
|
server_proxyclient_address: null
|
||||||
conductor:
|
conductor:
|
||||||
workers: 1
|
workers: 1
|
||||||
oslo_policy:
|
oslo_policy:
|
||||||
@ -1242,6 +1264,19 @@ endpoints:
|
|||||||
port:
|
port:
|
||||||
novnc_proxy:
|
novnc_proxy:
|
||||||
default: 6080
|
default: 6080
|
||||||
|
compute_spice_proxy:
|
||||||
|
name: nova
|
||||||
|
hosts:
|
||||||
|
default: nova-spiceproxy
|
||||||
|
host_fqdn_override:
|
||||||
|
default: null
|
||||||
|
path:
|
||||||
|
default: /spice_auto.html
|
||||||
|
scheme:
|
||||||
|
default: 'http'
|
||||||
|
port:
|
||||||
|
spice_proxy:
|
||||||
|
default: 6082
|
||||||
placement:
|
placement:
|
||||||
name: placement
|
name: placement
|
||||||
hosts:
|
hosts:
|
||||||
@ -1314,6 +1349,9 @@ pod:
|
|||||||
nova_novncproxy:
|
nova_novncproxy:
|
||||||
init_novncproxy: null
|
init_novncproxy: null
|
||||||
nova_novncproxy:
|
nova_novncproxy:
|
||||||
|
nova_spiceproxy:
|
||||||
|
init_spiceproxy: null
|
||||||
|
nova_spiceproxy:
|
||||||
replicas:
|
replicas:
|
||||||
api_metadata: 1
|
api_metadata: 1
|
||||||
placement: 1
|
placement: 1
|
||||||
@ -1322,6 +1360,7 @@ pod:
|
|||||||
consoleauth: 1
|
consoleauth: 1
|
||||||
scheduler: 1
|
scheduler: 1
|
||||||
novncproxy: 1
|
novncproxy: 1
|
||||||
|
spiceproxy: 1
|
||||||
lifecycle:
|
lifecycle:
|
||||||
upgrades:
|
upgrades:
|
||||||
deployments:
|
deployments:
|
||||||
@ -1415,6 +1454,13 @@ pod:
|
|||||||
limits:
|
limits:
|
||||||
memory: "1024Mi"
|
memory: "1024Mi"
|
||||||
cpu: "2000m"
|
cpu: "2000m"
|
||||||
|
spiceproxy:
|
||||||
|
requests:
|
||||||
|
memory: "128Mi"
|
||||||
|
cpu: "100m"
|
||||||
|
limits:
|
||||||
|
memory: "1024Mi"
|
||||||
|
cpu: "2000m"
|
||||||
jobs:
|
jobs:
|
||||||
bootstrap:
|
bootstrap:
|
||||||
requests:
|
requests:
|
||||||
@ -1480,7 +1526,6 @@ pod:
|
|||||||
memory: "1024Mi"
|
memory: "1024Mi"
|
||||||
cpu: "2000m"
|
cpu: "2000m"
|
||||||
|
|
||||||
|
|
||||||
manifests:
|
manifests:
|
||||||
configmap_bin: true
|
configmap_bin: true
|
||||||
configmap_etc: true
|
configmap_etc: true
|
||||||
@ -1491,6 +1536,7 @@ manifests:
|
|||||||
deployment_conductor: true
|
deployment_conductor: true
|
||||||
deployment_consoleauth: true
|
deployment_consoleauth: true
|
||||||
deployment_novncproxy: true
|
deployment_novncproxy: true
|
||||||
|
deployment_spiceproxy: true
|
||||||
deployment_scheduler: true
|
deployment_scheduler: true
|
||||||
ingress_metadata: true
|
ingress_metadata: true
|
||||||
ingress_placement: true
|
ingress_placement: true
|
||||||
@ -1521,4 +1567,5 @@ manifests:
|
|||||||
service_metadata: true
|
service_metadata: true
|
||||||
service_placement: true
|
service_placement: true
|
||||||
service_novncproxy: true
|
service_novncproxy: true
|
||||||
|
service_spiceproxy: true
|
||||||
service_osapi: true
|
service_osapi: true
|
||||||
|
Loading…
Reference in New Issue
Block a user