{"id":50385187,"url":"https://github.com/stackhpc/magnum-capi-helm","last_synced_at":"2026-05-30T14:31:07.317Z","repository":{"id":194349110,"uuid":"690626834","full_name":"stackhpc/magnum-capi-helm","owner":"stackhpc","description":"Magnum driver using capi-helm-charts","archived":false,"fork":false,"pushed_at":"2024-04-11T12:11:54.000Z","size":169,"stargazers_count":2,"open_issues_count":6,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-04-14T22:50:20.734Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stackhpc.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-09-12T14:54:13.000Z","updated_at":"2024-01-11T19:41:04.000Z","dependencies_parsed_at":"2023-09-13T00:57:20.601Z","dependency_job_id":"aba48b33-a0b5-46a0-8301-572dae1c66be","html_url":"https://github.com/stackhpc/magnum-capi-helm","commit_stats":null,"previous_names":["stackhpc/magnum-capi-helm"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/stackhpc/magnum-capi-helm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackhpc%2Fmagnum-capi-helm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackhpc%2Fmagnum-capi-helm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackhpc%2Fmagnum-capi-helm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackhpc%2Fmagnum-capi-helm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stackhpc","download_url":"https://codeload.github.com/stackhpc/magnum-capi-helm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stackhpc%2Fmagnum-capi-helm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33696681,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-05-30T14:31:06.745Z","updated_at":"2026-05-30T14:31:07.305Z","avatar_url":"https://github.com/stackhpc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repository has been moved to `\u003chttps://opendev.org/openstack/magnum-capi-helm\u003e`__\n######################################################################################\n\n===============================\nmagnum-capi-helm\n===============================\n\nOpenStack Magnum driver using helm to create k8s clusters\nwith Cluster API.\n\nThe driver uses capi-helm-charts to create the\nk8s resources needed to create a k8s cluster\nusing Cluster API, including various useful\nadd ons like a CNI and a monitoring stack.\nhttps://github.com/stackhpc/capi-helm-charts\n\nNote, the above helm charts are intended to be\na way to share a reference method to create K8s\non OpenStack. The charts are not expected or\nindented to be specific to Magnum. The hope is\nthey can also be used by ArgoCD, Flux or Azimuth\nto create k8s clusters on OpenStack.\n\nWork on this driver started upstream aroun October 2021.\nAfter failing to get merged during Bobcat,\nwe created this downstream repo as a stop gap to help\nthose wanting to use this driver now.\nhttps://specs.openstack.org/openstack/magnum-specs/specs/bobcat/clusterapi-driver.html\n\nInstallation and Dependencies\n=============================\n\nFor a kolla-ansible deployment, you can follow `this \u003chttps://stackhpc-kayobe-config.readthedocs.io/en/stackhpc-yoga/configuration/magnum-capi.html\u003e`__ guide.\n\nIf you install this python package within your Magnum virtual env,\nit should be picked up by Magnum:::\n\n  git clone https://github.com/stackhpc/magnum-capi-helm.git\n  cd magnum-capi-helm\n  pip install -e .\n\nWe currently run the unit tests against the 2023.1 version of Magnum.\n\nThe driver requires access to a Cluster API management cluster.\nFor more information, please see:\nhttps://cluster-api.sigs.k8s.io/user/quick-start\n\nTo access the above Cluster API management cluster,\nyou need to configure where the kubeconfig file\nlives:::\n\n  [capi_helm]\n  kubeconfig_file = /etc/magnum/kubeconfig\n\nNote that the driver makes use of the nova_client config that will\nalready be setup in your Magnum configuration to generate application\ncredentials that reference the correct endpoint. You need to make\nsure this uses an endpoint that can be reached from inside the\nmagnum clusters you create, by having something like this:::\n\n  [nova_client]\n  endpoint_type = publicURL\n\nTo create a cluster, first you will need an image that\nhas been built to include kubernetes.\nThere are community maintained packer build pipelines here:\nhttps://image-builder.sigs.k8s.io/capi/capi.html\n\nOr you can grab prebuilt images from our `azimuth image releases \u003chttps://github.com/stackhpc/azimuth-images/releases/latest\u003e`__.\nImages are available in the `manifest.json` file, and are named in the format `ubuntu-\u003cubuntu release\u003e-\u003ckube version\u003e-\u003cdate and time of build\u003e`.\n\nThe above image needs to have the correct os-distro\nproperty set when uploaded to Glance. For example:::\n\n  curl -fo ubuntu.qcow 'https://object.arcus.openstack.hpc.cam.ac.uk/azimuth-images/ubuntu-jammy-kube-v1.28.3-231030-1102.qcow2?AWSAccessKeyId=c5bd0fa15bae4e08b305a52aac97c3a6\u0026Expires=1730200795\u0026Signature=gs9Fk7y06cpViQHP04TmHDtmkWE%3D'\n  openstack image create ubuntu-jammy-kube-v1.28.3 \\\n    --file ubuntu.qcow2  \\\n    --disk-format qcow2 \\\n    --container-format bare \\\n    --public\n  openstack image set ubuntu-jammy-kube-v1.28.3 --os-distro ubuntu --os-version 22.04\n\nFinally, this means you can now create a template, and then a cluster,\nget the kubeconfig to access it, then run sonaboy to test it,\ndoing something like this:::\n\n  openstack coe cluster template create new_driver \\\n    --coe kubernetes \\\n    --label octavia_provider=ovn \\\n    --image $(openstack image show ubuntu-jammy-kube-v1.28.3 -c id -f value) \\\n    --external-network public \\\n    --master-flavor ds2G20 \\\n    --flavor ds2G20 \\\n    --public \\\n    --master-lb-enabled\n\n  openstack coe cluster create devstacktest \\\n    --cluster-template new_driver \\\n    --master-count 1 \\\n    --node-count 2\n  openstack coe cluster list\n\n  mkdir -p ~/clusters/devstacktest\n  cd ~/clusters/devstacktest\n  openstack coe cluster config devstacktest\n  export KUBECONFIG=~/clusters/kubernetes-cluster/config\n  kubectl get nodes\n  sonobuoy run --mode quick --wait\n\nDevStack Setup\n==============\n\nDid you want to try this driver in DevStack?\nPlease try our setup script in this repo:\n`devstack/contrib/new-devstack.sh`\n\nThe above devstack script includes creating k3s based\nCluster API management cluster.\n\nFeatures\n========\n\nThe driver currently supports, create, delete, upgrade and\nupdates to node groups and their sizes.\n\nThe CAPI helm charts are currently being tested\nwith K8s 1.26, 1.27 and 1.28:\nhttps://github.com/stackhpc/capi-helm-charts/blob/main/.github/workflows/ensure-capi-images.yaml#L9\n\nThe driver respects the following cluster and template properties:\n\n* image_id\n* keypair\n* fixed_network, fixed_subnet (if missing, new one is created)\n* external_network_id\n* dns_nameserver\n\nThe driver supports the following labels:\n\n* csi_cinder_availability_zone: default is nova, operators can configure the default in magnum.conf\n* monitoring_enabled: default is off, change to \"true\" to enable\n* kube_dashboard_enabled: defalt is on, change to \"false\" to disable\n* octavia_provider: default is \"amphora\", ovn is also an option\n* fixed_subnet_cidr: default is \"10.0.0.0/24\"\n* extra_network_name: default is \"\", change to name of additional network,\n  which can be useful if using Manila with the CephFS Native driver.\n* api_master_lb_allowed_cidrs: default is \"\" which is equivalent to 0.0.0.0/0. \n  Provide a semicolon separated (;) list of CIDRs to restrict API load balancer access.\n  For example '123.123.123.123/32;10.0.0.0/8;192.168.3.0/24'\n\nCurrently all clusters use the Calico CNI. While Cilium is also supported\nin the helm charts, it is not currently reguarlly tested.\n\nWe have found upgrade with ClusterAPI doesn't work well without\nusing a loadbalancer, even with a single node control plane,\nso we currently ignore the \"master-lb-enabled\" flag.\n\nNOTE:\nWe are working in Cluster API provider OpenStack to add the ability\nto store the etcd state on a cinder volume, separate from the root\ndisk. This is a big feature gap for clouds where most of your\nroot disks are on spinning disk Ceph, which is not fast enough\nfor etcd to operate correctly, but equally you don't have enough\nssd based Ceph to put all controller root disks on that Ceph:\nhttps://github.com/kubernetes-sigs/cluster-api-provider-openstack/pull/1668\n\nHistory\n=======\n\nThe helm charts used by this driver started\nout in August 2021 to build a template for\ncreating K8s on OpenStack using Cluster API.\nWe hope to find an upstream home for these\nsomewhere within OpenStack, ideally within\nMagnum, but for now they are here:\nhttps://github.com/stackhpc/capi-helm-charts\n\nThe helm charts have been in use in production\nby Azimuth, since early 2022, to create\nKubernetes clusters on OpenStack:\nhttps://github.com/stackhpc/azimuth\n\nThe hope is these helm charts can provide a common\nwell tested base that can be used in many different\nways to run Kubernetes on OpenStack. Be that automated\nusing helm directly, ArgoCD, Flux, Azimuth,\nOpenStack Magnum and more.\nIdeally we can eventually apply for Kubernetes\ncertification for these charts. The current helm chart\nCI makes use of sonoboy smoke tests, and have been\nmanually tested to pass all conformance tests.\n\nThere has been an ongoing effort since October 2021 to create a Magnum\ndriver that makes use of the above helm charts, with a view to replace\nthe existing Heat based driver. However progress was severely delayed\ngetting the funding in place to do the work, which was finally confirmed\nin August 2023.\nYou can see the upstream patches starting here:\nhttps://review.opendev.org/c/openstack/magnum/+/815521\n\nIn early 2023 we discovered Vexhost had created\ntheir own Cluster API Magnum driver, out of tree:\nhttps://github.com/vexxhost/magnum-cluster-api\n\nAfter subsequent PTG discussions, we agreed to continue this\neffort to merge a driver upstream that makes use of cluster API,\nwith the above spec eventually getting merged for the Bobcat release.\n\nThe hope is that helm provides a better interface for per operator\nadditions to clusters, and should allow for helm to be updated to\nsupport new Kubernetes versions, independently from the core\nMagnum code.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackhpc%2Fmagnum-capi-helm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstackhpc%2Fmagnum-capi-helm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstackhpc%2Fmagnum-capi-helm/lists"}