---
layout: default
description: High performance ingress controller for Kubernetes
id: home
backgrounds:
  case_study: dark-blue
  team: med-blue
hero:
  banner: /img/heroes/contour.svg
  headline:  High performance ingress controller for Kubernetes
  content: Contour is an open source Kubernetes ingress controller providing the control plane for the Envoy edge and service proxy.​ Contour supports dynamic configuration updates and multi-team ingress delegation out of the box while maintaining a lightweight profile.
  cta_link1:
    text: Get Started with Contour
    url: /docs/
  cta_link2:
    text: Download Latest Release
    url: https://github.com/heptio/contour/releases
  promo1:
    icon: /img/kubernetes-logo.png
    #url: http://www.example.com?box1
    title: Built for Kubernetes
    content: Quickly deploy cloud-native applications using the flexible and innovative IngressRoute API.
  promo2:
    icon: /img/dynamic-reconfig-icon.svg
    #url: http://www.example.com?box2
    title: Dynamic Reconfiguration
    content: Update Envoy configurations as the ingress and underlying elements change, without restarting the load balancer.
  promo3:
    icon: /img/secure-ingress-icon.svg
    #url: http://www.example.com?box3
    title: Secure Ingress Delegation
    content: Safely delegate ingress configuration to protect service access on multi-team Kubernetes clusters.
secondary_ctas:
  cta1:
    title: Introduction to Contour
    url: /Routing-Traffic-to-Applications-in-Kubernetes-with-Contour/
    content: Read an overview of the Contour project, including key use cases and how to get involved.
  cta2:
    title: Learn how Contour is used for advanced traffic routing
    url: https://blogs.vmware.com/cloudnative/2019/04/12/blue-green-deployments-contours-ingressroute/
    content: Read about using Contour for blue-green application deployments.
#reference:
#  title: Getting Contour
#  content: The latest stable binary version is 2.0, which builds on the expanded package library and guest OS validation on VMware platforms from the original 1.0 release. Contour comes in a variety of pre-built, cloud-ready images
#  links:
#    ISO: http://www.example.com
#    OVA: http://www.example.com
#    Amazon Machine Image: http://www.example.com
#    Google Compute Engine Image: http://www.example.com
#    Azure VHD: http://www.example.com
---
<div class="home-hero bg-color-{{ site.hero.background-color }}" style="background-image: url('{{ page.hero.banner }}')">
  <div class="section">
    <div class="section-content">
      <div class="hero-content">
        <h1 class="mb-3">{{ page.hero.headline }}</h1>
        <p>{{ page.hero.content }}</p>
      </div>
      <div class="hero-cta mt-4">
        <a href="{{ page.hero.cta_link1.url }}" class="btn btn-primary mb-3 mb-sm-0">{{ page.hero.cta_link1.text }}</a>
        <a href="{{ page.hero.cta_link2.url }}" class="btn btn-outline-light">{{ page.hero.cta_link2.text }}</a>
      </div>
    </div>
  </div>
</div> <!-- /home-hero -->
<div class="section section-card section-card-offset-top promo-cards">
  <div class="section-content">
    <div class="row">
      <div class="col-md">
        <div class="card card-light mb-3 mb-md-0 shadow-sm">
          <div class="card-body match-height">
            <figure>
              <img src="{{ page.hero.promo1.icon }}" alt="{{ page.hero.promo1.title }}" />
            </figure>
            {% if page.hero.promo1.url | size > 0 %}
            <h5><a href="{{ page.hero.promo1.url }}" class="dark">{{ page.hero.promo1.title }}</a></h5>
            {% else %}
            <h5>{{ page.hero.promo1.title }}</h5>
            {% endif %}
            <p>{{ page.hero.promo1.content }}</p>
          </div>
        </div>
      </div>
      <div class="col-md">
        <div class="card card-light mb-3 mb-md-0 shadow-sm">
          <div class="card-body match-height">
            <figure>
              <img src="{{ page.hero.promo2.icon }}" alt="{{ page.hero.promo2.title }}" />
            </figure>
            {% if page.hero.promo2.url | size > 0 %}
            <h5><a href="{{ page.hero.promo2.url }}" class="dark">{{ page.hero.promo2.title }}</a></h5>
            {% else %}
            <h5>{{ page.hero.promo2.title }}</h5>
            {% endif %}
            <p>{{ page.hero.promo2.content }}</p>
          </div>
        </div>
      </div>
      <div class="col-md">
        <div class="card card-light mb-3 mb-md-0 shadow-sm">
          <div class="card-body match-height">
            <figure>
              <img src="{{ page.hero.promo3.icon }}" alt="{{ page.hero.promo3.title }}" />
            </figure>
            {% if page.hero.promo3.url  | size > 0 %}
            <h5><a href="{{ page.hero.promo3.url }}" class="dark">{{ page.hero.promo3.title }}</a></h5>
            {% else %}
            <h5>{{ page.hero.promo3.title }}</h5>
            {% endif %}
            <p>{{ page.hero.promo3.content }}</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>
<div class="section section-grey">
  <div class="section-content">
    <div class="row bg-grey">
      <div class="col-sm-5 mb-3 mb-sm-0">
        <h6 class="mb-1">
          <a href="{{ page.secondary_ctas.cta1.url }}">{{ page.secondary_ctas.cta1.title }}</a>
        </h6>
        <p class="mb-0">{{ page.secondary_ctas.cta1.content }}</p>
      </div>
      <div class="col-sm-5 offset-sm-2">
        <h6 class="mb-1">
          <a href="{{ page.secondary_ctas.cta2.url }}">{{ page.secondary_ctas.cta2.title }}</a>
        </h6>
        <p class="mb-0">{{ page.secondary_ctas.cta2.content }}</p>
      </div>
    </div>
  </div>
</div>

<!--
<div class="section pb-0">
    <div class="section-content">
      <div class="row">
        <div class="col">
          <h2 class="text-center">{{ page.reference.title }}</h2>
          <p>{{ page.reference.content }}</p>

          <ul>
            {% for link in page.reference.links %}
            <li><a href="{{ link[1] }}">{{ link[0] }}</a></li>
            {% endfor %}
          </ul>
        </div>
      </div>
    </div>
  </div>
-->

  <div class="section">
    <div class="section-content">
      <div class="row">
        <div class="col">
          <h2>Features</h2>
        </div>
      </div>
      {% assign limit = 3 %}
      {% include case-studies-alternating.html %}
    </div>
  </div>

<div class="section pt-3">
  <div class="section-content">
    <div class="row">
      <div class="col">
        <h2>Blog Highlights</h2>
      </div>
    </div>
    {% assign limit = 3 %}
    {% include blog-posts.html %}
    <div class="row pt-5">
      <div class="col text-center">
        <a href="/blog" class="btn btn-secondary btn-sm">See All Posts</a>
      </div>
    </div>
  </div>
</div>

<div class="section section-background-{{ page.backgrounds.team }}">
  <div class="section-content">
    {% include contributors.html %}
  </div>
</div>
