diff --git a/nova/Chart.yaml b/nova/Chart.yaml index 00d361c34a..9fcf731c48 100644 --- a/nova/Chart.yaml +++ b/nova/Chart.yaml @@ -14,7 +14,7 @@ apiVersion: v1 appVersion: v1.0.0 description: OpenStack-Helm Nova name: nova -version: 0.3.18 +version: 0.3.19 home: https://docs.openstack.org/nova/latest/ icon: https://www.openstack.org/themes/openstack/images/project-mascots/Nova/OpenStack_Project_Nova_vertical.png sources: diff --git a/nova/templates/certificates.yaml b/nova/templates/certificates.yaml index 3bf6c8db86..39c98b03dc 100644 --- a/nova/templates/certificates.yaml +++ b/nova/templates/certificates.yaml @@ -17,6 +17,9 @@ limitations under the License. {{- if .Values.manifests.deployment_novncproxy }} {{ dict "envAll" . "service" "compute_novnc_proxy" "type" "internal" | include "helm-toolkit.manifests.certificates" }} {{- end }} +{{- if (contains "vencrypt" .Values.conf.nova.vnc.auth_schemes) -}} +{{ dict "envAll" . "service" "compute_novnc_vencrypt" "type" "internal" | include "helm-toolkit.manifests.certificates" }} +{{- end }} {{- if .Values.manifests.deployment_placement }} {{ dict "envAll" . "service" "placement" "type" "internal" | include "helm-toolkit.manifests.certificates" }} {{- end }} diff --git a/nova/templates/configmap-etc.yaml b/nova/templates/configmap-etc.yaml index 12ad86c7d2..7df58a083a 100644 --- a/nova/templates/configmap-etc.yaml +++ b/nova/templates/configmap-etc.yaml @@ -188,6 +188,18 @@ limitations under the License. {{- end -}} {{- end -}} +{{- if (contains "vencrypt" .Values.conf.nova.vnc.auth_schemes) -}} +{{- if empty .Values.conf.nova.vnc.vencrypt_client_key }} +{{- $_ := set $envAll.Values.conf.nova.vnc "vencrypt_client_key" "/etc/pki/nova-novncproxy/tls.key" -}} +{{- end }} +{{- if empty .Values.conf.nova.vnc.vencrypt_client_cert }} +{{- $_ := set $envAll.Values.conf.nova.vnc "vencrypt_client_cert" "/etc/pki/nova-novncproxy/tls.crt" -}} +{{- end }} +{{- if empty .Values.conf.nova.vnc.vencrypt_ca_certs }} +{{- $_ := set $envAll.Values.conf.nova.vnc "vencrypt_ca_certs" "/etc/pki/nova-novncproxy/ca.crt" -}} +{{- end }} +{{- end }} + {{- if eq .Values.console.console_kind "spice"}} {{- $_ := "false" | set .Values.conf.nova.vnc "enabled" -}} {{- $_ := "true" | set .Values.conf.nova.spice "enabled" -}} diff --git a/nova/templates/deployment-novncproxy.yaml b/nova/templates/deployment-novncproxy.yaml index 517005d9ef..e1c79ab4e7 100644 --- a/nova/templates/deployment-novncproxy.yaml +++ b/nova/templates/deployment-novncproxy.yaml @@ -28,6 +28,8 @@ tcpSocket: {{- $mounts_nova_novncproxy := .Values.pod.mounts.nova_novncproxy.nova_novncproxy }} {{- $mounts_nova_novncproxy_init := .Values.pod.mounts.nova_novncproxy.init_novncproxy }} +{{- $vencrypt_enabled := (contains "vencrypt" .Values.conf.nova.vnc.auth_schemes) }} + {{- $serviceAccountName := "nova-novncproxy" }} {{ tuple $envAll "novncproxy" $serviceAccountName | include "helm-toolkit.snippets.kubernetes_pod_rbac_serviceaccount" }} --- @@ -144,6 +146,7 @@ spec: mountPath: /tmp/pod-shared {{- dict "enabled" .Values.manifests.certificates "name" .Values.endpoints.oslo_db.auth.admin.secret.tls.internal "path" "/etc/mysql/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 12 }} {{- dict "enabled" .Values.manifests.certificates "name" .Values.secrets.tls.compute_novnc_proxy.novncproxy.internal "path" "/etc/nova/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 12 }} +{{- dict "enabled" $vencrypt_enabled "name" .Values.secrets.tls.compute_novnc_proxy.vencrypt.internal "path" "/etc/pki/nova-novncproxy" | include "helm-toolkit.snippets.tls_volume_mount" | indent 12 }} {{- dict "enabled" $envAll.Values.manifests.certificates "name" $envAll.Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal "path" "/etc/rabbitmq/certs" | include "helm-toolkit.snippets.tls_volume_mount" | indent 12 }} {{ if $mounts_nova_novncproxy.volumeMounts }}{{ toYaml $mounts_nova_novncproxy.volumeMounts | indent 12 }}{{ end }} volumes: @@ -163,6 +166,7 @@ spec: emptyDir: {} {{- dict "enabled" .Values.manifests.certificates "name" .Values.endpoints.oslo_db.auth.admin.secret.tls.internal | include "helm-toolkit.snippets.tls_volume" | indent 8 }} {{- dict "enabled" .Values.manifests.certificates "name" .Values.secrets.tls.compute_novnc_proxy.novncproxy.internal | include "helm-toolkit.snippets.tls_volume" | indent 8 }} +{{- dict "enabled" $vencrypt_enabled "name" .Values.secrets.tls.compute_novnc_proxy.vencrypt.internal | include "helm-toolkit.snippets.tls_volume" | indent 8 }} {{- dict "enabled" $envAll.Values.manifests.certificates "name" $envAll.Values.endpoints.oslo_messaging.auth.admin.secret.tls.internal | include "helm-toolkit.snippets.tls_volume" | indent 8 }} {{ if $mounts_nova_novncproxy.volumes }}{{ toYaml $mounts_nova_novncproxy.volumes | indent 8 }}{{ end }} {{- end }} diff --git a/nova/values.yaml b/nova/values.yaml index 94d9ec41df..f63c537574 100644 --- a/nova/values.yaml +++ b/nova/values.yaml @@ -1369,6 +1369,7 @@ conf: instance_usage_audit_period: hour resume_guests_state_on_host_boot: True vnc: + auth_schemes: none novncproxy_host: 0.0.0.0 server_listen: 0.0.0.0 # This would be set by each compute nodes's ip @@ -1556,6 +1557,8 @@ secrets: novncproxy: public: nova-novncproxy-tls-public internal: nova-novncproxy-tls-proxy + vencrypt: + internal: nova-novncproxy-vencrypt compute_metadata: metadata: public: metadata-tls-public @@ -1840,6 +1843,17 @@ endpoints: novnc_proxy: default: 6080 public: 80 + # This endpoint is only to allow configuring the cert used specifically for + # vencrypt. Specifically, the same CA/issuer needs to be used to sign both + # this cert, and the libvirt/qemu certs. + compute_novnc_vencrypt: + hosts: + default: nova-novncproxy + host_fqdn_override: + default: + commonName: nova-novncproxy + usages: + - client auth compute_spice_proxy: name: nova hosts: diff --git a/releasenotes/notes/nova.yaml b/releasenotes/notes/nova.yaml index 432de595c8..4ecb1ca359 100644 --- a/releasenotes/notes/nova.yaml +++ b/releasenotes/notes/nova.yaml @@ -87,4 +87,5 @@ nova: - 0.3.16 Use service tokens - 0.3.17 Set targeted dependency of nova-compute with ovn networking backend - 0.3.18 Fix nova ssh keys permission + - 0.3.19 Add support for enabling vencrypt ...