blob: 81c223b861b077ab4d6e6f342bbdafd808c28460 [file] [log] [blame]
from taskflow.patterns import graph_flow
from atmosphere.config import CONF
from atmosphere.tasks import flux, kubernetes, openstack_helm
NAMESPACE_CERT_MANAGER = "cert-manager"
NAMESPACE_KUBE_SYSTEM = "kube-system"
NAMESPACE_MONITORING = "monitoring"
NAMESPACE_OPENSTACK = "openstack"
HELM_REPOSITORY_BITNAMI = "bitnami"
HELM_REPOSITORY_CEPH = "ceph"
HELM_REPOSITORY_COREDNS = "coredns"
HELM_REPOSITORY_INGRESS_NGINX = "ingress-nginx"
HELM_REPOSITORY_JETSTACK = "jetstack"
HELM_REPOSITORY_NODE_FEATURE_DISCOVERY = "node-feature-discovery"
HELM_REPOSITORY_OPENSTACK_HELM = "openstack-helm"
HELM_REPOSITORY_OPENSTACK_HELM_INFRA = "openstack-helm-infra"
HELM_REPOSITORY_PERCONA = "percona"
HELM_REPOSITORY_PROMETHEUS_COMMUINTY = "prometheus-community"
CONTROL_PLANE_NODE_SELECTOR = {
"openstack-control-plane": "enabled",
}
NODE_FEATURE_DISCOVERY_VALUES = {
"master": {"nodeSelector": CONTROL_PLANE_NODE_SELECTOR}
}
def get_deployment_flow():
flow = graph_flow.Flow("deploy").add(
# kube-system
kubernetes.CreateOrUpdateNamespaceTask(name=NAMESPACE_KUBE_SYSTEM),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_KUBE_SYSTEM,
name=HELM_REPOSITORY_CEPH,
url="https://ceph.github.io/csi-charts",
),
# cert-manager
kubernetes.CreateOrUpdateNamespaceTask(name=NAMESPACE_CERT_MANAGER),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_CERT_MANAGER,
name=HELM_REPOSITORY_JETSTACK,
url="https://charts.jetstack.io",
),
# monitoring
kubernetes.CreateOrUpdateNamespaceTask(name=NAMESPACE_MONITORING),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_MONITORING,
name=HELM_REPOSITORY_PROMETHEUS_COMMUINTY,
url="https://prometheus-community.github.io/helm-charts",
),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_MONITORING,
name=HELM_REPOSITORY_NODE_FEATURE_DISCOVERY,
url="https://kubernetes-sigs.github.io/node-feature-discovery/charts",
),
flux.CreateOrUpdateHelmReleaseTask(
namespace=NAMESPACE_MONITORING,
name="node-feature-discovery",
repository=HELM_REPOSITORY_NODE_FEATURE_DISCOVERY,
chart="node-feature-discovery",
version="0.11.2",
values=NODE_FEATURE_DISCOVERY_VALUES,
),
# openstack
kubernetes.CreateOrUpdateNamespaceTask(name=NAMESPACE_OPENSTACK),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_OPENSTACK,
name=HELM_REPOSITORY_BITNAMI,
url="https://charts.bitnami.com/bitnami",
),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_OPENSTACK,
name=HELM_REPOSITORY_PERCONA,
url="https://percona.github.io/percona-helm-charts/",
),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_OPENSTACK,
name=HELM_REPOSITORY_INGRESS_NGINX,
url="https://kubernetes.github.io/ingress-nginx",
),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_OPENSTACK,
name=HELM_REPOSITORY_OPENSTACK_HELM_INFRA,
url="https://tarballs.opendev.org/openstack/openstack-helm-infra/",
),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_OPENSTACK,
name=HELM_REPOSITORY_COREDNS,
url="https://coredns.github.io/helm",
),
flux.CreateOrUpdateHelmRepositoryTask(
namespace=NAMESPACE_OPENSTACK,
name=HELM_REPOSITORY_OPENSTACK_HELM,
url="https://tarballs.opendev.org/openstack/openstack-helm/",
),
)
if CONF.memcached.enabled:
flow.add(
openstack_helm.CreateOrUpdateReleaseSecretTask(
namespace=NAMESPACE_OPENSTACK, chart="memcached"
),
)
return flow