blob: 3155dbfeebcc88c58de31d18443cb401e6f6ddee [file] [log] [blame]
<!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/><title>Deploy Pulsar cluster using Helm · Apache Pulsar</title><meta name="viewport" content="width=device-width, initial-scale=1.0"/><meta name="generator" content="Docusaurus"/><meta name="description" content="Before running `helm install`, you need to decide how to run Pulsar."/><meta name="docsearch:version" content="2.6.3"/><meta name="docsearch:language" content="en"/><meta property="og:title" content="Deploy Pulsar cluster using Helm · Apache Pulsar"/><meta property="og:type" content="website"/><meta property="og:url" content="https://pulsar.apache.org/"/><meta property="og:description" content="Before running `helm install`, you need to decide how to run Pulsar."/><meta name="twitter:card" content="summary"/><meta name="twitter:image" content="https://pulsar.apache.org/img/pulsar.svg"/><link rel="shortcut icon" href="/img/pulsar.ico"/><link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/atom-one-dark.min.css"/><link rel="alternate" type="application/atom+xml" href="https://pulsar.apache.org/blog/atom.xml" title="Apache Pulsar Blog ATOM Feed"/><link rel="alternate" type="application/rss+xml" href="https://pulsar.apache.org/blog/feed.xml" title="Apache Pulsar Blog RSS Feed"/><link rel="stylesheet" href="/css/code-blocks-buttons.css"/><script type="text/javascript" src="https://buttons.github.io/buttons.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js"></script><script type="text/javascript" src="/js/custom.js"></script><script src="/js/scrollSpy.js"></script><link rel="stylesheet" href="/css/main.css"/><script src="/js/codetabs.js"></script></head><body class="sideNavVisible separateOnPageNav"><div class="fixedHeaderContainer"><div class="headerWrapper wrapper"><header><a href="/en"><img class="logo" src="/img/pulsar.svg" alt="Apache Pulsar"/></a><a href="/en/versions"><h3>2.6.3</h3></a><div class="navigationWrapper navigationSlider"><nav class="slidingNav"><ul class="nav-site nav-site-internal"><li class="siteNavGroupActive"><a href="/docs/en/2.6.3/getting-started-standalone" target="_self">Docs</a></li><li class=""><a href="/en/download" target="_self">Download</a></li><li class="siteNavGroupActive"><a href="/docs/en/2.6.3/client-libraries" target="_self">Clients</a></li><li class=""><a href="#restapis" target="_self">REST APIs</a></li><li class=""><a href="#cli" target="_self">Cli</a></li><li class=""><a href="/blog/" target="_self">Blog</a></li><li class=""><a href="#community" target="_self">Community</a></li><li class=""><a href="#apache" target="_self">Apache</a></li><li class=""><a href="https://pulsar-next.staged.apache.org/" target="_self">New Website (Beta)</a></li><span><li><a id="languages-menu" href="#"><img class="languages-icon" src="/img/language.svg" alt="Languages icon"/>English</a><div id="languages-dropdown" class="hide"><ul id="languages-dropdown-items"><li><a href="/docs/ja/2.6.3/helm-deploy">日本語</a></li><li><a href="/docs/fr/2.6.3/helm-deploy">Français</a></li><li><a href="/docs/ko/2.6.3/helm-deploy">한국어</a></li><li><a href="/docs/zh-CN/2.6.3/helm-deploy">中文</a></li><li><a href="/docs/zh-TW/2.6.3/helm-deploy">繁體中文</a></li><li><a href="https://crowdin.com/project/apache-pulsar" target="_blank" rel="noreferrer noopener">Help Translate</a></li></ul></div></li><script>
const languagesMenuItem = document.getElementById("languages-menu");
const languagesDropDown = document.getElementById("languages-dropdown");
languagesMenuItem.addEventListener("click", function(event) {
event.preventDefault();
if (languagesDropDown.className == "hide") {
languagesDropDown.className = "visible";
} else {
languagesDropDown.className = "hide";
}
});
</script></span></ul></nav></div></header></div></div><div class="navPusher"><div class="docMainWrapper wrapper"><div class="docsNavContainer" id="docsNav"><nav class="toc"><div class="toggleNav"><section class="navWrapper wrapper"><div class="navBreadcrumb wrapper"><div class="navToggle" id="navToggler"><div class="hamburger-menu"><div class="line1"></div><div class="line2"></div><div class="line3"></div></div></div><h2><i></i><span>Kubernetes (Helm)</span></h2><div class="tocToggler" id="tocToggler"><i class="icon-toc"></i></div></div><div class="navGroups"><div class="navGroup"><h3 class="navGroupCategoryTitle">Get Started</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/pulsar-2.0">Pulsar 2.0</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/getting-started-standalone">Run Pulsar locally</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/getting-started-docker">Run Pulsar in Docker</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/getting-started-helm">Run Pulsar in Kubernetes</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/client-libraries">Use Pulsar with client libraries</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Concepts and Architecture</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-messaging">Messaging</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-architecture-overview">Architecture</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-clients">Clients</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-replication">Geo Replication</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-multi-tenancy">Multi Tenancy</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-authentication">Authentication and Authorization</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-topic-compaction">Topic Compaction</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-tiered-storage">Tiered Storage</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-proxy-sni-routing">Proxy support with SNI routing</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/concepts-multiple-advertised-listeners">Multiple advertised listeners</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Pulsar Schema</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/schema-get-started">Get started</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/schema-understand">Understand schema</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/schema-evolution-compatibility">Schema evolution and compatibility</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/schema-manage">Manage schema</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Pulsar Functions</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/functions-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/functions-worker">Setup: Pulsar Functions Worker</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/functions-runtime">Setup: Configure Functions runtime</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/functions-develop">How-to: Develop</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/functions-debug">How-to: Debug</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/functions-deploy">How-to: Deploy</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/functions-cli">Reference: CLI</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/window-functions-context">Window Functions: Context</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Pulsar IO</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/io-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/io-quickstart">Get started</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/io-use">Use</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/io-debug">Debug</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/io-connectors">Built-in connector</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/io-cdc">CDC connector</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/io-develop">Develop</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/io-cli">CLI</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Pulsar SQL</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/sql-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/sql-getting-started">Query data</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/sql-deployment-configurations">Configuration and deployment</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/sql-rest-api">REST APIs</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Kubernetes (Helm)</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/helm-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/helm-prepare">Prepare</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/helm-install">Install</a></li><li class="navListItem navListItemActive"><a class="navItem" href="/docs/en/2.6.3/helm-deploy">Deployment</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/helm-upgrade">Upgrade</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/helm-tools">Required Tools</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Deployment</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/deploy-aws">Amazon Web Services</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/deploy-kubernetes">Kubernetes</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/deploy-bare-metal">Bare metal</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/deploy-bare-metal-multi-cluster">Bare metal multi-cluster</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/deploy-monitoring">Monitoring</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Administration</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/administration-zk-bk">ZooKeeper and BookKeeper</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/administration-geo">Geo-replication</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/administration-pulsar-manager">Pulsar Manager</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/administration-stats">Pulsar statistics</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/administration-load-balance">Load balance</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/administration-proxy">Pulsar proxy</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/administration-upgrade">Upgrade</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Security</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-tls-transport">Transport Encryption using TLS</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-tls-authentication">Authentication using TLS</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-tls-keystore">Using TLS with KeyStore configure</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-jwt">Authentication using JWT</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-athenz">Authentication using Athenz</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-kerberos">Authentication using Kerberos</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-oauth2">Authentication using OAuth 2.0 access tokens</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-authorization">Authorization and ACLs</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-encryption">End-to-End Encryption</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-extending">Extending</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/security-bouncy-castle">Bouncy Castle Providers</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Performance</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/performance-pulsar-perf">Pulsar Perf</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Client Libraries</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/client-libraries-java">Java</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/client-libraries-go">Go</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/client-libraries-python">Python</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/client-libraries-cpp">C++</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/client-libraries-node">Node.js</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/client-libraries-websocket">WebSocket</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/client-libraries-dotnet">C#</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Admin API</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-overview">Overview</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-clusters">Clusters</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-tenants">Tenants</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-brokers">Brokers</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-namespaces">Namespaces</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-permissions">Permissions</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-persistent-topics">Persistent topics</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-non-persistent-topics">Non-Persistent topics</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-partitioned-topics">Partitioned topics</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-non-partitioned-topics">Non-Partitioned topics</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/admin-api-functions">Functions</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Adaptors</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/adaptors-kafka">Kafka client wrapper</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/adaptors-spark">Apache Spark</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/adaptors-storm">Apache Storm</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Cookbooks</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/cookbooks-tiered-storage">Tiered Storage</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/cookbooks-compaction">Topic compaction</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/cookbooks-deduplication">Message deduplication</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/cookbooks-non-persistent">Non-persistent messaging</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/cookbooks-partitioned">Partitioned Topics</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/cookbooks-retention-expiry">Message retention and expiry</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/cookbooks-encryption">Encryption</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/cookbooks-message-queue">Message queue</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/cookbooks-bookkeepermetadata">BookKeeper Ledger Metadata</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Development</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/develop-tools">Simulation tools</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/developing-binary-protocol">Binary protocol</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/develop-schema">Custom schema storage</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/develop-load-manager">Modular load manager</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/develop-cpp">Building Pulsar C++ client</a></li></ul></div><div class="navGroup"><h3 class="navGroupCategoryTitle">Reference</h3><ul class=""><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/reference-terminology">Terminology</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/reference-cli-tools">Pulsar CLI tools</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/reference-configuration">Pulsar configuration</a></li><li class="navListItem"><a class="navItem" href="/docs/en/2.6.3/reference-metrics">Pulsar Metrics</a></li></ul></div></div></section></div><script>
var coll = document.getElementsByClassName('collapsible');
var checkActiveCategory = true;
for (var i = 0; i < coll.length; i++) {
var links = coll[i].nextElementSibling.getElementsByTagName('*');
if (checkActiveCategory){
for (var j = 0; j < links.length; j++) {
if (links[j].classList.contains('navListItemActive')){
coll[i].nextElementSibling.classList.toggle('hide');
coll[i].childNodes[1].classList.toggle('rotate');
checkActiveCategory = false;
break;
}
}
}
coll[i].addEventListener('click', function() {
var arrow = this.childNodes[1];
arrow.classList.toggle('rotate');
var content = this.nextElementSibling;
content.classList.toggle('hide');
});
}
document.addEventListener('DOMContentLoaded', function() {
createToggler('#navToggler', '#docsNav', 'docsSliderActive');
createToggler('#tocToggler', 'body', 'tocActive');
var headings = document.querySelector('.toc-headings');
headings && headings.addEventListener('click', function(event) {
var el = event.target;
while(el !== headings){
if (el.tagName === 'A') {
document.body.classList.remove('tocActive');
break;
} else{
el = el.parentNode;
}
}
}, false);
function createToggler(togglerSelector, targetSelector, className) {
var toggler = document.querySelector(togglerSelector);
var target = document.querySelector(targetSelector);
if (!toggler) {
return;
}
toggler.onclick = function(event) {
event.preventDefault();
target.classList.toggle(className);
};
}
});
</script></nav></div><div class="container mainContainer docsContainer"><div class="wrapper"><div class="post"><header class="postHeader"><a class="edit-page-link button" href="https://github.com/apache/pulsar/edit/master/site2/docs/helm-deploy.md" target="_blank" rel="noreferrer noopener">Edit</a><h1 id="__docusaurus" class="postHeaderTitle">Deploy Pulsar cluster using Helm</h1></header><article><div><span><p>Before running <code>helm install</code>, you need to decide how to run Pulsar.
Options can be specified using Helm's <code>--set option.name=value</code> command line option.</p>
<h2><a class="anchor" aria-hidden="true" id="select-configuration-options"></a><a href="#select-configuration-options" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Select configuration options</h2>
<p>In each section, collect the options that are combined to use with the <code>helm install</code> command.</p>
<h3><a class="anchor" aria-hidden="true" id="kubernetes-namespace"></a><a href="#kubernetes-namespace" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Kubernetes namespace</h3>
<p>By default, the Pulsar Helm chart is installed to a namespace called <code>pulsar</code>.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">namespace:</span> <span class="hljs-string">pulsar</span>
</code></pre>
<p>To install the Pulsar Helm chart into a different Kubernetes namespace, you can include this option in the <code>helm install</code> command.</p>
<pre><code class="hljs css language-bash">--<span class="hljs-built_in">set</span> namespace=&lt;different-k8s-namespace&gt;
</code></pre>
<p>By default, the Pulsar Helm chart doesn't create the namespace.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">namespaceCreate:</span> <span class="hljs-literal">false</span>
</code></pre>
<p>To use the Pulsar Helm chart to create the Kubernetes namespace automatically, you can include this option in the <code>helm install</code> command.</p>
<pre><code class="hljs css language-bash">--<span class="hljs-built_in">set</span> namespaceCreate=<span class="hljs-literal">true</span>
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="persistence"></a><a href="#persistence" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Persistence</h3>
<p>By default, the Pulsar Helm chart creates Volume Claims with the expectation that a dynamic provisioner creates the underlying Persistent Volumes.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">volumes:</span>
<span class="hljs-attr">persistence:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment"># configure the components to use local persistent volume</span>
<span class="hljs-comment"># the local provisioner should be installed prior to enable local persistent volume</span>
<span class="hljs-attr">local_storage:</span> <span class="hljs-literal">false</span>
</code></pre>
<p>To use local persistent volumes as the persistent storage for Helm release, you can install the <a href="#install-local-storage-provisioner">local storage provisioner</a> and include the following option in the <code>helm install</code> command.</p>
<pre><code class="hljs css language-bash">--<span class="hljs-built_in">set</span> volumes.local_storage=<span class="hljs-literal">true</span>
</code></pre>
<blockquote>
<h4><a class="anchor" aria-hidden="true" id="note"></a><a href="#note" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Note</h4>
<p>Before installing the production instance of Pulsar, ensure to plan the storage settings to avoid extra storage migration work. Because after initial installation, you must edit Kubernetes objects manually if you want to change storage settings.</p>
</blockquote>
<p>The Pulsar Helm chart is designed for production use. To use the Pulsar Helm chart in a development environment (such as Minikube), you can disable persistence by including this option in your <code>helm install</code> command.</p>
<pre><code class="hljs css language-bash">--<span class="hljs-built_in">set</span> volumes.persistence=<span class="hljs-literal">false</span>
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="affinity"></a><a href="#affinity" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Affinity</h3>
<p>By default, <code>anti-affinity</code> is enabled to ensure pods of the same component can run on different nodes.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">affinity:</span>
<span class="hljs-attr">anti_affinity:</span> <span class="hljs-literal">true</span>
</code></pre>
<p>To use the Pulsar Helm chart in a development environment (such as Minikue), you can disable <code>anti-affinity</code> by including this option in your <code>helm install</code> command.</p>
<pre><code class="hljs css language-bash">--<span class="hljs-built_in">set</span> affinity.anti_affinity=<span class="hljs-literal">false</span>
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="components"></a><a href="#components" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Components</h3>
<p>The Pulsar Helm chart is designed for production usage. It deploys a production-ready Pulsar cluster, including Pulsar core components and monitoring components.</p>
<p>You can customize the components to be deployed by turning on/off individual components.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-comment">## Components</span>
<span class="hljs-comment">##</span>
<span class="hljs-comment">## Control what components of Apache Pulsar to deploy for the cluster</span>
<span class="hljs-attr">components:</span>
<span class="hljs-comment"># zookeeper</span>
<span class="hljs-attr">zookeeper:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment"># bookkeeper</span>
<span class="hljs-attr">bookkeeper:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment"># bookkeeper - autorecovery</span>
<span class="hljs-attr">autorecovery:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment"># broker</span>
<span class="hljs-attr">broker:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment"># functions</span>
<span class="hljs-attr">functions:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment"># proxy</span>
<span class="hljs-attr">proxy:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment"># toolset</span>
<span class="hljs-attr">toolset:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment"># pulsar manager</span>
<span class="hljs-attr">pulsar_manager:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment">## Monitoring Components</span>
<span class="hljs-comment">##</span>
<span class="hljs-comment">## Control what components of the monitoring stack to deploy for the cluster</span>
<span class="hljs-attr">monitoring:</span>
<span class="hljs-comment"># monitoring - prometheus</span>
<span class="hljs-attr">prometheus:</span> <span class="hljs-literal">true</span>
<span class="hljs-comment"># monitoring - grafana</span>
<span class="hljs-attr">grafana:</span> <span class="hljs-literal">true</span>
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="docker-images"></a><a href="#docker-images" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Docker images</h3>
<p>The Pulsar Helm chart is designed to enable controlled upgrades. So it can configure independent image versions for components. You can customize the images by setting individual component.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-comment">## Images</span>
<span class="hljs-comment">##</span>
<span class="hljs-comment">## Control what images to use for each component</span>
<span class="hljs-attr">images:</span>
<span class="hljs-attr">zookeeper:</span>
<span class="hljs-attr">repository:</span> <span class="hljs-string">apachepulsar/pulsar-all</span>
<span class="hljs-attr">tag:</span> <span class="hljs-number">2.5</span><span class="hljs-number">.0</span>
<span class="hljs-attr">pullPolicy:</span> <span class="hljs-string">IfNotPresent</span>
<span class="hljs-attr">bookie:</span>
<span class="hljs-attr">repository:</span> <span class="hljs-string">apachepulsar/pulsar-all</span>
<span class="hljs-attr">tag:</span> <span class="hljs-number">2.5</span><span class="hljs-number">.0</span>
<span class="hljs-attr">pullPolicy:</span> <span class="hljs-string">IfNotPresent</span>
<span class="hljs-attr">autorecovery:</span>
<span class="hljs-attr">repository:</span> <span class="hljs-string">apachepulsar/pulsar-all</span>
<span class="hljs-attr">tag:</span> <span class="hljs-number">2.5</span><span class="hljs-number">.0</span>
<span class="hljs-attr">pullPolicy:</span> <span class="hljs-string">IfNotPresent</span>
<span class="hljs-attr">broker:</span>
<span class="hljs-attr">repository:</span> <span class="hljs-string">apachepulsar/pulsar-all</span>
<span class="hljs-attr">tag:</span> <span class="hljs-number">2.5</span><span class="hljs-number">.0</span>
<span class="hljs-attr">pullPolicy:</span> <span class="hljs-string">IfNotPresent</span>
<span class="hljs-attr">proxy:</span>
<span class="hljs-attr">repository:</span> <span class="hljs-string">apachepulsar/pulsar-all</span>
<span class="hljs-attr">tag:</span> <span class="hljs-number">2.5</span><span class="hljs-number">.0</span>
<span class="hljs-attr">pullPolicy:</span> <span class="hljs-string">IfNotPresent</span>
<span class="hljs-attr">functions:</span>
<span class="hljs-attr">repository:</span> <span class="hljs-string">apachepulsar/pulsar-all</span>
<span class="hljs-attr">tag:</span> <span class="hljs-number">2.5</span><span class="hljs-number">.0</span>
<span class="hljs-attr">prometheus:</span>
<span class="hljs-attr">repository:</span> <span class="hljs-string">prom/prometheus</span>
<span class="hljs-attr">tag:</span> <span class="hljs-string">v1.6.3</span>
<span class="hljs-attr">pullPolicy:</span> <span class="hljs-string">IfNotPresent</span>
<span class="hljs-attr">grafana:</span>
<span class="hljs-attr">repository:</span> <span class="hljs-string">streamnative/apache-pulsar-grafana-dashboard-k8s</span>
<span class="hljs-attr">tag:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.4</span>
<span class="hljs-attr">pullPolicy:</span> <span class="hljs-string">IfNotPresent</span>
<span class="hljs-attr">pulsar_manager:</span>
<span class="hljs-attr">repository:</span> <span class="hljs-string">apachepulsar/pulsar-manager</span>
<span class="hljs-attr">tag:</span> <span class="hljs-string">v0.1.0</span>
<span class="hljs-attr">pullPolicy:</span> <span class="hljs-string">IfNotPresent</span>
<span class="hljs-attr">hasCommand:</span> <span class="hljs-literal">false</span>
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="tls"></a><a href="#tls" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>TLS</h3>
<p>The Pulsar Helm chart can be configured to enable TLS (Transport Layer Security) to protect all the traffic between components. Before enabling TLS, you have to provision TLS certificates for the required components.</p>
<h4><a class="anchor" aria-hidden="true" id="provision-tls-certificates-using-cert-manager"></a><a href="#provision-tls-certificates-using-cert-manager" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Provision TLS certificates using cert-manager</h4>
<p>To use the <code>cert-manager</code> to provision the TLS certificates, you have to install the <a href="#install-cert-manager">cert-manager</a> before installing the Pulsar Helm chart. After successfully installing the cert-manager, you can set <code>certs.internal_issuer.enabled</code> to <code>true</code>. Therefore, the Pulsar Helm chart can use the <code>cert-manager</code> to generate <code>selfsigning</code> TLS certificates for the configured components.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">certs:</span>
<span class="hljs-attr">internal_issuer:</span>
<span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">component:</span> <span class="hljs-string">internal-cert-issuer</span>
<span class="hljs-attr">type:</span> <span class="hljs-string">selfsigning</span>
</code></pre>
<p>You can also customize the generated TLS certificates by configuring the fields as the following.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">tls:</span>
<span class="hljs-comment"># common settings for generating certs</span>
<span class="hljs-attr">common:</span>
<span class="hljs-comment"># 90d</span>
<span class="hljs-attr">duration:</span> <span class="hljs-string">2160h</span>
<span class="hljs-comment"># 15d</span>
<span class="hljs-attr">renewBefore:</span> <span class="hljs-string">360h</span>
<span class="hljs-attr">organization:</span>
<span class="hljs-bullet">-</span> <span class="hljs-string">pulsar</span>
<span class="hljs-attr">keySize:</span> <span class="hljs-number">4096</span>
<span class="hljs-attr">keyAlgorithm:</span> <span class="hljs-string">rsa</span>
<span class="hljs-attr">keyEncoding:</span> <span class="hljs-string">pkcs8</span>
</code></pre>
<h4><a class="anchor" aria-hidden="true" id="enable-tls"></a><a href="#enable-tls" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Enable TLS</h4>
<p>After installing the <code>cert-manager</code>, you can set <code>tls.enabled</code> to <code>true</code> to enable TLS encryption for the entire cluster.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">tls:</span>
<span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span>
</code></pre>
<p>You can also configure whether to enable TLS encryption for individual component.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">tls:</span>
<span class="hljs-comment"># settings for generating certs for proxy</span>
<span class="hljs-attr">proxy:</span>
<span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">cert_name:</span> <span class="hljs-string">tls-proxy</span>
<span class="hljs-comment"># settings for generating certs for broker</span>
<span class="hljs-attr">broker:</span>
<span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">cert_name:</span> <span class="hljs-string">tls-broker</span>
<span class="hljs-comment"># settings for generating certs for bookies</span>
<span class="hljs-attr">bookie:</span>
<span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">cert_name:</span> <span class="hljs-string">tls-bookie</span>
<span class="hljs-comment"># settings for generating certs for zookeeper</span>
<span class="hljs-attr">zookeeper:</span>
<span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">cert_name:</span> <span class="hljs-string">tls-zookeeper</span>
<span class="hljs-comment"># settings for generating certs for recovery</span>
<span class="hljs-attr">autorecovery:</span>
<span class="hljs-attr">cert_name:</span> <span class="hljs-string">tls-recovery</span>
<span class="hljs-comment"># settings for generating certs for toolset</span>
<span class="hljs-attr">toolset:</span>
<span class="hljs-attr">cert_name:</span> <span class="hljs-string">tls-toolset</span>
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="authentication"></a><a href="#authentication" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Authentication</h3>
<p>By default, authentication is disabled. You can set <code>auth.authentication.enabled</code> to <code>true</code> to enable authentication.
Currently, the Pulsar Helm chart only supports JWT authentication provider. You can set <code>auth.authentication.provider</code> to <code>jwt</code> to use the JWT authentication provider.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-comment"># Enable or disable broker authentication and authorization.</span>
<span class="hljs-attr">auth:</span>
<span class="hljs-attr">authentication:</span>
<span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">provider:</span> <span class="hljs-string">"jwt"</span>
<span class="hljs-attr">jwt:</span>
<span class="hljs-comment"># Enable JWT authentication</span>
<span class="hljs-comment"># If the token is generated by a secret key, set the usingSecretKey as true.</span>
<span class="hljs-comment"># If the token is generated by a private key, set the usingSecretKey as false.</span>
<span class="hljs-attr">usingSecretKey:</span> <span class="hljs-literal">false</span>
<span class="hljs-attr">superUsers:</span>
<span class="hljs-comment"># broker to broker communication</span>
<span class="hljs-attr">broker:</span> <span class="hljs-string">"broker-admin"</span>
<span class="hljs-comment"># proxy to broker communication</span>
<span class="hljs-attr">proxy:</span> <span class="hljs-string">"proxy-admin"</span>
<span class="hljs-comment"># pulsar-admin client to broker/proxy communication</span>
<span class="hljs-attr">client:</span> <span class="hljs-string">"admin"</span>
</code></pre>
<p>To enable authentication, you can run <a href="#prepare-the-helm-release">prepare helm release</a> to generate token secret keys and tokens for three super users specified in the <code>auth.superUsers</code> field. The generated token keys and super user tokens are uploaded and stored as Kubernetes secrets prefixed with <code>&lt;pulsar-release-name&gt;-token-</code>. You can use the following command to find those secrets.</p>
<pre><code class="hljs css language-bash">kubectl get secrets -n &lt;k8s-namespace&gt;
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="authorization"></a><a href="#authorization" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Authorization</h3>
<p>By default, authorization is disabled. Authorization can be enabled only when authentication is enabled.</p>
<pre><code class="hljs css language-yaml"><span class="hljs-attr">auth:</span>
<span class="hljs-attr">authorization:</span>
<span class="hljs-attr">enabled:</span> <span class="hljs-literal">false</span>
</code></pre>
<p>To enable authorization, you can include this option in the <code>helm install</code> command.</p>
<pre><code class="hljs css language-bash">--<span class="hljs-built_in">set</span> auth.authorization.enabled=<span class="hljs-literal">true</span>
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="cpu-and-ram-resource-requirements"></a><a href="#cpu-and-ram-resource-requirements" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>CPU and RAM resource requirements</h3>
<p>By default, the resource requests and the number of replicas for the Pulsar components in the Pulsar Helm chart are adequate for a small production deployment. If you deploy a non-production instance, you can reduce the defaults to fit into a smaller cluster.</p>
<p>Once you have all of your configuration options collected, you can install dependent charts before installing the Pulsar Helm chart.</p>
<h2><a class="anchor" aria-hidden="true" id="install-dependent-charts"></a><a href="#install-dependent-charts" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Install dependent charts</h2>
<h3><a class="anchor" aria-hidden="true" id="install-local-storage-provisioner"></a><a href="#install-local-storage-provisioner" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Install local storage provisioner</h3>
<p>To use local persistent volumes as the persistent storage, you need to install a storage provisioner for <a href="https://kubernetes.io/blog/2019/04/04/kubernetes-1.14-local-persistent-volumes-ga/">local persistent volumes</a>.</p>
<p>One of the easiest way to get started is to use the local storage provisioner provided along with the Pulsar Helm chart.</p>
<pre><code class="hljs">helm repo <span class="hljs-keyword">add</span> streamnative https://charts.streamnative.io
helm repo <span class="hljs-keyword">update</span>
helm install pulsar-<span class="hljs-keyword">storage</span>-provisioner streamnative/<span class="hljs-keyword">local</span>-<span class="hljs-keyword">storage</span>-provisioner
</code></pre>
<h3><a class="anchor" aria-hidden="true" id="install-cert-manager"></a><a href="#install-cert-manager" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Install cert-manager</h3>
<p>The Pulsar Helm chart uses the <a href="https://github.com/jetstack/cert-manager">cert-manager</a> to provision and manage TLS certificates automatically. To enable TLS encryption for brokers or proxies, you need to install the cert-manager in advance.</p>
<p>For details about how to install the cert-manager, follow the <a href="https://cert-manager.io/docs/installation/kubernetes/#installing-with-helm">official instructions</a>.</p>
<p>Alternatively, we provide a bash script <a href="https://github.com/apache/pulsar/blob/master/deployment/kubernetes/helm/scripts/cert-manager/install-cert-manager.sh">install-cert-manager.sh</a> to install a cert-manager release to the namespace <code>cert-manager</code>.</p>
<pre><code class="hljs css language-bash">git <span class="hljs-built_in">clone</span> https://github.com/apache/pulsar
<span class="hljs-built_in">cd</span> pulsar/deployment/kubernetes/helm
./scripts/cert-manager/install-cert-manager.sh
</code></pre>
<h2><a class="anchor" aria-hidden="true" id="prepare-helm-release"></a><a href="#prepare-helm-release" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Prepare Helm release</h2>
<p>Once you have install all the dependent charts and collected all of your configuration options, you can run <a href="https://github.com/apache/pulsar/blob/master/deployment/kubernetes/helm/scripts/pulsar/prepare_helm_release.sh">prepare_helm_release.sh</a> to prepare the Helm release.</p>
<pre><code class="hljs css language-bash">git <span class="hljs-built_in">clone</span> https://github.com/apache/pulsar
<span class="hljs-built_in">cd</span> pulsar/deployment/kubernetes/helm
./scripts/pulsar/prepare_helm_release.sh -n &lt;k8s-namespace&gt; -k &lt;helm-release-name&gt;
</code></pre>
<p>The <code>prepare_helm_release</code> creates the following resources:</p>
<ul>
<li>A Kubernetes namespace for installing the Pulsar release</li>
<li>JWT secret keys and tokens for three super users: <code>broker-admin</code>, <code>proxy-admin</code>, and <code>admin</code>. By default, it generates an asymmetric pubic/private key pair. You can choose to generate a symmetric secret key by specifying <code>--symmetric</code>.
<ul>
<li><code>proxy-admin</code> role is used for proxies to communicate to brokers.</li>
<li><code>broker-admin</code> role is used for inter-broker communications.</li>
<li><code>admin</code> role is used by the admin tools.</li>
</ul></li>
</ul>
<h2><a class="anchor" aria-hidden="true" id="deploy-pulsar-cluster-using-helm"></a><a href="#deploy-pulsar-cluster-using-helm" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Deploy Pulsar cluster using Helm</h2>
<p>Once you have finished the following three things, you can install a Helm release.</p>
<ul>
<li>Collect all of your configuration options.</li>
<li>Install dependent charts.</li>
<li>Prepare the Helm release.</li>
</ul>
<p>In this example, we name our Helm release <code>pulsar</code>.</p>
<pre><code class="hljs css language-bash">git <span class="hljs-built_in">clone</span> https://github.com/apache/pulsar
<span class="hljs-built_in">cd</span> pulsar/deployment/kubernetes/helm
helm upgrade --install pulsar pulsar \
--timeout 10m \
--<span class="hljs-built_in">set</span> [your configuration options]
</code></pre>
<blockquote>
<p><strong>Note</strong></p>
<p>For the first deployment, add <code>--set initialize=true</code> option to initialize bookie and Pulsar cluster metadata.</p>
</blockquote>
<p>You can also use the <code>--version &lt;installation version&gt;</code> option if you want to install a specific version of Pulsar Helm chart.</p>
<h2><a class="anchor" aria-hidden="true" id="monitor-deployment"></a><a href="#monitor-deployment" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Monitor deployment</h2>
<p>A list of installed resources are output once the Pulsar cluster is deployed. This may take 5-10 minutes.</p>
<p>The status of the deployment can be checked by running the <code>helm status pulsar</code> command, which can also be done while the deployment is taking place if you run the command in another terminal.</p>
<h2><a class="anchor" aria-hidden="true" id="access-pulsar-cluster"></a><a href="#access-pulsar-cluster" aria-hidden="true" class="hash-link"><svg class="hash-link-icon" aria-hidden="true" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>Access Pulsar cluster</h2>
<p>The default values will create a <code>ClusterIP</code> for the following resources, which you can use to interact with the cluster.</p>
<ul>
<li>Proxy: You can use the IP address to produce and consume messages to the installed Pulsar cluster.</li>
<li>Pulsar Manager: You can access the Pulsar Manager UI at <code>http://&lt;pulsar-manager-ip&gt;:9527</code>.</li>
<li>Grafana Dashboard: You can access the Grafana dashboard at <code>http://&lt;grafana-dashboard-ip&gt;:3000</code>.</li>
</ul>
<p>To find the IP addresses of those components, run the following command:</p>
<pre><code class="hljs css language-bash">kubectl get service -n &lt;k8s-namespace&gt;
</code></pre>
</span></div></article></div><div class="docs-prevnext"><a class="docs-prev button" href="/docs/en/2.6.3/helm-install"><span class="arrow-prev"></span><span>Install</span></a><a class="docs-next button" href="/docs/en/2.6.3/helm-upgrade"><span>Upgrade</span><span class="arrow-next"></span></a></div></div></div><nav class="onPageNav"><ul class="toc-headings"><li><a href="#select-configuration-options">Select configuration options</a><ul class="toc-headings"><li><a href="#kubernetes-namespace">Kubernetes namespace</a></li><li><a href="#persistence">Persistence</a></li><li><a href="#affinity">Affinity</a></li><li><a href="#components">Components</a></li><li><a href="#docker-images">Docker images</a></li><li><a href="#tls">TLS</a></li><li><a href="#authentication">Authentication</a></li><li><a href="#authorization">Authorization</a></li><li><a href="#cpu-and-ram-resource-requirements">CPU and RAM resource requirements</a></li></ul></li><li><a href="#install-dependent-charts">Install dependent charts</a><ul class="toc-headings"><li><a href="#install-local-storage-provisioner">Install local storage provisioner</a></li><li><a href="#install-cert-manager">Install cert-manager</a></li></ul></li><li><a href="#prepare-helm-release">Prepare Helm release</a></li><li><a href="#deploy-pulsar-cluster-using-helm">Deploy Pulsar cluster using Helm</a></li><li><a href="#monitor-deployment">Monitor deployment</a></li><li><a href="#access-pulsar-cluster">Access Pulsar cluster</a></li></ul></nav></div><footer class="nav-footer" id="footer"><section class="copyright">Copyright © 2022 The Apache Software Foundation. All Rights Reserved. Apache, Apache Pulsar and the Apache feather logo are trademarks of The Apache Software Foundation.</section><span><script>
const community = document.querySelector("a[href='#community']").parentNode;
const communityMenu =
'<li>' +
'<a id="community-menu" href="#">Community <span style="font-size: 0.75em">&nbsp;▼</span></a>' +
'<div id="community-dropdown" class="hide">' +
'<ul id="community-dropdown-items">' +
'<li><a href="/en/contact">Contact</a></li>' +
'<li><a href="/en/contributing">Contributing</a></li>' +
'<li><a href="/en/coding-guide">Coding guide</a></li>' +
'<li><a href="/en/events">Events</a></li>' +
'<li><a href="https://twitter.com/Apache_Pulsar" target="_blank">Twitter &#x2750</a></li>' +
'<li><a href="https://github.com/apache/pulsar/wiki" target="_blank">Wiki &#x2750</a></li>' +
'<li><a href="https://github.com/apache/pulsar/issues" target="_blank">Issue tracking &#x2750</a></li>' +
'<li><a href="https://pulsar-summit.org/" target="_blank">Pulsar Summit &#x2750</a></li>' +
'<li>&nbsp;</li>' +
'<li><a href="/en/resources">Resources</a></li>' +
'<li><a href="/en/team">Team</a></li>' +
'<li><a href="/en/powered-by">Powered By</a></li>' +
'</ul>' +
'</div>' +
'</li>';
community.innerHTML = communityMenu;
const communityMenuItem = document.getElementById("community-menu");
const communityDropDown = document.getElementById("community-dropdown");
communityMenuItem.addEventListener("click", function(event) {
event.preventDefault();
if (communityDropDown.className == 'hide') {
communityDropDown.className = 'visible';
} else {
communityDropDown.className = 'hide';
}
});
</script></span></footer></div><script>window.twttr=(function(d,s, id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src='https://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js, fjs);t._e = [];t.ready = function(f) {t._e.push(f);};return t;}(document, 'script', 'twitter-wjs'));</script></body></html>