<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 --> <h2 id="geode-on-microsoft-azure" class="position-relative d-flex align-items-center group"> <span>Geode on Microsoft Azure</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="geode-on-microsoft-azure" aria-haspopup="dialog" aria-label="Share link: Geode on Microsoft Azure"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden> <div class="hsm-dialog" role="document"> <div class="hsm-header"> <h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2> <button type="button" class="hsm-close" aria-label="Close"> <i class="fa-solid fa-xmark"></i> </button> </div> <div class="hsm-body"> <label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label> <div class="input-group mb-4 hsm-url-group"> <input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" /> <button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy"> <i class="fa-duotone fa-clipboard" aria-hidden="true"></i> </button> </div> <div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div> <div class="hsm-share-grid"> <a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-twitter me-2"></i>Twitter </a> <a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-linkedin me-2"></i>LinkedIn </a> <a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer"> <i class="fa-brands fa-facebook me-2"></i>Facebook </a> </div> </div> </div> </div> <style> .heading-share-modal { position: fixed; inset: 0; display: flex; justify-content: center; align-items: center; background: rgba(0, 0, 0, 0.6); z-index: 1050; padding: 1rem; backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px); } .heading-share-modal[hidden] { display: none !important; } .hsm-dialog { max-width: 420px; width: 100%; background: var(--bs-body-bg, #fff); color: var(--bs-body-color, #212529); border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); border-radius: 1rem; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); overflow: hidden; animation: hsm-fade-in 0.2s ease-out; } @keyframes hsm-fade-in { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } [data-bs-theme="dark"] .hsm-dialog { background: #1e293b; border-color: rgba(255,255,255,0.1); color: #f8f9fa; } .hsm-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem 1.5rem; border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1)); background: rgba(0,0,0,0.02); } [data-bs-theme="dark"] .hsm-header { background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.1); } .hsm-close { background: transparent; border: none; color: inherit; opacity: 0.5; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 1.2rem; line-height: 1; transition: opacity 0.2s; } .hsm-close:hover { opacity: 1; } .hsm-body { padding: 1.5rem; } .hsm-url-group { display: flex !important; align-items: stretch; } .hsm-url-group .form-control { flex: 1; min-width: 0; margin: 0; background: var(--bs-secondary-bg, #f8f9fa); border-color: var(--bs-border-color, #dee2e6); border-top-right-radius: 0; border-bottom-right-radius: 0; height: 42px; } .hsm-url-group .btn { flex: 0 0 auto; margin: 0; margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; height: 42px; display: flex; align-items: center; justify-content: center; padding: 0 1.25rem; z-index: 2; } [data-bs-theme="dark"] .hsm-url-group .form-control { background: #0f172a; border-color: #334155; color: #e2e8f0; } .hsm-share-grid { display: flex; flex-direction: column; gap: 0.5rem; } .hsm-share-grid .btn { display: flex; align-items: center; justify-content: center; font-size: 0.9rem; padding: 0.6rem; border-color: var(--bs-border-color); width: 100%; } [data-bs-theme="dark"] .hsm-share-grid .btn { color: #e2e8f0; border-color: #475569; } [data-bs-theme="dark"] .hsm-share-grid .btn:hover { background: #334155; border-color: #cbd5e1; } </style> <script> (function(){ const modal = document.getElementById('headingShareModal'); if(!modal) return; const input = modal.querySelector('#headingShareInput'); const copyBtn = modal.querySelector('.hsm-copy'); const twitter = modal.querySelector('#share-twitter'); const linkedin = modal.querySelector('#share-linkedin'); const facebook = modal.querySelector('#share-facebook'); const closeBtn = modal.querySelector('.hsm-close'); let lastFocus=null; let trapBound=false; function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; } function isOpen(){ return !modal.hasAttribute('hidden'); } function hydrate(id){ const url=buildUrl(id); input.value=url; const enc=encodeURIComponent(url); const text=encodeURIComponent(document.title); if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`; if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`; if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`; } function openModal(id){ lastFocus=document.activeElement; hydrate(id); if(!isOpen()){ modal.removeAttribute('hidden'); } requestAnimationFrame(()=>{ input.focus(); }); trapFocus(); } function closeModal(){ if(!isOpen()) return; modal.setAttribute('hidden',''); if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus(); } function copyCurrent(){ try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); } catch(e){ fallback(); } } function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} } function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); } function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); } function bindShareButtons(){ document.querySelectorAll('.h-share').forEach(btn=>{ if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; } }); } bindShareButtons(); if(document.readyState==='loading'){ document.addEventListener('DOMContentLoaded', bindShareButtons); } else { requestAnimationFrame(bindShareButtons); } document.addEventListener('click', function(e){ const shareBtn=e.target.closest && e.target.closest('.h-share'); if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); } }, true); document.addEventListener('click', e=>{ if(e.target===modal) closeModal(); if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); } if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); } }); document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); }); function trapFocus(){ if(trapBound) return; trapBound=true; modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } }); } if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); }); })(); </script><p>Microsoft Azure provides enterprise-grade cloud infrastructure for deploying Geode graph database with comprehensive managed services, global reach, hybrid cloud capabilities, and deep integration with Microsoft&rsquo;s ecosystem. This guide covers production-ready deployment patterns, best practices, and Azure-specific optimizations.</p> <h3 id="azure-deployment-options" class="position-relative d-flex align-items-center group"> <span>Azure Deployment Options</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-deployment-options" aria-haspopup="dialog" aria-label="Share link: Azure Deployment Options"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="azure-virtual-machines" class="position-relative d-flex align-items-center group"> <span>Azure Virtual Machines</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-virtual-machines" aria-haspopup="dialog" aria-label="Share link: Azure Virtual Machines"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Deploy Geode on dedicated VMs for maximum control and performance.</p> <p><strong>Recommended VM Series</strong>:</p> <p><strong>General Purpose (Development/Testing)</strong>:</p> <ul> <li><strong>D-Series v5</strong>: Balanced compute and memory <ul> <li>D4s_v5: 4 vCPUs, 16 GB RAM (small workloads)</li> <li>D8s_v5: 8 vCPUs, 32 GB RAM (medium workloads)</li> <li>D16s_v5: 16 vCPUs, 64 GB RAM (large workloads)</li> </ul> </li> </ul> <p><strong>Memory Optimized (Production)</strong>:</p> <ul> <li><strong>E-Series v5</strong>: High memory-to-CPU ratio for graph workloads <ul> <li>E8s_v5: 8 vCPUs, 64 GB RAM</li> <li>E16s_v5: 16 vCPUs, 128 GB RAM</li> <li>E32s_v5: 32 vCPUs, 256 GB RAM</li> </ul> </li> </ul> <p><strong>Compute Optimized</strong>:</p> <ul> <li><strong>F-Series v2</strong>: High CPU performance for query-intensive workloads <ul> <li>F8s_v2: 8 vCPUs, 16 GB RAM</li> <li>F16s_v2: 16 vCPUs, 32 GB RAM</li> </ul> </li> </ul> <p><strong>Storage Optimized</strong>:</p> <ul> <li><strong>L-Series v3</strong>: Large local NVMe storage <ul> <li>L8s_v3: 8 vCPUs, 64 GB RAM, 1.92 TB NVMe</li> <li>L16s_v3: 16 vCPUs, 128 GB RAM, 3.84 TB NVMe</li> </ul> </li> </ul> <h4 id="azure-kubernetes-service-aks" class="position-relative d-flex align-items-center group"> <span>Azure Kubernetes Service (AKS)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-kubernetes-service-aks" aria-haspopup="dialog" aria-label="Share link: Azure Kubernetes Service (AKS)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Deploy Geode on AKS for automatic scaling, rolling updates, and orchestration.</p> <p><strong>Benefits</strong>:</p> <ul> <li>Managed Kubernetes control plane</li> <li>Auto-scaling (HPA and Cluster Autoscaler)</li> <li>Integration with Azure Active Directory</li> <li>Built-in monitoring with Azure Monitor</li> <li>Automatic security patches and updates</li> </ul> <p><strong>Node Pool Configuration</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create AKS cluster with system node pool</span> </span></span><span class="line"><span class="cl">az aks create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-cluster <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-count <span class="m">3</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-vm-size Standard_D4s_v5 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-managed-identity <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-cluster-autoscaler <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --min-count <span class="m">3</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --max-count <span class="m">10</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --network-plugin azure <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-addons monitoring <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Add memory-optimized node pool for Geode</span> </span></span><span class="line"><span class="cl">az aks nodepool add <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --cluster-name geode-cluster <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geodepool <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-count <span class="m">3</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-vm-size Standard_E8s_v5 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --node-taints <span class="nv">workload</span><span class="o">=</span>geode:NoSchedule <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --labels <span class="nv">workload</span><span class="o">=</span>geode <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-cluster-autoscaler <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --min-count <span class="m">3</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --max-count <span class="m">12</span> </span></span></code></pre></div> <h4 id="azure-container-instances-aci" class="position-relative d-flex align-items-center group"> <span>Azure Container Instances (ACI)</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-container-instances-aci" aria-haspopup="dialog" aria-label="Share link: Azure Container Instances (ACI)"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Quick deployment for development and testing:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Deploy single Geode instance</span> </span></span><span class="line"><span class="cl">az container create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-dev <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --image geodedb/geode:latest <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --cpu <span class="m">4</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --memory <span class="m">16</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --ports <span class="m">3141</span> <span class="m">8443</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --dns-name-label geode-dev <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --environment-variables <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> <span class="nv">GEODE_LOG_LEVEL</span><span class="o">=</span>info <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus </span></span></code></pre></div> <h3 id="vm-deployment-guide" class="position-relative d-flex align-items-center group"> <span>VM Deployment Guide</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="vm-deployment-guide" aria-haspopup="dialog" aria-label="Share link: VM Deployment Guide"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="single-instance-deployment" class="position-relative d-flex align-items-center group"> <span>Single-Instance Deployment</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="single-instance-deployment" aria-haspopup="dialog" aria-label="Share link: Single-Instance Deployment"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>1. Create Resource Group</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az group create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus </span></span></code></pre></div><p><strong>2. Create Virtual Network</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az network vnet create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-vnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --address-prefix 10.0.0.0/16 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet-name geode-subnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet-prefix 10.0.1.0/24 </span></span></code></pre></div><p><strong>3. Create Network Security Group</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az network nsg create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-nsg </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Allow QUIC (3141)</span> </span></span><span class="line"><span class="cl">az network nsg rule create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg-name geode-nsg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AllowQuic <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority <span class="m">100</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-address-prefixes <span class="s1">&#39;*&#39;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --destination-port-ranges <span class="m">3141</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol Udp <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --access Allow </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Allow HTTPS (8443)</span> </span></span><span class="line"><span class="cl">az network nsg rule create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg-name geode-nsg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AllowHttps <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority <span class="m">101</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-address-prefixes <span class="s1">&#39;*&#39;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --destination-port-ranges <span class="m">8443</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol Tcp <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --access Allow </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Allow SSH</span> </span></span><span class="line"><span class="cl">az network nsg rule create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg-name geode-nsg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AllowSsh <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority <span class="m">102</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-address-prefixes <span class="s1">&#39;YOUR_IP/32&#39;</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --destination-port-ranges <span class="m">22</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol Tcp <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --access Allow </span></span></code></pre></div><p><strong>4. Create VM with Premium SSD</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az vm create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-vm-01 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --image Ubuntu2204 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --size Standard_E8s_v5 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vnet-name geode-vnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet geode-subnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg geode-nsg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --storage-sku Premium_LRS <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --os-disk-size-gb <span class="m">128</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --data-disk-sizes-gb <span class="m">512</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --admin-username azureuser <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --ssh-key-values ~/.ssh/id_rsa.pub <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --public-ip-sku Standard </span></span></code></pre></div><p><strong>5. Install Geode</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># SSH into VM</span> </span></span><span class="line"><span class="cl">ssh azureuser@&lt;VM_PUBLIC_IP&gt; </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Install Docker</span> </span></span><span class="line"><span class="cl">curl -fsSL https://get.docker.com -o get-docker.sh </span></span><span class="line"><span class="cl">sh get-docker.sh </span></span><span class="line"><span class="cl">sudo usermod -aG docker <span class="nv">$USER</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Mount data disk</span> </span></span><span class="line"><span class="cl">sudo mkfs.ext4 /dev/sdc </span></span><span class="line"><span class="cl">sudo mkdir /data </span></span><span class="line"><span class="cl">sudo mount /dev/sdc /data </span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s1">&#39;/dev/sdc /data ext4 defaults 0 0&#39;</span> <span class="p">|</span> sudo tee -a /etc/fstab </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Run Geode</span> </span></span><span class="line"><span class="cl">docker run -d <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --restart always <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -p 3141:3141/udp <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -p 8443:8443/tcp <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -v /data:/var/lib/geode <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -e <span class="nv">GEODE_DATA_DIR</span><span class="o">=</span>/var/lib/geode <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> geodedb/geode:latest serve --listen 0.0.0.0:3141 </span></span></code></pre></div> <h4 id="high-availability-deployment" class="position-relative d-flex align-items-center group"> <span>High-Availability Deployment</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="high-availability-deployment" aria-haspopup="dialog" aria-label="Share link: High-Availability Deployment"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Deploy multiple VMs with Azure Load Balancer:</p> <p><strong>1. Create Availability Set</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az vm availability-set create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-avset <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --platform-fault-domain-count <span class="m">2</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --platform-update-domain-count <span class="m">5</span> </span></span></code></pre></div><p><strong>2. Create Load Balancer</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az network lb create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-lb <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Standard <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vnet-name geode-vnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet geode-subnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --backend-pool-name geode-backend <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --frontend-ip-name geode-frontend </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Create health probe</span> </span></span><span class="line"><span class="cl">az network lb probe create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --lb-name geode-lb <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-health <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol tcp <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --port <span class="m">8443</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --interval <span class="m">30</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Create load balancing rule (QUIC)</span> </span></span><span class="line"><span class="cl">az network lb rule create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --lb-name geode-lb <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name GeodeQuic <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol Udp <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --frontend-port <span class="m">3141</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --backend-port <span class="m">3141</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --frontend-ip-name geode-frontend <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --backend-pool-name geode-backend <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --probe-name geode-health </span></span></code></pre></div><p><strong>3. Create Multiple VMs</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="k">for</span> i in <span class="o">{</span>1..3<span class="o">}</span><span class="p">;</span> <span class="k">do</span> </span></span><span class="line"><span class="cl"> az vm create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-vm-0<span class="nv">$i</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --availability-set geode-avset <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --image Ubuntu2204 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --size Standard_E8s_v5 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vnet-name geode-vnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet geode-subnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --nsg geode-nsg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --storage-sku Premium_LRS <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --os-disk-size-gb <span class="m">128</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --data-disk-sizes-gb <span class="m">512</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --admin-username azureuser <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --ssh-key-values ~/.ssh/id_rsa.pub <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --lb-name geode-lb <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --backend-pool-name geode-backend </span></span><span class="line"><span class="cl"><span class="k">done</span> </span></span></code></pre></div> <h3 id="aks-deployment" class="position-relative d-flex align-items-center group"> <span>AKS Deployment</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="aks-deployment" aria-haspopup="dialog" aria-label="Share link: AKS Deployment"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="kubernetes-manifests" class="position-relative d-flex align-items-center group"> <span>Kubernetes Manifests</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="kubernetes-manifests" aria-haspopup="dialog" aria-label="Share link: Kubernetes Manifests"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Namespace and ConfigMap</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># namespace.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">Namespace</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="c"># configmap.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">ConfigMap</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode-config</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">data</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">geode.conf</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd"> </span></span></span><span class="line"><span class="cl"><span class="sd"> log_level = &#34;info&#34; </span></span></span><span class="line"><span class="cl"><span class="sd"> data_dir = &#34;/var/lib/geode&#34; </span></span></span><span class="line"><span class="cl"><span class="sd"> listen_addr = &#34;0.0.0.0:3141&#34;</span><span class="w"> </span></span></span></code></pre></div><p><strong>StatefulSet with Azure Disk</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># statefulset.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">apps/v1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">StatefulSet</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">spec</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">serviceName</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">replicas</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">selector</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">matchLabels</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">template</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">metadata</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">labels</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">spec</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">nodeSelector</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">workload</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">tolerations</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">key</span><span class="p">:</span><span class="w"> </span><span class="l">workload</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">operator</span><span class="p">:</span><span class="w"> </span><span class="l">Equal</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">effect</span><span class="p">:</span><span class="w"> </span><span class="l">NoSchedule</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">containers</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="l">geodedb/geode:latest</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">containerPort</span><span class="p">:</span><span class="w"> </span><span class="m">3141</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">UDP</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">quic</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">containerPort</span><span class="p">:</span><span class="w"> </span><span class="m">8443</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">TCP</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">https</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">env</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">GEODE_DATA_DIR</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l">/var/lib/geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">GEODE_LOG_LEVEL</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">value</span><span class="p">:</span><span class="w"> </span><span class="l">info</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resources</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">requests</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;32Gi&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;4&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">limits</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">memory</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;64Gi&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">cpu</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;8&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumeMounts</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">data</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/var/lib/geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">config</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">mountPath</span><span class="p">:</span><span class="w"> </span><span class="l">/etc/geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">livenessProbe</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">httpGet</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/health</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">8443</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">scheme</span><span class="p">:</span><span class="w"> </span><span class="l">HTTPS</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">initialDelaySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">30</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">periodSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">readinessProbe</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">httpGet</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">path</span><span class="p">:</span><span class="w"> </span><span class="l">/ready</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">8443</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">scheme</span><span class="p">:</span><span class="w"> </span><span class="l">HTTPS</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">initialDelaySeconds</span><span class="p">:</span><span class="w"> </span><span class="m">10</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">periodSeconds</span><span class="p">:</span><span class="w"> </span><span class="m">5</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">config</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">configMap</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode-config</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumeClaimTemplates</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">metadata</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">data</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">spec</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">accessModes</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="s2">&#34;ReadWriteOnce&#34;</span><span class="w"> </span><span class="p">]</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">storageClassName</span><span class="p">:</span><span class="w"> </span><span class="l">managed-premium</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resources</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">requests</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">storage</span><span class="p">:</span><span class="w"> </span><span class="l">512Gi</span><span class="w"> </span></span></span></code></pre></div><p><strong>Service (Internal Load Balancer)</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># service.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">Service</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">annotations</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">service.beta.kubernetes.io/azure-load-balancer-internal</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;true&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">spec</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">LoadBalancer</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">selector</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">app</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">quic</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">3141</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">UDP</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">https</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">port</span><span class="p">:</span><span class="w"> </span><span class="m">8443</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">protocol</span><span class="p">:</span><span class="w"> </span><span class="l">TCP</span><span class="w"> </span></span></span></code></pre></div><p><strong>HorizontalPodAutoscaler</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># hpa.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">autoscaling/v2</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">HorizontalPodAutoscaler</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">spec</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">scaleTargetRef</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">apps/v1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">StatefulSet</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">minReplicas</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">maxReplicas</span><span class="p">:</span><span class="w"> </span><span class="m">12</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">metrics</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">Resource</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resource</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">cpu</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">target</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">Utilization</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">averageUtilization</span><span class="p">:</span><span class="w"> </span><span class="m">70</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">Resource</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">resource</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">memory</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">target</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">type</span><span class="p">:</span><span class="w"> </span><span class="l">Utilization</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">averageUtilization</span><span class="p">:</span><span class="w"> </span><span class="m">80</span><span class="w"> </span></span></span></code></pre></div><p><strong>Deploy to AKS</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Get AKS credentials</span> </span></span><span class="line"><span class="cl">az aks get-credentials <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-cluster </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Apply manifests</span> </span></span><span class="line"><span class="cl">kubectl apply -f namespace.yaml </span></span><span class="line"><span class="cl">kubectl apply -f configmap.yaml </span></span><span class="line"><span class="cl">kubectl apply -f statefulset.yaml </span></span><span class="line"><span class="cl">kubectl apply -f service.yaml </span></span><span class="line"><span class="cl">kubectl apply -f hpa.yaml </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Verify deployment</span> </span></span><span class="line"><span class="cl">kubectl get pods -n geode </span></span><span class="line"><span class="cl">kubectl get svc -n geode </span></span></code></pre></div> <h3 id="storage-options" class="position-relative d-flex align-items-center group"> <span>Storage Options</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="storage-options" aria-haspopup="dialog" aria-label="Share link: Storage Options"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="azure-managed-disks" class="position-relative d-flex align-items-center group"> <span>Azure Managed Disks</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-managed-disks" aria-haspopup="dialog" aria-label="Share link: Azure Managed Disks"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Premium SSD (P-Series)</strong>:</p> <ul> <li>P30: 1 TB, 5000 IOPS, 200 MB/s</li> <li>P40: 2 TB, 7500 IOPS, 250 MB/s</li> <li>P50: 4 TB, 7500 IOPS, 250 MB/s</li> <li>P60: 8 TB, 16000 IOPS, 500 MB/s</li> </ul> <p>Best for production Geode workloads with predictable performance.</p> <p><strong>Premium SSD v2</strong>:</p> <ul> <li>Configurable IOPS and throughput independent of size</li> <li>Up to 64 TB per disk</li> <li>Up to 80,000 IOPS and 1,200 MB/s per disk</li> </ul> <p>Ideal for high-performance requirements.</p> <p><strong>Ultra Disk</strong>:</p> <ul> <li>Up to 64 TB per disk</li> <li>Up to 160,000 IOPS and 4,000 MB/s</li> <li>Sub-millisecond latency</li> </ul> <p>For extreme performance needs (financial services, real-time analytics).</p> <h4 id="azure-files" class="position-relative d-flex align-items-center group"> <span>Azure Files</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-files" aria-haspopup="dialog" aria-label="Share link: Azure Files"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>SMB or NFS file shares for shared storage:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create storage account</span> </span></span><span class="line"><span class="cl">az storage account create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geodestorage <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Premium_LRS <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --kind FileStorage </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Create file share</span> </span></span><span class="line"><span class="cl">az storage share create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --account-name geodestorage <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-backup <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --quota <span class="m">1024</span> </span></span></code></pre></div> <h4 id="azure-blob-storage" class="position-relative d-flex align-items-center group"> <span>Azure Blob Storage</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-blob-storage" aria-haspopup="dialog" aria-label="Share link: Azure Blob Storage"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>For backups and long-term archival:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create storage account</span> </span></span><span class="line"><span class="cl">az storage account create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geodebackup <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Standard_LRS <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --kind StorageV2 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --access-tier Hot </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Create container</span> </span></span><span class="line"><span class="cl">az storage container create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --account-name geodebackup <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-backups </span></span></code></pre></div> <h3 id="monitoring-and-observability" class="position-relative d-flex align-items-center group"> <span>Monitoring and Observability</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="monitoring-and-observability" aria-haspopup="dialog" aria-label="Share link: Monitoring and Observability"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="azure-monitor-integration" class="position-relative d-flex align-items-center group"> <span>Azure Monitor Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-monitor-integration" aria-haspopup="dialog" aria-label="Share link: Azure Monitor Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Enable Container Insights for AKS</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az aks enable-addons <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-cluster <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --addons monitoring </span></span></code></pre></div><p><strong>Create Log Analytics Workspace</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az monitor log-analytics workspace create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --workspace-name geode-logs <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus </span></span></code></pre></div><p><strong>Custom Metrics</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Install Azure Monitor Agent on VM</span> </span></span><span class="line"><span class="cl">az vm extension <span class="nb">set</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vm-name geode-vm-01 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AzureMonitorLinuxAgent <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --publisher Microsoft.Azure.Monitor </span></span></code></pre></div><p><strong>KQL Queries for Geode</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-fallback" data-lang="fallback"><span class="line"><span class="cl">// Query latency percentiles </span></span><span class="line"><span class="cl">ContainerLog </span></span><span class="line"><span class="cl">| where ContainerName contains &#34;geode&#34; </span></span><span class="line"><span class="cl">| where LogEntry contains &#34;query_duration&#34; </span></span><span class="line"><span class="cl">| extend Duration = extract(&#34;duration=([0-9.]+)&#34;, 1, LogEntry) </span></span><span class="line"><span class="cl">| summarize </span></span><span class="line"><span class="cl"> p50=percentile(todouble(Duration), 50), </span></span><span class="line"><span class="cl"> p95=percentile(todouble(Duration), 95), </span></span><span class="line"><span class="cl"> p99=percentile(todouble(Duration), 99) </span></span><span class="line"><span class="cl"> by bin(TimeGenerated, 5m) </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl">// Connection count </span></span><span class="line"><span class="cl">ContainerLog </span></span><span class="line"><span class="cl">| where ContainerName contains &#34;geode&#34; </span></span><span class="line"><span class="cl">| where LogEntry contains &#34;connection_count&#34; </span></span><span class="line"><span class="cl">| extend Count = extract(&#34;count=([0-9]+)&#34;, 1, LogEntry) </span></span><span class="line"><span class="cl">| summarize avg(toint(Count)) by bin(TimeGenerated, 1m) </span></span></code></pre></div> <h4 id="application-insights" class="position-relative d-flex align-items-center group"> <span>Application Insights</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="application-insights" aria-haspopup="dialog" aria-label="Share link: Application Insights"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Instrument Geode clients with Application Insights:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Python client with App Insights</span> </span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">azure.monitor.opentelemetry</span> <span class="kn">import</span> <span class="n">configure_azure_monitor</span> </span></span><span class="line"><span class="cl"><span class="kn">import</span> <span class="nn">geode_client</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="n">configure_azure_monitor</span><span class="p">(</span> </span></span><span class="line"><span class="cl"> <span class="n">connection_string</span><span class="o">=</span><span class="s2">&#34;InstrumentationKey=...&#34;</span> </span></span><span class="line"><span class="cl"><span class="p">)</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">geode_client</span><span class="o">.</span><span class="n">open_database</span><span class="p">()</span> </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">with</span> <span class="n">client</span><span class="o">.</span><span class="n">connection</span><span class="p">()</span> <span class="k">as</span> <span class="n">conn</span><span class="p">:</span> </span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">conn</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">&#34;MATCH (u:User) RETURN COUNT(u)&#34;</span><span class="p">)</span> </span></span></code></pre></div> <h4 id="metrics-dashboards" class="position-relative d-flex align-items-center group"> <span>Metrics Dashboards</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="metrics-dashboards" aria-haspopup="dialog" aria-label="Share link: Metrics Dashboards"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Create Azure Dashboard for Geode metrics:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">az portal dashboard create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-dashboard <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --input-path dashboard.json </span></span></code></pre></div> <h3 id="security" class="position-relative d-flex align-items-center group"> <span>Security</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="security" aria-haspopup="dialog" aria-label="Share link: Security"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="azure-active-directory-integration" class="position-relative d-flex align-items-center group"> <span>Azure Active Directory Integration</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-active-directory-integration" aria-haspopup="dialog" aria-label="Share link: Azure Active Directory Integration"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Managed Identity for AKS</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Enable managed identity</span> </span></span><span class="line"><span class="cl">az aks update <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-cluster <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --enable-managed-identity </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Grant Key Vault access</span> </span></span><span class="line"><span class="cl">az keyvault set-policy <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-keyvault <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --object-id <span class="k">$(</span>az aks show -g geode-rg -n geode-cluster <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --query identityProfile.kubeletidentity.objectId -o tsv<span class="k">)</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --secret-permissions get list </span></span></code></pre></div> <h4 id="azure-key-vault" class="position-relative d-flex align-items-center group"> <span>Azure Key Vault</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-key-vault" aria-haspopup="dialog" aria-label="Share link: Azure Key Vault"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Store TLS certificates and secrets:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create Key Vault</span> </span></span><span class="line"><span class="cl">az keyvault create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-keyvault <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Store TLS certificate</span> </span></span><span class="line"><span class="cl">az keyvault certificate import <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vault-name geode-keyvault <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-tls-cert <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --file geode-cert.pfx </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Store database password</span> </span></span><span class="line"><span class="cl">az keyvault secret <span class="nb">set</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vault-name geode-keyvault <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-admin-password <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --value <span class="s2">&#34;SecurePassword123!&#34;</span> </span></span></code></pre></div><p><strong>Access from Kubernetes</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># Use CSI driver for secrets</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">apiVersion</span><span class="p">:</span><span class="w"> </span><span class="l">v1</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">kind</span><span class="p">:</span><span class="w"> </span><span class="l">SecretProviderClass</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">metadata</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">geode-secrets</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">namespace</span><span class="p">:</span><span class="w"> </span><span class="l">geode</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="nt">spec</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">provider</span><span class="p">:</span><span class="w"> </span><span class="l">azure</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">parameters</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">keyvaultName</span><span class="p">:</span><span class="w"> </span><span class="l">geode-keyvault</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">objects</span><span class="p">:</span><span class="w"> </span><span class="p">|</span><span class="sd"> </span></span></span><span class="line"><span class="cl"><span class="sd"> array: </span></span></span><span class="line"><span class="cl"><span class="sd"> - | </span></span></span><span class="line"><span class="cl"><span class="sd"> objectName: geode-tls-cert </span></span></span><span class="line"><span class="cl"><span class="sd"> objectType: secret </span></span></span><span class="line"><span class="cl"><span class="sd"> - | </span></span></span><span class="line"><span class="cl"><span class="sd"> objectName: geode-admin-password </span></span></span><span class="line"><span class="cl"><span class="sd"> objectType: secret</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">tenantId</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;YOUR_TENANT_ID&#34;</span><span class="w"> </span></span></span></code></pre></div> <h4 id="network-security" class="position-relative d-flex align-items-center group"> <span>Network Security</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="network-security" aria-haspopup="dialog" aria-label="Share link: Network Security"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>Private Endpoints</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create private endpoint for storage</span> </span></span><span class="line"><span class="cl">az network private-endpoint create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-storage-pe <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vnet-name geode-vnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --subnet geode-subnet <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --private-connection-resource-id <span class="k">$(</span>az storage account show <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> -g geode-rg -n geodestorage --query id -o tsv<span class="k">)</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --group-id file <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --connection-name geode-storage-connection </span></span></code></pre></div><p><strong>Azure Firewall</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create firewall</span> </span></span><span class="line"><span class="cl">az network firewall create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-firewall <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Create application rules</span> </span></span><span class="line"><span class="cl">az network firewall application-rule create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --firewall-name geode-firewall <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --collection-name geode-rules <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name AllowGeode <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocols <span class="nv">Https</span><span class="o">=</span><span class="m">8443</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-addresses 10.0.0.0/16 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --target-fqdns geode.example.com <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority <span class="m">100</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --action Allow </span></span></code></pre></div> <h3 id="backup-and-disaster-recovery" class="position-relative d-flex align-items-center group"> <span>Backup and Disaster Recovery</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="backup-and-disaster-recovery" aria-haspopup="dialog" aria-label="Share link: Backup and Disaster Recovery"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="azure-backup" class="position-relative d-flex align-items-center group"> <span>Azure Backup</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="azure-backup" aria-haspopup="dialog" aria-label="Share link: Azure Backup"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p><strong>VM Backup</strong>:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create Recovery Services vault</span> </span></span><span class="line"><span class="cl">az backup vault create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-backup-vault <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Enable backup for VM</span> </span></span><span class="line"><span class="cl">az backup protection enable-for-vm <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vault-name geode-backup-vault <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --vm geode-vm-01 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --policy-name DefaultPolicy </span></span></code></pre></div> <h4 id="geo-redundant-backup" class="position-relative d-flex align-items-center group"> <span>Geo-Redundant Backup</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="geo-redundant-backup" aria-haspopup="dialog" aria-label="Share link: Geo-Redundant Backup"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Backup to Blob Storage with GRS</span> </span></span><span class="line"><span class="cl">az storage account create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geodebackupgrs <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Standard_GRS <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus </span></span><span class="line"><span class="cl"> </span></span><span class="line"><span class="cl"><span class="c1"># Automated backup script</span> </span></span><span class="line"><span class="cl"><span class="c1">#!/bin/bash</span> </span></span><span class="line"><span class="cl"><span class="nv">DATE</span><span class="o">=</span><span class="k">$(</span>date +%Y%m%d-%H%M%S<span class="k">)</span> </span></span><span class="line"><span class="cl">docker <span class="nb">exec</span> geode geode backup --output /tmp/backup-<span class="nv">$DATE</span>.tar.gz </span></span><span class="line"><span class="cl">az storage blob upload <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --account-name geodebackupgrs <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --container-name backups <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name backup-<span class="nv">$DATE</span>.tar.gz <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --file /tmp/backup-<span class="nv">$DATE</span>.tar.gz </span></span></code></pre></div> <h3 id="cost-optimization" class="position-relative d-flex align-items-center group"> <span>Cost Optimization</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="cost-optimization" aria-haspopup="dialog" aria-label="Share link: Cost Optimization"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3> <h4 id="reserved-instances" class="position-relative d-flex align-items-center group"> <span>Reserved Instances</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="reserved-instances" aria-haspopup="dialog" aria-label="Share link: Reserved Instances"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><p>Save up to 72% with 3-year reservations:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Purchase VM reservation</span> </span></span><span class="line"><span class="cl">az reservations reservation-order purchase <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --reservation-order-id ORDER_ID <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --sku Standard_E8s_v5 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --location eastus <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --quantity <span class="m">3</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --term P3Y </span></span></code></pre></div> <h4 id="spot-instances-for-development" class="position-relative d-flex align-items-center group"> <span>Spot Instances for Development</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="spot-instances-for-development" aria-haspopup="dialog" aria-label="Share link: Spot Instances for Development"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Create spot VM (up to 90% savings)</span> </span></span><span class="line"><span class="cl">az vm create <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-dev-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-dev-spot <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority Spot <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --max-price -1 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --eviction-policy Deallocate <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --size Standard_D4s_v5 <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --image Ubuntu2204 </span></span></code></pre></div> <h4 id="auto-shutdown" class="position-relative d-flex align-items-center group"> <span>Auto-Shutdown</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="auto-shutdown" aria-haspopup="dialog" aria-label="Share link: Auto-Shutdown"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Schedule VM shutdown</span> </span></span><span class="line"><span class="cl">az vm auto-shutdown <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --resource-group geode-rg <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name geode-dev-vm <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --time <span class="m">1900</span> <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --timezone <span class="s2">&#34;Pacific Standard Time&#34;</span> </span></span></code></pre></div> <h4 id="storage-tiering" class="position-relative d-flex align-items-center group"> <span>Storage Tiering</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="storage-tiering" aria-haspopup="dialog" aria-label="Share link: Storage Tiering"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Move old backups to Cool tier</span> </span></span><span class="line"><span class="cl">az storage blob set-tier <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --account-name geodebackup <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --container-name backups <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --name old-backup.tar.gz <span class="se">\ </span></span></span><span class="line"><span class="cl"><span class="se"></span> --tier Cool </span></span></code></pre></div> <h3 id="related-topics" class="position-relative d-flex align-items-center group"> <span>Related Topics</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="related-topics" aria-haspopup="dialog" aria-label="Share link: Related Topics"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><strong><a href="/tags/cloud/" >Cloud</a> </strong>: General cloud deployment strategies</li> <li><strong><a href="/tags/aws/" >AWS</a> </strong>: Amazon Web Services deployment</li> <li><strong><a href="/tags/gcp/" >GCP</a> </strong>: Google Cloud Platform deployment</li> <li><strong><a href="/tags/kubernetes/" >Kubernetes</a> </strong>: Kubernetes orchestration</li> <li><strong><a href="/tags/docker/" >Docker</a> </strong>: Container deployment</li> <li><strong><a href="/tags/monitoring/" >Monitoring</a> </strong>: Monitoring and observability</li> <li><strong><a href="/tags/security/" >Security</a> </strong>: Security best practices</li> <li><strong><a href="/tags/high-availability/" >High Availability</a> </strong>: HA architecture</li> </ul> <h3 id="further-reading" class="position-relative d-flex align-items-center group"> <span>Further Reading</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="further-reading" aria-haspopup="dialog" aria-label="Share link: Further Reading"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><ul> <li><strong>Azure Deployment Guide</strong>: <code>/docs/deployment/azure/</code></li> <li><strong>AKS Best Practices</strong>: <code>/docs/deployment/aks/</code></li> <li><strong>Azure Monitor Integration</strong>: <code>/docs/monitoring/azure-monitor/</code></li> <li><strong>Security on Azure</strong>: <code>/docs/security/azure-security/</code></li> </ul> <h3 id="conclusion" class="position-relative d-flex align-items-center group"> <span>Conclusion</span> <button type="button" class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1" data-share-target="conclusion" aria-haspopup="dialog" aria-label="Share link: Conclusion"> <i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i> <span class="visually-hidden">Share link</span> </button> </h3><p>Microsoft Azure provides a comprehensive platform for deploying Geode graph database at any scale. From simple VM deployments to sophisticated AKS clusters with auto-scaling, Azure&rsquo;s managed services, global infrastructure, and deep integration with Microsoft ecosystem make it an excellent choice for enterprise Geode deployments.</p> <p>Key advantages of Azure for Geode:</p> <ul> <li>Enterprise-grade managed services (AKS, Storage, Monitor)</li> <li>Hybrid cloud capabilities with Azure Arc</li> <li>Deep integration with Microsoft 365 and Active Directory</li> <li>Comprehensive compliance certifications</li> <li>Global network with 60+ regions</li> </ul>

Related Articles

No articles found with this tag yet.

Back to Home