Fix apply of stx-openstack when host is locked

Currently, all of the stx-openstack services have the
replica count set to the number of the controllers.
If one of the controllers is locked their replicas
number will still be 2 which is incorrect.
We solve this by changing the number of replicas
to be equal to the number of the active controllers.
The rabbitmq and mariadb services cannot use this approach because
they are unable to work properly if their replica number
is decreased from 2 to 1. So a kubernetes toleration
is used here to allow the rabbitmq and mariadb pods to be
deployed on the locked controller.

Change-Id: I15cf2a3f62525751435ddbe66760935f3ab21d2b
Closes-Bug: 1879018
Signed-off-by: Mihnea Saracin <Mihnea.Saracin@windriver.com>
This commit is contained in:
Mihnea Saracin 2020-09-11 18:46:48 +03:00
parent bcadcf5218
commit fc68439414
21 changed files with 112 additions and 36 deletions

View File

@ -28,6 +28,8 @@ Patch10: 0010-Mariadb-use-utf8_general_ci-collation-as-default.patch
Patch11: 0011-Add-mariadb-database-config-override-to-support-ipv6.patch
Patch12: 0012-enable-Values.conf.database.config_override-for-mari.patch
Patch13: 0013-Allow-set-public-endpoint-url-for-all-openstack-types.patch
Patch14: 0014-Add-tolerations-to-rabbitmq-chart.patch
Patch15: 0015-Add-tolerations-to-mariadb-chart.patch
BuildRequires: helm
BuildRequires: chartmuseum
@ -50,6 +52,8 @@ Openstack Helm Infra charts
%patch11 -p1
%patch12 -p1
%patch13 -p1
%patch14 -p1
%patch15 -p1
%build
# Host a server for the charts

View File

