Considerable improvements can be achieved by automating the integration of Kamailio-based projects: automated builds, tests and deployments save time and increase reliability. This presentation focuses on common practices to automate the build of Kamailio (and RTPEngine) on various distributions and deploy them, together with their configuration, on testing and production environments.
Docker plays an important role in providing flexible, clean building environments and keep the process reproducible. We’ll see how Jenkins can orchestrate the builds with Docker slaves, and perform the deployments with a combination of platform-specific packages, Fabric, Puppet and Ansible.
Kamailio combined with Asterisk creates and incredibly robust and durable VoIP framework. With scalability and security, adding Kamailio to an asterisk deployment makes sense and saves money.
Introduction to Kamailio (TADSummit 2020 Asia)Fred Posner
Quick introduction to Kamailio, the open source SIP server (https://www.kamailio.org).
Kamailio® (successor of former OpenSER and SER) is an Open Source SIP Server released under GPL, able to handle thousands of call setups per second. Kamailio can be used to build large platforms for VoIP and realtime communications – presence, WebRTC, Instant messaging and other applications. Moreover, it can be easily used for scaling up SIP-to-PSTN gateways, PBX systems or media servers like Asterisk™, FreeSWITCH™ or SEMS.
Cluecon 2015
Use of external controller applications to fetch the next routes and let Kamailio handle the SIP layer.
Example with Node.js external application and evapi+rtjson modules in Kamailio
Kamailio combined with Asterisk creates and incredibly robust and durable VoIP framework. With scalability and security, adding Kamailio to an asterisk deployment makes sense and saves money.
Introduction to Kamailio (TADSummit 2020 Asia)Fred Posner
Quick introduction to Kamailio, the open source SIP server (https://www.kamailio.org).
Kamailio® (successor of former OpenSER and SER) is an Open Source SIP Server released under GPL, able to handle thousands of call setups per second. Kamailio can be used to build large platforms for VoIP and realtime communications – presence, WebRTC, Instant messaging and other applications. Moreover, it can be easily used for scaling up SIP-to-PSTN gateways, PBX systems or media servers like Asterisk™, FreeSWITCH™ or SEMS.
Cluecon 2015
Use of external controller applications to fetch the next routes and let Kamailio handle the SIP layer.
Example with Node.js external application and evapi+rtjson modules in Kamailio
Kamailio is the leading Open Source SIP Server - a SIP proxy, registrar, location server, presence server, IMS server and much more. Find out more by viewing this quick presentation! (Updated June 2014)
Talk given at ClueCon 2016 that discusses FreeSWITCH and its place in a microservices architecture. Covers a specific deployment case using Docker and Adhearsion, along with certain features that make FreeSWITCH a model use-case for such a technology stack.
Scaling FreeSWITCH to high cps and number of concurrent calls.
You'll learn about how the FreeSWITCH internals work and how to tweak them to improve different call scenarios. You'll learn about OS and environment changes that can help to remove bottlenecks and ensure audio quality.
A quick introduction to Kamailio - the leading Open Source SIP server (based on OpenSER and SER). Kamailio is quite different than Asterisk, FreeSwitch and many other VoIP platforms - why is that and how do you start getting your head around Kamailio?
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Fred Posner
Presentation from AsteriskWorld 2017 at ITEXPO. Discussion of how I started with Asterisk and Kamailio as well as how to build Reliability, Scalability, and Security into your telephony platform.
Presentation done at Kamailio World 2013, Berlin, Germany - several options for scalability of SIP routing with Kamailio, from configuration file tricks to stateless and stateful load balancing with dispatcher module.
Dockerizing Symfony2 application. Why Docker is so cool And what is Docker? And what are Containers? How they works? What are the ecosystem of Docker? And how to dockerize your web application (can be based on Symfony2 framework)?
Kamailio is the leading Open Source SIP Server - a SIP proxy, registrar, location server, presence server, IMS server and much more. Find out more by viewing this quick presentation! (Updated June 2014)
Talk given at ClueCon 2016 that discusses FreeSWITCH and its place in a microservices architecture. Covers a specific deployment case using Docker and Adhearsion, along with certain features that make FreeSWITCH a model use-case for such a technology stack.
Scaling FreeSWITCH to high cps and number of concurrent calls.
You'll learn about how the FreeSWITCH internals work and how to tweak them to improve different call scenarios. You'll learn about OS and environment changes that can help to remove bottlenecks and ensure audio quality.
A quick introduction to Kamailio - the leading Open Source SIP server (based on OpenSER and SER). Kamailio is quite different than Asterisk, FreeSwitch and many other VoIP platforms - why is that and how do you start getting your head around Kamailio?
Using Asterisk and Kamailio for Reliable, Scalable and Secure Communication S...Fred Posner
Presentation from AsteriskWorld 2017 at ITEXPO. Discussion of how I started with Asterisk and Kamailio as well as how to build Reliability, Scalability, and Security into your telephony platform.
Presentation done at Kamailio World 2013, Berlin, Germany - several options for scalability of SIP routing with Kamailio, from configuration file tricks to stateless and stateful load balancing with dispatcher module.
Dockerizing Symfony2 application. Why Docker is so cool And what is Docker? And what are Containers? How they works? What are the ecosystem of Docker? And how to dockerize your web application (can be based on Symfony2 framework)?
Pod Sandbox workflow creation from DockershimVictor Morales
This slides were used to explain the K8s pod sandbox creation process used by Dockershim during the Cloud-Native MX meetup. During this presentation is clarified what Dockershim deprecation means and what are the "pause" containers?
Introductory seminar on Docker and its components (networks and Compose in particular). Focused on going through some basic concepts, mention some more advanced topics, and introduce a practical workshop held on the same evening.
Using Docker to build and test in your laptop and JenkinsMicael Gallego
Docker is changing the way we create and deploy software. This presentation is a hands-on introduction to how to use docker to build and test software, in your laptop and in your Jenkins CI server
Testing fácil con Docker: Gestiona dependencias y unifica entornosMicael Gallego
Docker es una tecnología que permite empaquetar el software de forma que se pueda ejecutar de forma sencilla y rápida, sin instalación y en cualquier sistema operativo. Es como tener cualquier programa instalado en su propia máquina virtual, pero arranca mucho más rápido y consume menos recursos. Docker está cambiando la forma en la que desplegamos software, pero también está afectando al propio proceso de desarrollo y particularmente al testing.
En este taller pondremos en práctica cómo usar Docker para facilitar la implementación de diferentes tipos de tests y su ejecución tanto en el portátil como en el entorno de integración continua. Aunque las técnicas que veremos se podrán aplicar en cualquier lenguaje de programación, los ejemplos estarán basados en Java y en JavaScript.
[Hands-on 필수 준비 사항] 쇼핑몰 예제를 통한 Microservice 개발/배포 실습 - 황주필 부장 / 강인호 부장, 한국오라클Oracle Korea
클라우드 시대의 개발자 네트워킹의 장, Oracle Developer Meetup 그 네번째 모임의 핸즈온 실습을 위한 필수 준비 사항 슬라이드입니다.
: Polyglot 환경의 Microservice로 구성된 쇼핑몰 예제를 이용하여, Microservice의 개발과 운영에 대해 직접 체험할 수 있는 세션입니다. 서비스 개선 요구사항에 맞춰 서비스를 개발/변경해 보고, Kubernetes + istio 환경에 배포하는 실습을 진행합니다.
* 본 세션은 ‘입문자/초급자' 에게 적합한 세션입니다.
Docker and Puppet for Continuous IntegrationGiacomo Vacca
Today developers want to change the code, build and deploy often, even several times per day.
New versions of software may need to be tested on different distributions, and with different configurations.
Achieving this with Virtual Machines it’s possible, but it’s very resource and time consuming. Docker provides an incredibly good solution for this, in particular if combined with Continuous Integration tools like Jenkins and Configuration Management tools like Puppet.
This presentation focuses on the opportunities to configure automatically Docker images, use Docker containers as disposable workers during your tests, and even running your Continuous Integration system inside Docker.
DCEU 18: Building Your Development PipelineDocker, Inc.
Oliver Pomeroy - Solution Engineer, Docker
Laura Frank Tacho - Director of Engineering, CloudBees
Enterprises often want to provide automation and standardisation on top of their container platform, using a pipeline to build and deploy their containerized applications. However this opens up new challenges… Do I have to build a new CI/CD Stack? Can I build my CI/CD pipeline with Kubernetes orchestration? What should my build agents look like? How do I integrate my pipeline into my enterprise container registry? In this session full of examples and “how-to”s, Olly and Laura will guide you through common situations and decisions related to your pipelines. We’ll cover building minimal images, scanning and signing images, and give examples on how to enforce compliance standards and best practices across your teams.
ContainerCon Europe 2016, Berlin: Talk by Mario-Leander Reimer (@LeanderReimer, Principal Software Architect at QAware).
Abstract: Cloud native applications are popular these days – applications that run in the cloud reliably und scale almost arbitrarily. They follow three key principles: they are built and composed as micro services. They are packaged and distributed in containers. The containers are executed dynamically in the cloud. Kubernetes is an open-source cluster manager for the automated deployment, scaling and management of cloud native applications. In this hands-on session we will introduce the core concepts of Kubernetes and then show how to build, package and operate a cloud native showcase application on top of Kubernetes step-by-step. Throughout this session we will be using an off-the-shelf MIDI controller to demonstrate and visualize the concepts and to remote control Kubernetes.
Cloud native applications are popular these days – applications that run in the cloud reliably und scale almost arbitrarily. They follow three key principles: they are built and composed as micro services. They are packaged and distributed in containers. The containers are executed dynamically in the cloud. Kubernetes is an open-source cluster manager for the automated deployment, scaling and management of cloud native applications. In this hands-on session we will introduce the core concepts of Kubernetes and then show how to build, package and operate a cloud native showcase application on top of Kubernetes step-by-step. Throughout this session we will be using an off-the-shelf MIDI controller to demonstrate and visualize the concepts and to remote control Kubernetes. This session has been presented at the ContainerCon Europe 2016 in Berlin. #qaware #cloudnativenerd #LinuxCon #ContainerCon
This is part of the Docker Series Course that I am presenting, the videos of which with practical example will be available soon.
Part 1:- Docker Concepts - Orientation
Part 2:- Docker Concepts - Edition
Part 3:- Docker Concepts - Kitematic
Part 4:- Docker Concepts - Docker Machine
Part 5:- Docker Concepts - Docker Compose
Part 6:- Docker Toolbox - Mac
Part 7:- Docker Toolbox - Windows
Part 8:- Docker Engine Installation - Mac
Part 9:- Docker Engine Installation - Windows
Part 10:- Docker Engine Installation - Linux
Part 11:- Docker Machine Installation - Mac
Part 12:- Docker Machine Installation - Windows
Part 13:- Docker getting Started -Pre-requisites
Part 14:-Docker on the Cloud - AWS
Part 15:- Docker on the Cloud - Azure
Part 16:- Running Containers
Part 17:- Running Multiple Containers
Part 18:- Getting Inside Containers
Part 19:- Containers and Images
Part 20:- Building an Application:Docker Build
Part 21:- Building an Application:Docker File
Part 22:- Docker Swarms
Part 23:- Docker Stacks
Part 24:- Docker Overview
Part 25:- Docker Networks
Part 26:- Docker Networks-Bridge
Part 27:- Docker Networks-Host
Part 28:- Docker Networks-Overlay
Part 29:- Docker Networks-Macvlan
Part 30:- Docker Networks-Advanced Container Networking
Part 31:- Docker Storage:- Volumes
Part 32:- Docker Storage:- Bind Mounts
Part 33:- Docker Storage:- temps mounts
Part 34:- Docker Storage:- Storage within Containers
Similar to Continuous Integration and Kamailio (20)
In the last years we have seen huge changes in IT infrastructures and concepts. VoIP architectures too are evolving towards Software Defined Telecoms. In this talk we'll see how VoIP solutions are being shaped by the Cloud, the open points and share some thoughts about its future.
This is co-authored by Giacomo Vacca and Federico Cabiddu.
Some notes on https://tools.ietf.org/html/draft-rosenbergjennings-dispatch-ripp-03 I took while reading it.
This draft focuses on one of the aspects of VoIP: peering/trunking.
An SFU/MCU integration for heterogeneous environmentsGiacomo Vacca
Janus and FreeSWITCH are two open source real-time communications projects that can be used to build conferencing systems.
Among other things, Janus implements an SFU (Selective Forwarding Unit).
FreeSWITCH includes a conference module, which works as MCU (Multipoint Control Unit).
Often we are asked to build solutions integrating existing applications and services: this presentation shows an approach and example.
Homer - Workshop at Kamailio World 2017Giacomo Vacca
Homer is an Open Source tool for real-time analysis and monitoring of VoIP and RTC platforms. It supports all the major OSS voice platforms, it's modular, easy to install and scales to carrier-grade infrastructures. Homer goes beyond collecting and correlating signalling and logs, and can also capture RTCP reports, QoS reports, and other events. Through an ElasticSearch endpoint, Homer supports BigData analysis of traffic.
This workshop focuses on the deployment of a multi-node Homer framework with various approaches: bash installers, Docker containers, Puppet.
We'll see how to configure Kamailio, FreeSWITCH (including the ESL interface), RTPEngine, Janus gateway (Events API), to collect signalling, RTCP reports, app-specific events and have them correlated and presented in a user-friendly GUI.
For advanced users, we'll present the installation of captagent, the standalone capture agent, hepgen.js to generate test traffic, and a Wireshark dissector to have full visibility of data flows.
WebRTC transforms a Web browser into a fully fledged client for Real Time Communications (audio, video, IM, screensharing). Google and Mozilla have contributed to this Open Source project, creating a variety of business opportunities unthinkable just a few years ago. During this seminar we’ll see the technology aspects and potential, why this attracts Web developers and what the role of VoIP developers has become.
Docker provides a new, powerful way of prototyping, testing and deploying applications on cloud-based infrastructures. In this seminar we delve into the concept of Docker containers without requiring any previous knowledge from the audience.
Automatic Kamailio Deployments With PuppetGiacomo Vacca
Description: Kamailio is a robust, powerful application; virtualization and cloud computing make it extremely easy and quick to setup Kamailio-based solutions. Scaling, geographic distribution and multiple environments (e.g. development, staging/QA, production), though, present some deployment challenges. Puppet provides a solution that dramatically cuts deployment time, reduces occurrences of errors, while at the same time documenting the configuration status. This presentation describes what we did in Truphone Labs to move from a freshly created virtual machine to a running Kamailio instance, automatically and in minutes. Firewall, nagios, syslog, monit, sec, and other related services are also automatically configured.
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Mind IT Systems
Healthcare providers often struggle with the complexities of chronic conditions and remote patient monitoring, as each patient requires personalized care and ongoing monitoring. Off-the-shelf solutions may not meet these diverse needs, leading to inefficiencies and gaps in care. It’s here, custom healthcare software offers a tailored solution, ensuring improved care and effectiveness.
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
Accelerate Enterprise Software Engineering with PlatformlessWSO2
Key takeaways:
Challenges of building platforms and the benefits of platformless.
Key principles of platformless, including API-first, cloud-native middleware, platform engineering, and developer experience.
How Choreo enables the platformless experience.
How key concepts like application architecture, domain-driven design, zero trust, and cell-based architecture are inherently a part of Choreo.
Demo of an end-to-end app built and deployed on Choreo.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
2. About me
• 15 years “in the trenches cubicles”
• Developer of RTC (VoIP, IM, WebRTC) solutions
• Often dealing with DevOps topics
• Founder of RTCSoft in 2015
• Working with Orange Libon Voice Team
@giavac
https://github.com/giavac
gv@rtcsoft.net
2Giacomo Vacca, Kamailio World 2016
3. Material for the Workshop
• https://github.com/giavac/kamailio_ci
• rtpengine_build
• kamailio_testing
• (You can start preparing the base Docker images)
3Giacomo Vacca, Kamailio World 2016
4. Kamailio and the need for CI
• Several developers working on the same code base
• Not everybody uses stock packages (in-house builds)
• Save time (test continuously, so that the uncertainty on QA is low)
• Save money (reduce costs of building/testing machines)
• Release more often, with lower risks
4Giacomo Vacca, Kamailio World 2016
5. CI servers
• Most used CI platforms are OSS: Jenkins, Travis
• Automation of Build, Test, Deployment
• Integration with git and other tools
• Jenkins: typical for private CI infrastructures
• Travis: designed for Open Source projects
5Giacomo Vacca, Kamailio World 2016
8. Build environments
• Personal VM/Dedicated dev machine
• Jenkins with dedicated build machine (slave)
• Jenkins with Docker-based slaves
• Docker plugin
• Mesos cluster management
8Giacomo Vacca, Kamailio World 2016
9. Artefacts
• Packages, tarballs, Docker images, other files to be uploaded
• Private and public repos
• Use existing artefacts to reduce build time and improve consistency
• Build once, use many times
• Careful (and possibly unique) versioning
9Giacomo Vacca, Kamailio World 2016
10. How clean is your build environment?
• Full control of build requirements:
• Not sharing environments across apps
• Not reusing polluted environments (keep releases predictable)
• Clean up the build environment or…
• Create a new environment for each build
• Containers as light-weight “build machines”
• Build once, test until production (“non-event releases”)
10Giacomo Vacca, Kamailio World 2016
11. A huge opportunity: Docker
• Quick introduction to Docker
• Simulate a specific Linux distribution in seconds
• Virtualise, while keeping the host performances
• “A few dedicated build machines” vs “Many disposable build
containers”
• Keep builds reproducible by always creating clean environments
11Giacomo Vacca, Kamailio World 2016
13. Base build images for kamailio
• Pre-requirements
• Keeping the images small
• Many different distributions
• (Beware of container re-use)
13Giacomo Vacca, Kamailio World 2016
14. Dockerfile for base CentOS kamailio
FROM centos:7
RUN rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm &&
yum install -y gcc make bison flex libcurl libcurl-devel libunistring-devel
openssl openssl-devel pcre-devel zlib-devel lua-5.1.4-14.el7
lua-devel-5.1.4-14.el7 mysql-community-devel-5.6.26-2.el7
libxml2-devel perl-ExtUtils-Embed net-snmp-devel memcached
cyrus-sasl-devel &&
yum clean all
14Giacomo Vacca, Kamailio World 2016
15. Dockerfile step by step
• Define base image (FROM)
• Change this to the distribution needed, or to other base images
• Install dependencies packages (RUN - rpm/yum)
• Clean up yum configuration (limit image size)
15Giacomo Vacca, Kamailio World 2016
16. Build base image
$ cd kamailio_async_centos7/
$ docker build -t gvacca/kamailio_async:centos -f Dockerfile.centos7 .
$ docker images |grep kamailio_async
gvacca/kamailio_async centos7 3fa45a9c3c1e 3 days ago 393.8 MB
($ docker build -t USER/IMAGE:TAG [-f DOCKERFILE] .)
16
This base image will be used later as build host for kamailio
Giacomo Vacca, Kamailio World 2016
17. Good practices when using containers
• Avoid git checkout inside containers
• Do not copy sensitive data into images
• Make data available indirectly
(volumes)
• Clean up after yourself: keep images
small
• Limit the number of instructions (RUN)
• Careful about the caching system
• Define the “base build image”, to be reused
• Reduce unnecessary re-builds
• Ensure same pre-requisites are enforced
• Be careful about container re-usage (e.g.
“life time” in a Mesos cluster)
17Giacomo Vacca, Kamailio World 2016
18. Building kamailio
$ docker run -t --name kamailio_async_built_debian_4.4.1 -v ~/git/kamailio-devel/
kamailio:/root/kamailio -v $PWD/kamailio_async_debian/scripts:/root/scripts gvacca/
kamailio_async:debian /root/scripts/build.sh
($ docker run -t --name ${BUILT_KAMAILIO} -v ${KAMAILIO_SRC}:/root/kamailio -v $PWD/
kamailio_async_${TEST_DISTRIBUTION}/scripts:/root/scripts ${TEST_USER}/
kamailio_async:${TEST_DISTRIBUTION} /root/scripts/build.sh)
make distclean
make cfg include_modules=http_async_client
make all
# or create tarball/rpms
# and store artefacts
Build instruction:
/root/scripts/build.sh:
18Giacomo Vacca, Kamailio World 2016
19. Build job
• Uses the “base build image” as slave
• Maximise reproducibility of builds: re-use slaves carefully
19Giacomo Vacca, Kamailio World 2016
20. Base build images for rtpengine
• Stronger restrictions on the host kernel
• But doesn’t need to have the same as the target host
• Ensure the right kernel headers are in place
• Build and prepare artefacts as for other cases
20Giacomo Vacca, Kamailio World 2016
21. Dockerfile for rtpengine base image
FROM centos:7
RUN yum install -y make glib2-devel zlib-devel kmod hiredis-devel
openssl-devel xmlrpc-c-devel iptables-devel git
&& yum clean all
21Giacomo Vacca, Kamailio World 2016
22. Building rtpengine
$ cd $SRC
$ git clone https://github.com/sipwise/rtpengine
$ cd $PROJECT/rtpengine_build/
$ docker build -t gvacca/rtpengine:centos -f Dockerfile .
$ docker run -t --name rtpengine_built -v $PWD/:/root -v $SRC/rtpengine:/root/rtpengine
gvacca/rtpengine:centos /root/build.sh
$ docker ps -a|grep rtpengine
78edf9e7412c gvacca/rtpengine:centos "/root/build.sh" 2 minutes ago
Exited (0) 27 seconds ago rtpengine_built
$ docker logs -f rtpengine_built
22Giacomo Vacca, Kamailio World 2016
24. Deploying from a CI platform
• Deploy on Production or other environments (dev, staging, etc)
• Deploy on test beds for the specific purpose of testing
• Validate release candidates with automatic tests after deployments
24Giacomo Vacca, Kamailio World 2016
25. Jenkins + Fabric + Puppet
• Puppet master is the ideal/common scenario
• Puppet standalone for “push” deployments
• Fabric to transfer Puppet manifests and execute remote deployment
• Good idea: clean up manifests after the application (as Ansible)
• Docker to host Fabric, its config and Puppet manifests for fast use and
encapsulation
• See brand new Puppet module for Homer: https://github.com/sipcapture/
homer-puppet
25Giacomo Vacca, Kamailio World 2016
26. From source to deployment
26Giacomo Vacca, Kamailio World 2016
28. A CI inftrastucture comes handy for…
• Unit testing
• Component testing
• Integration testing
• Load testing
We’ll see an example later of component/integration testing
28Giacomo Vacca, Kamailio World 2016
29. Putting it all together
29Giacomo Vacca, Kamailio World 2016
30. Case study: testing http_async_client
Asynchronous HTTP client for Kamailio, http://www.kamailio.org/docs/
modules/devel/modules/http_async_client.html
• Dockerise all the components (can be run anywhere)
• Test on multiple distributions
• Simulate web servers
• Trigger tests with sipp
30Giacomo Vacca, Kamailio World 2016
32. Docker Compose to abstract the test architecture
• Docker Compose helps you defining a multi-container architecture
• Containers are “services”
• YAML to define base images, volumes, ports, commands, etc
• Internal naming system: no need to use IP addresses (like e.g.
‘docker network’), just use the service name
• docker-compose.yml supports natively environment variables
32Giacomo Vacca, Kamailio World 2016
39. Conclusions/future
• kamailio, as other apps, will run inside containers
• “Service Discovery” tools will be key
• Emulation of entire infrastructures on top of container-based platforms
• Lightweight distributions as simple containers infrastructure
• Continuous Integration/Delivery will be the norm
39Giacomo Vacca, Kamailio World 2016
41. References and useful sources
• https://www.kamailio.org/w/2015/11/building-kamailio-in-docker/
• “The Docker book”, J. Turnbull, http://www.amazon.co.uk/Docker-Book-Containerization-
new-virtualization-ebook/dp/B00LRROTI4
• “Using Docker”, A. Mouat,https://www.amazon.co.uk/Using-Docker-Adrian-Mouat/dp/
1491915765
• “Continuous Delivery”, J. Humble, http://www.amazon.com/Continuous-Delivery-
Deployment-Automation-Addison-Wesley/dp/0321601912
• “Building Microservices”, S. Newman, http://shop.oreilly.com/product/0636920033158.do
• "Docker Networking and Service Discovery", https://www.nginx.com/resources/library/
docker-networking/
41Giacomo Vacca, Kamailio World 2016
42. More presentations on this topic
• “Docker and Puppet for CI”, http://www.slideshare.net/GiacomoVacca/
docker-and-puppet-for-continuous-integration
• “Automatic Kamailio Deployments with Puppet”, Kamailio World 2014,
http://www.slideshare.net/GiacomoVacca/automatic-
kamailiodeploymentswithpuppet-33085423
42Giacomo Vacca, Kamailio World 2016
45. Docker inside docker
• Manage an environment of containers inside a container
• Powerful
• With disadvantages
• Consider the “sibling” approach, rather than the nested one
• Build networks of containers and command some of them via the
socket API
45Giacomo Vacca, Kamailio World 2016