# Partners

LLMS index: [llms.txt](/llms.txt)

---

<section id="users">
    <h5>Kubernetes works with partners to create a strong, vibrant codebase that supports a spectrum of complementary platforms.</h5>
    <div class="col-container">
      <div class="col-nav">
          <h5>
            <b>Kubernetes Certified Service Providers</b>
          </h5>
          <br>Vetted service providers with deep experience helping enterprises successfully adopt Kubernetes.
          <br><br><br>
          <button class="button landscape-trigger landscape-default" data-landscape-types="special--kubernetes-certified-service-provider" id="kcsp">See KCSP Partners</button>
          <br><br>Interested in becoming a
          <a href="https://www.cncf.io/certification/kcsp/">KCSP</a>?
      </div>
      <div class="col-nav">
          <h5>
            <b>Certified Kubernetes Distributions, Hosted Platforms, and Installers</b>
          </h5>Software conformance ensures that every vendor’s version of Kubernetes supports the required APIs.
          <br><br><br>
          <button class="button landscape-trigger" data-landscape-types="platform" id="conformance">See Conformance Partners</button>
          <br><br>Interested in becoming
          <a href="https://www.cncf.io/certification/software-conformance/">Kubernetes Certified</a>?
      </div>
      <div class="col-nav">
          <h5>
            <b>Kubernetes Training Partners</b>
          </h5>
          <br>Vetted training providers who have deep experience in cloud native technology training.
          <br><br><br>
          <button class="button landscape-trigger" data-landscape-types="special--kubernetes-and-cloud-native-training-partner" id="kcntp">See KCNTP Partners</button>
          <br><br>Interested in becoming a
          <a href="https://www.cncf.io/certification/training/">KCNTP</a>?
      </div>
    </div>
    
    
    
    
    
    <script>
    function updateLandscapeSource(button,shouldUpdateFragment) {
      console.log({button: button,shouldUpdateFragment: shouldUpdateFragment});
      try {
        if(shouldUpdateFragment) {
          window.location.hash = "#iframe-landscape-"+button.id;
          
        } else {
          var landscapeElements = document.querySelectorAll("#landscape");
          let categories=button.dataset.landscapeTypes;
          let link = `https://landscape.cncf.io/embed/embed.html?key=${encodeURIComponent(categories)}&headers=false&style=shadowed&size=md&bg-color=%23d95e00&fg-color=%23ffffff&iframe-resizer=true`
          landscapeElements[0].src = link;
        }
      }
      catch(err) {
        console.log({message: "error handling Landscape switch", error: err})
      }
    }
    
    
    document.addEventListener("DOMContentLoaded", function () {
      let hashChangeHandler = () => {
        if (window.location.hash) {
          let selectedTriggerElements = document.querySelectorAll(".landscape-trigger"+window.location.hash);
          if (selectedTriggerElements.length == 1) {
            landscapeSource = selectedTriggerElements[0];
            console.log("Updating Landscape source based on fragment:", window
              .location
              .hash
              .substring(1));
            updateLandscapeSource(landscapeSource,false);
          }
        }
      }
      var landscapeTriggerElements = document.querySelectorAll(".landscape-trigger");
      landscapeTriggerElements.forEach(element => {
        element.onclick = function() {
            updateLandscapeSource(element,true);
        };
      });
      var landscapeDefaultElements = document.querySelectorAll(".landscape-trigger.landscape-default");
      if (landscapeDefaultElements.length == 1) {
        let defaultLandscapeSource = landscapeDefaultElements[0];
        updateLandscapeSource(defaultLandscapeSource,false);
      }
      window.addEventListener("hashchange", hashChangeHandler, false);
       
      hashChangeHandler();
    });
    </script><div id="frameHolder">
      
      <style>
         
        #iframe-landscape-kcsp, #iframe-landscape-conformance, #iframe-landscape-kcntp {
          scroll-margin-top: 35px;
        }
      </style>
      <iframe id="iframe-landscape-kcsp" src="https://landscape.cncf.io/embed/embed.html?key=special--kubernetes-certified-service-provider&headers=true&style=shadowed&size=md&bg-color=%233371e3&fg-color=%23ffffff&iframe-resizer=true" style="width: 1px; min-width: 100%; min-height: 100px; border: 0;"></iframe>
      <iframe id="iframe-landscape-conformance" src="https://landscape.cncf.io/embed/embed.html?key=platform&headers=true&style=shadowed&size=md&bg-color=%233371e3&fg-color=%23ffffff&iframe-resizer=true" style="width: 1px; min-width: 100%; min-height: 100px; border: 0;"></iframe>
      <iframe id="iframe-landscape-kcntp" src="https://landscape.cncf.io/embed/embed.html?key=special--kubernetes-and-cloud-native-training-partner&headers=true&style=shadowed&size=md&bg-color=%233371e3&fg-color=%23ffffff&iframe-resizer=true" style="width: 1px; min-width: 100%; min-height: 100px; border: 0;"></iframe>
      <script>
        iFrameResize({ }, '#iframe-landscape-kcsp');
        iFrameResize({ }, '#iframe-landscape-conformance');
        iFrameResize({ }, '#iframe-landscape-kcntp');
      </script>
      
    </div>
</section>