@ -0,0 +1,26 @@
From c8f3a96fad3344cfdb058c7c0fee77431f77a001 Mon Sep 17 00:00:00 2001
From: Mihnea Saracin <Mihnea.Saracin@windriver.com>
Date: Wed, 22 Jul 2020 15:53:25 +0300
Subject: [PATCH] Add tolerations to rabbitmq chart
Signed-off-by: Mihnea Saracin <Mihnea.Saracin@windriver.com>
---
rabbitmq/templates/statefulset.yaml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/rabbitmq/templates/statefulset.yaml b/rabbitmq/templates/statefulset.yaml
index 9e40a103..cf5d1811 100644
--- a/rabbitmq/templates/statefulset.yaml
+++ b/rabbitmq/templates/statefulset.yaml
@@ -85,6 +85,8 @@ spec:
{{ tuple $envAll "rabbitmq" "server" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
nodeSelector:
{{ $envAll.Values.labels.server.node_selector_key }}: {{ $envAll.Values.labels.server.node_selector_value | quote }}
+ tolerations:
+{{ toYaml .Values.tolerations | indent 8 }}
initContainers:
{{ tuple $envAll "rabbitmq" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
- name: rabbitmq-password
--
2.17.1

View File

@ -0,0 +1,40 @@
From 7394d591310bf5342f3b66e4ee0a6a3cbd38c558 Mon Sep 17 00:00:00 2001
From: Mihnea Saracin <Mihnea.Saracin@windriver.com>
Date: Tue, 11 Aug 2020 10:52:15 +0300
Subject: [PATCH] Add tolerations to mariadb chart
Signed-off-by: Mihnea Saracin <Mihnea.Saracin@windriver.com>
---
mariadb/templates/deployment-ingress.yaml | 2 ++
mariadb/templates/statefulset.yaml | 2 ++
2 files changed, 4 insertions(+)
diff --git a/mariadb/templates/deployment-ingress.yaml b/mariadb/templates/deployment-ingress.yaml
index 72bea94a..9fb02c8d 100644
--- a/mariadb/templates/deployment-ingress.yaml
+++ b/mariadb/templates/deployment-ingress.yaml
@@ -147,6 +147,8 @@ spec:
nodeSelector:
{{ .Values.labels.ingress.node_selector_key }}: {{ .Values.labels.ingress.node_selector_value }}
terminationGracePeriodSeconds: 60
+ tolerations:
+{{ toYaml .Values.tolerations | indent 8 }}
initContainers:
{{ tuple $envAll "ingress" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
containers:
diff --git a/mariadb/templates/statefulset.yaml b/mariadb/templates/statefulset.yaml
index 7ccc219b..120427ae 100644
--- a/mariadb/templates/statefulset.yaml
+++ b/mariadb/templates/statefulset.yaml
@@ -108,6 +108,8 @@ spec:
{{ tuple $envAll "mariadb" "server" | include "helm-toolkit.snippets.kubernetes_pod_anti_affinity" | indent 8 }}
nodeSelector:
{{ .Values.labels.server.node_selector_key }}: {{ .Values.labels.server.node_selector_value }}
+ tolerations:
+{{ toYaml .Values.tolerations | indent 8 }}
initContainers:
{{ tuple $envAll "mariadb" list | include "helm-toolkit.snippets.kubernetes_entrypoint_init_container" | indent 8 }}
{{- if .Values.volume.chown_on_start }}
--
2.17.1

View File

@ -39,10 +39,10 @@ class AodhHelm(openstack.OpenstackBaseHelm):
def _get_pod_overrides(self):
overrides = {
'replicas': {
'api': self._num_controllers(),
'evaluator': self._num_controllers(),
'listener': self._num_controllers(),
'notifier': self._num_controllers()
'api': self._num_provisioned_controllers(),
'evaluator': self._num_provisioned_controllers(),
'listener': self._num_provisioned_controllers(),
'notifier': self._num_provisioned_controllers()
}
}
return overrides

View File

@ -23,7 +23,7 @@ class BarbicanHelm(openstack.OpenstackBaseHelm):
common.HELM_NS_OPENSTACK: {
'pod': {
'replicas': {
'api': self._num_controllers()
'api': self._num_provisioned_controllers()
}
},
'endpoints': self._get_endpoints_overrides(),

View File

@ -41,8 +41,8 @@ class CeilometerHelm(openstack.OpenstackBaseHelm):
def _get_pod_overrides(self):
return {
'replicas': {
'central': self._num_controllers(),
'notification': self._num_controllers()
'central': self._num_provisioned_controllers(),
'notification': self._num_provisioned_controllers()
}
}

View File

@ -49,10 +49,10 @@ class CinderHelm(openstack.OpenstackBaseHelm):
}
},
'replicas': {
'api': self._num_controllers(),
'volume': self._num_controllers(),
'scheduler': self._num_controllers(),
'backup': self._num_controllers()
'api': self._num_provisioned_controllers(),
'volume': self._num_provisioned_controllers(),
'scheduler': self._num_provisioned_controllers(),
'backup': self._num_provisioned_controllers()
}
},
'conf': {

View File

@ -27,7 +27,7 @@ class FmRestApiHelm(openstack.OpenstackBaseHelm):
'endpoints': self._get_endpoints_overrides(),
'pod': {
'replicas': {
'api': self._num_controllers()
'api': self._num_provisioned_controllers()
},
},
}

View File

@ -51,7 +51,7 @@ class GlanceHelm(openstack.OpenstackBaseHelm):
replicas_count = 1
ceph_backend = self._get_primary_ceph_backend()
if ceph_backend:
replicas_count = self._num_controllers()
replicas_count = self._num_provisioned_controllers()
return {
'replicas': {

View File

@ -39,7 +39,7 @@ class GnocchiHelm(openstack.OpenstackBaseHelm):
def _get_pod_overrides(self):
return {
'replicas': {
'api': self._num_controllers()
'api': self._num_provisioned_controllers()
}
}

View File

@ -38,10 +38,10 @@ class HeatHelm(openstack.OpenstackBaseHelm):
def _get_pod_overrides(self):
return {
'replicas': {
'api': self._num_controllers(),
'cfn': self._num_controllers(),
'cloudwatch': self._num_controllers(),
'engine': self._num_controllers()
'api': self._num_provisioned_controllers(),
'cfn': self._num_provisioned_controllers(),
'cloudwatch': self._num_provisioned_controllers(),
'engine': self._num_provisioned_controllers()
}
}

View File

@ -62,8 +62,8 @@ class IngressHelm(base.BaseHelm):
common.HELM_NS_OPENSTACK: {
'pod': {
'replicas': {
'ingress': self._num_controllers(),
'error_page': self._num_controllers()
'ingress': self._num_provisioned_controllers(),
'error_page': self._num_provisioned_controllers()
},
'resources': {
'enabled': limit_enabled,

View File

@ -45,8 +45,8 @@ class IronicHelm(openstack.OpenstackBaseHelm):
common.HELM_NS_OPENSTACK: {
'pod': {
'replicas': {
'api': self._num_controllers(),
'conductor': self._num_controllers()
'api': self._num_provisioned_controllers(),
'conductor': self._num_provisioned_controllers()
}
},
'network': self._get_network_overrides(),

View File

@ -49,7 +49,7 @@ class KeystoneHelm(openstack.OpenstackBaseHelm):
def _get_pod_overrides(self):
overrides = {
'replicas': {
'api': self._num_controllers()
'api': self._num_provisioned_controllers()
},
'lifecycle': {
'termination_grace_period': {

View File

@ -24,8 +24,8 @@ class MagnumHelm(openstack.OpenstackBaseHelm):
common.HELM_NS_OPENSTACK: {
'pod': {
'replicas': {
'api': self._num_controllers(),
'conductor': self._num_controllers()
'api': self._num_provisioned_controllers(),
'conductor': self._num_provisioned_controllers()
}
}
}

View File

@ -49,7 +49,7 @@ class NeutronHelm(openstack.OpenstackBaseHelm):
common.HELM_NS_OPENSTACK: {
'pod': {
'replicas': {
'server': self._num_controllers()
'server': self._num_provisioned_controllers()
},
},
'conf': {

View File

@ -107,13 +107,13 @@ class NovaHelm(openstack.OpenstackBaseHelm):
}
},
'replicas': {
'api_metadata': self._num_controllers(),
'placement': self._num_controllers(),
'osapi': self._num_controllers(),
'conductor': self._num_controllers(),
'consoleauth': self._num_controllers(),
'scheduler': self._num_controllers(),
'novncproxy': self._num_controllers()
'api_metadata': self._num_provisioned_controllers(),
'placement': self._num_provisioned_controllers(),
'osapi': self._num_provisioned_controllers(),
'conductor': self._num_provisioned_controllers(),
'consoleauth': self._num_provisioned_controllers(),
'scheduler': self._num_provisioned_controllers(),
'novncproxy': self._num_provisioned_controllers()
}
},
'conf': {

View File

@ -30,7 +30,7 @@ class NovaApiProxyHelm(openstack.OpenstackBaseHelm):
}
},
'replicas': {
'proxy': self._num_controllers()
'proxy': self._num_provisioned_controllers()
}
},
'conf': {

View File

@ -38,7 +38,7 @@ class PankoHelm(openstack.OpenstackBaseHelm):
def _get_pod_overrides(self):
overrides = {
'replicas': {
'api': self._num_controllers()
'api': self._num_provisioned_controllers()
}
}
return overrides

View File

@ -26,7 +26,7 @@ class PlacementHelm(openstack.OpenstackBaseHelm):
common.HELM_NS_OPENSTACK: {
'pod': {
'replicas': {
'api': self._num_controllers()
'api': self._num_provisioned_controllers()
}
},
'endpoints': self._get_endpoints_overrides()

View File

@ -190,6 +190,9 @@ data:
config_override: |
[mysqld]
wsrep_provider_options="gmcast.listen_addr=tcp://0.0.0.0:{{ tuple "oslo_db" "direct" "wsrep" . | include "helm-toolkit.endpoints.endpoint_port_lookup" }}"
tolerations:
- effect: NoExecute
operator: Exists
source:
type: tar
location: http://172.17.0.1/helm_charts/starlingx/mariadb-0.1.0.tgz
@ -340,6 +343,9 @@ data:
# filesystem race as seen in the LP.
volume:
size: 1Gi
tolerations:
- effect: NoExecute
operator: Exists
source:
type: tar
location: http://172.17.0.1/helm_charts/starlingx/rabbitmq-0.1.0.tgz