CINXE.COM

Charmhub | Deploy Kubeflow using Charmhub - The Open Operator Collection

<!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Charmhub | Deploy Kubeflow using Charmhub - The Open Operator Collection</title> <meta name="description" content="Deploy the latest version of Kubeflow as a Kubernetes Operator on any cloud. " /> <meta name="msvalidate.01" content="F922865A678BADA5E7209E29B2656AA6" /> <meta property="og:title" content="Deploy Kubeflow using Charmhub - The Open Operator Collection"/> <meta property="og:site_name" content="Charmhub"/> <meta property="og:type" content="website"/> <meta property="og:description" content="Deploy the latest version of Kubeflow as a Kubernetes Operator on any cloud. "/> <meta property="og:image" content="https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg" /> <meta property="og:image:width" content="200" /> <meta property="og:image:height" content="200" /> <meta property="og:image:alt" content="Kubeflow charm logo" /> <meta property="og:url" content="https://charmhub.io" /> <meta property="twitter:card" content="summary" /> <meta property="twitter:site" content="@juju_devops" /> <meta property="twitter:creator" content="@juju_devops" /> <meta property="twitter:image" content="https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg" /> <meta property="twitter:url" content="https://charmhum.io" /> <meta name="copydoc" content="https://drive.google.com/drive/u/1/folders/1gqxew2MS9-OkQF5bTStPgmyLS35JpztF"> <link rel="canonical" href="https://charmhub.io/kubeflow" /> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-NNT2XX6');</script> <!-- End Google Tag Manager --> <script src="https://assets.ubuntu.com/v1/703e23c9-lazysizes+noscript+native-loading.5.1.2.min.js" defer></script> <link rel="preconnect" href="https://res.cloudinary.com"> <link rel="preconnect" href="https://assets.ubuntu.com"> <link rel="stylesheet" type="text/css" media="screen" href="/static/css/styles.css?v=6442332" /> <link rel="icon" type="image/png" href="/static/images/favicon.png?v=b5c316d" /> <link rel="preload" as="font" type="font/woff2" href="https://assets.ubuntu.com/v1/e8c07df6-Ubuntu-L_W.woff2" crossorigin> <link rel="preload" as="font" type="font/woff2" href="https://assets.ubuntu.com/v1/7f100985-Ubuntu-Th_W.woff2" crossorigin> <link rel="preload" as="font" type="font/woff2" href="https://assets.ubuntu.com/v1/f8097dea-Ubuntu-LI_W.woff2" crossorigin> <link rel="preload" as="font" type="font/woff2" href="https://assets.ubuntu.com/v1/fff37993-Ubuntu-R_W.woff2" crossorigin> <link rel="search" type="application/opensearchdescription+xml" title="Charmhub" href="/static/opensearch.xml" /> </head> <body class="l-site"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NNT2XX6" height="0" width="0" style="display: none; visibility: hidden;"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <header id="navigation" class="p-navigation is-dark"> <div class="p-navigation__row--25-75"> <div class="p-navigation__banner"> <div class="p-navigation__tagged-logo"> <a class="p-navigation__link" href="https://juju.is"> <div class="p-navigation__logo-tag"> <img class="p-navigation__logo-icon" src="https://assets.ubuntu.com/v1/a603c7c9-Favicon - Juju.svg" alt="Canonical Juju" /> </div> <span class="p-navigation__logo-title">Canonical Juju</span> </a> </div> <ul class="p-navigation__items"> <li class="p-navigation__item"> <a href="#navigation" class="p-navigation__toggle--open" title="menu">Menu</a> <a href="#navigation-closed" class="p-navigation__toggle--close" title="close menu">Close menu</a> </li> </ul> </div> <nav class="p-navigation__nav"> <ul class="p-navigation__items"> <li class="p-navigation__item"> <a class="p-navigation__link" href="http://juju.is/why-juju">How Juju Works</a> </li> <li class="p-navigation__item"> <a class="p-navigation__link" href="/">Charmhub</a> </li> <li class="p-navigation__item--dropdown-toggle" id="community-link"> <a class="p-navigation__link" href="#community-link-menu" aria-controls="community-link-menu">Community</a> <ul class="p-navigation__dropdown" id="community-link-menu" aria-hidden="true"> <li> <a href="https://discourse.charmhub.io" class="p-navigation__dropdown-item"> Discourse forum </a> </li> <li> <a href="https://matrix.to/#/#charmhub:ubuntu.com" class="p-navigation__dropdown-item"> Matrix chat </a> </li> <li> <a class="p-navigation__dropdown-item" href="https://juju.is/operator-day">Operator Day</a> </li> </ul> </li> <li class="p-navigation__item"> <a class="p-navigation__link" href="https://juju.is/docs">Docs</a> </li> <li class="p-navigation__item"> <a class="p-navigation__link" href="https://ubuntu.com/blog/tag/juju">Blog</a> </li> </ul> <ul class="p-navigation__items global-nav"> <li class="p-navigation__item js-nav-account" id="user-link"> <a href="#user-link-menu" aria-controls="user-link-menu" class="p-navigation__link js-nav-account--authenticated u-hide js-account--name account-name">My account</a> <ul class="p-navigation__dropdown--right" id="user-link-menu" aria-hidden="true"> <li> <a href="/charms" class="p-navigation__dropdown-item">My charms and bundles</a> </li> <li> <a href="/logout" class="p-navigation__dropdown-item">Sign out</a> </li> </ul> <a class="p-navigation__link js-nav-account--notauthenticated" href="/charms"> Sign in <i class="p-icon--user is-light"></i> </a> </li> <li class="p-navigation__item"> <a href="/all-search" class="js-search-button p-navigation__link--search-toggle" aria-label="Search"></a> </li> </ul> <div class="p-navigation__search"> <form action="/all-search" class="p-search-box is-light"> <input type="search" class="p-search-box__input" name="q" placeholder="Search Charmhub" required="" aria-label="Search Charmhub" /> <button type="reset" class="p-search-box__reset"> <i class="p-icon--close"></i> </button> <button type="submit" class="p-search-box__button"> <i class="p-icon--search"></i> </button> </form> </div> </nav> </div> <div class="p-navigation__search-overlay"></div> </header> <script> const searchButtons = document.querySelectorAll(".js-search-button"); const searchOverlay = document.querySelector(".p-navigation__search-overlay"); const navigation = document.querySelector("#navigation"); function escKeyPressHandler(e) { if (e.key === "Escape") { closeSearch(); } } function closeSearch() { searchButtons.forEach((searchButton) => { searchButton.removeAttribute("aria-pressed"); }); navigation.classList.remove("has-search-open"); document.removeEventListener("keyup", escKeyPressHandler); } function openSearch(e) { e.preventDefault(); const searchInput = navigation.querySelector(".p-search-box__input"); searchButtons.forEach((searchButton) => { searchButton.setAttribute("aria-pressed", true); }); navigation.classList.add("has-search-open"); searchInput.focus(); document.addEventListener("keyup", escKeyPressHandler); } function toggleSearch(e) { e.preventDefault(); if (navigation.classList.contains("has-search-open")) { closeSearch(); } else { closeSearch(); openSearch(e); } } function initNavigationSearch() { searchButtons.forEach((searchButton) => searchButton.addEventListener("click", toggleSearch), ); searchOverlay.addEventListener("click", toggleSearch); } initNavigationSearch() </script> <main id="main-content"> <div class="p-strip--light is-shallow"> <div class="row"> <div class="col-9"> <div class="p-charm-header"> <div class="p-media-object--large"> <div class="p-media-object__details"> <h1 class="p-media-object__title">Kubeflow</h1> <div class="p-media-object__content u-no-margin--bottom"> <ul class="p-inline-list--middot"> <li class="p-inline-list__item"> Kubeflow Charmers <span class="p-muted-heading u-no-padding" style="font-size: .9rem;">| bundle</span> </li> <li class="p-inline-list__item"> <a href="/?filter=cloud">Cloud</a> </li> </ul> </div> </div> </div> <div class="p-charm-header__container"> <div style="position: relative;"> <button class="p-button p-channel-map__button" data-controls="channel-map-versions" aria-controls="channel-map-versions" data-js="channel-map"> <span data-js="channel-map-selected"> 1.10/stable 436 </span> &nbsp;&nbsp;<i class="p-icon--chevron-down"></i> </button> <div class="p-channel-map u-hide"> <div class="p-channel-map__mask"> </div> <div class="p-card--highlighted p-channel-map__content"> <div class="u-fixed-width"> <table class="p-table--mobile-card"> <thead> <tr> <th>Channel</th> <th>Revision</th> <th>Published</th> </tr> </thead> <tbody> <tr data-channel-map-track="latest" data-channel-map-channel="candidate" data-channel-map-version="294" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">latest/candidate</td> <td data-heading="Revision">294</td> <td data-heading="Published">24 Jan 2022</td> </tr> <tr data-channel-map-track="latest" data-channel-map-channel="beta" data-channel-map-version="430" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">latest/beta</td> <td data-heading="Revision">430</td> <td data-heading="Published">30 Aug 2024</td> </tr> <tr data-channel-map-track="latest" data-channel-map-channel="edge" data-channel-map-version="423" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">latest/edge</td> <td data-heading="Revision">423</td> <td data-heading="Published">26 Jul 2024</td> </tr> <tr data-channel-map-track="1.10" data-channel-map-channel="stable" data-channel-map-version="436" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.10/stable</td> <td data-heading="Revision">436</td> <td data-heading="Published">07 Apr 2025</td> </tr> <tr data-channel-map-track="1.10" data-channel-map-channel="candidate" data-channel-map-version="434" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.10/candidate</td> <td data-heading="Revision">434</td> <td data-heading="Published">02 Apr 2025</td> </tr> <tr data-channel-map-track="1.10" data-channel-map-channel="beta" data-channel-map-version="433" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.10/beta</td> <td data-heading="Revision">433</td> <td data-heading="Published">24 Mar 2025</td> </tr> <tr data-channel-map-track="1.9" data-channel-map-channel="stable" data-channel-map-version="432" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.9/stable</td> <td data-heading="Revision">432</td> <td data-heading="Published">03 Dec 2024</td> </tr> <tr data-channel-map-track="1.9" data-channel-map-channel="beta" data-channel-map-version="420" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.9/beta</td> <td data-heading="Revision">420</td> <td data-heading="Published">19 Jul 2024</td> </tr> <tr data-channel-map-track="1.9" data-channel-map-channel="edge" data-channel-map-version="431" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.9/edge</td> <td data-heading="Revision">431</td> <td data-heading="Published">03 Dec 2024</td> </tr> <tr data-channel-map-track="1.8" data-channel-map-channel="stable" data-channel-map-version="414" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.8/stable</td> <td data-heading="Revision">414</td> <td data-heading="Published">22 Nov 2023</td> </tr> <tr data-channel-map-track="1.8" data-channel-map-channel="beta" data-channel-map-version="411" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.8/beta</td> <td data-heading="Revision">411</td> <td data-heading="Published">22 Nov 2023</td> </tr> <tr data-channel-map-track="1.8" data-channel-map-channel="edge" data-channel-map-version="413" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.8/edge</td> <td data-heading="Revision">413</td> <td data-heading="Published">22 Nov 2023</td> </tr> <tr data-channel-map-track="1.7" data-channel-map-channel="stable" data-channel-map-version="409" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.7/stable</td> <td data-heading="Revision">409</td> <td data-heading="Published">27 Oct 2023</td> </tr> <tr data-channel-map-track="1.7" data-channel-map-channel="beta" data-channel-map-version="408" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.7/beta</td> <td data-heading="Revision">408</td> <td data-heading="Published">27 Oct 2023</td> </tr> <tr data-channel-map-track="1.7" data-channel-map-channel="edge" data-channel-map-version="407" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.7/edge</td> <td data-heading="Revision">407</td> <td data-heading="Published">27 Oct 2023</td> </tr> </tbody> </table> </div> </div> </div> </div> <div class="p-charm-header__code"> <div class="p-tooltip--information"> <div> <code>juju deploy kubeflow --channel 1.10/stable</code> </div> <div class="instruction-tooltip"> <div class="p-tooltip__button" role="button" aria-controls="icon-tooltip-modal" tabindex="0"> Show information </div> <div class="p-tooltip__modal" id="icon-tooltip-modal"> <div class="p-tooltip__dialog" role="dialog" aria-labelledby="modal-content"> <button class="p-tooltip__close" aria-controls="icon-tooltip-modal" aria-label="Close tooltip modal">Close</button> <span id="modal-content" class="u-no-margin--bottom u-no-padding--top"> <p>Deploy Kubernetes operators easily with Juju, the <a href="https://juju.is/overview">Universal Operator Lifecycle Manager</a>. Need a Kubernetes cluster? Install <a href="https://microk8s.io/">MicroK8s</a> to create a full <a href="https://www.cncf.io/certification/software-conformance/">CNCF-certified</a> Kubernetes system in under 60 seconds.</p> <p class="u-no-margin--bottom"><a href="https://canonical-juju.readthedocs-hosted.com/en/3.6/user/reference/cloud/list-of-supported-clouds/the-microk8s-cloud-and-juju/">Deploy using our Quickstart Guide</a></p> </span> </div> </div> </div> </div> </div> <div class="p-charm-header__action" style="padding-left: 1rem;"> <p style="padding-top: 0.5rem"> <a href="https://juju.is/docs/juju/manage-applications" class="" target="_blank" rel="noopener noreferrer"> Learn to deploy on juju&nbsp;&gt; </a> </p> </div> </div> </div> </div> <div class="col-3"> <p style="margin-bottom: 0.5rem;"> <small class="u-no-padding--top u-text--muted">Platform:</small> </p> <div class="series-base"> <div class="series-base__title"> <img src="https://assets.ubuntu.com/v1/9f8a8273-2018-logo-kubernetes+%282%29.svg" alt="" width="160" height="27" class="p-image--base"> </div> </div> </div> </div> </div> <div class="u-fixed-width"> <nav class="p-tabs" data-js="tabs" aria-label="Details pages navigation"> <ul class="p-tabs__list" role="tablist"> <li class="p-tabs__item" role="presentation"> <a href="/kubeflow" class="p-tabs__link" tabindex="0" role="tab" aria-selected="true" >Description</a> </li> <li class="p-tabs__item" role="presentation"> <a href="/kubeflow/configurations" class="p-tabs__link" tabindex="0" role="tab" >Configurations</a> </li> </ul> </nav> </div> <div class="row p-details-tab__content"> <div class="col-3 p-details-tab__content__sidebar"> <nav data-js="navigation" class="p-side-navigation--raw-html" id="default"> <a href="#default" class="p-side-navigation__toggle js-drawer-toggle" aria-controls="default"> Toggle side navigation </a> <div class="p-side-navigation__overlay js-drawer-toggle" aria-controls="default"></div> <div class="p-side-navigation__drawer"> <div class="p-side-navigation__drawer-header"> <a href="#" class="p-side-navigation__toggle--in-drawer js-drawer-toggle" aria-controls="default"> Toggle side navigation </a> </div> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow" aria-current="page" >Overview</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs" >Home</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/tutorial" aria-expanded="false" >Tutorial</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Tutorial"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/get-started" >Get started</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/build-your-first-ml-model" >Build your first ML model</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/how-to" aria-expanded="false" >How to</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for How to"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/install" aria-expanded="false" >Install</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Install"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/general-installation" >General installation</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/install-in-an-airgapped-environment" >Install in an air-gapped environment</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/install-on-aks" >Install on AKS</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/install-on-eks" >Install on EKS</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/install-on-gke" >Install on GKE</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/install-behind-a-web-proxy" >Install behind a web proxy</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/install-on-nvidia-dgx" >Install on NVIDIA DGX</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/install-using-terraform" >Install using Terraform</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/manage" aria-expanded="false" >Manage</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Manage"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/upgrade" aria-expanded="false" >Upgrade</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Upgrade"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/upgrade-19-110" >Upgrade from 1.9 to 1.10</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/upgrade-18-19" >Upgrade from 1.8 to 1.9</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/upgrade-17-18" >Upgrade from 1.7 to 1.8</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/uninstall" >Uninstall</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/troubleshoot" >Troubleshoot</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/back-up" >Back up control plane</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/restore" >Restore control plane</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/integrate-with-cos" >Integrate with COS</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/integrate-with-minio" >Integrate with MinIO</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/integrate-with-mlflow" >Integrate with MLflow</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/manage-profiles" >Manage profiles</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/configure-high-availability-for-istio-gateway" >Configure High Availability for Istio Gateway</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/configure-kubeflow-notebook-creation-page" >Configure Kubeflow Notebook creation page</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/enable-https" >Enable HTTPS</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/enable-istio-cni-plugin" >Enable Istio CNI plugin</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/use" aria-expanded="false" >Use</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Use"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/customise-link-configuration-on-the-kubeflow-dashboard" >Customise link configuration</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/leverage-poddefaults" >Leverage PodDefaults</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/use-nvidia-gpus" >Use NVIDIA GPUs</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/deploy-nvidia-nims" >Deploy NVIDIA NIMs</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/launch-nvidia-ngc-notebooks" >Launch NVIDIA NGC notebooks</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/serve-a-model-using-triton-inference-server" >Serve a model using Triton Inference Server</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/integrate-with" aria-expanded="false" >Integrate with</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Integrate with"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/integrate-with-azure-blob-storage" >Azure Blob Storage</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/integrate-with-azure-spot-virtual-machines" >Azure spot virtual machines</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/integrate-with-identity-providers" >Identity providers</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/integrate-with-inaccel-fpga-operator" >InAccel FPGA Operator</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/reference" aria-expanded="false" >Reference</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Reference"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/release-notes" aria-expanded="false" >Release notes</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Release notes"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/release-notes-1-10" >Charmed Kubeflow 1.10</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/release-notes-1-9" >Charmed Kubeflow 1.9</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/release-notes-1-8" >Charmed Kubeflow 1.8</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/supported-versions" >Supported versions</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/monitoring" aria-expanded="false" >Monitoring</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Monitoring"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/prometheus-metrics" >Prometheus metrics</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/prometheus-alerts" >Prometheus alerts</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/grafana-dashboards" >Grafana dashboards</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/loki-logs" >Loki logs</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/kubeflow-bundle" >Kubeflow bundle</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/explanation" aria-expanded="false" >Explanation</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Explanation"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/system-architecture" >System architecture</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link is-expandable" href="/kubeflow/docs/security" aria-expanded="false" >Security</a> <button class="p-side-navigation__expand" aria-expanded="false" aria-label="show submenu for Security"></button> <ul class="p-side-navigation__list"> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/authentication" >Authentication</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/authorisation" >Authorisation</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/cryptography" >Cryptography</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/charmed-vs-upstream" >Charmed vs. upstream</a> <ul class="p-side-navigation__list"> </ul> </li> <li class="p-side-navigation__item"> <a class="p-side-navigation__link " href="/kubeflow/docs/mlops-tools" >MLOps tools</a> <ul class="p-side-navigation__list"> </ul> </li> </ul> </li> </ul> <ul class="p-side-navigation__list"> </ul> <ul class="p-side-navigation__list"> </ul> <ul class="p-side-navigation__list"> </ul> </div> </nav> <!-- Once there is a topology image available, uncomment the section below --> <hr class="p-separator--shallow"> <h4 class="p-heading--5 u-no-margin--bottom">Relevant links</h4> <ul class="p-list"> <li class="p-list__item u-no-margin--bottom"> <a href="https://github.com/juju-solutions/bundle-kubeflow"><i class="p-icon--home"></i>&nbsp;&nbsp;Homepage</a> </li> </ul> <hr class="p-separator--shallow"> <p>Share your thoughts on this charm with the community on discourse.</p> <p><a class="p-button" href="https://discourse.charmhub.io/">Join the discussion</a></p> <!-- Once `links` is fully ready we can remove the `request.args` check --> <script src="/static/js/dist/docs-side-nav.js?v=94d4d40"></script> <script src="/static/js/dist/redirect-docs-url.js?v=7562d97"></script> </div> <div class="col-9 p-details-tab__content__body"> <h2 class="p-heading--4">Charms in the Kubeflow bundle</h2> <div class="row p-bundle-icons"> <div class="col-3 col-medium-6"> <a href="/admission-webhook" title="Admission Webhook" alt="admission-webhook" class="p-bundle-icon" id="admission-webhook_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/admission-webhook" title="Admission Webhook" class="p-bundle-icon-title" id="admission-webhook_link"> Admission Webhook </a> <script> fetch("/admission-webhook", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("admission-webhook_id"); const nameLink = document.getElementById("admission-webhook_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/argo-controller" title="Argo Controller" alt="argo-controller" class="p-bundle-icon" id="argo-controller_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/argo-controller" title="Argo Controller" class="p-bundle-icon-title" id="argo-controller_link"> Argo Controller </a> <script> fetch("/argo-controller", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("argo-controller_id"); const nameLink = document.getElementById("argo-controller_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/dex-auth" title="Dex Auth" alt="dex-auth" class="p-bundle-icon" id="dex-auth_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/dex-auth" title="Dex Auth" class="p-bundle-icon-title" id="dex-auth_link"> Dex Auth </a> <script> fetch("/dex-auth", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("dex-auth_id"); const nameLink = document.getElementById("dex-auth_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/envoy" title="Envoy" alt="envoy" class="p-bundle-icon" id="envoy_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/envoy" title="Envoy" class="p-bundle-icon-title" id="envoy_link"> Envoy </a> <script> fetch("/envoy", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("envoy_id"); const nameLink = document.getElementById("envoy_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/istio-gateway" title="Istio Gateway" alt="istio-gateway" class="p-bundle-icon" id="istio-gateway_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/istio-gateway" title="Istio Gateway" class="p-bundle-icon-title" id="istio-gateway_link"> Istio Gateway </a> <script> fetch("/istio-gateway", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("istio-gateway_id"); const nameLink = document.getElementById("istio-gateway_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/istio-pilot" title="Istio Pilot" alt="istio-pilot" class="p-bundle-icon" id="istio-pilot_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/istio-pilot" title="Istio Pilot" class="p-bundle-icon-title" id="istio-pilot_link"> Istio Pilot </a> <script> fetch("/istio-pilot", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("istio-pilot_id"); const nameLink = document.getElementById("istio-pilot_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/jupyter-controller" title="Jupyter Controller" alt="jupyter-controller" class="p-bundle-icon" id="jupyter-controller_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/jupyter-controller" title="Jupyter Controller" class="p-bundle-icon-title" id="jupyter-controller_link"> Jupyter Controller </a> <script> fetch("/jupyter-controller", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("jupyter-controller_id"); const nameLink = document.getElementById("jupyter-controller_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/jupyter-ui" title="Jupyter Ui" alt="jupyter-ui" class="p-bundle-icon" id="jupyter-ui_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/jupyter-ui" title="Jupyter Ui" class="p-bundle-icon-title" id="jupyter-ui_link"> Jupyter Ui </a> <script> fetch("/jupyter-ui", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("jupyter-ui_id"); const nameLink = document.getElementById("jupyter-ui_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/katib-controller" title="Katib Controller" alt="katib-controller" class="p-bundle-icon" id="katib-controller_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/katib-controller" title="Katib Controller" class="p-bundle-icon-title" id="katib-controller_link"> Katib Controller </a> <script> fetch("/katib-controller", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("katib-controller_id"); const nameLink = document.getElementById("katib-controller_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/mysql-k8s" title="Mysql K8S" alt="mysql-k8s" class="p-bundle-icon" id="mysql-k8s_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/mysql-k8s" title="Mysql K8S" class="p-bundle-icon-title" id="mysql-k8s_link"> Mysql K8S </a> <script> fetch("/mysql-k8s", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("mysql-k8s_id"); const nameLink = document.getElementById("mysql-k8s_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/katib-db-manager" title="Katib Db Manager" alt="katib-db-manager" class="p-bundle-icon" id="katib-db-manager_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/katib-db-manager" title="Katib Db Manager" class="p-bundle-icon-title" id="katib-db-manager_link"> Katib Db Manager </a> <script> fetch("/katib-db-manager", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("katib-db-manager_id"); const nameLink = document.getElementById("katib-db-manager_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/katib-ui" title="Katib Ui" alt="katib-ui" class="p-bundle-icon" id="katib-ui_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/katib-ui" title="Katib Ui" class="p-bundle-icon-title" id="katib-ui_link"> Katib Ui </a> <script> fetch("/katib-ui", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("katib-ui_id"); const nameLink = document.getElementById("katib-ui_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kfp-api" title="Kfp Api" alt="kfp-api" class="p-bundle-icon" id="kfp-api_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kfp-api" title="Kfp Api" class="p-bundle-icon-title" id="kfp-api_link"> Kfp Api </a> <script> fetch("/kfp-api", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kfp-api_id"); const nameLink = document.getElementById("kfp-api_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/mysql-k8s" title="Mysql K8S" alt="mysql-k8s" class="p-bundle-icon" id="mysql-k8s_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/mysql-k8s" title="Mysql K8S" class="p-bundle-icon-title" id="mysql-k8s_link"> Mysql K8S </a> <script> fetch("/mysql-k8s", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("mysql-k8s_id"); const nameLink = document.getElementById("mysql-k8s_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kfp-metadata-writer" title="Kfp Metadata Writer" alt="kfp-metadata-writer" class="p-bundle-icon" id="kfp-metadata-writer_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kfp-metadata-writer" title="Kfp Metadata Writer" class="p-bundle-icon-title" id="kfp-metadata-writer_link"> Kfp Metadata Writer </a> <script> fetch("/kfp-metadata-writer", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kfp-metadata-writer_id"); const nameLink = document.getElementById("kfp-metadata-writer_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kfp-persistence" title="Kfp Persistence" alt="kfp-persistence" class="p-bundle-icon" id="kfp-persistence_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kfp-persistence" title="Kfp Persistence" class="p-bundle-icon-title" id="kfp-persistence_link"> Kfp Persistence </a> <script> fetch("/kfp-persistence", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kfp-persistence_id"); const nameLink = document.getElementById("kfp-persistence_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kfp-profile-controller" title="Kfp Profile Controller" alt="kfp-profile-controller" class="p-bundle-icon" id="kfp-profile-controller_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kfp-profile-controller" title="Kfp Profile Controller" class="p-bundle-icon-title" id="kfp-profile-controller_link"> Kfp Profile Controller </a> <script> fetch("/kfp-profile-controller", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kfp-profile-controller_id"); const nameLink = document.getElementById("kfp-profile-controller_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kfp-schedwf" title="Kfp Schedwf" alt="kfp-schedwf" class="p-bundle-icon" id="kfp-schedwf_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kfp-schedwf" title="Kfp Schedwf" class="p-bundle-icon-title" id="kfp-schedwf_link"> Kfp Schedwf </a> <script> fetch("/kfp-schedwf", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kfp-schedwf_id"); const nameLink = document.getElementById("kfp-schedwf_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kfp-ui" title="Kfp Ui" alt="kfp-ui" class="p-bundle-icon" id="kfp-ui_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kfp-ui" title="Kfp Ui" class="p-bundle-icon-title" id="kfp-ui_link"> Kfp Ui </a> <script> fetch("/kfp-ui", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kfp-ui_id"); const nameLink = document.getElementById("kfp-ui_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kfp-viewer" title="Kfp Viewer" alt="kfp-viewer" class="p-bundle-icon" id="kfp-viewer_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kfp-viewer" title="Kfp Viewer" class="p-bundle-icon-title" id="kfp-viewer_link"> Kfp Viewer </a> <script> fetch("/kfp-viewer", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kfp-viewer_id"); const nameLink = document.getElementById("kfp-viewer_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kfp-viz" title="Kfp Viz" alt="kfp-viz" class="p-bundle-icon" id="kfp-viz_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kfp-viz" title="Kfp Viz" class="p-bundle-icon-title" id="kfp-viz_link"> Kfp Viz </a> <script> fetch("/kfp-viz", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kfp-viz_id"); const nameLink = document.getElementById("kfp-viz_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/knative-eventing" title="Knative Eventing" alt="knative-eventing" class="p-bundle-icon" id="knative-eventing_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/knative-eventing" title="Knative Eventing" class="p-bundle-icon-title" id="knative-eventing_link"> Knative Eventing </a> <script> fetch("/knative-eventing", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("knative-eventing_id"); const nameLink = document.getElementById("knative-eventing_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/knative-operator" title="Knative Operator" alt="knative-operator" class="p-bundle-icon" id="knative-operator_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/knative-operator" title="Knative Operator" class="p-bundle-icon-title" id="knative-operator_link"> Knative Operator </a> <script> fetch("/knative-operator", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("knative-operator_id"); const nameLink = document.getElementById("knative-operator_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/knative-serving" title="Knative Serving" alt="knative-serving" class="p-bundle-icon" id="knative-serving_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/knative-serving" title="Knative Serving" class="p-bundle-icon-title" id="knative-serving_link"> Knative Serving </a> <script> fetch("/knative-serving", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("knative-serving_id"); const nameLink = document.getElementById("knative-serving_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kserve-controller" title="Kserve Controller" alt="kserve-controller" class="p-bundle-icon" id="kserve-controller_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kserve-controller" title="Kserve Controller" class="p-bundle-icon-title" id="kserve-controller_link"> Kserve Controller </a> <script> fetch("/kserve-controller", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kserve-controller_id"); const nameLink = document.getElementById("kserve-controller_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kubeflow-dashboard" title="Kubeflow Dashboard" alt="kubeflow-dashboard" class="p-bundle-icon" id="kubeflow-dashboard_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kubeflow-dashboard" title="Kubeflow Dashboard" class="p-bundle-icon-title" id="kubeflow-dashboard_link"> Kubeflow Dashboard </a> <script> fetch("/kubeflow-dashboard", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kubeflow-dashboard_id"); const nameLink = document.getElementById("kubeflow-dashboard_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kubeflow-profiles" title="Kubeflow Profiles" alt="kubeflow-profiles" class="p-bundle-icon" id="kubeflow-profiles_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kubeflow-profiles" title="Kubeflow Profiles" class="p-bundle-icon-title" id="kubeflow-profiles_link"> Kubeflow Profiles </a> <script> fetch("/kubeflow-profiles", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kubeflow-profiles_id"); const nameLink = document.getElementById("kubeflow-profiles_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kubeflow-roles" title="Kubeflow Roles" alt="kubeflow-roles" class="p-bundle-icon" id="kubeflow-roles_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kubeflow-roles" title="Kubeflow Roles" class="p-bundle-icon-title" id="kubeflow-roles_link"> Kubeflow Roles </a> <script> fetch("/kubeflow-roles", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kubeflow-roles_id"); const nameLink = document.getElementById("kubeflow-roles_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/kubeflow-volumes" title="Kubeflow Volumes" alt="kubeflow-volumes" class="p-bundle-icon" id="kubeflow-volumes_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/kubeflow-volumes" title="Kubeflow Volumes" class="p-bundle-icon-title" id="kubeflow-volumes_link"> Kubeflow Volumes </a> <script> fetch("/kubeflow-volumes", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("kubeflow-volumes_id"); const nameLink = document.getElementById("kubeflow-volumes_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/metacontroller-operator" title="Metacontroller Operator" alt="metacontroller-operator" class="p-bundle-icon" id="metacontroller-operator_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/metacontroller-operator" title="Metacontroller Operator" class="p-bundle-icon-title" id="metacontroller-operator_link"> Metacontroller Operator </a> <script> fetch("/metacontroller-operator", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("metacontroller-operator_id"); const nameLink = document.getElementById("metacontroller-operator_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/minio" title="Minio" alt="minio" class="p-bundle-icon" id="minio_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/minio" title="Minio" class="p-bundle-icon-title" id="minio_link"> Minio </a> <script> fetch("/minio", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("minio_id"); const nameLink = document.getElementById("minio_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/mlmd" title="Mlmd" alt="mlmd" class="p-bundle-icon" id="mlmd_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/mlmd" title="Mlmd" class="p-bundle-icon-title" id="mlmd_link"> Mlmd </a> <script> fetch("/mlmd", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("mlmd_id"); const nameLink = document.getElementById("mlmd_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/oidc-gatekeeper" title="Oidc Gatekeeper" alt="oidc-gatekeeper" class="p-bundle-icon" id="oidc-gatekeeper_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/oidc-gatekeeper" title="Oidc Gatekeeper" class="p-bundle-icon-title" id="oidc-gatekeeper_link"> Oidc Gatekeeper </a> <script> fetch("/oidc-gatekeeper", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("oidc-gatekeeper_id"); const nameLink = document.getElementById("oidc-gatekeeper_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/pvcviewer-operator" title="Pvcviewer Operator" alt="pvcviewer-operator" class="p-bundle-icon" id="pvcviewer-operator_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/pvcviewer-operator" title="Pvcviewer Operator" class="p-bundle-icon-title" id="pvcviewer-operator_link"> Pvcviewer Operator </a> <script> fetch("/pvcviewer-operator", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("pvcviewer-operator_id"); const nameLink = document.getElementById("pvcviewer-operator_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/tensorboard-controller" title="Tensorboard Controller" alt="tensorboard-controller" class="p-bundle-icon" id="tensorboard-controller_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/tensorboard-controller" title="Tensorboard Controller" class="p-bundle-icon-title" id="tensorboard-controller_link"> Tensorboard Controller </a> <script> fetch("/tensorboard-controller", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("tensorboard-controller_id"); const nameLink = document.getElementById("tensorboard-controller_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/tensorboards-web-app" title="Tensorboards Web App" alt="tensorboards-web-app" class="p-bundle-icon" id="tensorboards-web-app_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/tensorboards-web-app" title="Tensorboards Web App" class="p-bundle-icon-title" id="tensorboards-web-app_link"> Tensorboards Web App </a> <script> fetch("/tensorboards-web-app", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("tensorboards-web-app_id"); const nameLink = document.getElementById("tensorboards-web-app_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> <div class="col-3 col-medium-6"> <a href="/training-operator" title="Training Operator" alt="training-operator" class="p-bundle-icon" id="training-operator_id" style="background-image: url('https://res.cloudinary.com/canonical/image/fetch/f_auto,q_auto,fl_sanitize,c_fill,w_24,h_24/https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg');"></a> <a href="/training-operator" title="Training Operator" class="p-bundle-icon-title" id="training-operator_link"> Training Operator </a> <script> fetch("/training-operator", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("training-operator_id"); const nameLink = document.getElementById("training-operator_link"); if (iconLink) { const span = document.createElement('span'); span.style.backgroundImage = iconLink.style.backgroundImage; span.classList.add('p-bundle-icon'); span.innerText = iconLink.innerText; iconLink.parentNode.replaceChild(span, iconLink); } if (nameLink) { const span = document.createElement('span'); span.innerHTML = nameLink.innerHTML; nameLink.replaceWith(span); } } }); </script> </div> </div> <div class="js-readme-content"> <p><p>Charmed Kubeflow (CKF) is an open-source, end-to-end, production-ready <a href="https://ubuntu.com/blog/what-is-mlops">MLOps</a> platform on top of cloud-native technologies.</p> <p>It translates Machine Learning (ML) steps into complete workflows, including training, tuning, and shipping of ML models. It enables automation of workflows, increases quality of models, and simplifies deployment of ML workloads into production in a reliable way.</p> <p>CKF meets the need of building ML applications in a structured and consistent manner while contributing to higher productivity and better collaboration within teams.</p> <p>It is intended for data scientists and ML engineers, providing an advanced toolkit to organise and scale their work.</p> <hr/> <h2><a class="p-link--anchor-heading" href="#p-10061-in-this-documentation" name="p-10061-in-this-documentation">In this documentation</a></h2> <div class="md-table"> <table> <thead> <tr> <th></th> <th></th> </tr> </thead> <tbody> <tr> <td><a href="/kubeflow/docs/tutorial">Tutorial</a><br/> Get started - a hands-on introduction to CKF for newcomers <br/></td> <td><a href="/kubeflow/docs/how-to">How-to guides</a> <br/> Step-by-step guides covering key operations and common tasks with CKF</td> </tr> <tr> <td><a href="/kubeflow/docs/explanation">Explanation</a> <br/> Discussion and clarification of key topics</td> <td><a href="/kubeflow/docs/reference">Reference</a> <br/> Technical information, including specifications, APIs, settings and configuration</td> </tr> </tbody> </table> </div><h2><a class="p-link--anchor-heading" href="#p-10061-project-and-community" name="p-10061-project-and-community">Project and community</a></h2> <p>Charmed Kubeflow is a member of the Ubuntu family. It鈥檚 an open-source project that welcomes community contributions, suggestions, fixes and constructive feedback.</p> <ul> <li><a href="https://ubuntu.com/community/code-of-conduct">Read our Code of conduct</a>.</li> <li><a href="https://github.com/canonical/bundle-kubeflow">Contribute and report bugs</a>.</li> <li><a href="https://charmed-kubeflow.io/docs/contributing-docs" rel="noopener nofollow ugc">Contribute to this documentation</a>.</li> <li><a href="https://discourse.charmhub.io/tag/kubeflow">Join the Discourse forum</a>.</li> <li><a href="https://matrix.to/#/#charmhub-mlops-kubeflow:ubuntu.com" rel="noopener nofollow ugc">Talk to us on Matrix</a>.</li> <li><a href="https://github.com/canonical/kubeflow-examples">Try out some projects</a>.</li> </ul> </p> </div> <hr class="p-separator--medium" /> <div class="p-notification--information"> <div class="p-notification__content"> <p class="p-notification__message"> <a href="https://discourse.charmhub.io/t/charmed-kubeflow-documentation/3749" class="p-link--external">Help improve this document in the forum</a> (<a href="https://discourse.charmhub.io/t/how-to-write-docs-our-documentation-guidelines-for-contributors/1245" class="p-link--external">guidelines</a>). Last updated 2 days ago. </p> </div> </div> </div> </div> </main> <hr /> <footer class="l-footer--sticky p-strip"> <div class="row"> <div class="col-3"> <h2 class="p-heading--5">Juju</h2> <ul class="p-list"> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/#what-is-juju"><small>What is Juju?</small></a> </li> <!--<li class="p-list__item"> <a class="p-link--soft" href="https://charmhub.io"><small>What is Charmhub?</small></a> </li>--> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/docs/juju/reference"><small>What are Charms?</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/model-driven-operations-manifesto"><small>Charm Manifesto</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/docs/sdk"><small>Charm SDK</small></a> </li> </ul> </div> <div class="col-3"> <h2 class="p-heading--5">Charms</h2> <ul class="p-list"> <li class="p-list__item"> <a class="p-link--soft" href="/?base=all&filter=databases,big-data"><small>Data</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://ubuntu.com/kubernetes"><small>Charmed Kubernetes</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://ubuntu.com/openstack"><small>Charmed OpenStack</small></a> </li> <li class="p-list__item"> <a class="p-heading--5 p-link--soft" href="/"><small>All operators&nbsp;&rsaquo;</small></a> </li> </ul> </div> <div class="col-3"> <h2 class="p-heading--5">Compare</h2> <ul class="p-list"> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/blog/operators-and-charmed-operators"><small>Operators & Charms</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/blog/beyond-helm-and-kustomize-the-future-of-kubernetes-apps"><small>Helm alternative</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/blog/beyond-helm-and-kustomize-the-future-of-kubernetes-apps"><small>Kustomize alternative</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/blog/ansible-vs-terraform-vs-juju-fight-or-cooperation"><small>Ansible alternative</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/blog/juju-vs-infrastructure-as-code-tools"><small>Terraform alternative</small></a> </li> </ul> </div> <div class="col-3"> <h2 class="p-heading--5">Blog</h2> <ul class="p-list"> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/blog/ubuntu-and-canonical-at-kubecon-europe-2021"><small>Best Practices for creating charms</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/model-driven-operations-manifesto"><small>Model Driven Operations Manifesto</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/blog/beyond-helm-and-kustomize-the-future-of-kubernetes-apps"><small>Why Helm and Kustomize Aren鈥檛 Enough: the Future of Kubernetes Apps</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://juju.is/blog/operators-and-charmed-operators"><small>Comparing Operators to Charms</small></a> </li> <li class="p-list__item"> <a class="p-heading--5 p-link--soft" href="https://juju.is/blog"><small>Read all of our blogs&nbsp;&rsaquo;</small></a> </li> </ul> </div> </div> <div class="row"> <div class="u-sv2 u-fixed-width"> <hr> </div> </div> <div class="p-strip is-shallow"> <div class="row u-vertically-center"> <div class="col-6"> <h2>Join the community</h2> </div> <div class="col-6"> <ul class="p-inline-list u-no-margin--bottom u-float-right--medium u-float-right--large"> <li class="p-inline-list__item"> <a href="https://chat.charmhub.io/charmhub/channels/juju" class="p-icon--chat">Chat</a> </li> <li class="p-inline-list__item"> <a href="http://discourse.charmhub.io/" class="p-icon--forum">Discourse</a> </li> <li class="p-inline-list__item"> <a href="https://juju.is/careers" class="p-icon--careers">Careers</a> </li> <li class="p-inline-list__item"> <a href="https://github.com/canonical/operator/" class="p-icon--github">GitHub</a> </li> <li class="p-inline-list__item"> <a href="http://www.twitter.com/juju_devops" class="p-icon--twitter">Twitter</a> </li> <li class="p-inline-list__item"> <a href="http://youtube.com/jujucharms" class="p-icon--youtube">YouTube</a> </li> </ul> </div> </div> </div> <div class="row"> <div class="u-sv2 u-fixed-width"> <hr> </div> </div> <div class="row"> <div class="col-12"> <ul class="p-list"> <li class="p-list__item"> <a class="p-link--soft js-revoke-cookie-manager" href=""><small>Manage your tracker settings</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://www.ubuntu.com/legal"><small>Legal Information</small></a> </li> <li class="p-list__item"> <a class="p-link--soft" href="https://github.com/canonical/charmhub.io/issues/new"><small>Report a bug on this site</small></a> </li> </ul> </div> </div> </footer> <script src="/static/js/dist/base.js?v=4f4b3a3"></script> <script src="/static/js/dist/navigation-events.js?v=527c9e1"></script> <script src="/static/js/dist/global-nav.js?v=4b1584e"></script> <script src="/static/js/dist/details.js?v=5c7dc38" defer></script> <script src="/static/js/dist/highlight-js.js?v=bd5af34" defer></script> <script> window.addEventListener("DOMContentLoaded", function () { charmhub.details.init("kubeflow"); const codeBlocks = document.querySelectorAll(".js-readme-content code"); codeBlocks.forEach((codeBlock) => { codeBlock.classList.add("language-bash"); }); Prism.highlightAll(); }); </script> <script src="/static/js/dist/details_overview.js?v=c80d9b8" defer></script> <script src="/static/js/dist/store-details.js?v=d0741f7" defer></script> <script> window.addEventListener("DOMContentLoaded", function () { charmhub.details.overview.init(); charmhub.store.loadBundleIcons(); }); </script> <script type="application/ld+json"> { "@context": "http://schema.org/", "@id": "https://charmhub.io/#organization", "@type": "Organization", "name": "Charmhub", "logo": "https://assets.ubuntu.com/v1/3c4a2ba6-Canonical-Charmhub-2022.svg", "url": "https://charmhub.io", "sameAs": [ "https://github.com/canonical/operator/", "https://en.wikipedia.org/wiki/Juju_(software)", "https://twitter.com/juju_devops", "https://www.youtube.com/@jujucharms" ] } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@id": "https://charmhub.ii/#website", "@type": "WebPage", "name": "Charmhub", "url": "https://charmhub.io" } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "SoftwareApplication", "name": "Kubeflow", "image": "https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg", "url": "https://charmhub.io/kubeflow", "publisher": { "@type": "Organization", "name": "Kubeflow Charmers" }, "applicationCategory": "Cloud", "operatingSystem": "", "softwareVersion": "1.10/stable" } </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10