Skip to content

Instantly share code, notes, and snippets.

@matrixik
Last active September 12, 2018 09:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save matrixik/ddf61d98286b89a83aeda9cdcc0b7739 to your computer and use it in GitHub Desktop.
Save matrixik/ddf61d98286b89a83aeda9cdcc0b7739 to your computer and use it in GitHub Desktop.
Monasca in Docker

What went good

  • Ability to build from master and Gerrit (also common).
  • Finding more problems with Python 3 compatibility.
  • Every container provide information from what versions it was built.
  • Monasca-common Zuul jobs push base image to Docker Hub (as monasca/base). https://hub.docker.com/r/monasca/base/tags/
  • Standardized wait scripts.

What went bad (or mistakes)

  • Always requesting git repository.
  • Thinking I could make it simple and all in Dockerfile.

Surprises

  • Services don't have health checks.
  • pyca/cryptography in upper constrains is not working with newer LibreSSL.

Way forward

  • Merging https://review.openstack.org/#/c/586540/ (Allow to build image with common from Gerrit).
  • Putting all Monasca services into containers in OpenStack.
  • Find clean and (hopefully) simple way how to store build_image.sh in monasca-common and request it on child build time.
  • Building all services images in Zuul.
  • Tempest tests running with entire stack in Docker.
  • Zuul jobs when tagging releases.
  • Ability to build (also in Zuul) with specific version of Docker engine.
  • Less steps in Dockerfile (shorter docker history).
  • Better use of Docker build caching.

Examples

Building child image

build_image.sh <repository_version> <upper_constains_branch> <common_version>
λ ./build_image.sh
λ ./build_image.sh master master master
λ ./build_image.sh stable/rocky
λ ./build_image.sh cb7f226
λ ./build_image.sh 2.5.0  <== special case (don't know stable version)
λ ./build_image.sh 2.5.0 stable/queens
λ ./build_image.sh refs/changes/51/558751/1 stable/queens
λ ./build_image.sh master master refs/changes/40/586540/7

Listing labels

λ docker inspect --format "{{ json .Config.Labels }}" monasca/base:master | jq
{
  "org.opencontainers.image.created": "2018-08-31T13:00:20Z",
  "org.opencontainers.image.licenses": "Apache-2.0",
  "org.opencontainers.image.revision": "377dcfb421938afae984af31b52c4f8836d00d4a",
  "org.opencontainers.image.title": "monasca-base"
}
λ docker inspect --format "{{ json .Config.Labels }}" monasca-api:master | jq
{
  "org.opencontainers.image.created": "2018-09-07T11:59:42Z",
  "org.opencontainers.image.licenses": "Apache-2.0",
  "org.opencontainers.image.revision": "3f530c85e8cc60babe3e20a9ae4da4a948cbf8d3",
  "org.opencontainers.image.source": "https://git.openstack.org/openstack/monasca-api",
  "org.opencontainers.image.title": "monasca-api",
  "org.opencontainers.image.url": "https://github.com/openstack/monasca-api",
  "org.opencontainers.image.version": "master",
  "org.openstack.constraints_uri": "http://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=master",
  "org.openstack.monasca.common.revision": "d85c5608906900613372e4570a3d0fabd677c3d7",
  "org.openstack.monasca.common.source": "https://git.openstack.org/openstack/monasca-common",
  "org.openstack.monasca.common.version": "refs/changes/40/586540/7",
  "org.openstack.monasca.python.extra_deps": "gunicorn gevent==1.3.5 python-memcached influxdb"
}
λ docker run -it --rm monasca-api:master ash

Cat from /VERSIONS file.

Monasca base build date: 2018-08-31T13:00:20Z
Monasca base revision:   377dcfb421938afae984af31b52c4f8836d00d4a
App:        monasca-api
Repository: https://git.openstack.org/openstack/monasca-api
Version:    master
Revision:   3f530c85e8cc60babe3e20a9ae4da4a948cbf8d3
Build date: 2018-09-07T11:59:42Z
Revision:   3f530c85e8cc60babe3e20a9ae4da4a948cbf8d3
Monasca-common version:     refs/changes/40/586540/7
Monasca-common pip version: -e git+https://git.openstack.org/openstack/monasca-common@d85c5608906900613372e4570a3d0fabd677c3d7#egg=monasca_common
Monasca-common revision:    d85c5608906900613372e4570a3d0fabd677c3d7
Constraints file: http://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=master
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment