Build docker images in Zuul

Add dummy script `build_image.sh` in docker top folder for building both
depended images to avoid adding special case in Zuul build job.

Small fixes to docker README.

Story: 2001694
Task: 28223
Change-Id: I386bc286de702a1bead0bf8e0e80fe0b3c73a9bf
This commit is contained in:
Dobroslaw Zybort 2019-04-01 14:31:01 +02:00
parent 1419067fd5
commit da98360754
5 changed files with 100 additions and 27 deletions

View File

@ -6,6 +6,7 @@
- openstack-python37-jobs
check:
jobs:
- docker-build-monasca-service
- monasca-tempest-python2-influxdb:
voting: false
- monasca-tempest-python3-influxdb:

View File

@ -1,7 +1,10 @@
===============================
Docker images for Monasca Agent
===============================
The Monasca Agent images are based on the monasca-base image.
There are two separate images for monasca-agent services: collector
and forwarder. Collector is working best with services that allow remote access
to them and to gather host level metrics collector will need to work together
with cAdvisor service.
Building monasca-base image
@ -12,26 +15,16 @@ See https://github.com/openstack/monasca-common/tree/master/docker/README.rst
Building Monasca Agent images
=============================
``build_image.sh`` script in top level folder (``docker/build_image.sh``) is
dummy script that will build both collector and forwarder images at once.
Example:
$ ./build_image.sh <repository_version> <upper_constains_branch> <common_version>
$ ./build_image.sh <repository_version> <upper_constrains_branch> <common_version>
Everything after ``./build_image.sh`` is optional and by default configured
to get versions from ``Dockerfile``. ``./build_image.sh`` also contain more
detailed build description.
Requirements from monasca-base image
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
health_check.py
This file will be used for checking the status of the Monasca Agent
(unfortunately monasca agent doesn't have any endpoint for checking health).
Scripts
~~~~~~~
start.sh
In this starting script provide all steps that lead to the proper service
start. Including usage of wait scripts and templating of configuration
files. You also could provide the ability to allow running container after
service died for easier debugging.
build_image.sh
Please read detailed build description inside the script.
Environment variables
~~~~~~~~~~~~~~~~~~~~~
@ -55,7 +48,7 @@ STAY_ALIVE_ON_FAILURE false If true, container ru
============================== =========================== ====================================================
Note that additional variables can be specified as well, see the
[config template][8] for a definitive list.
``agent.yaml.j2`` for a definitive list in every image folder.
Note that the auto restart feature can be enabled if the agent collector
has unchecked memory growth. The proper restart behavior must be enabled
@ -77,6 +70,18 @@ MONASCA_MONITORING false Monitor services for metrics pipeline
MONASCA_LOG_MONITORING false Monitor services for logs pipeline
============================== =========== =====================================
Scripts
~~~~~~~
start.sh
In this starting script provide all steps that lead to the proper service
start. Including usage of wait scripts and templating of configuration
files. You also could provide the ability to allow running container after
service died for easier debugging.
health_check.py
This file will be used for checking the status of the application.
Docker Plugin
-------------
@ -111,7 +116,7 @@ This plugin is enabled when ``KUBERNETES=true``. It has the following options:
The Kubernetes plugin is intended to be run as a DaemonSet on each Kubernetes
node. In order for API endpoints to be detected correctly, ``AGENT_POD_NAME`` and
`AGENT_POD_NAMESPACE`` must be set using the [Downward API][7] as described
``AGENT_POD_NAMESPACE`` must be set using the `Downward API`_ as described
above.
Kubernetes API Plugin
@ -187,10 +192,10 @@ This plugin is enabled when ``CADVISOR=true``. It has the following options:
This plugin collects host-level metrics from a running cAdvisor instance.
cAdvisor is included in ``kubelet`` when in Kubernetes environments and is
necessary to retrieve host-level metrics. As with the Kubernetes plugin,
`AGENT_POD_NAME`` and ``AGENT_POD_NAMESPACE`` must be set to determine the URL
``AGENT_POD_NAME`` and ``AGENT_POD_NAMESPACE`` must be set to determine the URL
automatically.
cAdvisor can be easily run in [standard Docker environments][9] or directly on
cAdvisor can be easily run in `standard Docker environments`_ or directly on
host systems. In these cases, the URL must be manually provided via
``CADVISOR_URL``.
@ -224,7 +229,7 @@ MySQL
Logs pipeline
^^^^^^^^^^^^^
For logs pipeline you can enable HTTP endpoint check, process and
`Elasticsearch`` plugins. This is enabled when ``MONASCA_LOG_MONITORING=true``.
``Elasticsearch`` plugins. This is enabled when ``MONASCA_LOG_MONITORING=true``.
You can adjust the configuration of the components by passing environment
variables:
@ -250,3 +255,6 @@ templates with access to all environment variables.
Links
~~~~~
https://github.com/openstack/monasca-agent/blob/master/README.rst
.. _`Downward API`: https://kubernetes.io/docs/user-guide/downward-api/
.. _`standard Docker environments`: https://github.com/google/cadvisor#quick-start-running-cadvisor-in-a-docker-container

58
docker/build_image.sh Executable file
View File

@ -0,0 +1,58 @@
#!/bin/bash
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
# TODO(Dobroslaw): move this script to monasca-common/docker folder
# and leave here small script to download it and execute using env variables
# to minimize code duplication.
set -x # Print each script step.
set -eo pipefail # Exit the script if any statement returns error.
# Dummy script for building both images for monasca-agent: collector and
# forwarder. It will relay all arguments to every image build script.
# This script is used for building Docker image with proper labels
# and proper version of monasca-common.
#
# Example usage:
# $ ./build_image.sh <repository_version> <upper_constains_branch> <common_version>
#
# Everything after `./build_image.sh` is optional and by default configured
# to get versions from `Dockerfile`.
#
# To build from master branch (default):
# $ ./build_image.sh
# To build specific version run this script in the following way:
# $ ./build_image.sh stable/queens
# Building from specific commit:
# $ ./build_image.sh cb7f226
# When building from a tag monasca-common will be used in version available
# in upper constraint file:
# $ ./build_image.sh 2.5.0
# To build image from Gerrit patch sets that is targeting branch stable/queens:
# $ ./build_image.sh refs/changes/51/558751/1 stable/queens
#
# If you want to build image with custom monasca-common version you need
# to provide it as in the following example:
# $ ./build_image.sh master master refs/changes/19/595719/3
# Go to folder with Docker files.
REAL_PATH=$(python -c "import os,sys; print(os.path.realpath('$0'))")
cd "$(dirname "$REAL_PATH")/../docker/"
./collector/build_image.sh "$@"
printf "\n\n\n"
./forwarder/build_image.sh "$@"

View File

@ -33,7 +33,7 @@ set -eo pipefail # Exit the script if any statement returns error.
# To build specific version run this script in the following way:
# $ ./build_image.sh stable/queens
# Building from specific commit:
# $ ./build_image.sh cb7f226
# $ ./build_image.sh cb7f226
# When building from a tag monasca-common will be used in version available
# in upper constraint file:
# $ ./build_image.sh 2.5.0
@ -44,6 +44,10 @@ set -eo pipefail # Exit the script if any statement returns error.
# to provide it as in the following example:
# $ ./build_image.sh master master refs/changes/19/595719/3
# Go to folder with Docker files.
REAL_PATH=$(python -c "import os,sys; print(os.path.realpath('$0'))")
cd "$(dirname "$REAL_PATH")/../collector/"
[ -z "$DOCKER_IMAGE" ] && \
DOCKER_IMAGE=$(\grep DOCKER_IMAGE Dockerfile | cut -f2 -d"=")
@ -90,7 +94,6 @@ if [ -z "$COMMON_REPO" ]; then
COMMON_REPO=$(\grep COMMON_REPO Dockerfile | cut -f2 -d"=") || true
: "${COMMON_REPO:=https://git.openstack.org/openstack/monasca-common}"
fi
: "${COMMON_VERSION:=$3}"
if [ -z "$COMMON_VERSION" ]; then
COMMON_VERSION=$(\grep COMMON_VERSION Dockerfile | cut -f2 -d"=") || true

View File

@ -33,7 +33,7 @@ set -eo pipefail # Exit the script if any statement returns error.
# To build specific version run this script in the following way:
# $ ./build_image.sh stable/queens
# Building from specific commit:
# $ ./build_image.sh cb7f226
# $ ./build_image.sh cb7f226
# When building from a tag monasca-common will be used in version available
# in upper constraint file:
# $ ./build_image.sh 2.5.0
@ -44,6 +44,10 @@ set -eo pipefail # Exit the script if any statement returns error.
# to provide it as in the following example:
# $ ./build_image.sh master master refs/changes/19/595719/3
# Go to folder with Docker files.
REAL_PATH=$(python -c "import os,sys; print(os.path.realpath('$0'))")
cd "$(dirname "$REAL_PATH")/../forwarder/"
[ -z "$DOCKER_IMAGE" ] && \
DOCKER_IMAGE=$(\grep DOCKER_IMAGE Dockerfile | cut -f2 -d"=")
@ -90,7 +94,6 @@ if [ -z "$COMMON_REPO" ]; then
COMMON_REPO=$(\grep COMMON_REPO Dockerfile | cut -f2 -d"=") || true
: "${COMMON_REPO:=https://git.openstack.org/openstack/monasca-common}"
fi
: "${COMMON_VERSION:=$3}"
if [ -z "$COMMON_VERSION" ]; then
COMMON_VERSION=$(\grep COMMON_VERSION Dockerfile | cut -f2 -d"=") || true