CINXE.COM
Charmhub | Deploy Canonical Kubernetes 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 Canonical Kubernetes using Charmhub - The Open Operator Collection</title> <meta name="description" content="Deploy the latest version of Canonical Kubernetes on any cloud. " /> <meta name="msvalidate.01" content="F922865A678BADA5E7209E29B2656AA6" /> <meta property="og:title" content="Deploy Canonical Kubernetes 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 Canonical Kubernetes 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="Canonical Kubernetes 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"> <meta name="robots" content="noindex" /> <link rel="canonical" href="https://charmhub.io/canonical-kubernetes" /> <!-- 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">Canonical Kubernetes</h1> <div class="p-media-object__content u-no-margin--bottom"> <ul class="p-inline-list--middot"> <li class="p-inline-list__item"> Canonical Kubernetes <span class="p-muted-heading u-no-padding" style="font-size: .9rem;">| bundle</span> </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"> edge 28 </span> <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="edge" data-channel-map-version="28" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">latest/edge</td> <td data-heading="Revision">28</td> <td data-heading="Published">18 Mar 2025</td> </tr> <tr data-channel-map-track="1.32" data-channel-map-channel="stable" data-channel-map-version="30" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.32/stable</td> <td data-heading="Revision">30</td> <td data-heading="Published">25 Mar 2025</td> </tr> <tr data-channel-map-track="1.32" data-channel-map-channel="candidate" data-channel-map-version="29" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.32/candidate</td> <td data-heading="Revision">29</td> <td data-heading="Published">25 Mar 2025</td> </tr> <tr data-channel-map-track="1.32" data-channel-map-channel="beta" data-channel-map-version="32" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.32/beta</td> <td data-heading="Revision">32</td> <td data-heading="Published">25 Mar 2025</td> </tr> <tr data-channel-map-track="1.32" data-channel-map-channel="edge" data-channel-map-version="31" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.32/edge</td> <td data-heading="Revision">31</td> <td data-heading="Published">25 Mar 2025</td> </tr> <tr data-channel-map-track="1.31" data-channel-map-channel="edge" data-channel-map-version="12" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.31/edge</td> <td data-heading="Revision">12</td> <td data-heading="Published">22 Nov 2024</td> </tr> <tr data-channel-map-track="1.30" data-channel-map-channel="beta" data-channel-map-version="9" data-channel-map-arch-filter="" data-channel-map-base-filter=" "> <td data-heading="Channel">1.30/beta</td> <td data-heading="Revision">9</td> <td data-heading="Published">07 May 2024</td> </tr> </tbody> </table> </div> </div> </div> </div> <div class="p-charm-header__code"> <div class="p-tooltip--information"> <div> <code>juju deploy canonical-kubernetes --channel edge</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 universal operators easily with Juju, the <a href="https://juju.is/overview">Universal Operator Lifecycle Manager</a>.</p> <p class="u-no-margin--bottom"><a href="https://canonical-juju.readthedocs-hosted.com/en/3.6/user/howto/manage-applications/#deploy-an-application">Learn how with 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 > </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/adac6928-ubuntu.svg" alt="Ubuntu" width="89" height="20" 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="/canonical-kubernetes" class="p-tabs__link" tabindex="0" role="tab" aria-selected="true" >Description</a> </li> <li class="p-tabs__item" role="presentation"> <a href="/canonical-kubernetes/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="/canonical-kubernetes" aria-current="page" >Overview</a> <ul class="p-side-navigation__list"> </ul> </li> </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">Contacts</h4> <ul class="p-list"> <li class="p-list__item"> <a href="https://github.com/canonical/k8s-bundles/issues"><i class="p-icon--bug"></i> Submit a bug</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 Canonical Kubernetes bundle</h2> <div class="row p-bundle-icons"> <div class="col-3 col-medium-6"> <a href="/k8s" title="K8S" alt="k8s" class="p-bundle-icon" id="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="/k8s" title="K8S" class="p-bundle-icon-title" id="k8s_link"> K8S </a> <script> fetch("/k8s", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("k8s_id"); const nameLink = document.getElementById("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="/k8s-worker" title="K8S Worker" alt="k8s-worker" class="p-bundle-icon" id="k8s-worker_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="/k8s-worker" title="K8S Worker" class="p-bundle-icon-title" id="k8s-worker_link"> K8S Worker </a> <script> fetch("/k8s-worker", { method: "HEAD" }) .then((r) => { if (r.status === 404) { const iconLink = document.getElementById("k8s-worker_id"); const nameLink = document.getElementById("k8s-worker_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><h1><a class="anchor" href="#canonical-kubernetes-1" name="canonical-kubernetes-1"></a>Canonical Kubernetes</h1> <p>This is a scaled-out Kubernetes cluster composed of the following components and features:</p> <ul> <li>Uses standard upstream Kubernetes</li> <li>Multiple Kubernetes control-plane and worker nodes</li> <li>Dqlite as Datastore</li> </ul> <h2><a class="p-link--anchor-heading" href="#project-and-community" name="project-and-community">Project and community</a></h2> <p>K8s is a member of the Ubuntu family. It鈥檚 an open source project that warmly welcomes community projects, contributions, suggestions, fixes and constructive feedback.</p> <ul> <li><a href="https://ubuntu.com/community/ethos/code-of-conduct">Code of conduct</a></li> <li><a href="https://documentation.ubuntu.com/canonical-kubernetes">Get support</a></li> <li><a href="https://documentation.ubuntu.com/canonical-kubernetes/latest/reference/community/#do-you-have-questions">Join our online chat</a></li> <li><a href="https://documentation.ubuntu.com/canonical-kubernetes/latest/reference/community/#contributing-to-the-code">Contribute</a></li> <li><a href="https://documentation.ubuntu.com/canonical-kubernetes/latest/reference/roadmap/">Roadmap</a></li> </ul> <p>Thinking about using k8s for your next project? <a>Get in touch!</a></p></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/canonical-kubernetes-bundle/14133" 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 11 months 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 ›</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 ›</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("canonical-kubernetes"); 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": "Canonical Kubernetes", "image": "https://assets.ubuntu.com/v1/be6eb412-snapcraft-missing-icon.svg", "url": "https://charmhub.io/canonical-kubernetes", "publisher": { "@type": "Organization", "name": "Canonical Kubernetes" }, "applicationCategory": "other", "operatingSystem": "", "softwareVersion": "edge" } </script> </body> </html>