在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):stackanetes/stackanetes开源软件地址(OpenSource Url):https://github.com/stackanetes/stackanetes开源编程语言(OpenSource Language):Shell 100.0%开源软件介绍(OpenSource Introduction):StackanetesStackanetes is an initiative to make operating OpenStack as simple as running any application on Kubernetes. Stackanetes deploys standard OpenStack services into containers and uses Kubernetes’ robust application lifecycle management capabilities to deliver a single platform for companies to run OpenStack Infrastructure-as-a-Service (IaaS) and container workloads. OverviewDemonstration VideoServicesStackanetes sets up the following OpenStack components:
In addition to these, a few other applications are deployed:
Services are divided and scheduled into two groups, with the exception of the Open vSwitch agents which run everywhere:
Gotta go fastLeaving aside the configuration of the requirements, Stackanetes can fully deploy OpenStack from scratch in ~5-8min. But that's not the only strength of Stackanetes, its true power resides in its ability to help managing OpenStack's lifecycle. RequirementsStackanetes requires Kubernetes 1.3+ with:
While Glance may operate with local storage, a Ceph cluster is needed for Cinder. Nova's live-migration feature requires proper DNS resolution of the Kubernetes nodes' hostnames. The rkt engine can be used in place of the default runtime with Kubernetes 1.4+ and rkt 1.20+. Note however that a known issue about mount propagation flags may prevent the Kubernetes' service account secret from being mounted properly on the Nova's libvirt pod, causing it to fail at startup. High-availability & NetworkingThanks to Kubernetes' deployments, OpenStack APIs can be made highly-available using a single parameter, called Internal traffic (i.e. inside the Kubernetes cluster) is load-balanced natively using Kubernetes' services. When Ingress is enabled, external traffic (i.e. from outside of the Kubernetes cluster) to OpenStack is routed from any of the Kubernetes' node to an Traefik instance, which then selects the appropriate service and forward the requests accordingly. By leveraging Kubernetes' services and health checks, high-availability of the OpenStack endpoints is achieved transparently: a simple round-robin DNS that resolves to few Kubernetes' nodes is sufficient. When it comes to data availability for Cinder and Glance, Stackanetes relies on the storage backend being used. High availability is not yet guaranteed for Elasticsearch (Searchlight). Getting startedPreparing the environmentKubernetesTo setup Kubernetes, the CoreOS guides may be used. At least two nodes must be labelled for Stackanetes' usage:
Following Galera guidelines, it's required to keep odd number of DNSTo enable Nova's live-migration, there must be a DNS server, accessible inside the cluster, able to resolve each hostname of the Kubernetes nodes. The IP address of this server will then have to be provided in the Stackanetes configuration. If external access is wanted, the Ingress feature should be enabled in Stackanetes configuration and the external DNS environment should be configured to resolve the following names (modulo a custom host that may have been configured) to at least some Kubernetes' nodes:
CephIf data high availability, Nova's live migration or Cinder is desired, Ceph must be used. Deploying Ceph can be achieved easily using bare containers or even by using kubernetes. Few users and pools have to be created. The user and pool names can be customized. Note down the keyrings, they will be used in the configuration.
kpmkpm is the package manager and command-line tool used to deploy stackanetes. The most straight-forward way to install it is to use PyPI:
DeployingCloningTechnically, cloning Stackanetes is not necessary beside getting the default configuration file but is believed to be a good practice to understand the architecture of the project or if modifying the project is intended.
ConfigurationAll the configuration is done in one place: the While it is no strictly necessary, it is possible to persist changes to that file for reproducible deployments across environments, without the need of sharing it out of band. To do this, the stackanetes meta-package has to renamed and pushed to the CNR Registry. Pushing is also required when any modifications are made to the Stackanetes packages.
DeploymentAll we have to do is ask kpm to deploy Stackanetes. In the example below, we specify a namespace, a configuration file containing all non-default parameters (
For a finer-grained deployment story, kpm also supports versioning and release channels. AccessOnce Stackanetes is fully deployed, we can log in to Horizon or use the CLI directly. If Ingress is enabled, Horizon may be accessed on http://horizon.openstack.cluster:30080/. Otherwise, it will be available on port 80 of any defined external IP. The default credentials are admin / password. The file env_openstack.sh contains the default environment variables that will enable interaction using the various OpenStack clients. UpdateWhen the configuration is updated (e.g. a new Ceph monitor is added) or customized packages are pushed, Stackanetes can be updated with the exact same command that has been used to deploy it. kpm will compute the differences between the actual deployment and the desired one and update the required resources: it will for instance trigger a rolling upgrade when a deployment is modified. Note that manual rollouts still have to be done when only ConfigMaps are modified. |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论