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