146 lines
6.0 KiB
ReStructuredText
146 lines
6.0 KiB
ReStructuredText
Containers based Overcloud Deployment
|
|
======================================
|
|
|
|
This documentation explains how to deploy a fully containerized overcloud on
|
|
Docker. This feature is now the default in Queens.
|
|
|
|
The requirements for a containerized overcloud are the same as for any other
|
|
overcloud deployment. The real difference is in where the overcloud services
|
|
will be deployed (containers vs base OS).
|
|
|
|
Architecture
|
|
------------
|
|
|
|
The docker-based overcloud architecture is not very different from the
|
|
baremetal/VM based one. The services deployed in the traditional baremetal
|
|
overcloud are also deployed in the docker-based one.
|
|
|
|
One obvious difference between these two types of deployments is that the
|
|
Openstack services are deployed as containers in a container runtime rather
|
|
than directly on the host operating system. This reduces the required packages
|
|
in the host to the bare minimum for running the container runtime and managing
|
|
the base network layer.
|
|
|
|
|
|
Manual overcloud deployment
|
|
----------------------------
|
|
|
|
This section explains how to deploy a containerized overcloud manually. For an
|
|
automated overcloud deployment, please follow the steps in the
|
|
`Using TripleO Quickstart`_ section below.
|
|
|
|
Preparing the environment
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
To prepare your environment, you must follow all the steps described in the
|
|
:ref:`basic-deployment-cli` documentation. Stop right at the
|
|
:ref:`deploy-the-overcloud` section.
|
|
|
|
It is necessary to generate a heat environment file which specifies the
|
|
container image parameters. These parameters will deploy the overcloud with
|
|
images from a specific repository with specific tags.
|
|
|
|
The ``openstack overcloud container image prepare`` command is an easy
|
|
way to generate these parameters. The following command will generate
|
|
a heat environment file `~/docker_registry.yaml` to deploy an overcloud
|
|
with container images from RDO docker registry::
|
|
|
|
openstack overcloud container image prepare \
|
|
--namespace trunk.registry.rdoproject.org/master \
|
|
--tag tripleo-ci-testing \
|
|
--env-file ~/docker_registry.yaml
|
|
|
|
The options ``--namespace master`` and ``--tag tripleo-ci-testing``
|
|
will typically be replaced with values specific to the environment. You
|
|
may wish to use ``tripleo-passed-ci`` for a more stable set of containers.
|
|
Run with ``--help`` to see the other options available for controlling
|
|
what is generated.
|
|
|
|
For production deployments (or for testing upgrades and rollbacks) stable tags
|
|
like `passed-ci` should never be used, instead explicit versioned tags are
|
|
required to specify the exact images which will be deployed.
|
|
|
|
Populate local docker registry
|
|
..............................
|
|
|
|
Serving container images from a local registry is optional, but it can make
|
|
overcloud deployment faster and more reliable. For development purposes an
|
|
insecure docker registry is already setup to listen on port 8787 as part of the
|
|
undercloud install.
|
|
|
|
To copy the images from one registry to another, the `prepare` command is run
|
|
to generate the `overcloud_containers.yaml` file. This describes the source and
|
|
destination image locations consumed by the `upload` command.
|
|
|
|
To copy the pre-built images coming from the `rdoproject` registry to
|
|
the local repository, the following commands are run. The first sets
|
|
up the ``overcloud_containers.yaml`` configuration file containing the
|
|
pull and push diestinations::
|
|
|
|
openstack overcloud container image prepare \
|
|
--namespace trunk.registry.rdoproject.org/master \
|
|
--tag tripleo-ci-testing \
|
|
--push-destination 192.168.24.1:8787 \
|
|
--images-file overcloud_containers.yaml
|
|
|
|
It is possible to limit the output to only the images that are going to be used
|
|
in the deployment by specifying the heat environment files with the
|
|
``--service-environment-file`` option and the roles file with the
|
|
``--roles-file`` option.
|
|
|
|
Then upload the images to the local registry using the generated file::
|
|
|
|
openstack overcloud container image upload --config-file overcloud_containers.yaml
|
|
|
|
Or use ``kolla-build`` to build and push the images yourself. This is useful
|
|
if you wish to build a new container or modify an existing one::
|
|
|
|
kolla-build --base centos --type binary --namespace master --registry 192.168.24.1:8787 --tag latest --template-override /usr/share/tripleo-common/container-images/tripleo_kolla_template_overrides.j2 --push
|
|
|
|
The command ``openstack overcloud container image prepare`` then needs to be
|
|
called again to generate the `~/docker_registry.yaml` file that specifies the
|
|
containers available in the local registry::
|
|
|
|
openstack overcloud container image prepare \
|
|
--namespace 192.168.24.1:8787/master \
|
|
--tag latest \
|
|
--env-file ~/docker_registry.yaml
|
|
|
|
For development we also set the registry as insecure so we do not need to deal
|
|
with TLS configurations::
|
|
|
|
echo " DockerInsecureRegistryAddress: 192.168.24.1:8787" >> \
|
|
~/docker_registry.yaml
|
|
|
|
|
|
Deploying the containerized Overcloud
|
|
-------------------------------------
|
|
|
|
A containerized overcloud deployment follows all the steps described in the
|
|
baremetal :ref:`deploy-the-overcloud` documentation with the exception that it
|
|
requires extra environment files to be added to the ``openstack overcloud
|
|
deploy`` command::
|
|
|
|
-e /usr/share/openstack-tripleo-heat-templates/environments/docker.yaml
|
|
-e ~/docker_registry.yaml
|
|
|
|
If deploying with highly available controller nodes, include the
|
|
following extra environment file in addition to the above and in place
|
|
of the `environments/puppet-pacemaker.yaml` file::
|
|
|
|
-e /usr/share/openstack-tripleo-heat-templates/environments/docker-ha.yaml
|
|
|
|
Using TripleO Quickstart
|
|
------------------------
|
|
|
|
.. note:: Please refer to the `TripleO Quickstart`_ docs for more info about
|
|
quickstart, the minimum requirements, the setup process and the
|
|
available plugins.
|
|
|
|
|
|
The command below will deploy a containerized overcloud on top of a baremetal undercloud::
|
|
|
|
bash quickstart.sh --config=~/.quickstart/config/general_config/containers_minimal.yml $VIRTHOST
|
|
|
|
.. _TripleO Quickstart: https://docs.openstack.org/developer/tripleo-quickstart/
|