We exuberantly announce the release of: magnum 9.1.0: Container Management project for OpenStack This release is part of the train stable release series. The source is available from: https://opendev.org/openstack/magnum Download the package from: https://tarballs.openstack.org/null/ Please report issues through: https://bugs.launchpad.net/magnum/+bugs For more details, please see below. 9.1.0 ^^^^^ New Features ************ * Add fedora coreos driver. To deploy clusters with fedora coreos operators or users need to add os_distro=fedora-coreos to the image. The scripts to deploy kubernetes on top are the same with fedora atomic. Note that this driver has selinux enabled. * Along with the kubernetes version upgrade support we just released, we're adding the support to upgrade the operating system of the k8s cluster (including master and worker nodes). It's an inplace upgrade leveraging the atomic/ostree upgrade capability. * Cluster upgrade API supports upgrading specific nodegroups in kubernetes clusters. If a user chooses a default nodegroup to be upgraded, then both of the default nodegroups will be upgraded since they are in one stack. For non-default nodegroups users are allowed to use only the cluster template already set in the cluster. This means that the cluster (default nodegroups) has to be upgraded on the first hand. For now, the only label that is taken into consideration during upgrades is the kube_tag. All other labels are ignored. * Choose whether system containers etcd, kubernetes and the heat- agent will be installed with podman or atomic. This label is relevant for k8s_fedora drivers. k8s_fedora_atomic_v1 defaults to use_podman=false, meaning atomic will be used pulling containers from docker.io/openstackmagnum. use_podman=true is accepted as well, which will pull containers by k8s.gcr.io. k8s_fedora_coreos_v1 defaults and accepts only use_podman=true. Note that, to use kubernetes version greater or equal to v1.16.0 with the k8s_fedora_atomic_v1 driver, you need to set use_podman=true. This is necessary since v1.16 dropped the --containerized flag in kubelet. https://github.com/kubernetes/kubernetes/pull/80043/files Known Issues ************ * The startup of the heat-container-agent uses a workaround to copy the SoftwareDeployment credentials to /var/lib/cloud/data/cfn-init- data. The fedora coreos driver requires heat train to support ignition. Changes in magnum 9.0.0..9.1.0 ------------------------------ 347b7b74 Use v1.15.0 as default octavia_ingress_controller_tag 2d4cc396 coreos: Use heat params for heat-agent image 020e1f3b Docker volume size from nodegroups dacaeb03 k8s_fedora: Add use_podman label be992a7d [fedora-atomic][k8s] Support operating system upgrade 7a70542f No new NGs for clusters without an api_address ece4adb0 Failed state was ignored for default ngs efc654d1 heat-agent: Check if scripts exists b8d9eeb4 bug: Cluster should be creatable w/o fixed subnet 3c984603 ng-13: Support nodegroup upgrade b56b164d ng-12: Label nodegroup nodes 952700e8 ng-11: API microversion 1.9 25dd88c9 ng-10: Fix cluster template conditions 0341f921 Support Fedora CoreOS 30 d4766aa8 update api-ref for clustertemplate 58ae69d8 Convert fixed_subnet name to uuid for OCCM f15ee976 Fixing typos and spelling errors in driver template files b449ed89 zuul: drop secret from stable branch f8981ee3 k8s_atomic: Run all syscontainer with podman 1ef99de8 Pass ssh public key as string e780e34d Delete the ca-rotate api-ref eb02e82b k8s_fedora: Move rp_filter=1 for calico up 3afd376c k8s_fedora: Label master nodes with kubectl 01ae402f Add hostname-override to kube-proxy b2ee79e2 Set cniVersion for flannel 27f0cf63 Improve log of k8s health status check 209846ca Change the order of resource creation b4ee00b7 Drop deprecated APIs for kube v1.16 support b53c8826 ng-9: Driver for nodegroup operations e6be08e5 ng-8: APIs for nodegroup CRUD operations 21f71af8 ng-7: Adapt parameter and output mappings 88916993 ng-6: Add new fields to nodegroup objects a21f6b8f Return default quota from API 178d455d Update TOX/UPPER_CONSTRAINTS_FILE for stable/train Diffstat (except docs and test files) ------------------------------------- .zuul.yaml | 26 - api-ref/source/certificates.inc | 26 - api-ref/source/clustertemplates.inc | 6 + api-ref/source/parameters.yaml | 7 + .../dcos_centos_v1/templates/dcoscluster.yaml | 5 + .../scripts/configure_container_agent.sh | 40 +- .../scripts/write-os-apply-config-templates.sh | 9 +- .../kubernetes-controller-manager/launch.sh | 2 + .../kubernetes-kubelet/config.json.template | 5 +- magnum/api/controllers/v1/cluster.py | 30 +- magnum/api/controllers/v1/cluster_actions.py | 10 +- magnum/api/controllers/v1/nodegroup.py | 179 ++- magnum/api/controllers/v1/quota.py | 17 +- magnum/api/controllers/versions.py | 3 +- magnum/cmd/conductor.py | 2 + magnum/common/exception.py | 35 +- magnum/common/neutron.py | 39 +- magnum/common/nova.py | 34 + magnum/common/policies/nodegroup.py | 33 + magnum/conductor/api.py | 23 + magnum/conductor/handlers/cluster_conductor.py | 11 + magnum/conductor/handlers/nodegroup_conductor.py | 152 +++ magnum/conductor/utils.py | 2 + magnum/db/api.py | 2 +- .../alembic/versions/c04e925e65c2_nodegroups_v2.py | 50 + magnum/db/sqlalchemy/api.py | 6 +- magnum/db/sqlalchemy/models.py | 4 + magnum/drivers/common/driver.py | 15 + magnum/drivers/common/k8s_monitor.py | 15 +- .../kubernetes/fragments/calico-service.sh | 7 +- .../kubernetes/fragments/configure-etcd.sh | 109 +- .../fragments/configure-kubernetes-master.sh | 224 +++- .../fragments/configure-kubernetes-minion.sh | 133 +- .../kubernetes/fragments/enable-helm-tiller.sh | 6 +- .../kubernetes/fragments/enable-ingress-octavia.sh | 14 +- .../kubernetes/fragments/enable-ingress-traefik.sh | 2 +- .../kubernetes/fragments/enable-keystone-auth.sh | 5 +- .../fragments/enable-prometheus-monitoring.sh | 9 +- .../kubernetes/fragments/enable-services-master.sh | 11 +- .../kubernetes/fragments/enable-services-minion.sh | 3 +- .../kubernetes/fragments/flannel-service.sh | 7 + .../kubernetes/fragments/kube-dashboard-service.sh | 12 +- .../kubernetes/fragments/start-container-agent.sh | 55 +- .../kubernetes/fragments/upgrade-kubernetes.sh | 140 ++- .../fragments/write-heat-params-master.sh | 3 + .../kubernetes/fragments/write-heat-params.sh | 3 + magnum/drivers/heat/driver.py | 393 +++++- magnum/drivers/heat/k8s_coreos_template_def.py | 79 +- magnum/drivers/heat/k8s_fedora_template_def.py | 63 +- magnum/drivers/heat/k8s_template_def.py | 160 ++- magnum/drivers/heat/swarm_fedora_template_def.py | 87 +- magnum/drivers/heat/swarm_mode_template_def.py | 86 +- magnum/drivers/heat/template_def.py | 103 +- magnum/drivers/k8s_coreos_v1/template_def.py | 2 +- .../templates/fragments/enable-coredns.yaml | 2 +- .../k8s_coreos_v1/templates/kubecluster.yaml | 37 +- magnum/drivers/k8s_fedora_atomic_v1/driver.py | 66 +- .../templates/kubecluster.yaml | 162 ++- .../k8s_fedora_atomic_v1/templates/kubemaster.yaml | 31 + .../k8s_fedora_atomic_v1/templates/kubeminion.yaml | 33 + magnum/drivers/k8s_fedora_coreos_v1/__init__.py | 0 magnum/drivers/k8s_fedora_coreos_v1/driver.py | 32 + .../drivers/k8s_fedora_coreos_v1/template_def.py | 45 + .../drivers/k8s_fedora_coreos_v1/templates/COPYING | 202 +++ .../templates/kubecluster.yaml | 1311 ++++++++++++++++++++ .../k8s_fedora_coreos_v1/templates/kubemaster.yaml | 889 +++++++++++++ .../k8s_fedora_coreos_v1/templates/kubeminion.yaml | 589 +++++++++ .../k8s_fedora_coreos_v1/templates/user_data.json | 84 ++ magnum/drivers/k8s_fedora_coreos_v1/version.py | 17 + .../templates/kubecluster.yaml | 37 +- magnum/drivers/mesos_ubuntu_v1/template_def.py | 78 +- .../mesos_ubuntu_v1/templates/mesoscluster.yaml | 20 +- .../swarm_fedora_atomic_v1/templates/cluster.yaml | 18 +- .../templates/swarmmaster.yaml | 2 +- .../templates/swarmcluster.yaml | 20 +- .../templates/swarmmaster.yaml | 2 +- magnum/objects/fields.py | 3 +- magnum/objects/nodegroup.py | 18 +- .../api/controllers/v1/test_cluster_actions.py | 127 +- .../unit/api/controllers/v1/test_nodegroup.py | 482 ++++++- .../conductor/handlers/test_cluster_conductor.py | 10 +- .../handlers/test_k8s_cluster_conductor.py | 108 +- .../handlers/test_mesos_cluster_conductor.py | 36 +- .../conductor/handlers/test_nodegroup_conductor.py | 218 ++++ .../handlers/test_swarm_cluster_conductor.py | 42 +- .../drivers/test_k8s_fedora_atomic_v1_driver.py | 142 +++ playbooks/container-builder-vars.yaml | 2 +- .../notes/fedora_coreos-e66b44d86dea380f.yaml | 12 + ...-fedora-atomic-os-upgrade-9f47182b21c6c028.yaml | 7 + .../notes/upgrade_api-1fecc206e5b0ef99.yaml | 12 + .../notes/use_podman-39532143be2296c2.yaml | 17 + setup.cfg | 1 + tox.ini | 2 +- 109 files changed, 7565 insertions(+), 945 deletions(-)