openstack-helm/nova/templates/daemonset-compute.yaml
Alan Meadows 16508c32ee Nova Configuration Override (#319)
* Initial Commit of Nova Configuration Overrides

This commit is an evolution of the initial keystone configuration
overrides work

It expands upon that work by introducing many of the same concepts
into nova.  It differs in that a few concepts were changed.  Namely
the helm-toolkit/_oslo.tpl concept was abandoned, as there are too
many unique oslo paths for configuration elements, so dynamic oslo
setting mechanism was moved locally into configmap-etc.yaml, where
it is generally used.

Secondly, in nova the mount override effort was altered to instead
provide mount "append" capability.  Keeping the manifest mounts
closer to the actual pod, and keeping values.yaml a tad smaller.
This still allows the original flexibility of operators adding
mounts, but they cannot "undo" any of the charts built in mounts.

There were several manual tweaks that needd to be done to _nova.conf.tpl
after the oslo-config-gen process this time.  This is because there is a
bug in the newton version of generating this file. It does not include
the proper service authentication credentials in the [keystone_authtoken]
section.  Future releases have a separate service credentials section
so future config generations will likely not need these added lines.

* Remove unused values.yaml parameters

Fix references to removed helm-toolkit oslo macro

* resolve nova feedback

* bugfix nova-etc/nova-bin swap
2017-04-10 14:41:41 -05:00

107 lines
3.8 KiB
YAML

# 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.
{{- $envAll := . }}
{{- $dependencies := .Values.dependencies.compute }}
{{- $mounts_nova_compute := .Values.mounts.nova_compute.nova_compute }}
{{- $mounts_nova_compute_init := .Values.mounts.nova_compute.init_container }}
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: nova-compute
spec:
template:
metadata:
labels:
app: nova-compute
annotations:
configmap-bin-hash: {{ tuple "configmap-bin.yaml" . | include "helm-toolkit.hash" }}
configmap-etc-hash: {{ tuple "configmap-etc.yaml" . | include "helm-toolkit.hash" }}
pod.beta.kubernetes.io/init-containers: '[
{{ tuple $envAll $dependencies $mounts_nova_compute_init | include "helm-toolkit.kubernetes_entrypoint_init_container" | indent 10 }}
]'
spec:
nodeSelector:
{{ .Values.labels.agent.compute.node_selector_key }}: {{ .Values.labels.agent.compute.node_selector_value }}
securityContext:
runAsUser: 0
hostNetwork: true
hostPID: true
dnsPolicy: ClusterFirst
containers:
- name: nova-compute
image: {{ .Values.images.compute }}
imagePullPolicy: {{ .Values.images.pull_policy }}
{{- if .Values.resources.enabled }}
resources:
requests:
memory: {{ .Values.resources.nova_compute.requests.memory | quote }}
cpu: {{ .Values.resources.nova_compute.requests.cpu | quote }}
limits:
memory: {{ .Values.resources.nova_compute.limits.memory | quote }}
cpu: {{ .Values.resources.nova_compute.limits.cpu | quote }}
{{- end }}
securityContext:
privileged: true
command:
- nova-compute
- --config-file
- /etc/nova/nova.conf
volumeMounts:
- name: nova-etc
mountPath: /etc/nova/nova.conf
subPath: nova.conf
- name: nova-etc
mountPath: /etc/resolv.conf
subPath: resolv.conf
- name: nova-etc
mountPath: /etc/ceph/ceph.conf
subPath: ceph.conf
- name: nova-etc
mountPath: /etc/ceph/ceph.client.keyring
subPath: ceph.client.keyring
- mountPath: /lib/modules
name: libmodules
readOnly: true
- name: varlibnova
mountPath: /var/lib/nova
- name: varliblibvirt
mountPath: /var/lib/libvirt
- name: run
mountPath: /run
- name: cgroup
mountPath: /sys/fs/cgroup
{{ if $mounts_nova_compute.volumeMounts }}{{ toYaml $mounts_nova_compute.volumeMounts | indent 12 }}{{ end }}
volumes:
- name: nova-etc
configMap:
name: nova-etc
- name: libmodules
hostPath:
path: /lib/modules
- name: varlibnova
hostPath:
path: /var/lib/nova
- name: varliblibvirt
hostPath:
path: /var/lib/libvirt
- name: run
hostPath:
path: /run
- name: cgroup
hostPath:
path: /sys/fs/cgroup
{{ if $mounts_nova_compute.volumes }}{{ toYaml $mounts_nova_compute.volumes | indent 8 }}{{ end }}