Container Ingress
Traffic Management and Kubernetes
Ingress for Containerized Applications

As enterprises modernize and build containerized Kubernetes applications, they are confronted with a lab-to-production gap that requires a very different set of requirements on app availability, observability, on-demand elasticity, multi-cloud deployments and more. Networking and operations teams find that they need to piece together a mishmash of legacy or open-source container management tools that are disjointed and complicate their ability to deploy and manage modern applications at scale.

Diagram showing current disparate tools and lab projects then a gap before desired consolidated services made up of production clusters and container ingress services

 

VMware NSX Advanced Load Balancer delivers multi-cloud application services such as load balancing for containerized applications with microservices architecture through dynamic service discovery, application traffic management, and web application security. Container  Ingress provides scalable and enterprise-class Kubernetes ingress traffic management, including local and global server load balancing (GSLB), web application firewall (WAF) and performance monitoring, across multi-cluster, multi-region, and multi-cloud environments. Avi integrates seamlessly with Kubernetes for container and microservices orchestration and security.

Universality

  • Multi-Infra: Traditional and cloud-native apps in VMs/bare metal/containers
  • Multi-Cluster: Inter/intra container cluster management and secure gateways
  • Multi-Region: GSLB for multiple regions and geo-ware load balancing
  • Multi-Cloud: Across on-premises data centers and multi-region public clouds

Traffic Routing

  • Advanced ingress gateway with integrated IPAM/DNS
  • L4-7 load balancing with SSL/TLS offload
  • Automated service discovery
  • North-south traffic management with content switching, redirection, caching, and compression
  • CI/CD and application upgrades using Blue-Green or canary

Security

  • Zero trust security model and encryption
  • Distributed WAF for application security
  • Single sign-on (SSO) integration for enterprise-grade authentication and authorization
  • Positive security model and application learning for automated allowlist/denylist policies

Observability

  • Real-time application and container performance monitoring with tracing
  • Big data and machine learning driven connection log analytics
  • Machine learning-based insights and app health analytics

How Enterprises Deploy Container Ingress Today

Global & Local Traffic Management

NSX ALB pod is running in the Kubernetes/OpenShift GSLB leader cluster and follower clusters, enabling multi-cluster application deployment, mapping the same application deployed on multiple clusters to a single GSLB service, extending application ingresses across multi region and multi availability zone deployments. Enterprise-class application services for containerized applications, orchestrated by platforms like Kubernetes, include:

  • Load balancing, health monitoring, TLS/SSL offload, certificate management, session persistence, content/URL switching
  • Redirecting requests to the appropriate site/region based on the availability, locality of the user to the site, site persistence and load
  • Content/URL switching, redirection, error page, caching, compression and on-demand autoscaling

Application & Container Monitoring and Analytics

Analytics is the foundation for intent-based systems to collect, aggregate, accumulate, store, and rollup metrics and logs, especially for containerized applications with a microservices framework. NSX ALB provides the following container ingress traffic management capabilities without having to instrument each application:

  • Application Map:

    Real-time dynamic map of communications between microservices available as a dependency map. Operators can extract critical metrics such as latency, bandwidth, request rate, etc. across microservices deployment architectures.

  • Analytics Dashboard:

    An end-to-end latency view of all transactions in addition to real-time and historic views of critical metrics such as requests/transaction/connection rate/throughput.

  • Log File Analytics:

    Logs of every significant transaction including errors and excessive latencies with built-in analytics by pool member, response time, device type and more.

  • Client Analytics:

    Aggregated page load times, dimensional analytics such as device type, country, and detailed resource timing information for every page in the application via JavaScript.

  • Security Analytics:

    A breakdown of TLS/SSL versions, transaction rate, health score based on SSL security profiles and certificates, DDoS analytics including type of attacks, and detection on bots attacks.

Dynamic Service Discovery

