Skip to content

Commit e128785

Browse files
Set libvirt connection uri with node selector
1 parent d65be5e commit e128785

2 files changed

Lines changed: 61 additions & 29 deletions

File tree

charts/kvm-node-agent/templates/daemonset.yaml

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,60 @@
1+
{{- range $index, $driver := .Values.drivers }}
2+
---
13
apiVersion: apps/v1
24
kind: DaemonSet
35
metadata:
4-
name: {{ include "kvm-node-agent.fullname" . }}-controller-manager
6+
name: {{ include "kvm-node-agent.fullname" $ }}-controller-manager-{{ $driver.name }}
57
labels:
68
control-plane: controller-manager
7-
{{- include "kvm-node-agent.labels" . | nindent 4 }}
9+
{{- include "kvm-node-agent.labels" $ | nindent 4 }}
810
spec:
911
selector:
1012
matchLabels:
1113
control-plane: controller-manager
12-
{{- include "kvm-node-agent.selectorLabels" . | nindent 6 }}
14+
driver-index: "{{ $index }}"
15+
{{- include "kvm-node-agent.selectorLabels" $ | nindent 6 }}
1316
template:
1417
metadata:
1518
labels:
1619
control-plane: controller-manager
17-
{{- include "kvm-node-agent.selectorLabels" . | nindent 8 }}
20+
driver-index: "{{ $index }}"
21+
{{- include "kvm-node-agent.selectorLabels" $ | nindent 8 }}
1822
annotations:
1923
kubectl.kubernetes.io/default-container: manager
2024
spec:
2125
affinity:
22-
nodeAffinity:
23-
requiredDuringSchedulingIgnoredDuringExecution:
24-
nodeSelectorTerms:
25-
- matchExpressions:
26-
- key: nova.openstack.cloud.sap/virt-driver
27-
operator: Exists
26+
{{- with $driver.nodeAffinity }}
27+
nodeAffinity: {{- toYaml . | nindent 10 }}
28+
{{- end }}
2829
containers:
29-
- args: {{- toYaml .Values.controllerManager.manager.args | nindent 8 }}
30+
- args: {{- toYaml $.Values.controllerManager.manager.args | nindent 8 }}
3031
env:
3132
- name: HOSTNAME
3233
valueFrom:
3334
fieldRef:
3435
fieldPath: spec.nodeName
3536
- name: PKI_PATH
36-
value: {{ quote .Values.controllerManager.manager.env.pkiPath }}
37+
value: {{ quote $.Values.controllerManager.manager.env.pkiPath }}
3738
- name: HOST_IP_ADDRESS
3839
valueFrom:
3940
fieldRef:
4041
fieldPath: status.hostIP
4142
- name: ISSUER_NAME
42-
value: {{ quote .Values.controllerManager.manager.env.issuerName }}
43+
value: {{ quote $.Values.controllerManager.manager.env.issuerName }}
4344
- name: DISABLE_CREATE_CERT_MANAGER_CERTIFICATE
44-
value: {{ quote .Values.controllerManager.manager.env.disableCreateCertManagerCertificate
45+
value: {{ quote $.Values.controllerManager.manager.env.disableCreateCertManagerCertificate
4546
}}
4647
- name: NODE_LABEL
4748
valueFrom:
4849
fieldRef:
49-
fieldPath: {{ .Values.controllerManager.manager.env.nodeLabelFieldPath }}
50+
fieldPath: {{ $.Values.controllerManager.manager.env.nodeLabelFieldPath }}
5051
- name: KUBERNETES_CLUSTER_DOMAIN
51-
value: {{ quote .Values.kubernetesClusterDomain }}
52-
image: {{ .Values.controllerManager.manager.image.repository }}:{{ .Values.controllerManager.manager.image.tag
53-
| default .Chart.AppVersion }}
52+
value: {{ quote $.Values.kubernetesClusterDomain }}
53+
{{- with $driver.env }}
54+
{{- toYaml . | nindent 8 }}
55+
{{- end }}
56+
image: {{ $.Values.controllerManager.manager.image.repository }}:{{ $.Values.controllerManager.manager.image.tag
57+
| default $.Chart.AppVersion }}
5458
livenessProbe:
5559
httpGet:
5660
path: /healthz
@@ -64,9 +68,9 @@ spec:
6468
port: 8081
6569
initialDelaySeconds: 5
6670
periodSeconds: 10
67-
resources: {{- toYaml .Values.controllerManager.manager.resources | nindent 10
71+
resources: {{- toYaml $.Values.controllerManager.manager.resources | nindent 10
6872
}}
69-
securityContext: {{- toYaml .Values.controllerManager.manager.containerSecurityContext
73+
securityContext: {{- toYaml $.Values.controllerManager.manager.containerSecurityContext
7074
| nindent 10 }}
7175
volumeMounts:
7276
- mountPath: /run/libvirt
@@ -94,23 +98,23 @@ spec:
9498
var/lib/libvirt/ch/pki
9599
env:
96100
- name: KUBERNETES_CLUSTER_DOMAIN
97-
value: {{ quote .Values.kubernetesClusterDomain }}
98-
image: {{ .Values.controllerManager.createPkiDirs.image.repository }}:{{ .Values.controllerManager.createPkiDirs.image.tag
99-
| default .Chart.AppVersion }}
101+
value: {{ quote $.Values.kubernetesClusterDomain }}
102+
image: {{ $.Values.controllerManager.createPkiDirs.image.repository }}:{{ $.Values.controllerManager.createPkiDirs.image.tag
103+
| default $.Chart.AppVersion }}
100104
name: create-pki-dirs
101105
resources: {}
102-
securityContext: {{- toYaml .Values.controllerManager.createPkiDirs.containerSecurityContext
106+
securityContext: {{- toYaml $.Values.controllerManager.createPkiDirs.containerSecurityContext
103107
| nindent 10 }}
104108
volumeMounts:
105109
- mountPath: /host
106110
name: host
107-
nodeSelector: {{- toYaml .Values.controllerManager.nodeSelector | nindent 8 }}
108-
securityContext: {{- toYaml .Values.controllerManager.podSecurityContext | nindent
111+
nodeSelector: {{- toYaml $.Values.controllerManager.nodeSelector | nindent 8 }}
112+
securityContext: {{- toYaml $.Values.controllerManager.podSecurityContext | nindent
109113
8 }}
110-
serviceAccountName: {{ include "kvm-node-agent.serviceAccountName" . }}
114+
serviceAccountName: {{ include "kvm-node-agent.serviceAccountName" $ }}
111115
terminationGracePeriodSeconds: 10
112-
tolerations: {{- toYaml .Values.controllerManager.tolerations | nindent 8 }}
113-
topologySpreadConstraints: {{- toYaml .Values.controllerManager.topologySpreadConstraints
116+
tolerations: {{- toYaml $.Values.controllerManager.tolerations | nindent 8 }}
117+
topologySpreadConstraints: {{- toYaml $.Values.controllerManager.topologySpreadConstraints
114118
| nindent 8 }}
115119
volumes:
116120
- hostPath:
@@ -140,3 +144,4 @@ spec:
140144
- hostPath:
141145
path: /
142146
name: host
147+
{{- end }}

charts/kvm-node-agent/values.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,30 @@ serviceAccount:
4949
automount: true
5050
create: true
5151
name: ""
52+
53+
# To ensure that the KVM Node Agent connects using the correct driver, we can
54+
# use node affinity to set the LIBVIRT_DEFAULT_URI environment variable based on
55+
# the node's virt-driver label.
56+
drivers:
57+
- name: qemu
58+
nodeAffinity:
59+
requiredDuringSchedulingIgnoredDuringExecution:
60+
nodeSelectorTerms:
61+
- matchExpressions:
62+
- key: nova.openstack.cloud.sap/virt-driver
63+
operator: In
64+
values: [qemu]
65+
env:
66+
- name: LIBVIRT_DEFAULT_URI
67+
value: "qemu:///system"
68+
- name: ch
69+
nodeAffinity:
70+
requiredDuringSchedulingIgnoredDuringExecution:
71+
nodeSelectorTerms:
72+
- matchExpressions:
73+
- key: nova.openstack.cloud.sap/virt-driver
74+
operator: In
75+
values: [ch]
76+
env:
77+
- name: LIBVIRT_DEFAULT_URI
78+
value: "ch:///system"

0 commit comments

Comments
 (0)