The telecom industry has moved toward a hybrid of cloud-native and virtualization technologies without a single, unified deployment approach for a variety of DevOps needs. While containerization and virtualization have both been used to solve a wide set of technical challenges in our industry, it is estimated that at least 30% of workloads worldwide still leverage virtualization technologies such as OpenStack [1]. For instance, while containerization might be advantageous for certain Layer 7 Workloads, it may be non-performant for Session Initiation Protocol (SIP) and Real-time Transport Protocol (RTP) processing needs. This trend will continue due to long-term investments to sustain both current operations and embrace more modernized ways of operating with new types of applications and infrastructure. This difference in needs across telecom organizations has led to the use of a diverse and complicated set of continuous integration and continuous delivery/deployment (CI/CD) tools and infrastructure arrangements. Unfortunately, the tendency of increasing technical-tool diversity is reflected by an increased division of organizations by technical expertise, which in turn can often-times prevent widespread adoption of modern CI/CD technologies among these organizations [2].
In this paper, we propose an approach and a framework to expand GitOps-based deployment orchestration automation into the virtualization stack, by leveraging customized Kubernetes Operators, ArgoCD, and Argo Workflows, Open Container Initiative (OCI) Containers, and Packer [3-7]. We demonstrate the feasibility and practicality of this approach on OpenStack with the help of an open source, full-stack voice over internet protocol (VoIP) implementation and Traefik HTTP Load Balancer [8]. The combination of these technologies enables several advanced deployment capabilities for OpenStack such as canary deployments and scaled rollouts. This solution has the potential to converge our industry toward a unified and modern CI/CD approach for DevOps teams and smoothen the transition towards cloud-native platforms, while helping to prevent the disorganized “tool-sprawl” [9] required to sustain both legacy and modern tech-stacks.