Service discovery bridges the gap between a service’s name and access information (IP address) by providing a dynamic mapping. NSX ALB provides an authoritative DNS server for users’ devices and other services to map host/domain names to virtual IP addresses (VIPs) to automate service discovery, including:

  • Built-in IPAM for virtual IP address allocation
  • A variety of DNS configuration options and the ability to add static A and CNAME records to the DNS server
  • Continuous Integration and Delivery (CI/CD) and application upgrades using a Blue-Green or canary deployment models

Deliver Elastic Kubernetes Ingress Controller and Services
A single platform for consolidated traffic management, security, and observability

Services such as traffic management, service discovery, container monitoring, analytics and security remain a critical component for enterprises to deploy containers in production.

NSX ALB provides proven Kubernetes ingress services to deploy and secure container-based applications workloads in production Kubernetes clusters.

Deliver Elastic Kubernetes Ingress Controller and Services

Interested in learning more about NSX ALB?

Schedule a Demo

Advanced Kubernetes Ingress Controller

Learn More
body, .section--bg-lgray { background-color: #fbfbfb; } /*========================== * Hero Sizing Adjustments ============================*/ .hero-v2__title { font-size: 3.25rem; line-height: 1.25; } .hero-v2__subtitle { font-size: 1.75rem; } .hero-v2--with-subnav .hero-v2__title, .hero-v2__title { padding-bottom: 2rem; } /*========================== * Section Spacing Adjustments ============================*/ .section { padding-top: 6rem; padding-bottom: 6rem; } .section--bg-none + .section--bg-none { padding-top: 0; } .section--quote + .section--collapse { padding-top: 0; margin-top: -2rem; } .section--collapse { padding-top: 0; } .basic-content--leadin.section { padding-bottom: 2rem; } .basic-content img:not(:last-child) { margin-top: 3rem; margin-bottom: 3rem; } .basic-content__title, .section__title { margin-bottom: 3rem; } /*========================== * Body Copy Resizing ============================*/ .basic-content img { width: 50em; } .basic-content--leadin p:first-of-type { font-size: 1.5rem; line-height: 1.75; font-weight: 400; } .main-content p, .main-content li { font-size: 1.125rem; line-height: 1.75; font-weight: 100; } .main-content p a, .main-content li a { font-weight: 400; text-decoration: underline; } .basic-content--leadin p a { font-weight: 600; } .main-content a.button { text-decoration: none; font-weight: 600; } .main-content ul li::before { content: ''; background-color: #FF4B00; font-size: inherit; padding-right: 0.25em; position: absolute; top: 17px; left: -1px; display: inline-block; height: 7px; width: 7px; border-radius: 100%; } .main-content ul li { padding-left: 1.25rem; } .quote { line-height: 1.75; } .quote__body::before { content: '“'; font-family: arial, sans-serif; top: -0.4em; left: -0.6em; font-size: 72px; font-weight: 600; } /*========================== * Tab Styles * 1) '.xan' is specific identifier for a new module type. ============================*/ .xan .tab-group { background-color: #fff; border: 30px solid #cfe8ee; display: flex; max-width: 980px; margin: 0 auto; padding: 2rem 3rem; } .xan .tab-group__tabs { border: 0; border-right: 1px solid #f6f6f6; width: 30%; max-width: 30%; } .xan .tab-group__tab { border-bottom: 0px; border-radius: 40px 0 0 40px; } .xan .js-tab-x { background: #ffffff; border-right: 10px solid #fff; color: #333333; font-size: 18px; font-weight: 100; text-transform: none; width: 100%; text-align: left; box-shadow: none; filter: none; padding: 10px 18px 10px 40px; margin: 6px 0; transition: all 300ms ease-out; font-family: 'Open Sans', 'Brandon Grotesque' ,sans-serif; } .xan .tab-group__tabs .js-tab-x:hover { font-weight: 600; transition: all 0.5s ease-out; } .xan .tab-group__tabs .js-tab-x h3 { border: none !important; box-shadow: none; } .xan .tab-group__tab--is-active { border: 0; border-right: 10px solid #FF4B00; background-color: #f7f7f7; border-radius: 40px 0 0 40px ; color: #FF4B00; font-weight: 600; transition: all 300ms ease-out; } .xan .tab-group__tab:focus { outline: none; transition: all 300ms ease-out; } .xan .tab-group__tabs .js-tab-x::before, .xan .tab-group__tabs .js-tab-x::after { content: ""; display: none; } .xan .tab-group__panel { width: 70%; position: relative; height: auto; font-size: 1.125rem; font-weight: 100; transition: all 300ms ease-out; } .xan .tab-group__panel ul li { padding-left: 18px !important; } /* ===================== * END OF TABS ========================*/ /* ===================== * Offer Section ========================*/ .section.offer-bar { background: #fff; color: #233448; clear: both; } .offer-bar__grid { align-items: center; } .section.offer-bar h2 .offer-bar__extended-title { font-size: 30px; color: #233448; } .section.offer-bar h2 { font-size: 40px; font-weight: 100; } .section.offer-bar p { font-weight: 100; font-size: 18px; } .offer-bar__title { margin-top: 0; } .offer-bar__cover { padding-top: 0; } .offer-bar__footer a.secondary-button--white { color: #233448; font-size: 20px; } .offer-bar__footer a.secondary-button--white:hover { color: #ff4b00; letter-spacing: 3px; } .cta-bar-v2 .section__title { margin-bottom: 2rem; } .cta-bar-v2__title + .cta-bar-v2__title--sub { font-weight: 100 !important; } .cta-bar-v2 { display: block; text-align: center; position: relative; padding-top: 6rem; padding-bottom: 6rem; background-color: #8bc7d5 !important; } .cta-bar-v2--blue { background-color: #8bc7d5 !important; } .section--bg-hex { background-color: #8bc7d5; margin-top:70px; } /*=================== Multi-Card Group Cards =========================*/ .card-group { flex-wrap: wrap; } .card { border-radius: 16px; box-shadow: 0 5px 12px rgba(0, 0, 0, 0.16); } .card.card-group__card { margin: 0 0.5rem; margin-top: 50px; position: relative; flex: 1 0 calc(33% - 1rem); } .card__hex { position: absolute; top: -29px; width: 55px; transform: translateX(-50%); left: 50%; } .card .card__icon { width: 110px; height: auto; padding: 15px 22px 22px 22px; position: relative; margin-top: -73px; background: url('/wp-content/uploads/2019/02/avi-hex-gray-outline@3x.png') center center no-repeat; background-size: 86px ; } .card__title { display: block; color: #333; text-align: center; padding-top: 0px; margin-top: 0px; margin-bottom: 12px; font-weight: 600; } .card__title--big { font-size: 1.25rem; font-weight: 600; } .card__desc h3 { text-align: center; font-size: 14px; font-weight: 100; color: #F04E23; text-transform: uppercase; } .card__desc p { font-size: 1rem; line-height: 1.75; } .card__desc li{ font-size: 16px; line-height: 24px; margin-bottom: 1rem; padding-left: 20px; } .card ul li::before { top: 13px; } section.section.section--multi-card.multi-card-section.main-content.section--collapse { padding-bottom: 0; } @media only screen and (max-width: 768px) { /*========================== * Section Spacing Adjustments ============================*/ .section { padding-top: 3rem; padding-bottom: 3rem; } .section--bg-none + .section--bg-none { padding-top: 0; } .basic-content--leadin.section { padding-bottom: 1rem; } .basic-content img:not(:last-child) { margin-top: 1rem; margin-bottom: 1rem; } .basic-content__title, .section__title { margin-bottom: 1.5rem; } /*========================== * Body Copy Resizing ============================*/ .basic-content--leadin p:first-of-type { font-size: 1.125rem; } .main-content p, .main-content li { font-size: 1rem; line-height: 1.75; } .hero-v2 { height: 320px; } .hero-v2__title { font-size: 1.75rem; padding-top: 0; } .hero-v2__subtitle { font-size: 1.125rem; } .section--tabs { display: block; height: auto; } .xan .tab-group { margin: 0 auto; display: block; border-left: none; border-right: none; padding: 10px 5px; flex-direction: column; background-color: #fff; } .xan .tab-group__tabs { width: 100%; max-width: 100%; border: 0; border-bottom: 1px solid #f6f6f6; } .xan .js-tab-x { border: 0; border-bottom: 10px solid #fff; border-radius: 0; padding: 10px; text-align: center; } .xan .tab-group__tabs .js-tab { background: #ffffff; color: #333333; font-size: 18px; font-weight: 100; text-transform: none; width: 100%; text-align: left; box-shadow: none; filter: none; padding: 10px 18px 10px 40px; margin: 6px 0; border-bottom: none; display: block; } .xan .tab-group__tabs .js-tab button { border: none !important; box-shadow: none; display: block; } .xan .tab-group__tab--is-active { border: 0; color: #FF4B00; font-weight: 600; border-bottom: 10px solid #FF4B00; border-radius: 0px; } .xan .tab-group__tab:focus { outline: none; display: block; } .xan .tab-group__tabs .js-tab::before, .xan .tab-group__tabs .js-tab::after { content: ""; display: none; } .xan .tab-group__panel { padding: 0; margin: 0; width: 100%; height: auto; font-size: 16px; font-weight: 100; } .xan .tab-group__panel ul li::before { font-size: 1.7em; top: 16px; } .xan .tab-group__panel ul li { padding-left: 18px !important; } .xan .tab-group__panel--is-active { display: block; } .section--tabs { border-bottom: none; } .section.offer-bar { width: 100%; } .offer-bar__image { padding-top: 60px; } .offer-bar .two-col { -webkit-column-count: 1; column-count: 1; } } /*================ Mobile Hide/Show ==================*/ .show-desktop, .show-tablet { display: none !important; } @media (min-width: 550px) { .show-tablet { display: block !important; } .show-mobile { display: none !important; } } @media (min-width: 768px) { .hide-desktop.hide-desktop { display: none; } } @media (min-width: 800px) { .show-tablet { display: none !important; } .show-desktop { display: block !important; } } @media (max-width: 768px) { .hide-mobile.hide-mobile { display: none; } } ////////////////////////////////////////////////////////////////////////////// // // Tabs // ////////////////////////////////////////////////////////////////////////////// (function ($) { // Create tabs from panels $('.js-tab-panel-x').each(function () { var $this = $(this); var title = $this.attr('data-title'); var bg = $this.attr('data-bg'); var sectionTitle = $this.attr('data-section-title'); var target = $this.attr('id'); var tabGroup = $this.parent().find('.js-tab-group-x'); var tabButton = '

' + title + '

'; tabGroup.append(tabButton); }); // Click handler $('.js-tab-x').on('click', function () { var $this = $(this); var tabGroup = $this.parent(); var target = $this.attr('data-target'); var bg = $this.attr('data-bg'); var sectionTitle = $this.attr('data-section-title'); var tabActiveClass = 'tab-group__tab--is-active'; var panelActiveClass = 'tab-group__panel--is-active'; // Apply background image and Update the title tabGroup .parent() .parent() .css({ 'background-image': 'url(' + bg + ')' }) .find('.js-tab-section-title') .html(sectionTitle); // Deactivate all sibling tabs tabGroup.find('.js-tab-x').removeClass(tabActiveClass); // Reactivate this tab $this.addClass(tabActiveClass); // Deactivate all sibling panels tabGroup.siblings('.js-tab-panel-x').removeClass(panelActiveClass); // Reactivate this panel $('#' + target).addClass(panelActiveClass); }); $('.tab-group .js-tab-x:first-child').trigger('click'); })(jQuery);; .card.card-group__card { flex: 1 0 calc(50% - 1rem); }