Browse Source

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 service cannot use this approach because
it is unable to work properly if its replicas number
is decreasaed from 2 to 1. So a kubernetes toleration
is used here to allow the second rabbitmq pod to be
deployed on the locked controller.

Change-Id: Ie979c7b5f2755ad673bd180e38b68e0d53c5f9b2
Closes-Bug: 1879018
Signed-off-by: Mihnea Saracin <Mihnea.Saracin@windriver.com>
changes/79/742679/1
Mihnea Saracin 2 years ago
parent
commit
754a1d33de
  1. 3
      openstack-helm-infra/centos/openstack-helm-infra.spec
  2. 26
      openstack-helm-infra/files/0012-Add-tolerations-to-rabbitmq-chart.patch
  3. 8
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/aodh.py
  4. 2
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/barbican.py
  5. 4
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/ceilometer.py
  6. 8
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/cinder.py
  7. 2
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/fm_rest_api.py
  8. 2
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/glance.py
  9. 2
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/gnocchi.py
  10. 8
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/heat.py
  11. 4
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/ingress.py
  12. 4
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/ironic.py
  13. 2
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/keystone.py
  14. 4
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/magnum.py
  15. 4
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/mariadb.py
  16. 2
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/neutron.py
  17. 14
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/nova.py
  18. 2
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/nova_api_proxy.py
  19. 2
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/panko.py
  20. 2
      python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/placement.py
  21. 3
      stx-openstack-helm/stx-openstack-helm/manifests/manifest.yaml

3
openstack-helm-infra/centos/openstack-helm-infra.spec

@ -26,6 +26,7 @@ Patch08: 0008-Fix-rabbitmq-could-not-bind-port-to-ipv6-address-iss.patch
Patch09: 0009-Enable-override-of-mariadb-server-probe-parameters.patch
Patch10: 0010-Mariadb-use-utf8_general_ci-collation-as-default.patch
Patch11: 0011-Add-mariadb-database-config-override-to-support-ipv6.patch
Patch12: 0012-Add-tolerations-to-rabbitmq-chart.patch
BuildRequires: helm
BuildRequires: chartmuseum
@ -46,6 +47,8 @@ Openstack Helm Infra charts
%patch09 -p1
%patch10 -p1
%patch11 -p1
%patch12 -p1
%build
# Host a server for the charts

26
openstack-helm-infra/files/0012-Add-tolerations-to-rabbitmq-chart.patch

@ -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

8
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/aodh.py

@ -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

2
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/barbican.py

@ -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(),

4
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/ceilometer.py

@ -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()
}
}

8
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/cinder.py

@ -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': {

2
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/fm_rest_api.py

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

2
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/glance.py

@ -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': {

2
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/gnocchi.py

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

8
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/heat.py

@ -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()
}
}

4
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/ingress.py

@ -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,

4
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/ironic.py

@ -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(),

2
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/keystone.py

@ -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': {

4
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/magnum.py

@ -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()
}
}
}

4
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/mariadb.py

@ -24,8 +24,8 @@ class MariadbHelm(openstack.OpenstackBaseHelm):
common.HELM_NS_OPENSTACK: {
'pod': {
'replicas': {
'server': self._num_server_replicas(),
'ingress': self._num_controllers()
'server': self._num_provisioned_controllers(),
'ingress': self._num_provisioned_controllers()
}
},
'endpoints': self._get_endpoints_overrides(),

2
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/neutron.py

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

14
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/nova.py

@ -67,13 +67,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': {

2
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/nova_api_proxy.py

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

2
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/panko.py

@ -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

2
python-k8sapp-openstack/k8sapp_openstack/k8sapp_openstack/helm/placement.py

@ -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()

3
stx-openstack-helm/stx-openstack-helm/manifests/manifest.yaml

@ -336,6 +336,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

Loading…
Cancel
Save