Kolla
Project onboarding
Mark Goddard | mgoddard | Kolla Train PTL
30.04.2019
What does Kolla do?
Kolla’s mission is to provide production-ready containers and deployment tools for operating OpenStack clouds.
Project background
Deliverables
Kolla
Overview
Combinations
Images
almanach-api
almanach-base
almanach-collector
aodh-api
aodh-base
aodh-evaluator
aodh-expirer
aodh-listener
aodh-notifier
barbican-api
barbican-base
barbican-keystone-listener
barbican-worker
base
bifrost-base
bifrost-deploy
blazar-api
blazar-base
blazar-manager
ceilometer-base
ceilometer-central
ceilometer-compute
ceilometer-ipmi
ceilometer-notification
ceph-base
cephfs-fuse
ceph-mds
ceph-mgr
ceph-mon
ceph-nfs
ceph-osd
ceph-rgw
certmonger
chrony
cinder-api
cinder-backup
cinder-base
cinder-scheduler
cinder-volume
cloudkitty-api
cloudkitty-base
cloudkitty-processor
collectd
congress-api
congress-base
congress-datasource
congress-policy-engine
freezer-api
cron
designate-api
designate-backend-bind9
designate-base
designate-central
designate-mdns
designate-pool-manager
designate-producer
designate-sink
designate-worker
...
… and more images
Dockerhub
Components
kolla-build CLI
kolla-build CLI Examples
Build all images: kolla-build
Build Ubuntu images from source: kolla-build --type source --base ubuntu
Build images matching a regular expression: kolla-build ^mariadb$ nova
Build images in the main profile, push to a registry: kolla-build --profile main --push
Dockerfile Templates
Image Hierarchy
base
mariadb
openstack-base
glance-base
glance-api
magnum-base
magnum-api
magnum-conductor
OS
Base Image
OpenStack Base Image
Customisation
Example Dockerfile template - Glance API
FROM {{ namespace }}/{{ image_prefix }}glance-base:{{ tag }}
LABEL maintainer="{{ maintainer }}" name="{{ image_name }}" build-date="{{ build_date }}"
{% block glance_api_header %}{% endblock %}
{% import "macros.j2" as macros with context %}
{% if base_distro in ['centos', 'oraclelinux'] %}
{% set glance_api_packages = ['qemu-img-ev'] %}
{% elif base_distro == 'rhel' %}
{% set glance_api_packages = ['qemu-img'] %}
{% elif base_distro in ['debian', 'ubuntu'] %}
{% set glance_api_packages = ['qemu-utils'] %}
{% endif %}
{{ macros.install_packages(glance_api_packages | customizable("packages")) }}
COPY extend_start.sh /usr/local/bin/kolla_glance_extend_start
RUN chmod 755 /usr/local/bin/kolla_glance_extend_start
{% block glance_api_footer %}{% endblock %}
{% block footer %}{% endblock %}
USER glance
Kolla Image API
Repository Layout
Kolla Ansible
Overview
Flexibility
*well, almost any
Reference
Architecture
HAProxy
MariaDB
Keepalived
RabbitMQ
API servers
Workers
Agents
Open vSwitch
Libvirt
Actions
More Actions
Even More Actions
Components
Command Line Interfaces (CLIs)
Ansible Playbooks
Ansible Roles
Ansible Plugins
Variables & Inventory
Anatomy of a Role
ansible/roles/<service>/
defaults/main.yml Variable defaults
files/ Files to copy
handlers/main.yml Handler tasks
meta/main.yml Role dependencies
tasks/main.yml Tasks
templates/ Template source files
Anatomy of a Kolla Ansible Role - Defaults
ansible/roles/<service>/defaults/main.yml
glance_services:
glance-api:
container_name: glance_api
group: glance-api
enabled: true
image: "{{ glance_api_image_full }}"
environment: "{{ container_proxy }}"
volumes:
- "{{ node_config_directory }}/glance-api/:{{ container_config_directory }}/:ro"
- "/etc/localtime:/etc/localtime:ro"
- "{{ glance_file_datadir_volume }}:/var/lib/glance/"
- "kolla_logs:/var/log/kolla/"
dimensions: "{{ glance_api_dimensions }}"
haproxy: <omitted>�
glance_api_image: ...
Anatomy of a Kolla Ansible Role - Tasks
ansible/roles/<service>/
tasks/main.yml includes {{ kolla_action }}.yml
tasks/<action>.yml config, deploy, pull, reconfigure, upgrade
Anatomy of a Kolla Ansible Role - Deploy Action
Configuration
Configuration (2)
localhost
controllers
compute
storage
/etc/kolla/<container>/<file>
/etc/kolla/globals.yml
/etc/kolla/passwords.yml
/etc/kolla/config/<service>.conf
/etc/kolla/config/<service>/<files>
Configuration Patterns
Configuration Patterns (2)
Other Things
Kolla CLI
Kolla CLI
Kayobe
Kayobe
The Kase for Kolla
Why (Docker) Containers?
Why Ansible?
Help!
We Need Your Help!
How Can I Help?
The Noob
The Conscientious Operator
The Part Time Upstreamer
The Part Time Upstreamer (2)
The Core Reviewer
The Project Team Lead
THANKS.
Questions?
openstack
openstack
OpenStackFoundation
@OpenStack