Rethinking Application Container Networking in a Multi-cluster world
Abstract
Multi-cloud deployments are set to change the very fabric of cloud computing by allowing applications to be deployed over multiple clusters and cloud providers, for enhanced flexibility, geo-redundancy, fault tolerance, and mix-and-match of services. However, unlocking the full potential of multi-cloud world requires seamless cross-cloud and cross-cluster networking. Although the existing networking solutions such as CNIs and service meshes are being extended to address this challenge, using a single networking solution across clusters will result in the loss of key advantages of moving to multi-cluster deployments such as independence of cluster networking solutions. On the contrary, the presence of separate networking solutions in each cluster will pose a formidable challenge for enterprise users in terms of configuration, management and interoperability. Unlike the standardization of application specification that has happened with Kubernetes, networking is an afterthought that has evolved in different ways in different solutions. There is no single application networking specification standard. While this would have been good to have for single cluster scenarios, the emerging multi-cluster world makes this an absolute necessity. This paper proposes an Application Networking Interface (ANI), which presents a single application wide unified interface to manage the entire network and behind the scenes does the heavy lifting of translating and enabling the use of independent networking solutions in individual clusters, making sure they all adhere to the consistent application wide policies and providing seamless interoperability between these networking solutions.